Long live the analyst-programmer

“Getting things done means doing things you might not be interested in. No matter how sexy a project is, there are always boring tasks. Tedious tasks. Tasks that a less mature engineer may deem beneath their dignity or their job title.”

~ John Allspaw

Once upon a time, before we called ourselves agile, there lived a role called an analyst-programmer. The analyst-programmer was a generalist before generalists became cool: just as content to analyze a requirement as to write some code and implement it.

Along came agile software development and its disturbing trend towards having senior developers that are above anything but pure coding. Writing SQL scripts for reference data, analyzing what is actually required, configuring a CI build: these are all tedious tasks that take away from what the senior developer is supposedly entitled to do: just write code to meet explicit acceptance criteria. The senior developer expects a flock of paradevs to run around doing their analysis, writing their acceptance criteria, and finally testing the code that they write. Some even expect the paradev to read the acceptance criteria aloud to them, because reading themselves isn’t coding.

You’ll start to notice who these senior developers are when you hear them say things like “I get paid too much to do this”, or “why are you wasting my time having me do this?”.

One day I imagine a world where all software development roles are suitably generalist and humble, that instead of complaining that “I’m too good for this”, people in these roles simply get their hands dirty and get things done.


Author: Alister Scott

Alister is an Excellence Wrangler for Automattic.

4 thoughts on “Long live the analyst-programmer”

  1. I found myself in that “generalist” position in almost every big project and want to share my thoughts. Your extensive care about someone else company project does no good. Those coders will jump to another job with easy. When your time comes you are in trouble because you spend time on dirty staff (that good for the project) and no one on the market looking for a guy to do dirty stuff. Hire managers are on hunt for coders and specific “cool” framework experience. This is a strong motivation for people on market! I agree, usually project at some level of maturity began suffering from growth pain but managers still looking for more coders. Most of on pay check managers are strictly resource (money) oriented. No pain – no issue. Some time you need to let things go and see heeling reaction on the pain. That the way people manager sees the issue and “team” learns.

    It is well known problem of a nice guy. Every one glad that nice guy did dirty job but there is no such job as nice guy. You may dislike this fact but it is a duty of business owner to see a need and restructure team to put things right as the project growths. Unless it happens you are just making problem for your future, nice guy.

    This is a social behaviour pattern. Just look at “US mortgage crisis in 2007”. No one care until pain comes. That how west society works. Could you have stopped the crisis? :)


  2. This label ‘Senior Developer’ in this context has become an equivalence partition where definite boundaries exist. This may mean you are existing in the world of the ordered set where one member is more than or less than another member in the same ordered set. Does that mean all jobs labelled Developer come in the same class what are the properties of that class?

    I feel organisations look like like smudgy venn diagrams with a scattergram running through it ….. the line being a work product you’re dot being closest if you come into contact with the work product. You might be multiple dots rather one dot in an organisation but when the diagrams get larger/changed/whatever the shape line running through the dots gets stretched or can take a different route even.

    Nice guys and crap analogies aside I think this relates to the past experience of said ‘senior developer’ and the state of the shared understanding of the current organisational structure and culture that participants are working in from all sides. This is hard to gauge unless its clearly stated what the structure is and what the culture wishes itself to be for all participants contained. Also the size of the company that people have come from can play a large part in how they operate in their present circumstances.

    Maybe they are humble after all if they are willing to say ‘I recognise this it is not in my power right now to work on this thing in this way’. Hehe.


  3. I would not say crap vs nice. Behaviour of developers in Alister post is quite understandable. They are regular guys! The “mistake” is on nice guy side. Agree, the better word is a culture mistake. The sad part it will hurt nice guy only. Agile mantra “team self regulation” works only occasionally. In most cases there is a need for a manager input, at least hiring manager. :)
    Nice guy, please, learn to see when your effort is appropriate!

    You may not believe, how often this story in mid and big companies. People manager wants this badly. Just seen on job post:
    a Java/J2EE Developer (note no senior)
    The primary responsibility of this role is to design, develop and support a Web based applications in Java technologies, also should have the capability to administrate an Oracle database. Strong relationship development skills and ability to work effectively in a team / collaborative environment. Energy, drive and initiative – a real focus on getting work done on or before deadlines – is a must. The Java Developer may design, develop and/or re-engineer highly complex application components, and integrate software packages, programs and reusable objects residing in multiple platforms. .. Our client has a prestigious reputation and excellent work environment.
    Listen again, slowly:
    * design
    * develop
    * support (could be on call one :)
    * administrate an Oracle database (likely some heavy lonely app is running already)
    * re-engineer highly complex application components (yes, there is legacy system)
    * done on or before deadlines – is a must (no comments here ;)
    * client has a prestigious reputation (quite big company)
    Seen testing somewhere? :D

    This is not a small shop for sure. The company has hiring budget for an recruiting agency, nice office, running complex app and money for Oracle license. Still wants more coders to do all. Such a “culture”!

    Do not blame developer, blame hiring manager who, for some reasons, wants shit happen.
    Save money – live better! :)


  4. I think I see what smile0n is saying. Hah! If only smile0n had posted before!!! I feel your pain.

    Listen again slowly. My writing says “Nice guys and crap analogies aside” meaning putting these things to one side and out of the main discussion. I didn’t mean crap vs nice. Or even worse crap = nice.

    No one else besides smile0n introduces ‘nice guy’.

    So from what I’ve read ‘nice guy’ is the “Person who needs to learn when his effort is appropriate!” ? I don’t think this is limited to ‘nice guy’. I may be ‘nice guy’ writing any of this posting here. Is my level of effort appropriate? I guess some will say no. Is this politics?

    Job descriptions are one thing and the contract that you sign which describes your roles and responsibilities is another thing. A lot can change and be deduced before that contract gets signed and even how much weight your contract holds. Sounds like a job for HR.

    Live better – save money!


Comments are closed.