Four Worlds

There is a lot of advice out there for programming, but there’s almost never a distinction about what type of code it applies to. This article identifies 4 different “worlds” of code. Millenial Programming (as most programming advice) is only targeted at one of these worlds.

Four worlds

The four worlds are

  • Throwaway
  • Hardware Restricted
  • Real-Time Simulations
  • GUI based

Throwaway

A quick script that you run once and never need again afterwards. A lot of good practices in software development favor code that’s easy to read over code that’s easy to write. That doesn’t make a lot of sense for code that you only write and read once.

Hardware Restricted

If the hardware dictates certain limits, it’s simply not possible to do it differently. If you’re writing code for a tamagotchi on a chip with 32KB, you just can not import a 40KB library.

Unless some sort of minifier is involved, you might even be forced to use difficult to understand one-letter names for your variables. Restrictions in processing power might force you to use algorithms that are more difficult to understand, but just more efficient.

Or in short: If you have no choice, you can’t debate the choice.

Real-time simulations

I first wanted to call this “Games”, but that’s not what makes the difference. On one had, a simulation can be run for non-game-related reasons. On the other hand, a manager game where you only click in the interface works quite similar to e.g. an office application.

The real difference is simulating a constantly moving world. Things colliding and spawning and raycasting and a user continuously giving input are things where an office software approach will probably fall flat. That makes them different from GUI-based applications.

They differ from hardware restricted applications in that often there is not a hard limit. Instead it is a goal to “surf the edge” – if the app is too slow, a user can e.g. decrease the graphics quality and vice versa.

GUI-based

These are what most people think of when you mention “an application”. The user clicks/taps/drags/etc. something in the GUI and that makes something happen. This includes most websites and “tools for professionals” (like office software). The user-interaction-based nature of this type of software allows a nice separation and things like business rules or use cases can be easily defined.

This is what most programming advice applies to. This is also what Millennial Programming is targeted at.

Next Article: Don’t Be a Byte White Knight