Boot.dev Blog
How Hard Is It to Learn to Code? A Realistic Guide and What to Expect in 2026
by Maya Chen - Computer science and programming educator at Boot.dev
How hard is it to learn to code? Learn what makes coding challenging, how long it takes, which languages are easiest, and how to make the process easier.
How to Learn to Code in 2026: A Step-by-Step Guide
by Lane Wagner - Boot.dev co-founder and backend engineer
Learn to code in 2026 with a realistic, step-by-step roadmap: pick one language, follow a structured path, build real projects, and practice daily until you're job-ready.
SQL Subqueries With Examples
by Boot.dev Team - Programming course authors and video producers
Sometimes one query needs the result of another. A SQL subquery nests that inner query inside another SQL statement so its value or result set can filter, calculate, or select data.
SQL Indexes: How to Speed Up Database Queries
by Boot.dev Team - Programming course authors and video producers
A query that slows down as its table grows may be scanning far more rows than it returns. SQL indexes give the database a faster route to matching rows, often letting it jump to a small set instead of inspecting the whole table.
SQL ORDER BY and LIMIT
by Boot.dev Team - Programming course authors and video producers
SQL's ORDER BY clause sorts query results, and LIMIT caps how many rows the database returns. Together, they answer questions like "Which five products cost the most?" Sort direction and tie-breakers determine the order; without ORDER BY, LIMIT doesn't define which rows you'll get.
SQL Aggregate Functions: COUNT, SUM, AVG, MIN, and MAX
by Boot.dev Team - Programming course authors and video producers
SQL aggregate functions calculate one result from a set of rows. An aggregate query can return an order count, total revenue, average payment, lowest price, or highest score. The five you'll use most are COUNT, SUM, AVG, MIN, and MAX. GROUP BY, HAVING, and NULL values control what they calculate.
SQL WHERE Clause
by Boot.dev Team - Programming course authors and video producers
The SQL WHERE clause filters out rows that don't meet a condition. It lets a SELECT return specific records and keeps an UPDATE or DELETE from touching rows it shouldn't. You can build its conditions with comparisons, NULL checks, AND, OR, IN, and BETWEEN.
SQL CRUD: Create, Read, Update, and Delete Data
by Boot.dev Team - Programming course authors and video producers
SQL CRUD is the set of operations you use to create, read, update, and delete data in a relational database. In SQL, those operations usually map to INSERT, SELECT, UPDATE, and DELETE.
Database Normalization: 1NF, 2NF, and 3NF
by Boot.dev Team - Programming course authors and video producers
Database normalization gives each fact in a relational database one reliable home. It reduces duplicate data and prevents rows from contradicting each other. The first three normal forms, 1NF, 2NF, and 3NF, provide a practical way to find those problems.
SQL LIKE Operator
by Boot.dev Team - Programming course authors and video producers
The SQL LIKE operator filters text using a simple pattern. Use it when you know part of a value but not the whole thing: a name that starts with Al, an email address that ends with a company domain, or a product name that contains banana. Its two wildcards, % and , stand in for unknown characters. Case sensitivity depends on the database.
What Is SQL?
by Boot.dev Team - Programming course authors and video producers
SQL (Structured Query Language) is the standard language for working with relational databases. You use it to define tables, read data, insert records, update records, and delete records. It's everywhere in backend development and data analysis because it handles repeatable queries over large datasets without spreadsheet busywork.
SQL SELECT Statement
by Boot.dev Team - Programming course authors and video producers
The SQL SELECT statement reads data from a database. Every read query begins by describing the result you want: stored columns, calculated values, or a combination of both. At its simplest, SELECT name FROM users; returns the name column from every row in users. Real queries can select several columns, rename them with aliases, remove duplicate results, and combine SELECT with clauses that filter, group, sort, or limit rows. This guide starts with the basic syntax, then explains wildcards, expressions, DISTINCT, clause order, and the mistakes that most often make a query fail or return a surprising result.
SQL Joins: INNER, LEFT, RIGHT, and FULL JOIN
by Boot.dev Team - Programming course authors and video producers
Relational data is often split across tables, but applications need it brought back together. SQL joins combine those rows: an INNER JOIN keeps matches, a LEFT JOIN or RIGHT JOIN preserves one side, and a FULL JOIN preserves both.
SQL Constraints: PRIMARY KEY, FOREIGN KEY, UNIQUE, and NOT NULL
by Boot.dev Team - Programming course authors and video producers
SQL constraints prevent invalid data from entering a database. PRIMARY KEY, FOREIGN KEY, UNIQUE, and NOT NULL identify rows, preserve relationships, reject duplicates, and require values.
SQL CREATE TABLE: How to Create and Alter Tables
by Boot.dev Team - Programming course authors and video producers
The SQL CREATE TABLE statement defines a table, its columns, and the data each column should hold. It can also enforce rules such as required values and unique identifiers.
The Boot.dev Beat. July 2026
by Lane Wagner - Boot.dev co-founder and backend engineer
In June we made a lot of updates to what's inside existing Boot.dev content. You can now work through the Linux course in a real in-browser shell, take multi-question quizzes, format your code with one click, and use OpenRouter on our AI-dependent courses.
Linux Filesystem Commands Every Beginner Should Know
by Boot.dev Team - Programming course authors and video producers
All the data on your computer is organized into files and directories, and as a developer you'll spend a lot of time creating, moving, reading, and deleting them from the command line. This guide covers the core Linux filesystem commands: pwd, ls, and cd for navigation, cat, head, tail, and less for reading files, touch, mkdir, mv, rm, and cp for managing them, and grep and find for searching.
Shell vs Terminal: What's Actually the Difference?
by Boot.dev Team - Programming course authors and video producers
The terms "shell," "terminal," "command line," and "CLI" are used interchangeably all the time, and honestly, that's usually fine. But they are not the same thing, and understanding the difference makes everything else about working in a text-based environment easier. Here we'll cover what a terminal actually is, what a shell does, why developers prefer typing commands over clicking buttons, and some shell basics like variables and history.
Stdin, Stdout, and Stderr: Linux I/O Streams Explained
by Boot.dev Team - Programming course authors and video producers
Programs running in a shell have a standard way of talking to you and to each other: three data streams called stdin, stdout, and stderr. Combine those streams with flags, positional arguments, and exit codes, and you can chain simple commands together into incredibly powerful automations using redirection and pipes.
Man Pages in Linux: How to Actually Read Them
by Boot.dev Team - Programming course authors and video producers
Every command line tool you'll ever use ships with a built-in instruction manual, and most developers never read it. The man command puts the full documentation for ls, grep, cp, and hundreds of other programs one keystroke away, right in your terminal. Here's how man pages work, and how to actually find what you're looking for inside one.
How to Kill a Process in Linux: top, kill, and Signals
by Boot.dev Team - Programming course authors and video producers
Every program running on your machine is a process, and sooner or later one of them will misbehave: a script stuck in an infinite loop, a command chewing through all your RAM, a program that just won't respond. In this post you'll learn how to see what's running with top, how to interrupt a program with [[Ctrl]]+[[C]], and how to escalate to the kill command (and the dreaded kill -9) when a process refuses to die.
Linux File Permissions Explained: chmod, chown, and sudo
by Boot.dev Team - Programming course authors and video producers
In a Unix-like operating system, permissions control who can do what to which files and directories. If you've ever run a script only to be slapped with permission denied, or typed sudo because the internet told you to, this is the missing context. In this article you'll learn how the rwx permission model works, how to change permissions with chmod, how to change ownership with chown, and when you should (and shouldn't) reach for sudo.
Symlinks in Linux: How to Create and Use Them
by Boot.dev Team - Programming course authors and video producers
A symlink lets one file live at two paths: the real one, and a lightweight pointer that forwards to it. It's one of those Linux features you can ignore for years, then suddenly use every day once you've seen what it's for (dotfiles, versioned tool installs, and log directories, to name a few). Here's what symlinks are, how to create them with ln -s, and how they differ from copies.
Linux Shell Configuration: .bashrc, .zshrc, and Beyond
by Boot.dev Team - Programming course authors and video producers
Your shell runs a configuration file every single time it starts, and once you know how to edit it, you can customize almost everything about your command line experience. In this post you'll learn how shell configuration files like .bashrc and .zshrc work, how to make PATH changes permanent, and how to get a proper local setup: WSL 2 for Windows users, and a terminal emulator you'll actually enjoy.
The PATH Environment Variable in Linux, Explained
by Boot.dev Team - Programming course authors and video producers
Sooner or later, every developer installs a program, types its name into the terminal, and gets hit with an error: command not found. Usually, the culprit is the PATH environment variable: the list of directories your shell searches when you try to run a command. To understand your PATH (and how to fix it when it breaks), it helps to understand how programs run on Linux in the first place. So that's where we'll start: compiled vs interpreted programs, executables, shebangs, and environment variables. Then we'll dig into the PATH itself and how to change it.
