Setup Your Environment
Before we start writing code, we need to prepare the environment in which you are going to work.
You do not need an expensive workstation. You do not need the latest processor. You do not need a powerful graphics card.
And you definitely do not need to spend several thousand dollars before you can start learning software engineering.
What you need is a machine that is fast enough not to become an obstacle.
The purpose of your development machine is simple:
It should allow you to focus on learning and engineering instead of constantly fighting your hardware.
Hardware
For the beginning, almost any reasonably modern desktop or laptop computer will be sufficient.
Our general recommendation is:
CPU: 6–8 modern CPU cores
RAM: 16 GB minimum
32 GB recommended
Storage: SSD strongly recommended
GPU: no dedicated GPU required
You can absolutely begin with less.
But there is a difference between:
Can this machine run the software?
and:
Is this machine comfortable to work on every day?
Those are not the same question.
CPU
A modern processor with approximately six or eight physical cores is more than enough for the majority of tasks you will encounter at the beginning.
You will use the CPU for things such as:
- compiling software;
- running tests;
- running multiple services;
- compression;
- local databases;
- containers;
- development tools;
- virtual machines;
- benchmarks.
You do not need a high-end workstation CPU.
A reasonable modern desktop or laptop processor is enough.
As your work becomes more complex, stronger hardware can reduce build times and make larger local environments more comfortable.
But hardware should not become an excuse for postponing learning.
Start with what you have if it is reasonably functional.
Upgrade when you actually understand what limitation you are trying to remove.
Memory
We consider:
16 GB RAM
a practical minimum for a comfortable modern development environment.
If possible, use:
32 GB RAM
With 32 GB you have significantly more space for running:
- your IDE or editor;
- browser sessions;
- multiple terminals;
- databases;
- several services;
- containers;
- build processes;
- documentation;
- debugging tools
at the same time.
You do not need 64 GB or 128 GB of memory to learn software engineering.
There are workloads where those amounts become useful.
You are not starting there.
Storage
Use an SSD. Preferably, use an NVMe SSD if your machine supports one.
Development environments perform a huge number of small filesystem operations.
Compilers read and write files.
Git works with thousands of files.
Package managers create caches.
Databases write data.
Build systems constantly create and remove artifacts.
The difference between an old mechanical hard drive and an SSD is very noticeable in development work.
For a dedicated learning machine, something around [512 GB] is enough to start comfortably.
Graphics Card
For the work we are going to do initially, you do not need a dedicated graphics card.
Integrated graphics are completely sufficient.
A powerful GPU becomes relevant if you later move into areas such as:
- graphics programming;
- game development;
- GPU computing;
- CUDA;
- local machine-learning workloads;
- 3D rendering;
- computer vision workloads.
Do not buy hardware for problems you do not currently have.
Operating System
For this Task Library, we recommend using Linux from the beginning.
More specifically, our recommendation for a first Linux development environment is:
Linux Mint — Cinnamon Edition
Use the latest stable release available when you prepare your machine.
Linux will eventually become necessary or extremely useful if you move deeper into areas such as:
- backend engineering;
- distributed systems;
- networking;
- DevOps;
- SysOps;
- cloud infrastructure;
- containers;
- databases;
- security;
- operating systems;
- automation;
- CI/CD.
A very large part of modern server infrastructure runs on Linux.
You are going to encounter it sooner or later. Our recommendation is simple:
Encounter it sooner.
Do not wait until you are already expected to know it professionally.
Why Linux Mint?
Linux has many distributions. You will eventually hear discussions about:
- Debian;
- Ubuntu;
- Fedora;
- Arch Linux;
- openSUSE;
- Linux Mint;
- and many others.
Do not waste your energy on distribution wars at the beginning. The operating system is here to provide you with a development environment. You are not choosing a religion.
For beginners, we recommend Linux Mint because it provides a very good balance between:
- stability;
- simplicity;
- hardware support;
- desktop usability;
- package availability;
- documentation;
- compatibility with the wider Ubuntu ecosystem.
The Cinnamon desktop is also familiar enough that people coming from Windows usually adapt to it quickly.
That matters. At this stage, we want you learning Linux and software engineering.
We do not want you spending three days configuring a desktop because someone on the Internet told you that a more complicated distribution makes you a better engineer.
It does not.
Dedicated Linux Installation or Dual Boot?
If you have a machine dedicated to learning and development, our preferred setup is simple:
Machine
↓
Linux Mint
Nothing else.
This gives you the cleanest environment and removes unnecessary complexity.
If the machine is also your personal computer and you still need Windows for other software, gaming, or other obligations, dual boot is completely acceptable.
That setup may look like:
Computer
│
├── Windows
│
└── Linux Mint
When the computer starts, you select which operating system you want to use.
If you decide to dual boot, install Windows first and Linux Mint afterward.
Linux Mint can detect the existing Windows installation and configure the boot menu accordingly.
Before Installing Linux
Before changing operating systems or disk partitions:
Back up everything important.
Do not continue until important files exist somewhere other than the machine you are about to modify.
That may be:
- another computer;
- an external SSD;
- an external hard drive;
- network storage;
- cloud storage.
Partitioning mistakes can destroy data.
Choosing the wrong drive during installation can destroy data.
Formatting the wrong partition can destroy data.
The installation process itself is not particularly difficult.
But storage operations deserve attention.
Installing Linux Mint
The general installation process is straightforward.
You will need:
- your computer;
- a USB flash drive;
- the Linux Mint ISO image;
- a tool for creating a bootable USB drive.
1. Download Linux Mint
Download the latest stable Linux Mint Cinnamon Edition from the official Linux Mint website.
Avoid random download websites.
Operating-system installation images should come from the official source.
Where possible, verify the downloaded image using the checksums provided by the Linux Mint project.
2. Create a Bootable USB Drive
Write the Linux Mint ISO image to a USB flash drive.
If you are creating the installation USB from Windows, macOS, or another Linux distribution, tools such as Etcher can be used.
The process is essentially:
Linux Mint ISO
↓
USB imaging tool
↓
USB flash drive
Be careful when selecting the destination device.
The USB drive will be overwritten.
3. Boot From the USB Drive
Insert the USB drive and restart the machine.
Open your computer’s boot-device menu.
Depending on the manufacturer, the key may be something such as:
F2
F8
F10
F11
F12
Esc
Delete
Select the USB drive.
Linux Mint will start in a live environment.
4. Test the Live Environment
Before installing anything, spend several minutes inside the live Linux Mint environment.
Check that important hardware works:
- keyboard;
- mouse;
- display;
- Wi-Fi;
- Ethernet;
- audio;
- touchpad;
- external monitors if you use them.
This gives you an opportunity to detect obvious hardware problems before modifying the disk.
5. Start the Installation
Start the Linux Mint installer from the desktop.
You will be asked to configure things such as:
- language;
- keyboard layout;
- timezone;
- user account;
- installation disk.
If this is a dedicated Linux machine and you have already backed up everything important, the simplest installation option is usually to allow Linux Mint to use the entire disk.
If you are configuring dual boot, pay much more attention to disk and partition selection.
Do not confirm disk changes until you understand which disk and partitions are being modified.
6. Create Your User
During installation, create your normal user account.
Choose:
- a simple username;
- a sensible hostname;
- a strong password.
For example:
username: developer
hostname: dev-machine
Avoid unnecessarily complicated hostnames and usernames.
You will type and see them frequently.
7. Complete the Installation
When installation is complete:
- restart the computer;
- remove the installation USB when requested;
- boot into the installed Linux Mint system.
You now have your development operating system.
First System Update
One of the first things you should do after installation is update the system.
Open the terminal and run:
sudo apt update
sudo apt upgrade -y
The first command updates information about available packages.
The second installs available updates.
You will see sudo constantly in Linux.
Do not worry if you do not understand all of this yet.
We are going to cover the terminal separately.
Basic Development Packages
You can also install several tools that will be useful almost immediately:
sudo apt install -y \
build-essential \
git \
curl \
wget \
ca-certificates \
zip \
unzip
This gives you several fundamental development and system tools.
We will configure Git properly in the dedicated Git section.
Do Not Be Afraid of the Terminal
If you are coming from Windows and have mostly used graphical applications, the Linux terminal may initially feel uncomfortable.
That is normal.
Do not avoid it.
The terminal will become one of your primary tools.
Eventually, operations such as:
cd
ls
mkdir
cp
mv
rm
grep
find
ps
kill
ssh
git
should feel completely normal.
You do not need to memorize everything immediately.
You need to use it.
Repeated use creates familiarity.
Do Not Try to Customize Everything Immediately
Another common beginner mistake is spending enormous amounts of time customizing the environment before doing any actual work.
You do not need:
- twenty shell plugins;
- a heavily customized terminal;
- hundreds of aliases;
- a custom window manager;
- ten development environments;
- a complicated dotfiles repository.
You need a working machine.
Start simple.
Your environment should evolve because you discover a real need.
Not because somebody else’s desktop screenshot looked impressive.
Your Initial Environment
At the end of this setup, your basic environment should look approximately like this:
Development Machine
│
├── Linux Mint
│
├── Terminal
│
├── Git
│
├── Code Editor / IDE
│
├── Browser
│
└── Development Toolchains
That is enough. Everything else can be added when it becomes necessary.
What Comes Next
Once Linux is installed, the next two things you need to understand are:
- The Linux Terminal
- Git
The terminal is how you will interact directly with a large part of your development environment.
Git is how you will manage source code, track changes, work with repositories, and eventually collaborate with other developers.
Neither of these is optional knowledge for the direction we are taking.
We will cover both separately. Do not rush through them. They will become part of your everyday work.