Are coding standards stifling the creativity of developers?
Fabrice Triboix
Senior DevOps Engineer & Python Developer - AWS, Terraform, Kubernetes, Backend - I automate efficiency and security
Why should you use coding standards in your project? At a first glance, they may look like a bureaucratic reminiscence of authoritarianism, stifling the creativity of coders, ruining the motivation of developers! I would actually argue that the opposite is true, provided you hire people with the right mindset…
Creative developers sometimes like playing at the edge of the chosen programming language, resulting in software with explosive properties. Carefully chosen coding standards will limit dangerous code constructs and promote defensive coding.
Some developers are eager to spend hours reducing 10 lines of code into 1. The result would be time wasted developing code difficult to test and debug, that only the author would understand (and only for a few weeks...) Providing boundaries to developers will help them focus on solving problems directly related to the end goal (ie: a working product), and not on achieving absolute genericity or perfect elegance.
A streamlined code base makes the “look and feel” of the code uniform across the project. Developers switching to a new component will be able to delve into the new code and understand it quickly. This will immensely help maintenance and on-boarding.
A previous colleague of mine who worked as a team leader once told me he would say to his troops: “Will you be able to understand what you are coding now in 3 months time at 2am?” If the answer is “no”, simplification is needed! Again, coding standards will help here.
A very important advantage of using coding standards is that it will avoid most flame wars during code reviews. Too often, code reviews descend into nasty religious fights over “my way of doing things is better than yours”, etc. By settling a lot of questions related to the use (and abuse) of the chosen programming language, a lot of counter-productive discussions/fights are avoided.
At the end of the day, the goal of a software project is to deliver a software that works for the client, on time and on budget. It is not to create a piece of art the painters of code would refine ad vitam eternam, pursuing the quest of modelling the pinnacle of code elegance. So coming back to having developers with the “right mindset”, that essentially means people willing to bend their personal preferences for the sake of producing software that makes the client happy. The satisfaction of such developers will come from producing, as part of a team, high-quality software software that works for the client. They will put aside their thirst for intricate artistry, perfect only according to their taste.
I would therefore argue that applying coding standards free up developers from many worries, and enable them to apply their creativity to solve real problems, problems that matter for your client and the productivity of the enterprise.
Senior DevOps Engineer & Python Developer - AWS, Terraform, Kubernetes, Backend - I automate efficiency and security
7 年Thanks Mahendra, that's a good point!
Bluetooth, LE Audio & UWB Consultant
7 年I agree with all you say and will add that it all helps with unit testing too given a framework will be in place