5 Years of Engineering: Lessons Learned the Hard Way
Reflections on half a decade of building products, shipping code, and learning what actually matters in engineering and business.
The Journey
Five years ago, I was learning to code. I thought I knew what I was doing. I didn't. Five years later, I know how much I still don't know. But that's progress.
This essay is a collection of lessons learned through building products, shipping code, leading teams, starting businesses, and failing spectacularly at all of the above. Some of these lessons were expensive. I hope you can learn them from reading instead.
Lesson 1: Shipping Beats Perfection
I spent months perfecting an architecture that no one ever saw. The code was beautiful. The design patterns were chef's kiss. The project was dead.
Meanwhile, my friend shipped a messy MVP in two weeks that customers loved and paid for.
Since then, I've become obsessed with shipping. Ship early, ship often, get feedback, iterate. Perfection is a luxury only profitable companies can afford.
Lesson 2: Communication is a Technical Skill
I was convinced that writing good code was enough. The code would speak for itself. It didn't speak at all—no one understood it.
I learned that explaining your architecture to a team member teaches you more about your architecture than writing it ever will. And if you can't explain it simply, you don't understand it well enough.
Now I spend significant time on documentation, diagrams, and explaining decisions. It's made me a better engineer.
Lesson 3: Scope Creep is the Enemy
Every project expands to fill the time allotted. Every estimate is off by a factor of 2. Every "quick feature" takes three weeks.
The solution? Say no. Protect the scope. Define boundaries. Ship the MVP, not the everything-ever-released-product.
Lesson 4: Ownership Changes Everything
There's a difference between a job and a business. When you own something, you think differently. Every decision matters. Every line of code is yours.
This is why I transitioned to building businesses alongside my engineering work. When you own the problem, you solve it better.
Lesson 5: Technical Debt is Real Debt
I cut corners "just for now." Just for now became forever. That quick fix I shipped at 2 AM? We're still dealing with it three years later.
Now I think about code like financial debt. Sometimes it's worth it (we're shipping to capture market before a competitor). Usually, it's not. And compound interest applies—that debt adds interest every day.
Lesson 6: The Best Tools are the Ones You Understand
I chased technologies. React was better than Vue was better than Angular. I spent more time learning frameworks than solving problems.
The turning point came when I built my portfolio with vanilla JavaScript. No build process. No framework drama. Just HTML, CSS, and JavaScript. It was liberating.
Lesson 7: Teams Make or Break You
I've worked with teams that brought out my best work. And I've worked with teams that made me question my career choice. The difference wasn't the technology stack—it was the people.
Hiring slowly and deliberately, protecting your team's culture, and surrounding yourself with people smarter than you—these are engineering decisions with the highest ROI.
Lesson 8: Automation is Strategic
I spent weeks automating a process that took 5 minutes a week. Not a good trade. But I also spent years doing a 1-hour process manually that could have been automated in a day. That was worse.
The key is distinguishing between "nice to automate" and "essential to automate." Use your time on things machines can't do.
Lesson 9: Security and Privacy Are Not Optional
I learned this the hard way—or rather, users learned it for me when their data was compromised. Now security is first-class, not an afterthought.
Your users are trusting you with their information. Treat it accordingly.
Lesson 10: What Matters is Impact
Lines of code don't matter. Technologies used don't matter. What matters is: did you create value? Did users' lives improve? Did you solve a real problem?
This is the lesson that took the longest to learn and the one that matters the most. I measure success differently now.
Looking Forward
The next five years will bring new lessons. I'm excited to learn them, and I hope I can share them with you before they become expensive.
The engineering journey isn't a destination. It's understanding that you'll never be "done" learning, and that's the beautiful part.