I heard a horror story from a friend of mine who was called on to fix minor bugs on an existing product. Being a high profile product they took on the client. What followed was nothing more than pain. There did not seem to be any order or rhyme to the code. As far as he could decipher there was not a single design, best practise or even guiding principle that he or his colleagues could use to make sense of the code! This by itself is not much of a shock, what is shocking thou is that this application was in production and except for the bugs, it was actually serving it’s customers!
Now just to give a little background on software design. To be able to design a non trivial application, you need basic knowledge in most of the following areas:
- Information hiding
- Data structures
- A good engineering eye
This are concepts that take months to learn and years to master. They represent massive personal investment by the designer on their craft. Yet right here, is a curious example of a software application that it’s creator lacks any of this skills but still managed to somehow get it working.
Originally I figured that was a random one off, but actually it does happen fair enough to be worthy some looking into. So I did, and below is what I found to be the driving factors behind this miracles of code.
Trial and error
In the business world, trial and error is accepted and even christened a beautiful name, Pivot.
When you start your developer journey, all you do is try and err, learn what works and keep doing that. A good number of developers just never pass this stage. Their products are mostly mediocre. But once every while a successful product arises.
Curiously when the code finally works, they will have no idea why it did. Only that it did.
Master of debuggers
Debugging is as much an art as is a science. As it turns if you are a truly great artist you can do just as well without the science!
I have met amazing developers with great command of debugging tools. They can dig through the stack trace and find out what went wrong with an exceptionally high success rate.
By leaning on this clutch, this bunch have discovered the secret to never ever having to improve their design skills.
Yes there are some of us with a whole lot of time and nothing to do. Of course except write that one application.
Eventually even rocks get worn down by constant flow of water!
With nothing better to do, this particular group of developers will put in massive time to paying Technical debt. They will explicitly handle all cases, copy-paste-edit existing code, rewrite modules just whatever it takes to get the code to work.
There you have it. Yes it is possible to build a good product without good design, but you better be a really lucky person.
Have you ever encountered applications that work because they work? Talk to me on the comment section or on my twitter @ jchex