Welcome

Mission Statement

appthem exists to share experiences and learnings that I have had throughout my career as a software developer. Along the way, I've worked with some phenomenal individuals, and I must have read thousands of articles written by industry experts and amateurs alike. I've been involved in some great success stories and I've also experienced the fallout from some unmitigated disasters. I've been fortunate enough to work with some real genius developers too on some really exciting projects.

I've always tried to maintain a focus on quality coding, and I've been able to facilitate positive changes to software delivery in just about every company I've worked.

So, what should we be doing to improve software development?

  1. Create a coding style for your organisation including coding standards and patterns. Apart from any other reason, consider the following:

    A typical developer spends roughly 90% of their time reading code and 10% of their time performing modifications or writing new code.

    How often have you looked at code (perhaps written by someone else, or perhaps written by you a year or more ago) and you've found it very difficult to understand? If that code had been written to a defined standard using known patterns, it should be immediately more readable. Let's imagine that this cuts down your reading time by only 5% - not worth it right? Wrong, because that 5% can now be spent in coding - and this represents a 50% increase in development time!

    In the most successful team I ever managed, in terms of it's productivity and low number of defects, it was impossible to tell who had written a piece of code without going to the Blame list. This is because we'd all agreed on how we were going to write our code at the start, and we met frequently to peer review each others code. This review allowed us to evolve our standards as we progressed on the project and it also meant we were all evolving together - nobody was left behind.

  2. Automate, automate, automate...  There are so many tools available today that simplify the process of software delivery, for instance:
  • Automatic code review - ReSharper, Codacy, FxCop
  • Automatic builds - Azure DevOps, TeamCity, Jenkins
  • Automate database update scripts - Redgate, DbUp
  • Automatic deployment - Azure DevOps, Jenkins, Octopus

Writing code is a simple thing, but crafting code requires thought and, as it is in other professions, mastery comes only with experience & practice.