3 ms·
Over my years of hiring and working with other software engineers, I’d say they fall into two key categories: - Engineers who know how to build apps with a spe
by matthewmacleod 2y ago
Over my years of hiring and working with other software engineers, I’d say they fall into two key categories:
- Engineers who know how to build apps with a specific set of tools or frameworks and focus on applying this knowledge
- Engineers who know how to model their work in terms of data structures and the algorithms or pipelines being applied to them
The first category can be effective and efficient at applying their knowlege, particularly because of experience and practice with the tools. These are the specialists - the front-ends, the Rails devs, the embedded engineers and so on. They know more about the constraints of their environments.
The second category think more about what they are doing rather than how they are doing it. They are the generalists. They think about React as a functional-ish way to convert state into a DOM tree; they recognise the value and reasons behind various different approaches to development and don’t box themselves in.
I find the second category almost always more effective. That doesn’t mean specialists are without value - you need your embedded engineers to understand that space in depth, for example.
Especially when hiring I like to probe for this during a system design exercise: ask a question and walk through the design of a simple system or pipeline of some kind. If the engineer answers in terms of specific technologies (“I would use Kafka to send gRPC to MongoDB”), they’re usually inflexible. If they answer in terms of techniques and data flows (“I would use a work queue to distribute payloads over the network to backing store databases”) they usually get it.
I reckon changing your mindset a bit can help with the fatigue described in the article. Though I admit I’m as frustrated as anyone else the first time I bring up a new project after a whole an app the tooling has broken and the industry has moved on (looking at you, frontend!)
- smitty1e 2y agoYour second category inncludes those adept at "making the problem smaller". Not always easy, but that is the first thing that comes to mind, no matter the context.
- matthewmacleod 2y agoThis is a great point. The first question a great software engineer should ask is “how can we avoid using software to do this?”!
- globular-toast 2y agoI'm always reminded of the software optimisation hierarchy, smallest to highest impact: 1. Micro-optimisation, e.g. programming language choice, tightening a loop, cache hits etc., 2. Change the algorithms, 3. Change the problem. Sometimes changing the problem makes the software completely go away!