2017 was a big year for us with a number of successful projects under our belt including writing our second book Building High Performance Agile Teams, adding more great people to our team and launching our new Made Tech Academy initiative.
Polyglot disciplines
As a polyglot software engineer, I have discovered some disciplines which I have found beneficial to me. My hope is that readers of this article will find the experience I share here profitable to their endeavours as polyglots (or indeed as monoglots).
Slicing code
The primary goal of slicing software is to make it cheap to ship, and inexpensive to ship additional features.
Beware of solution problems
A solution problem is an emergent property of a solution. Experienced Software Engineers avoid creating solution-problems, they create simple solutions for the root problem.
Semantically Stable Test Suites
When we run a test suite in most languages, we can also generate reports with percentage of code coverage. These reports aren’t all they are cracked up to be.
A tale in adopting Alpine Linux for Docker – problems we faced with RSpec testing
If you read Wikipedia you will find that Alpine is a Linux distribution that is based on musl (more on this later) and BusyBox.
The Strawman: TDD
There have been a few rumblings recently between the subculture of TDD-lovers and the rest of the programming community, as always. I’ve heard reports that TDD doesn’t work, that it is snake oil, and that there are studies to suggest that TLD and TDD are no better than each other in a scientific study.
Dismantling Silos
A silo exists in an organisation when one group within the organisation has differing goals to another. In most organisations there are groups of people that, usually, have an objective to fulfil by an agreed upon date. For example, the Sales team is set a mandate to increase the number of customers of the company by 10% every month, whereas the Support team has internal performance goals, and one of them is to deliver support within a fixed budget.
Cohesion, coupling and viscosity
One of the most important goals of a software engineer is to craft highly cohesive code. Cohesion refers to the grouping of code in a software system.
Planning is hard, can we do Kanban instead?
Planning is an activity that usually results in some emotional response, however it can generally be said that teams avoiding planning will also be avoiding thinking about the future in general. A lack of robust planning the detail in your organisation can bubble up to impact plans at the high level portfolio, causing serious consequences on Lead Time and Delivery Rate.