Guide to rock solid, bug free, quality software.

Alex V
3 min readDec 6, 2021

--

Crashes, bugs, angry customers. How do you fix that? How do you make your team make fewer bugs, reduce crashes, make customers happy?

That is of the most challenging tasks a software development manager can engage.

If you are thinking unit testing, integrated testing, selenium tests, code reviews, or the like, you are thinking small. Look at the previous list. Do you see something in common? Yes, all of that happens after the code is written, architectures defined, requirements signed off, engineers hired. If that is your first line of defense for quality, you are in trouble.

Will more testing convince my customer to sign when the software did not save the time and money predicted? Do you think you can test a German 1957 Travant into a German 1957 BMW roadster?

First, understand what quality is

Quality is that feeling of value (money saved/time saved/entertainment attained…) in your customer’s mind that makes him use/pay for your product. Period, end of the story.

“Quality in a service or product is not what you put into it. It is what the client or customer gets out of it.” - Peter Drucker

“There is only one boss. The customer. And he can fire everybody in the company from the chairman on down, simply by spending his money somewhere else”-Sam Walton

“Is Not Enough To Do Your Best; You Must Know What To Do, And Then Do Your Best.” - W. Edwards Deming

“There is nothing so useless as doing efficiently that which should not be done at all.” - Peter Drucker

“Work backwards, from the customer to the product.” - Jeff Bezos

How many times have we complained about “Low quality” software full of bugs and crashes that succeeded, when the “Quality” options did not. That is not ignorance on the buyers, it is ignorance on us, the engineers.

Second, understand that quality is made with leadership, not test suites.

Yes, the most challenging task as a manager/leader is quality, meaning, making the team produce it. Making the team care to choose the best implementation path out of millions in every piece of code; knowing where to go cheap, where to spend the time, where to rewrite. In sum, making the team care.

You add quality when you get the best engineers, when you give them the time to think, when you think about their careers, when you care. When you show them what the customer really needed. Because, then, those engineers take the time needed to consider all the error scenarios, take the time to find the simplest design, or find the solution that nobody thought about and revolutionize an industry. Only an engineer focused on customer value as quality, with the time to think, and a commitment to you, the company and his teammates will do that.

But, if you think this is just gibberish, and that your developers are just workers, if you think leadership is pushing them in the back, if you think velocity is the most important thing; like factory workers in a line. Then don’t be surprised that someone coded a critical aspect of the flight systems in a 737 to one sensor and crashed two airliners. Don’t be surprised by gold plating, but your customer is laughing at you when your rock-solid code did not implement the most basic use case.

You can not randomly order the team to do quality, innovate. You cannot say: “From next week, there will be 15% fewer crashes and 10 innovative ideas”. ( …and yet, I still hear that in every company.)

Understand what quality is and then lead engineers to grow, feel pride, care about the customer, and your bugs will go away.

Guaranteed.

--

--

Alex V
Alex V

Written by Alex V

Engineer, Philosopher, Pilot, Father, Child, Human

No responses yet