Wednesday, August 20, 2008

Technical things that devs do besides coding

[This was originally posted at http://timstall.dotnetdevelopersjournal.com/technical_things_that_devs_do_besides_coding.htm]

As Paul Glen pointed out in his good book Leading Geeks, while many jobs are based on visible action (i.e. a mechanic on an assembly line), software engineering is largely based on thinking - which is not a visible action. Therefore different rules apply. For example, a software engineer could be working hard, plowing through a complex design in their mind, but it may look like they're just staring off into space. The problem is when those software engineers have non-technical managers who don't understand this, and instead expect their developers, like any other type of good employee, to constantly be "working", by which the manager means "moving", by which they ultimately mean "typing keystrokes for new, production features".

 

But this is silly. Your best developers are rarely your fastest type-writers. The problem is that there are so many value-added tasks beyond just typing keystrokes:

  • Learning

    • Researching new technologies and techniques

    • Learning a tool or DSL that helps you write better code in the future

    • Mentoring others

  • People and Communication

    • Holding meetings

    • Documenting (like updating the team wiki)

  • Non-production coding

    • Writing unit tests

    • Refactoring

    • Fixing bugs

    • Making reusable utilities and architectural components

Point is that an honest, value-adding developer could sometimes spend the whole day barely touching "new feature" code, yet still contribute tons of value to the project. My concern is that many developers seem apologetic for this, almost like "Gee boss, sorry, I had a slow day today, I'll work extra hard tomorrow to make up for it" You didn't have a slow day, you were just plowing through the unappreciated, yet necessary part of the project. It's much like building the car engine - you don't directly see the engine, but the car won't run without it. Just like it's a "first class" task for a mechanic to fix the car's engine, it's also a first class task for developers to do things besides typing keystrokes for immediately visible features.

No comments:

Post a Comment