Software developers exist on a spectrum.
On one extreme, we have “Grinders“. These are the people who just want to be told exactly what to do, and then be left alone while they go heads down and do it, and then move onto the next thing. Ask them to solve a hard problem and they clam up and burn out, but they will plow through well spec’ed tickets all day. You could call these people “code monkeys” if you were feeling crispy.
On the other extreme, we have “Thinkers“. These are the people who love to philosophize and debate and dig into tough things and weigh risks and come up with possible solutions. Ask them to decide how we should handle some tricky authentication and they’re all over it. But then ask them to implement that well-defined and clearly-documented solution, and they lose motivation and burn out.
Obviously these are exaggerations, but I think it’s safe to say that most developers lean one way or the other.
Is either side worse?
Good question. It depends on what you mean by “worse”.
If you define “worse” as “less likely to be promoted”, then I think Grinders are worse. Thinkers tends to head in the direction of architecture and planning (because that’s what they enjoy doing) which means that they are more likely to end up in technical leadership, which means they probably get paid more and are promoted higher. Grinders, on the other hand, would more often stay at the same level, because the next step up would involve more of the things they do not enjoy.
But if you define “worse” as “less valuable on a project”, then I think they’re about the same. On most (not all) projects, you need both. You need the architects and you need the implementors. You need the people who can come up with creative solutions, and then you need the people who can go off and implement those solutions.
Should it affect how we plan projects?
If there are Grinders and Thinkers, so what? Should we care which person is which type?
If you’re following Scrum closely, then it probably doesn’t matter much. Scrum accounts for this with 2 key features:
- The development team is self organizing, meaning that people can naturally fall into the roles they are comfortable with, and you don’t have to worry about a Grinder being assigned “Tech Lead” or a thinker being named “The one who has to spend the next 3 weeks fixing small bugs”
- Work is pull-based rather than push-based, meaning people choose their own tickets rather than leadership assigning out all work at the beginning of a sprint/iteration. That way, people can choose the tickets they expect to fit into their preferences.
If you don’t have both of those features in your process, then I think you should care a lot about this. Ask people which side they would choose if given the choice, and then try to take that into account when planning and allocating work. Or, switch to (real) Scrum.
What about people in the middle?
I think most people lean towards one side or the other, but there are still plenty of those who sit in the middle, meaning they are proficient in both thinking and grinding, and are totally happy to do either at any given time.
These people are absolute unicorns and are worth their weight in gold. These are the people that you can drop onto any given project and they will zero in on the most important thing to be doing, and do that, regardless of what it is, because their preferences and bias aren’t involved.
So, are you a Grinder, a Thinker, or a Unicorn?