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…
    authorisation

    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…
    exception

    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…
    Double-Record

    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…