How not to be a stupid software engineer.
Source code of most of the applications used internally by a global company got leaked out a month back. Reason, someone there was careless and stupid enough to leave the default account credentials of the code repository as, wait, 'admin'/'admin' !!!
And one of the leaked applications was a data analysis tool that analysed prices of their products. How did they do that? By scrapping a public website owned by them !!! It's like stealing from one's own bank account, is it not?
I guess the global major is still figuring out how to clean up the mess.
A bank wrongly paid out $900M to lenders on behalf of their client. Blame is on the bad UI / UX of the software that was used by bank's staff which resulted in this transaction !!! Court ruled that the bank cannot get back the money. That means the bank cannot claim back the disputed $500M of that $900M. Judge even called the incident as biggest blunders in banking history.
There was a news report couple of years back that the combined wealth wiped out because of failed digital transformation efforts in global majors is north of $900B !!!
While naming any of these companies is out of scope of this blog and hence avoided, all the above mentioned are widely reported and can be googled.
Facepalm moments, are not these? Well, listen. These are situations caused by software engineers like you and me. Why? Because many times we fail to apply common sense. We tend to ignore warnings. We bypass important processes. All because we are too confident of ourselves. Confidence bordering on megalomania. How can we the experienced be wrong, right? And the casualty is quality of the applications we created.
That brings us to the crux of this blog post. What would it take to build better quality software ?
In my opinion there are three human qualities that helps software engineers to build better software, and all three are non-technology factors.
[Alert: This may sound too philosophical for some.]
Being humble is a virtue, and that we all know. Being humble also helps us to deliver quality. One reason we software engineers tend to overlook potential bugs and bypass processes is because of "we know how it works" attitude. One may be humble as a person, but if our know how about technology gets into our head, we will lose our humility when it comes to our work. We will refuse to unlearn and learn. Result, our deliverables will suffer on quality.
Rushing through will not help. We need to ensure reasonable speed, and reasonable speed only. Any thing more than that will only increase the chance of we becoming careless. Whether it’s architecting a solution, or writing code, or testing, or deploying a solution, make sure we are at the right speed of execution. We should tick all the checklist items and never bypass processes. That time is well spent.
3. Logical reasoning
Logical reasoning is a function of one’s ability to apply common sense at the right time. We need to be clear about the logic behind every action of ours, and should be able to explain why we did what we did. When following processes defined by someone else, make sure we understand what it’s about and why we are following that process. Everything that we do should have a logical reason. This clarity will help in ensuring quality in whatever we do.
Make no mistake, all the above three qualities sounds easy, but they are not. It requires much effort to imbibe these qualities and apply them in our work. But we need to. That will avoid facepalm moments for us and for our clients.