1. Refactoring CI Build Pipelines

    By Shaun Finglas

    Problem with CI Tooling

    CI tools such as Team City are great. They provide a nice front end that can be used as control for all your builds. The likes of triggers, test results and build history are some of the stand out features.

    In addition to these features there …

  2. The Boy Scout Rule is Misunderstood

    By Shaun Finglas

    What is it?

    During my time in the Scouts we would clear down our camp site in the same way each time. We would gather everyone in a big circle around the campfire and face outwards. The fire was the center of the camp.

    We would then all walk outwards …

  3. Code Smell: Time Span Embedded in Variable

    By Shaun Finglas

    A common code smell that tends to go unnoticed is embedding a time span within a variable name. While developers recognize that embedding types into names is redundant they often fail to see this smell.

    You often need a variable to trigger on a set period, such as every fifteen …

  4. Testing your Composition Root

    By Shaun Finglas

    Separating configuration from your code itself is a good practice. Unfortunately this can quite be quite complex in itself. In fact it is fair to say that in many cases the use of DI containers to achieve this can be overkill for a task that should be rather basic.

    Recently …

  5. Logging vs Auditing

    By Shaun Finglas

    The difference between logging and auditing is a subtle yet important distinction.


    • Technical in nature. Deals with technical concerns, stacktraces or errors.
    • Additional levels such as DEBUG, INFO, WARN, ERROR, FATAL for classification.
    • Logging can be simple such as traditional stdout statements, or more complex with semantic/structured logging …
  6. The QA Test Matrix

    By Shaun Finglas

    Historically teams I've worked with have taken a few varying approaches when designing tests against acceptance criteria. One is to have the business define the feature, while the team help define the acceptance criteria. Ultimately the business gets the final say if they agree, and further acceptance criteria is either …

  7. Be Humble

    By Shaun Finglas

    Some of the best developers I know treat everyone with mutual respect. Not only this they are open about what they do know and what they don't know. In fact they'll often proclaim “I don't know” and go about finding out how they can answer your question or solve a …

  8. Convention Based Tests

    By Shaun Finglas

    Most projects have some form of convention. Examples would include:

    • Attributes/Properties for REST API's
    • Inheritance for third party base types
    • Assemblies/Packages for third party code that is loaded dynamically
    • Folder or namespace conventions
    • And many other forms of conventions

    In a few of these examples static analysis can …

  9. Finance For Software Developers

    By Shaun Finglas

    Back at the start of 2016 I set about sorting my personal finances out, inspired by Soft Skills. The book makes a point to consider passive income as a viable solution to wealth building. The reason for this is simple, software developers tend to get paid well if working professionally …

  10. DDD - Events

    By Shaun Finglas

    The act of something happening is one of the most crucial aspects of implementing Domain Driven Design (DDD). I missed the importance of domain events when first exploring DDD.


    Most requirements come in the form when something happens, do this. Something in this case would be an action, and …

  11. POODR Highlights Part 2

    By Shaun Finglas

    Two other stand out topics from POODR were the use of tests and inheritance. The first set of higlights covered dependencies and arguments.


    A conclusion that I agree with is that in general “most programmers write too many tests.”. A great quote in the book sees “tests (as) the …

  12. Constant Object Anti Pattern

    By Shaun Finglas

    Most constants are used to remove magic numbers or variables that lack context. A classic example would be code littered with the number 7. What does this refer to exactly? If this was replaced with DaysInWeek or similar, much clarity is provided. You can determine that code performing offsets would …

Page 1 / 13 »