I became a certified Quality Software Developer
Software is everywhere
In case you still doubted it: Software Is Eating The World, but building quality software is tough! We can get better with experience and now there is a qualification: SIG partnered up with PEOPLECERT presenting us developers the opportunity to obtain a Quality Software Development certificate:
QSDcert Q & A
In collaboration with SIG I will answer a couple of questions regarding this qualification:
Following your recent review of the Building Maintainable Software book, you recently successfully passed the QSD exam, which is based on this body of knowledge. You are now a certified Quality Software Developer — how do you feel about this achievement and how is this qualification going to help you?
I am quite happy with this achievement. Writing quality code takes years to learn and even then it can be a challenge (remember that project that has these ever-moving requirements? …)
This book / methodology has made me a better programmer. I recently obtained Java and Python certificates as well, but I think this one is more valuable because writing maintainable code is an overarching skill. Being certified in language x does not guarantee you will be an effective coder. It helps a lot, don’t get me wrong, but at the end of the day having code that can be expanded, quickly bug-fixed and be maintained by fellow developers is fundamental.
You took the exam through PEOPLECERT’s online proctoring — tell us a bit about your experience in that.
Very positive. The session did not open automatically and in minutes I had PEOPLECERT folks on the phone. Their support and the whole exam procedure was very professional. Also nice that you get the results instantly after completing the exam.
Would you recommend this qualification to other users?
As you guessed from my first answer yes! Specially for software developers caring about quality code (and shouldn’t we all?!) I think it is a must.
When I started out I wrote pure functional code for the machine, even recent code has obscure parts, outdated comments, but since studying the book, exam and the clean code literature, I am a more conscious coder. I now add my unittests, refactor code, use descriptive method names over comments, etc.
Having this certificate also wants to make you comply. Writing maintainable code feels great and businesses gain more value from it. I measured some recent projects I did and found them more maintainable and more compliant with the guidelines. For me it’s proof this stuff works!
Any tips for software developers thinking of taking the exam?
The preparation material should be enough. I recommend taking the following route:
- Read the book Building Maintainable Software once in its entirety.
- Watch the accompanying video course: Building Maintainable Software — A Metric-based Approach to Setting Standards, it covers the same material but (if I remember rightly) had some different code examples. It probably helps to let the material sink in.
- Practice, relate what you learned to your own code/work. I did a book review for example which helped me digest the concepts better. Shortly before the exam I started building a code quality checker for my Python code (in progress, not done yet). This also helped me commit this material to muscle-memory.
- Optional #1) reread the book. I did this because the review and exam were 3 months apart. I picked up additional things the second read, the short (134 page) book covers a lot!
- Optional #2) read the linked books. The exam is heavy on refactorings, so Refactoring: Improving the Design of Existing Code is a good reference. It is not required though because both book and video course demonstrate the refactorings very well. If you have to choose one title I would read Clean code. It’s closely related to the subject and one of the best books in the field.
Do you think that QSD can be helpful for the software developers out there even for those not working necessarily with Java or C# but they are knowledgeable about them?
Yes, Java / C# are just the languages the concepts are taught in, but the principles are universal, you can apply them to any language. In my case for example I have improved the maintainability of my Python code.
Why did you feel it was so important to get qualified in QSD?
Writing quality code can mean the difference between having a maintainable solution or something that does not release or has to be rewritten early in the product’s lifecycle. The difference is between a money yielding solution or a time-wasting effort. Better software is cheaper, specially in the long run.
But there is another dimension: our world increasingly runs on software so can we afford to have unmaintainable systems? With humanity increasingly relying on technology (read code), failing to meet basic quality requirements can even jeopardize our health, security and financial well-being.
To drive this last point home, SIG’s Save Your Digital Transformation report shows some shocking examples of lack of maintainability in critical software systems:
- A system update at the Royal Bank of Scotland in June 2012 caused a series of malfunctions that took a month to sort out and caused serious problems for hundreds of thousands of people.
- Two hackers demonstrated they could take full control of a journalist’s Jeep Cherokee, because it had become impossible to add proper security measures to the car’s system.
- In the well-publicized case of some Toyota vehicles accelerating while the driver was apparently not touching the pedal, it took independent experts 20 months of looking at the source code to determine whether the accelerator was connecting to the engine in the correct way.
So in a world eaten by software, where life critical functionality has been delegated to software, writing quality code is more important than ever!
This article was originally posted on my own site.