Most of my best ideas come to me in the shower. Why? Because they haven’t invented a waterproof iPhone yet. When that happens, I am pretty sure that I will truly be on content dripfeed 24/7, and my brain will shut off completely.
My realization a few days ago in the shower was that there are three types of software engineers…. only three!
Scientist: Scientists are really smart, and they love really interesting, hard problems. Often the problems aren’t immediately critical to solve though. Success for a scientist can be measured by how many patents one has. Scientists aren’t always great implementers, polishers, or finishers.
Architect: Architects love to build systems. The code will often be a work of art, have a lot of upfront design diagrams – and built to anticipate future needs. A huge source of pride for an architect is when a new feature is asked for and the response can be ‘hey, our system was written in such a way that we can handle that easily’! The downside is that this approach takes longer than expected, and occasionally if it takes really long, by the time it’s done, what has been built and what is needed are actually different.
Do-er: Do-ers love to get stuff done. And they love lists. Nothing is more rewarding than working through the items on a list and checking them off. It might not be the most interesting work, but it feels like progress is made. Bigger picture thoughts, such as code cleanliness or architectural considerations, often go by the wayside. Do-ers can be great, diligent finishers, but aren’t necessarily the best starters.
When I think through the entire engineering team that I worked with at my last company, I can bucket each person into one of these these three types.
Which type makes the most valuable engineer?
If had to design ‘the perfect engineer’ that had the perfect mix of traits for the type of work I’m involved in, I would say 85% do-er, 10% architect, and 5% scientist. Does that mean that I think solving hard problems and building systems aren’t critical? Nope, not all. It’s just that I place a really big value on shipping and ‘getting shit done’.
So what type of engineer are you? Or what is your perfect mix? Why?