Helping you master Software Engineering.

Receive a weekly programming tip to fast-track your career.

Enter your email to join and get my short guide

'The Road To Master Programmer'.

    We won't send you spam. Unsubscribe at any time.

    The Sad and Happy Faces of Liskov

    Fundamentally, the Liskov Substitution Principle (LSP) is…

    The Difference between Validation and Business Rules

      In software development, two concepts still cause…

    The Grand Chessboard of Software Design: Unlocking the Strategy Pattern

     Have you ever been at a crossroads, paralysed by…

    Should We Directly Unit-Test Private Functions?

     Software developers have long debated whether to…

    The Joy of Read-Only Getters

    Read-Only getters (read-only properties in C#) are an excellent…

    Unit Testing Non-Deterministic Values

    Sometimes we will need to set random or non-deterministic values…

    Fixing Misconfigurations With Smart Defaults

    In a recent article, we considered what value a program's configuration…

    Beyond String Configurations

    Sometimes even retrieving simple configuration values can be…

    Separate Configuration. Here’s Why.

    Consider the configuration code in the constructor for a hypothetical…

    What Is Authorisation?

    I feel that the security concepts of Authentication and Authorisation…

    What Is Authentication?

    And why is Authentication central to computer system security? I…

    Using Exceptions For Program Control Flow?

    With my recent article on when to use exceptions, I got a few…

    Exceptions are Confusing. Here’s When to Use Them.

    In my days as a junior developer, I didn't understand exceptions.…
    wrong http status code

    There’s Something Seriously Wrong with an HTTP Status Code

    I relish writing and communicating general truths on programming…
    Not Wanting to Break Anything

    The Danger of ‘Not Wanting to Break Anything’

    If you've worked with seriously convoluted, no-nonsense legacy…
    shotgun surgery

    Beware of Shotgun Surgery

    Have you ever had to make one change after another merely to…
    factory method

    The Factory Method Pattern

    I get it; Design Patterns take time to understand. It took me…

    The Financial Double-Record Anti-Pattern

    I find it fascinating when encountering a software design anti-pattern,…
    Chain Of Responsibility

    The Chain Of Responsibility Design Pattern

    Chain of Responsibility Chain of Responsibility is a behavioural…
    use case

    What Is A Use Case?

    What is the essential part of a computer system?Answer: The…