Over the years, I’ve been fortunate to work with some seriously talented people – people who’s put my own meager skills to the test on a daily basis. It’s been a mix of people – some with strong academic backgrounds (BsC, Masters, Phd, et al) and some with a born knack for development. It has at times been a humbling experience, and in many ways it continues to be, that’s taught me that there’s always somebody out there much better, faster, smarter and stronger than me.
I’ve also been lucky to have people to lean on, for support (not just technical) and guidance, and some of the ways I try to work is reflected in that. I’ll be the first to admit that I don’t do everything absolutely right. I’m human and therefore expected to fail. We’re genetically wired to fail, it’s as simple as that.
One of my long-time mentors once gave me a task to complete (it’s irrelevant what the task in itself was), with no timeline, except I knew that this particular task would only benefit a minute fraction of people that I knew. I started working to complete the task, quickly made headway and was nearly finished when I was stopped to answer some questions. In this case the questions was “Why did you choose to do X, when Y was naturally a much better approach?”. Now method “X” was about 5 times faster to complete than method “Y” – it wasn’t a real kosher way of doing it, but usage was less than a handful of people, I “cut the corner” so to speak and took the risk of failure on my own shoulders. Simple math really.
Risk = Probability * Damage Potential
So I took the chance based on that and figured that it’s only going to be used by a couple of people – no reason to go all out and design the Eiffel Tower all over again. Naturally as with many things that happens in life, I didn’t quite see the point of the exercise, except I knew that there certainly was one. After I answered the question of my choice of method (“X” over “Y”) I complete the rest of the task.
A couple of things occured to me as I was looking at the final output. Well, it did the trick….buuuuut….I wasn’t necessarily proud of the way it’d been done. First I figured the doubt came from not being 100% sure of what the point of the questions and exercise was, but then it dawned on me. I had used a shoddy approach – yes, it did indeed do the trick and got the job done, but there was very little satisfaction in completing the task. Personally I wasn’t entirely happy with it. It took me a few days to get it all sorted out..the “why” factor had hit me.
If it is worth doing, its worth doing right
It didn’t really matter how many people would be impacted by it – what mattered was the way I’d chosen to go about doing it. From a professional perspective, what did it say about me – I was willing to cut corners when nothing prevented me from doing it the right way. I had no time, budget or complexity constraints. It was a lazy attitude and this was exactly what the point of the exercise was.
Back to present day – I came across a question about why bother use proper techniques in a development shop, seeing as it was a small 1-2 man shop only. Was using MVC, UML, OOD etc overkill for an internal application? Now, very little risk would be associated with the “probability” of failure by the internal application. Impact was tiny and each of those impacted could easily fix any issues that would pop up. It was a supportive application and obviously not business critical (otherwise the question would most likely not have been asked). Many other answers were provided – such as what OOD was and why it was technically implemented. How it helped manage complexity etc etc.
I read through most of the answers, but noticed nobody was looking at the question from another point of view – from the perspective of “What does it say about me, professionally?”. It occured to me here that my lesson learned way back when, was applicable to many other areas and it founded on how I do things.
Do it right, not because its an option not to, but because what you do, and how you do it, is what shapes you as a professional
Does cutting corners, when there’s no reason not to do it right, not signal that something is wrong? Personally I believe so.