Software anti-patterns are a well covered topic, but I thought I would highlight some of the ones I’ve encountered most frequently. These may seem obvious and at times innocent looking but make no mistake, they are sinister and will sabotage your efforts to add features to a codebase. I’ve gone ahead and made up my own names for some of the more specific anti-patterns.
Cloud and engineering
How to Create a Better Rails Development Environment with Docker Compose
I’ve seen quite a few articles recently detailing the steps to creating a simple Ruby on Rails development environment without Vagrant. I’ve found a few issues with these that make the environment somewhat unfeasible for real use. Hopefully, by the end of this article you will have a Docker-based development environment that can actually be used for real development.
Componentisation and the Single Responsibility Principle
Keeping a good separation of concerns means writing code that only handles as much as it needs to. It’s a concept that should affect every piece of code you write, from class definitions to database tables. Only store the data which is relevant. Only encapsulate the logic which is covered by the responsibility of your class. My colleague wrote about this recently when discussing Inheritance and Composition.
Pull requests and Continuous Integration
A few months ago at Made Tech the Finery team switched to GitHub. Before the move we pushed commits directly into the master branch. Commit notifications with links to the diffs would then come up on the Finery channel on our HipChat server, and members of the team could review the commits at their own leisure. There was no commitment to code review.
All looking rather Dashing
At Made we collect a lot of metrics. From projects, to servers, to support, to admin. All of these are stored in various services and it’s not that easy to get quick and simple visibility of these.
Otto: truly a successor to Vagrant?
Otto is marketed as the successor to Vagrant, the development tool that has been used by developers across the globe for the past five years.
Testing without QA
We have an almost continual dialogue on how to improve the quality of the software that we’re involved in delivering. One of the conscious decisions that we’ve made is that we don’t make use of a dedicated QA or test role.
Internal vs External Quality of Software
Many studies have been conducted in an attempt to formalise the quality of software. Some quality models have been established, like SQuaRE by Consortium for IT Software Quality, which takes into consideration 5 key points: Reliability, Efficiency, Security, Maintainability and (adequate) Size.
There is more to code quality than coverage
As developers we always strive to write the best code possible and, while we test for it, coverage doesn’t always tell the full story of the quality of your code output.
IaaS vs. PaaS: what we’ve learned
We’ve been long-time proponents of PaaS, or Platform as a Service. We’ve also been long-time consumers of IaaS, or Infrastructure as a Service.