Is there such a thing as “the right way” in software engineering?
Earlier in my career, I was an idealist. I wanted to do things “the right way”, always. I hated when the business would push for things to get done sooner, which usually meant taking shortcuts. I pushed back, and sometimes I got my way, and sometimes I didn’t. I complained that by going faster, we were just digging ourselves into a hole and I just knew that we wouldn’t ever go back to fix some of the shortcuts we made.
Now I am in charge of a product which I am also the lead developer and architect on (small company). I find myself wanting to use a phrase that I really dislike: “Perfect is the enemy of good enough.” (I never liked that phrase, because I had seen it used to push teams to cut way too many corners both in development, as well as product design.)
I find myself telling my colleague things like “ideally we would do x this way, but we are on a tight deadline, so we will have to do it this other way”. (I typically put in a card to go back and fix the shortcut later.) I really enjoy that he pushes me to do things the right way rather than taking shortcuts, because I know I shouldn’t, but I am feeling a lot of pressure.
But, we don’t live in a black and white world. We live in a world with lots of (fifty)shades of gray (and lots of other colors to boot).
One of my nieces just started college, and she is taking a course in programming. I was talking to her about it last week, and she said she didn’t really like it because there were so many ways to accomplish the same thing. I didn’t say it to her, but I thought to myself that what she said was true, but there are pros and cons to each of the ways you could do it, and with some experience you can figure those out.
And I think that is what this choice of “the right way” comes down to…using your experience to weigh the pros and cons of doing something one way vs another and making an informed decision. Sometimes “the right way” in one situation is very much the wrong way in another, and I think we only figure that out with experience.
With experience we can figure out when to break the rules. And that is ok.