My first engineering job (internship) was at a startup. We joked for months, wasted money and still didn’t build a product.
My second opportunity to build software for consumers was quite scary. I was the second engineer on the project and had very little experience shipping software. The product currently has over 300k users and is considered a success. But there’s a lot we could have done better.
The third product I’ve been privileged to work on is quite exciting and complex. We get to build from scratch with modern technologies. Plus, a huge part of the code was written by me and a very small team.
Some days were just too difficult.
One time, I was writing code for a feature I knew deeply no one would use. I expressed my concerns to my Boss who was the CTO. After a few minutes of reasoning, we agreed it wasn’t worth my time.
As time went by, I became more conscious of the code I wrote. I wasn’t just concerned about efficiency, I wanted to write features people would use.
Engineers Shouldn’t Just Code
I get to manage a small team at work and I’ve seen situations where people literally just write code. No thoughts about integration, shipping, testing, performance, usability or user experience - Things that make actually work!
After thinking through this, I came up with the conclusion that there’re 2 kinds of engineers:
- Those who just want to write code
- Those who want to build software
So What’re The Difference
I think it’s primarily concern.
Genuine concern motivates you to make things better, see how people use your code, research needed features, write more performant code and ensures you don’t just write code.
Over time, it becomes a habit and part of your identity.
Of course, most companies have people who are paid to do this, and you don’t get additional bonus for doing them. But people will find you when they want to build good software.
I don’t physically know too many people with experience building software. I mean, I know people on Twitter and get to read their blogs, but I’d be happy to physically learn a lot from passionate and experienced people shipping software end to end.