Ben Northrop

  Decisions and software development
Essays   |   Popular   |   Cruft4J   |   RSS    

The 3 Motivational Forces of Developers

(26 comments)
  November 12th 2013

Developers are a self-reflective lot. On any given day, /r/programming will boast a handful of new posts pontificating on "what makes a 'good' developer" or the "X types of programmers". So I know the topic space is over-tread...but I don't care. As a virtual rite of passage of a developer-blogger, I feel duty bound to submit my own classification of developers. Here goes...

After 15 years in industry, I've come to realize that the most defining quality of a developer is his source of motivation. It undergirds all of his decisions and interactions. It predicts what kind of code he'll write, what technologies he'll prefer, and even how he'll succeed on a given assignment. And it's often quite easy to peg for any given developer after just a few days of working with him or her.

There are three and only three sources of motivation (so say I!), and they can be visualized as a radar chart, like so:



At each vertex is the motivational force, and right smack in the center is the absence of any motivation at all (i.e. "don't give a crap"). You know who I'm talking about. Anyway, each developer has his or her own unique "shape", where the greater the area of his triangle, the more motivation. For instance, here's how I'd draw me, plus or minus:



Although a developer might be driven in some portion by all motivators, there is always one force that is most dominant. I'll explain each:

Business Motivated: Driven most by a desire to get things done for the customer, these developers are often the "favorites" of the business folks because they deliver functionality quickly without many questions. Need a new feature at the last minute? No problem. These guys have a can-do attitude (even when a little push-back might benefit the integrity of the system's architecture). In terms of code, they think more concretely, and aren't always the best at creating abstractions that support re-use or other non-functional goals. They just want to get 'er done and see a functional product. On every project, a few of these developers are crucial. They get things done, and don't make waves.

Technology Motivated: These developers love learning new things for its own sake. They're always eager to find the newest framework, language, or methodology and will take every opportunity to try it out on their current project. The library was just released last week and was written by 1 guy over a weekend? Let's give it a shot! These guys know all the trending technologies, and have probably dabbled with them over nights and weekends. They love to try things out, and understand which tools work best. On a greenfield project they thrive, but when the field turns "brown" and new code turns into legacy, they look for greener pastures, or possibly worse, look for ways to shoe-horn in technology even if it's to the detriment of the system.

Problem Motivated: Hard problems excite these developers, independent of whether what technology is employed or even it adds value for the business. It's all about the puzzle. Coming up with an elegant, clever, or quality solution is the victory. If it helps the business in the process, great (and often it does). These developers are interested in new technology insofar as it presents better ways of solving problems, but not so much interested in dabbling just to know what's out there. While their solutions are solid, sometimes the details slip.

Now of course this isn't the "right" classification system, but I've found that it is useful to think about my fellow developers as one of these 3 (or actually 4) types - the get 'er done's, the technologists, the problem solvers, and the don't-give-a-craps. An awareness of each of our differences is helpful. I know that each will have certain strengths and weaknesses, and will contribute to the project in different ways, and in different parts of the life-cycle.

For instance, when starting a new project, we look for the technologists to help inform us about what framework or library on the horizon could be most useful. Or when the team gets stuck in the weeds of over-analysis, we rely on the get 'er done's to just dig in and start delivering working code. And when a problem is particularly thorny and needs to be thought through, we look for the problem solvers to step back and find a way out of the swamp.

In other words, everyone contributes in a different way. Understanding people's underlying sources of motivation can help you get the most out of your team. It can also make you cognizant of keeping a team in balance - too many of any particular type is never healthy, and in fact can spell disaster for your project. Whereas a team of all technologists or problem solvers might obsess about the infrastructure and never deliver value to the business, a team of all get 'er done's might more quickly create a big ball of mud.

Anyway, let me know what you think! What type of developer are you? And does it matter?

Recent Posts

  1. Expectations and the Endowment Effect
  2. Consistency and Innovation: Pick One
  3. Pair Programming - My Personal Nightmare



I believe that software development is fundamentally about making decisions, and so this is what I write about (mostly). I'm a Distinguished Technical Consultant for Summa and have two degrees from Carnegie Mellon University, most recently one in philosophy (thesis here). I live in Pittsburgh, PA with my wife, 3 energetic boys, and dog. Subscribe here or write me at ben at summa-tech dot com.



Got a Comment?

Name:
Website:
Are you human:
Comment:

Comments (26)



Kristian Griffiths November 12, 2013
Good post! I'd probably say my motivations have shifted over the years I've been a developer. To start with my primary motivation was business but as the years have gone by my motivation has shifted into problem motivated. I'd wonder if it's reasonable to assume that a shift in primary motivation is a common thing and (beyond the expected waxing and waning of motivations based on mood\new technologies\workplace environment\etc.) and I'd be interested to know other people's time-frames for this shift, and if it was noticeable. For me it was over a period of a year where I became fed-up with the then current job and got a new one, with a complete change in working environment\encouragement from peers as well.

Michael November 12, 2013
Hello Ben!
This post was a great read!
I believe i am the "get'er done" kind of developer. I understand that there are drawbacks to working like this, like: maybe it was easier using a new technology, or maybe it would be better in the long run to follow another approach but I really enjoy when tasks are completed, clients are satisfied and deadlines are respected.
Now, I won't write chaotic, non-understandable code. I'll follow code ethics and project rules, but maybe i will not innovate as much as others (technologists), but I like to and I will get the job done!
See another kind of classification of developers here: http://www.techrepublic.com/blog/10-things/10-types-of-programmers-youll-encounter-in-the-field/
I found it quite interesting!

Colin vH November 12, 2013
I am a problem-solver, and a bit of a technologist. I like getting feedback from satisfied customers/coworkers, so there's a bit of business there as well.

Scott Mitting November 12, 2013
Ha! I love it. I started off life on the technology motivated side (why else would a child start programming?!!!) and gained a passion for puzzles later on. But then I forced myself to take a business approach when I started a consulting firm, giving it the name GSD Software (get shit done).

I would say you are astonishingly accurate... forcing myself to balance in the middle has led me straight toward "don't give a crap".

That said, one key piece of advice I give my colleagues on how to succeed is to learn to not give a crap, but also learn exactly when to flip that switch. Even in programming, learning to think like a sociopath is particularly useful. Just remember to keep that switch to turn back on your empathy later.

:D Great post!

pgl November 12, 2013
Hey look. I can make diagrams.

Matt Blodgett November 12, 2013
I think there's another category: motivated by quality. See the 'Software Craftsmanship' movement of the last few years.

Ali Helmy November 12, 2013
Nice post. I would definitely classify myself as a horizontal bar connecting the bottom two. I love solving difficult problems and i love pushing technology forward

I guess this is why it so important for me to work around business minded devs, otherwise, id be on the street :D

PS: apparently, I am not human. Or at least, not for the first 4 tries :$

Toby Osbourn November 12, 2013
Good post Ben, I hadn't thought of us developers in those terms before but now that I think about it I think the triangle shape does make a lot of sense.

When you mention about how it is good to have a team with a good mix of the skill sets I wonder if this is something that a project manager could silently pick up on, or should people almost go as far as labeling themselves so that during any given sprint or spike the team doesn't consist of just one angle of the triangle?

Ed Singleton November 12, 2013
I'd broadly agree with this, if you include 'quality' as being a specific instance of problem orientated.

Ben November 12, 2013
Thanks for the comments!

@Kristian Griffiths, @Michael, @Colin vH - Very interesting. Thanks for sharing. I think I've shifted a good deal as well. I started out as a technologist...wanting to learn every new language/tool I could. Over time, I've become less interested in the latest/greatest trend (or maybe tired of chasing it!), and more interested in solving hard problems and making my clients happy. That being said, I feel like I'm often a step behind some of my technologist colleagues who more in touch with what's new in the industry.

@Scott Mitting - "GSD Software" - I love it! Checked out your web site. Very cool. BTW - I didn't word it well, but I meant the "Don't give a crap" for people whose triangles had no area - i.e. they weren't pulled by any of the motivational forces. Someone let me know the name of what I was drawing, a Radar Chart.

@pgl - Ha! Yes, Visio is fun.

@Matt Blodget, @Ed Singleton - You know, I actually thought a lot before I published this about whether there should be a 4th vertex, which I was going to call "aesthetic"...but maybe it's more like "craftsmanship" or "quality". I think you're right...I've definitely come across some developers who are very motivated by making quality things, independent of technology, problem, or business impact. If I had a do-over, I might have made this a square/diamond instead of a triangle. :) However, I think an argument could be made it fits in the Problem dimension - I find that these people most care about the elegance/quality of the solution.

@Ali Helmy - Totally agree. I'm grateful to my business-minded developer colleagues who help move things along, and push me to keep pace and deliver code.

@Toby Osbourn - Yup, agreed. Whenever I have influence over the types of people to bring on to a team, I always try to push for a mix of personalities. I think it would be good for managers of developers to be aware of this. Or I wonder if developers would be comfortable labeling themselves? If there's good trust in the organization, I think they might. Anyway, thanks for the comment!


Alastair November 12, 2013
*people's

Matt Andrews November 12, 2013
Hi Ben - thanks for the insightful post. I think the inclusion of "his" and "he" at the beginning is pretty alienating for our female engineer friends, right? A shame: I think it spoils what's a strong and interesting read. Thanks, though!

Amnon November 12, 2013
As someone who is really enjoys these three aspects of software development, I found it easier to find out which of these is really the strongest motivator in my case by asking myself which would I spend most of my time on if I was ridiculously wealthy and I could only chose one. At that point it was clear to me that the problem motivated factor was the strongest

gerry November 12, 2013
Great post. Makes a lot of sense. You'll get quibbles but this is a decent enough way to think about it. Hey, we're human. We classify.

Nate November 12, 2013
Great post! I'd be interested to know if there are strategies for overcoming the weaknesses associated with each motivation type (other than "don't do it") and what types of projects each type of dev should seek out.

Thanks!

Ben Northrop November 12, 2013
@Alastair - Thanks. :)

@Matt Andrews - Yup...totally agree that after reading it again, it does come off way gender biased. I really apologize for this. I used "he" over "she" just because I thought it'd be tedious to say "he or she" all over...and switching genders I thought was clunky too. I'm going to fix this, because I definitely don't want to re-enforce any gender preference.

@Amnon - Thanks. That's a fun thought experiment.

@gerry - Yup...thanks. I'm getting a lot of quibbles on reddit at this very moment. :) Of course this is just my opinion, and I have absolutely no data/foundation/etc. to back it up. It's just the way I slice things, and not because I want to pigeon hole or judge my colleagues, but it helps me appreciate everyone's differences. I'm definitely not trying to imply a preference for my personality or whatever - every day I feel humbled by the "get 'er dones" who deliver more code than I do, and the "technologists" who are way more in touch with what's going on in the industry than me. I feel confident, though, that despite this I bring something different to the table in some of the problems I solve (I hope!).

@Nate - Good question. I'm not sure, but I've found that surrounding yourself with a diverse set of people pushes you out of your comfort zone. I rely on my colleagues for exposure to new technologies, for instance. When I was working as an independent consultant, I found that I'd end up using the same old tools over and over, and never innovating.


Dhananjay Nene November 12, 2013
There is a motivation I see in many developers. Perhaps, it is just a further evolution of problem motivation, or perhaps an independent one. But for many the motivation is not just solving a problem. But how does one solve it. What abstractions one applies. What paradigms one uses etc. etc. Thus they are not driven by the problem per se, but the structure of the solution they evolve.

Coding Ninja November 13, 2013
Very interesting post Ben,

I would like to add that, I think that "shape" changes over time and is not fixed.

Sometimes we may be driven by new tech, sometimes by a new problem, sometimes by customers.

In my mind motivation is a living breathing fluid entity!

Taylor November 13, 2013
Nice categorization of developers, and also true. But what do you think about the ones which became developers for money, or for the satisfaction of creating things?

Also, these 2 categories are not mutual exclusive with the ones from the triangle. For example: a developer which seeks satisfaction can be a Technology Motivated one, or the one who is more interested in money can be a Problem Motivated one.

Jakub Chodounsky November 13, 2013
Nice way of viewing the colleague's strengths and it makes you think how you can improve the team and help to keep all of the members happy.

Personally, I'm tending towards problem and technology orientation.

MJV November 13, 2013
A nice post. I have a pretty good idea what my triangle would like. It would also be interesting to know what kind of a triangle others around me would draw for me, i.e. if it would differ significantly of the one I see myself having.

The fourth type, the don't-give-a-craps, are an interesting breed. I think I've seen quite many of them, but it's really hard to tell. Some of them might be totally different if they were working on a project that they find interesting. And perhaps we all seem like the type, if our current work doesn't offer us much on the vertex we most enjoy, or the offering just isn't interesting e.g. domain-wise. (For example, I'm interested in solving problems, but not all problems are equally interesting.)

Xiong Chiamiov November 13, 2013
I came up with a set of motivators in the middle of thinking about other things ( http://changedmy.name/2011/01/04/where-i-talk-about-myself.html ), which was:

1. The mental stimulation gained from solving puzzles
2. The wonder of creating anything you can imagine, out of nothing
3. The joy of solving a problem for someone.

Those seem to be your problem, technology, and business-oriented people, respectively, so I guess that's some validation. :)

Markus November 13, 2013
Great post and nice theoretical construct. Now we should develop a questionnaire that measures these three types and see, how the empirical distribution really comes out, not sure you'd really find 3 factors.

Ben November 14, 2013
@Dhananjay Nene - Thanks! Yeah...I agree that is a strong motivation. I guess I'd group that in the Problem category.

@Coding Ninja - Good point. A couple other commenters mentioned this as well. I've definitely changed over my career, from more technology (i.e. learning new things) motivated to problem motivated. In my experience, these motivations aren't too fluid though. A Problem motivated person will be engaged by a new problem, and when there aren't any new problems to solve, he won't be engaged in this sense. That's not to say that Problems aren't still a/the primary source of his/her motivation, it just speaks to the fact that there are not interesting problems to solve. In these cases, Problem-motivated people will have to try to get motivated by something else (business, etc.), if they can. :)

@Taylor - Totally agree. I think there's probably a 4th vertex that I wish I included, and that's the motivation to build something. A few others mentioned this - that I missed the "Craftsmen". And I also agree that there are some orthogonal motivational forces like $$. In terms of $$, if that's the primary motivator, I'd almost lump that in with "Don't give a crap" - because it says nothing about your dedication to your profession...and reveals little about how you will be as a coder...other than that you want to do enough to get a paycheck.

@Jakub Chodounsky - Thanks!

@MJV - Yup...agreed. As more of a Problem-motivated developer, when there aren't any hard problems to solve, admittedly, it takes a little effort to muster up motivation.

@Xiong Chiamov - Interesting post, and interesting site! :)

@Markus - Cool thought...I have no idea whether data would bear out, but it would definitely be interesting. I've had to take personality tests for various companies, and although it's always seemed like fluff, there are some interesting take-aways.

Struts November 16, 2013
Great post & good discussion !!
Quiet interesting observation. Seems like one can categorize any developer with this triangle. I enjoyed thinking about myself as well as my peers while reading the post.
I am one of get'er done & problem solver. More complex the challenge, more interesting it gets, to the point of solving problems in dreams (basically, dream about them... hah !!) Totally agree that being get'er done has its own consequences :)
Have never been technology oriented one & always felt that others are lot more techie than I am. Would definitely like to know, how to shift the triangle a little more toward technology.

Milos November 28, 2013
Hi. I started as a technology and problem motivated, moved throuhg problem-business to all three ones. It does not mean I am in the center, right? I need technology, interesting problems and customer dialogs for my life. I can enjoy it.

Note that many people trend to problem-solving?
Milos