This question has been on my mind for some time now. If I had to answer this question three years ago, I’d say that skillset was probably my first utmost priority in choosing a good engineer.
But I’ve only noticed a shift in my way of thinking recently especially after having different chats with engineers and working alongside product managers, even though I have adopted this change of behavior for the last 3 years. I remember there was a time when I walked into work, got told by my manager what the business wanted and just followed their orders, built the product without challenging why I am working on it and what could make it better?
I think a good engineer should be able to work smart, take a step back and ask ‘why’ for everything they are building. What product is it you’re building? Why are you building it? What problem is your product trying to solve? Who is this product for? Once these questions are answered and with this understanding in mind, it makes the task at hand much more interesting. You’d start thinking out of the box, think of your users more and become involved in the journey in bringing a product alive. One that is meaningful.
You can have an impressive skillset, be on top of the latest technology but without understanding ‘why’, ‘what’, ‘who’ and constantly challenging whether there could be better solutions or whether you’re working on the right product, you are still a big gap away from becoming a good engineer. To get an understanding of the business, their vision, look into their existing data means a good engineer will have to wear many hats. You might need to whip up wire frames, analyse data in Google Analytics and fully understand what metrics your team is trying to move in these moments of ‘war’ time. All these traits attribute to a great engineer.
I also believe that another very important aspect is to keep your team in the loop; your manager, tech lead, other engineers, product managers. Like my manager likes to put it, the point is to ‘over communicate’. There is less room for misunderstanding when you continuously check in with your team.
Being adaptable to change is an advantage. Specs change, products change, technology changes. As humans, we like a level of control and comfort; it’s a part of our nature – we are creatures of habit. But if an engineer is susceptible to change, they can go a long way.
I think it’s also beneficial to help identify what MVP is. Work closely with your product team. If an engineer can balance time-to-market; delivering product value quickly with writing clean, maintainable, and scalable code, that would be a bonus. But as mentioned previously, when your company is focussing on growth and moving those metrics, it’s very likely they would want to test out the product first. How can they justify working on a feature for 3 months writing code to make sure the solution scales if they are not sure whether it will gain user traction?
This is only my 2 cents, of course. Would love to hear your thoughts. What do you think makes a good engineer?