CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Karl Seguin

.NET From Ottawa, Ontario - http://twitter.com/karlseguin/

The Productive Developer

A common topic for tech bloggers is to talk about some of the books that had the greatest impact on their professional development. I've been a little surprise that, in the last handful I've read, Peopleware didn't make the list. Personally, it's been a highly influential book – and if you believe what Joel Spolsky testimonial says, there's a case to be made for it being the most influential book in our industry.

I often talk about maintainability as an umbrella term for everything I try to do. I refactor to increase readability to increase maintainability. I write unit test to increase robustness to increase maintainability. But when I think about it, maintainability is just a sub-category for an even bigger umbrella: productivity. Lately, I think we (I use the term broadly and possibly ignorantly) have focused a lot of attention on tools that make us productive and less on the intangibles.  Discussions around Ruby, Agility, ALT.NET, Design Patterns, Resharper, Dual Monitors and so on all deal with actual products or practices that can be implemented to increase productivity. For any of these to have an impact, there's a fundamental layer which first needs to be in place.

In any normal situation (i.e. not a soldier on the front lines), the core to being productive is happiness. I'm far from an expert on the field, but I think it's safe to say that there are some pretty basic things that we all want: good health, balanced personal and professional life, reasonable stress levels, good night sleeps, friends, family and so on.  Let's call these the fundamental aspects of productivity – without them, no amount of open source tools or duct typing can make us productive. In our field, it's common that an employer is more respectful of these things than the individual. Where I work they are very conscious about having people take their vacation time because they want people to get out and see the world (in reality, there's a strong financial incentive, since accrued vacation time is a liability to a company, but in my case the concern from the company is sincere).

Beyond these fundamentals, I think there's a very rich and complex layer of human psychology that can be leveraged to make us more productive, which we can call beneficial aspects of productivity. In my experience, little attention is given to these subtle things.  Sadly, most are outside your control – they are things provided by your manager/employer. Some that quickly come to mind are:

  • Mentorship, job-related training and adoption of new technologies,
  • Teamwork, shared ownership and member equality,
  • Challenges, new projects, well defined goals,
  • Quality, enthusiasm and sense of pride

In Peopleware, DeMarco and Lister talk in detail about the most important of these things: the drive towards quality. I've lived it myself, the further away from quality a project goes, the less enthusiastic the team becomes, the worse the quality gets. It's a vicious circle which, once too far gone, is impossible to break out of.  Project managers just don't seem to grok this reality – they don't understand the personal investment developers put into software projects (it's like a piece of art to us), and the toll is takes on us when poor decisions are made despite our strong objections.

There are tools and practices that address many of these issues. Things like sustainable pace, customer collaboration and life vectors are pretty hot. More specifically, I think user stories provide a double whammy – they give your developers a substantial voice of how they think the product can be made better, and provide a means of measuring productivity (velocity).

When all is said and done, I think this is an area where most shops can reap huge benefit. Sure, buy everyone a license of Resharper and SQLCompare because you'll get instant return on the investment, but think beyond hard goods and come up with ways to motivate developers and keep them enthusiastic about the work they are doing. There's a reason innovative companies like Google and 3M give its employees time to work on their own project.
 

 


Published Oct 15 2007, 01:28 PM by karl
Filed under:

Comments

Christopher Steen said:

Link Listing - October 15, 2007

# October 15, 2007 9:54 PM

Christopher Steen said:

Parameter validation [Via: Patrick Cauldwell ] Do Managers Prey on Developer Pride? [Via: Max Pool...

# October 15, 2007 9:55 PM

DotNetKicks.com said:

You've been kicked (a good thing) - Trackback from DotNetKicks.com

# October 16, 2007 8:43 AM

Paul said:

See Maslow's Hierarchy of Needs -

en.wikipedia.org/.../Maslow's_hierarchy_of_needs

# October 16, 2007 2:36 PM

surya said:

its really nice piece to read. PM never bother about developers they just want us do miracles .

Even for their mistakes we have to pay by physically and mentally. There is no regards for that in the end.

# December 26, 2007 8:26 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About karl

I'm a developer living in Ottawa, Ontario. I like to focus on medium to large scale enterprise development, maintainable code, DDD and unit testing. I occasionally speak at conferences, am an editor for DotNetSlackers and contribute to projects here and there. Check out Devlicio.us!

Our Sponsors

Proudly Partnered With