Software Development: Choosing the best tools for the job
Over the past few months I’ve been pondering the similarities between building a house and building a piece of software.
My house extension is now complete. It’s taken a good few months, but it’s been worth it – we now have the extra space we need.
Like software development, the house building process is very involved: understanding the need, determining the budget available, building the case, estimating the time and budget required, selecting a developer, the detailed design, planning approval and, only then, the build.
A multi-skilled team
Whether on a building site or in a software development department, there’s someone who oversees the multitude of different skilled professionals that must be co-ordinated along the way: from the architect to the brick layer, carpenter, plumber, developer, database administrator, systems manager and more
Each person, whatever their profession, has undergone extensive training to ensure they have the specific skills for their role. Whether higher education, apprenticeships or individual courses that address specific elements of their trade, each has also had to ensure they keep their skills up to date.
The electrician has had to keep abreast of the latest wiring regulations – from the 1st edition that came into play in the 1880s to the current 17th edition. Similarly, the database administrator has to keep up with the latest databases models – from the navigational ones of the 1960s through relational, object-oriented to today’s generation of NoSQL databases.
Right tools for the job?
One weekend I deliberated about the tools the tradesmen were using. I noticed, in particular, the carpenter’s tools. The carpenter would use a circular saw for floorboards, a chop saw for architraves, a jigsaw for plywood and a hand-saw if a quick/rough cut was needed.
At the end of the day each tool is appropriate for some jobs and not for others. You wouldn’t use a small jigsaw for felling a tree would you? But, equally, each tool can be used for a variety of different jobs and, in general, each job can be done using a number of different tools.
Keeping up with the gadgets
Each person has their own preferred set of tools: the tools they have been trained to use, the tools they have a lot of experience using and the tools that give them the best result. When choosing which tools to use they must also consider that they’re part of a team and, to ensure the best outcome, take into account the tools and approaches used by the other tradesmen.
Their preferred toolset will also change over time. As new features and structures are incorporated – or even new tools come on the market – The professional developer may choose to adopt them. It may take a bit of training and time to get the best out of a new tool but, in the long run, adopting new and next generation tools will often improve the quality or efficiency of the work.
How does it compare to developing software in the fintech world?
Software developers also have their preferences. Some like Java, others like C#, for instance.
Equally, languages have evolved over time. A more experienced developer may have begun programming with Fortran at university, then adopted COBOL in their first job, then later C, C# and more recently the likes of Node.js and Golang.
Each new language posed a dilemma: is it worth investing time and effort in learning it or should I continue with the languages I know well and I know I can use to deliver good results?
As the world moved from mainframes to PCs and then onto the Internet, the developer was forced to adopt new languages: from transactional languages to object-oriented languages and then onto web-focused languages. But given there are multiple web, OO and transactional languages, they still had a choice of which languages to learn.
It’s all in the preparation
My final observation was around the preparation. I had never considered before how much preparation goes into decorating. A smooth wall finish needs more time to be spent on filling and sanding than on the painting itself. The pits, gouges and picture hook holes are like the technical debt that my wall has accumulated over the last 10 years.
It’s much the same with fintech software development. Address the technical debt and quality of the foundation before applying the finishing touches.
Have you been involved in any building projects recently? How does your kitchen-diner or loft extension compare to your software projects?