Software Craftsmanship
Written by Wayne Zammit
Beyond the classic “Hello World!” program, writing real world software is a challenging affair. A lot of time and effort go into writing code that behaves as intended, and even then, the job is only half done.
Releasing software prematurely, even if it “works”, may suit short-term needs, but in the long term it’s a recipe for disaster since freshly written software is usually in a very messy state. This is because writing software is an iterative process of discovery, tweaking the design with every iteration, until it gets to a state where it works. However, nobody, no matter how skilled or well-intentioned, can write perfectly clean, production-ready code. Messy code, if left untreated, will rot very quickly and obviously, it is not something you want your production code to do.
This is where software craftsmanship comes in. Software craftsmanship, in the broadest of terms, is the skill of arranging – or refactoring – code into the best it can possibly be in terms of readability and maintainability. Any software craftsman will tell you that writing clean code that is easy to read and understand is more important than writing code that works. This might sound counter-intuitive, but clean code is easier to fix and easier to maintain whilst code that is hard to follow is hard to fix and even harder to maintain. But what exactly is clean code? and what is a software craftsman?
One can find many definitions of “clean code”, but my personal favourite comes from Michael Feathers: “Clean code shows nothing obvious that could be done to improve it.” There are many ways to improve code, many different factors to consider, and the true software craftsman can strike a balance among all these different factors to produce code that does what it’s supposed to, is easy to follow and therefore easy to maintain.
This is easier said than done. There is a plethora of principles, patterns and practices in software development and design, not to mention the various nuances of specific programming languages. It takes skill, experience, and discipline to wield these principles and use them effectively without resulting in an over engineered solution. That’s what sets software craftsmen apart from other software developers, they are indeed professionals, masters of their craft.
MITA is currently transforming two very large systems of strategic importance: Taxation and Social Security. Software craftsmanship and clean code are at the technical heart of this challenging project. Craftsmanship is what will make it possible for these systems to evolve smoothly meet the ever-increasing demands and expectations of business and society. Just like any other craft, acquiring this skill requires guidance, practice, discipline, and most of all passion. Young software developers today face the challenge of understanding the decades-old fundamental principles of software design which modern technology and tooling tend to obscure. MITA provides the space and time for developers -that are curious enough – to re-discover these principles and learn how to use them in the complex, rewarding projects it supports.