Programming first principles – 2. Audience – Who this series is for

Video version of this article: https://youtu.be/TutgrBoQKSw

This article is part of the "Programming first principles series":

  1. Purpose - What this series is about
  2. Audience - Who this series is for (this article)
  3. Requirements of software
  4. Premise - Minimal information
  5. Premise - We must understand what we're doing
  6. Premise - Minimize propagating changes throughout the system
  7. Premise - Complexity increases exponentially with scale
  8. First principle - Proof that code works
  9. First principle - Principle of least astonishment
  10. First principle - Principle of least knowledge
  11. First principle - Separation of concerns
  12. First principle - Abstraction
  13. Side effects

Also suggested:


In this post we'll talk about who this series is for / who will benefit from this series.

Table of contents

I would like to address three types of developers. Let's call them beginner, intermediate and advanced developers.

These are not intended as an insult to anyone. They're just a broad categorization of programming experience for the purposes of this post.

Let's get right to it.

Beginner developers

In this post, what I mean by a beginner programmer is someone who is still struggling to get small projects working.

At this point it's probably more valuable to focus on overcoming those problems rather than applying programming principles.

Programming principles are more about code organisation, which begins to matter more as a project grows in size. Yes it's important to apply principles from the beginning, but if a project will stay small for its entire lifetime then it's less important.

Having said that, I highly recommend this series anyway if you have the time. While you may not be able to apply these principles immediately, you'll gain good early exposure on them. I really believe this will give you a great head-start and a natural aptitude for when you attempt to learn programming principles more seriously in the future.

Intermediate developers

For this post, what I mean by intermediate developers is developers who can get small projects working and can successfully work on large projects but feel like their code structure and organisation could benefit.

I feel intermediate developers will benefit most from this series, particularly if they actively want to learn about programming principles.

Advanced developers

For advanced developers, I think it depends. If you're already very comfortable with programming principles, there will be less value for you in this series.

However, there is probably something you'll pick up anyway. Also you enjoy the different angle I use to try to explain the principles.


This article is part of the "Programming first principles series":

  1. Purpose - What this series is about
  2. Audience - Who this series is for (this article)
  3. Requirements of software
  4. Premise - Minimal information
  5. Premise - We must understand what we're doing
  6. Premise - Minimize propagating changes throughout the system
  7. Premise - Complexity increases exponentially with scale
  8. First principle - Proof that code works
  9. First principle - Principle of least astonishment
  10. First principle - Principle of least knowledge
  11. First principle - Separation of concerns
  12. First principle - Abstraction
  13. Side effects

Also suggested:

Share this post

Share on facebook
Share on google
Share on twitter
Share on linkedin
Share on pinterest
Share on print
Share on email