Zooce

September 30, 2024

Your software "engineers" aren't engineers

Okay, let's be honest.

Many (and I mean...many) software "engineers" are NOT engineers at all and here's why:

  1. They do not use even the most fundamental engineering principals, ever.
  2. They do not take time to understand the problem they're trying to solve.
  3. They do not take time to understand the current shape of their system.
  4. They do not consider the costs and trade-offs of their solution.
  5. They only think about code.

These are not engineers, these are programmers and only programmers. They do NO engineering at all. Writing code is NOT engineering.

Here's how to be a real software ENGINEER:

Step 1: Understand the Problem

If you don't understand the problem, you can't possibly find a good solution. So start by understanding the problem.

Here's a hint: all problems in software are data problems, so if you don't understand the data, you don't understand the problem. Mike Acton gives a great intro to this in his talk on data-oriented design: https://www.youtube.com/watch?v=rX0ItVEVjHc - you can still apply these ideas in an object-oriented world if that's your thing.

Step 2: Understand the System

If you don't understand the current shape of your system, you can't possibly know how to best fit a solution into it (or how to reshape it so a solution can fit). So spend time understanding your current system.

Hint: Focus on the parts of the system that are related to the problem you're solving....in case that wasn't clear.

Step 3: Engineer a Solution

Now take your understanding of the problem and the shape of your system, apply some fundamental engineering principals, pay attention to the costs and trade-offs you encounter, and sprinkle in some creativity to land on a reasonable solution.

Only after following these steps should you start coding the solution you engineered. That is all.