The Power of patience in software
I think the secret to becoming a great software engineer is actually really easy, but often overlooked.
When your lawnmower stops working, you wouldn’t just throw it away would you?
You’d start some initial troubleshooting: is it out of gas? Is the spark plug dead? Are the blades spinning?
Throwing it all away and starting over every time would be a waste of money and not practical.
Software engineering is a bit different. Here, instead of money, it’s all about time.
Despite making bank, many software engineers often struggle to value their time.
Instead of taking a step back to understand what’s going on, you might start ripping it all apart and rewriting it.
Been there, done that? I know I have.
Maybe it’s because you think the code is too messy or hard to understand.
Or maybe you just want to feel productive and think fingers to keyboard will get you there.
So there you are, 2 days into your rewrite. The bug’s still there, even though the feels neater to you.
Sometimes, you get lucky and just happen to replace the bug. Other times, not so much 😬
Instead of understanding what was already there, you decided to replace it! Why?
Learning how to read & understand code effectively is one of the most widely overlooked skills by schools and bootcamps because it’s assumed that by writing it, you can read it too!
In the real world however, most of your time is spent reading it, so without the proper foundation, you act out of desperation until it gets figured out.
Abraham Lincoln once said, “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.”
This quote is very relevant when it comes to software. Spending time understanding the problem isn’t a waste—it’s necessary. It helps us come up with better solutions.
So the question burning inside of you is, how do I do that?
Well, it’s easy and hard at the same time. Start by reading each line of code.
Don’t just skim it! The million dollar bugs are usually because of just one misplaced character.
Log everything. I can’t stress this enough.
Programs have all sorts of side effects (unfortunately) so even when the code reads linearly, you may uncover a glacier of complexity.
Lastly, run that debugger and walk through each step. For the same reason logs are important, you never know where you’ll end up.
So, if you want to be a great software engineer, start valuing the time you spend understanding problems.
Take a step back, figure out how it works first and then decide how to fix it.
It’s not just about coding, but also understanding.
In software patience isn’t just a good thing—it’s a must-have.