Observations of effective software engineers
I’ve been involved in software engineering for over 10 years now and I’ve learned a lot from observing how the best engineers conduct themselves, get shit done, provide value and pursue a career path. Here’s some themes that I’ve identified as common to some of my most respected engineers. This is by no means an exhaustive list, instead it covers some relatively obscure topics.
Compounding Improvements
The best engineers are honest with themselves, realise their weaknesses and work on continuous improvements to bolster their skillset. They step back from the fast lane of shipping features and fixing bugs and spend time to learn and importantly experiment with languages, frameworks, tools and ideas.
The idea of compounding is commonly associated with finance but it’s just as easily applied to learning.
People often overestimate what they can accomplish in one year. But they greatly underestimate what they could accomplish in five years.
— Peter Drucker
Google’s famous 20% time (yielding GMail, Google News & Adsense) is a shining example of the compound improvements you can gain for the company and your employees if you invest time in improving your processes and encouraging exploration of ideas. It always feels like your organisation can’t afford such whimsical initiatives but I’d argue they couldn’t afford to not have them as they’re a great employee retainer and you make a dent in fixing the broken windows, making it a great place to work.
At the individual level, forward thinking engineers take a portion of each and every day and devote the time to learning new tools, languages, frameworks and mental models, then applying them through pet projects or bringing the new learnings into the mainline project backlog. With this sustained focus on continuous improvement this calibre of engineer will evidently be the domain expert in a number of subjects simply because of their marginal gains over their peers.
Reasoning From First Principles
Good engineers get the job done that they’re commanded to do, great engineers constructively challenge the command when they believe there’s alternatives not yet explored.
The entrepreneur Elon Musk is known for applying first principles thinking to his engineering. Were it not for Elon challenging the notion of a reusable rocket launch system or developing a car that’s better than the incumbents’ simply by employing a startup attitude of rapid build measure learn cycles, inertia in these industries would prevail.
First principles don’t come easily, in fact it can be exhausting as you’re fighting our natural tendency to find the path of least resistance. The good news is this is a skill that can be learned by just doing.
Simon Sinek’s seminal presentation on the subject of starting with “why” provides more insight on how to start asking smart questions.
Start With The Hard Tasks
Average engineers spend their time looking for low hanging fruit, aiming to look productive but never really make meaningful progress for the business. They fix easy bugs, spend a sizeable proportion of time finding third party code to solve their issues and move through tasks without dotting their i’s and crossing their t’s.
Effective engineers realise that it’s best to get stuck into the hardest tasks and focus on nothing else until they’ve made meaningful headway. Often the hard tasks aren’t glamorous — fixing performance issues at a low level, developing a complex algorithm or creating a specification document for an agency to deliver. These may sound like tasks reserved for senior engineers but I’ve witnessed less experienced engineers taking on similar calibre of work as second nature and delivering, to the admiration of their peers.
Steve jobs was known for sweating the details in pursuit of perfection, here’s a quote that I think represents the thought process of true craftsmen:
When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood on the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.
— Steve Jobs
Expectation Setting
While effective engineers realise it’s a near impossible task providing accurate estimates, they put in extra work to research the scope of work ahead of time and clearly articulate the understood risks when they do commit to their estimates. The true value of the effective engineer is in their periodic estimate adjustments whilst work’s underway, new risks are identified and proposing alternative paths to stakeholders when there’s quicker (yet often compromised) options.
Improving Organisation KPIs
At the ground level it’s hard to raise your head from the parapet to figure out how you can have an effect on improving Key Performance Indicators for the organisation. This is what key engineers make their business; they work on surfacing the KPIs and adjacent measurements using their engineering expertise to setup effective instrumentation.
A recent example I’ve observed included an A/B testing framework written from scratch and implemented throughout the stack at Thread.com to allow an unrivalled lens on what contributed or detracted from an experiment’s success. The effective engineers involved, followed through to add and refine functionality to make it easier to interpret the results. This had a profound effect on the company’s progress because the product team was able to rapidly build, measure and learn, yielding many marginal gains on the top and bottom line.
Pairing & Mentoring
Effective engineers are aware of the force multiplying effect of training software engineers and subsequently take the time to pair and mentor. They manage to strike the balance of avoiding hubris whilst offering constructive feedback, empathising that the recipient may feel patronised by their sometimes unsolicited offerings of support.
We make a living by what we get, we make a life by what we give.
– Winston Churchill
Supportive engineers go on to have regular 1–1s with engineers seeking mentorship and ensure they take the time to listen to what the mentee is struggling with, offering her nudges in the right direction rather than providing definitive answers.
In conclusion, effective engineers demonstrate many of the traits found in leaders so invariably go on to a leadership position. The discerning separation of the good from the great engineer is taking the time to step back and think differently. This is easy to say but in practice, it’s difficult. It’s more work, requires creative analysis and an open mind — something we’re conditioning ourselves away from with answers a tap away.
If you’re hungry for more content on effective engineers have a scan over Rondy Sousa’s Gist notes.