What a Software Engineer Does, and Where to Start

Notes on what the job actually is, why I started with web development, and how to pick the next language rather than guessing at it.

The job

Software engineers design and build computer systems and applications that solve real problems.

Software engineering itself is the branch of computer science covering the design, development, testing and maintenance of software. The word engineering is doing real work in that phrase: it means applying engineering principles — not just knowing a language — to build something that other people rely on.

The first skill is programming

The first thing to do is learn to program.

There are a great many languages, and part of the job is understanding when and why to reach for a particular one to solve a particular problem. That is the skill; the syntax is the easy half.

This does not mean learning them all now. You will be learning for your entire career, so there is time, and which languages you end up using is decided by the kind of projects you work on rather than by a plan you make at the start.

Why I started with web development

I started with web development because it was the shortest route in — the fewest prerequisites before you can begin, and it gets you into the habit of picking up new languages, which is the habit that actually matters.

It is also the fastest route to working. Once you are comfortable with HTML5, CSS and JavaScript, you are technically hireable as a junior front-end developer.

How to choose the next language

This is the part I would tell anyone starting out, because it replaces guessing with reading.

Once you have the front-end basics, start applying for junior front-end developer jobs — and pay attention to which languages the adverts are asking for. That is your next language. The job market tells you what to learn next, and it is more current than any curriculum.

Then, when someone calls you back, you are at least familiar with it.

The order that worked

  1. Learn to program at all — foundations, not a specific stack.
  2. Get comfortable with HTML, CSS and JavaScript.
  3. Build things and keep them, so you have something to show.
  4. Read job adverts to find the next language.
  5. Learn that one, and repeat.

The most important step is whichever one is in front of you, and it will change depending on the kind of project you end up on.