top of page

Environment Setup: The Skill Every Tutorial Skips

  • ShiftQuality Contributor
  • Jun 17, 2025
  • 5 min read

Every tutorial begins the same way: "First, make sure you have Node.js installed." Then it moves on to the actual content as if that sentence was self-explanatory.

For a developer with a working environment, it is. For someone setting up for the first time, it's the beginning of a two-hour side quest that involves conflicting installation methods, version confusion, PATH issues, and the creeping feeling that maybe you're not cut out for this.

Environment setup is a real skill that produces real frustration, and it's the skill that's most consistently treated as trivial by the people who write learning content. It's not trivial. It's the barrier that stops more beginners than any programming concept.

Why Setup Is Hard

It's Operating System-Specific

Tutorials are usually written on one operating system. If the author uses a Mac and you use Windows, the commands are different, the file paths are different, the installation methods are different, and the troubleshooting is different. "Open your terminal" means something different on Mac, Windows, and Linux.

The tutorial doesn't mention this because the author forgot that other operating systems exist — not out of malice, but because their environment is invisible to them.

Version Conflicts Are Invisible

"Install Python" sounds like one thing. But there's Python 3.9, 3.10, 3.11, 3.12, and 3.13. Your system might already have Python 2.7 installed (Mac used to ship with it). A tutorial written for 3.10 might not work on 3.13 if it uses a library that hasn't been updated. And the error messages from version conflicts are unhelpful — they don't say "wrong Python version," they say something cryptic about a missing module or incompatible syntax.

PATH Is a Mystery

When you type node or python in your terminal, the operating system searches a list of directories called the PATH to find the program. If the program isn't in any PATH directory, you get "command not found" — even though you just installed it.

PATH issues are the #1 source of setup frustration for beginners. The program is installed. The terminal can't find it. The fix is editing an environment variable, which requires understanding a concept that no beginner tutorial explains.

Things Accumulate

Over time, your computer accumulates multiple versions of runtimes, conflicting packages, orphaned configuration files, and tool remnants from abandoned tutorials. The clean environment you started with becomes a minefield where installing one thing breaks something else.

A Practical Setup Guide

Step 1: Choose Your Editor

VS Code. Free, works on every OS, enormous extension ecosystem, integrated terminal. This is the default recommendation for a reason — it works well for every language and framework, and most tutorials assume you're using it.

Install it. Add the extensions for your language (Python extension for Python, ESLint for JavaScript, C# Dev Kit for .NET). Don't add 30 extensions on day one — add them as you need them.

Step 2: Get a Proper Terminal

Mac: The built-in Terminal works. iTerm2 is nicer but not necessary.

Windows: Install Windows Terminal (free from Microsoft Store) and Git Bash (comes with Git for Windows). Or install WSL (Windows Subsystem for Linux) for a full Linux environment inside Windows — this is the best long-term investment if you're serious about development.

Linux: Your terminal is already good.

Step 3: Install a Version Manager (Not the Runtime Directly)

This is the advice most tutorials get wrong. Don't install Node.js from the website. Don't install Python from python.org. Install a version manager that lets you install and switch between multiple versions.

For Node.js: Install nvm (Node Version Manager) on Mac/Linux, or nvm-windows on Windows.

# Install Node 20 via nvm
nvm install 20
nvm use 20
node --version  # Should show v20.x.x

For Python: Install pyenv on Mac/Linux, or use the Python installer on Windows (but check "Add to PATH" during installation).

# Install Python 3.12 via pyenv
pyenv install 3.12
pyenv global 3.12
python --version  # Should show 3.12.x

For .NET: Download the SDK from Microsoft's website. The installer handles PATH correctly.

Version managers prevent the "wrong version" problem entirely. When a tutorial says "requires Node 18," you type nvm install 18 && nvm use 18 and you're done.

Step 4: Install Git

Git is the version control system every development project uses. Install it before you need it.

Mac: xcode-select --install (includes Git) or install from git-scm.com. Windows: Download from git-scm.com (includes Git Bash). Linux: sudo apt install git or your distro's equivalent.

Configure your name and email:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

Step 5: Verify Everything Works

After installing, verify each tool:

node --version     # Should show a version number
npm --version      # Comes with Node
python --version   # Should show 3.x
git --version      # Should show a version number
code --version     # VS Code, if installed correctly

If any of these says "command not found," the installation didn't add the program to your PATH. This is the most common issue and the fix depends on your OS and how you installed the tool.

When Things Go Wrong

"Command Not Found"

The program is installed but the terminal can't find it. Solutions:

  1. Close and reopen your terminal. PATH changes often require a new terminal session.

  2. Check your PATH. echo $PATH (Mac/Linux) or echo %PATH% (Windows CMD) shows which directories are searched. Is the program's directory listed?

  3. Reinstall with the version manager. Version managers handle PATH correctly.

Version Conflicts

You run the code and get unexpected errors. Check which version is actually running:

which python      # Shows which Python binary is being used
which node        # Shows which Node binary is being used

If it's pointing to a system-installed version instead of your version manager's version, the version manager's PATH entry isn't taking priority.

"Permission Denied" During Installation

On Mac/Linux, don't use sudo to install Node packages globally. Instead, configure npm to use a user directory, or use nvm (which installs to your user directory by default).

The Nuclear Option

If your environment is so tangled that nothing works, the cleanest fix is:

  1. Uninstall everything (Node, Python, etc.)

  2. Delete leftover configuration files

  3. Start fresh with version managers

This takes an hour and saves days of debugging weird conflicts.

Keep Your Environment Clean

  • Use version managers for every runtime

  • Use virtual environments for Python projects (python -m venv .venv)

  • Use package.json/requirements.txt for dependencies — never install project dependencies globally

  • Don't run package managers with sudo unless you understand exactly why

  • Document your setup. When you get a working environment, write down what you installed and how. Future you will thank current you.

Key Takeaway

Environment setup is a real skill that tutorials treat as trivial. Use version managers (nvm, pyenv) instead of installing runtimes directly. Get a proper terminal. Verify installations with --version commands. When things break, "command not found" usually means a PATH issue, and version conflicts usually mean the wrong version is being used. Keep your environment clean with version managers and virtual environments. And when you get it working, write down what you did.

Comments


bottom of page