Archive for December, 2006

Implementation by feature or vertical development

Tuesday, December 5th, 2006

I’ve just started leading an internal workshop on Incremental Development. In the workshop I describe and delve into the difference between orienting development vertically (by use case) versus horizontally (by software layer or service). By use case is the clear winner since it allows progress to be tracked in a user meaningful manner and encourages a smooth flow of client value.

Johanna Rothman describes the different orientations as implementation by feature and implementation by architecture. These are clearer phrases.

I think I’ll be making a few minor edits tomorrow.

The training course scam

Sunday, December 3rd, 2006

Software development training courses are a waste of time, money and effort and don’t equip people to do meaningful work. Supposedly they pass on new skills and knowledge to developers. In reality training courses are about:

  • padding resumes,
  • allowing managers and staff feel like they can tick the “staff development” box in a yearly evaluation form,
  • sucking money from companies,
  • giving people a 3-5 day break from work,
  • letting developers off the hook for not doing their own professional development, and
  • “rewarding” developers in a low-effort (for developers and managers) way.

In my experience as both a nerd and manager of nerds I’ve never attended a training course that has taught me anything that I hadn’t already known or that I couldn’t have learned in a fraction of the time with a little bit of effort. When I’ve sent developers on courses they often admit the same thing.

Lets look at some of the things wrong with training courses:

  1. Training courses are aimed at the lowest common denominator - this is why they are so mind-numbingly slow, otherwise the guy in your course who can’t turn on his computer will complain and the training company will lose money.
  2. Training courses are often inconveniently timed - how often is the right course run? Probably not when you need it.
  3. Training courses are often a poor match for the actual need at hand - ever seen a course about the replacement of a Java servlet application with a PHP-based blogging tool to provide a corporate intranet? Me neither. But I have seen plenty of kitchen sink courses with lots of irrelevant junk.
  4. Training courses are generally expensive. ’nuff said.
  5. Training courses have a short retention half-life - unless you teach yourself or put into genuine practice things you learn you will forget stuff. Quickly.

Instead developers should be given time and resources (the Internet, books, self-paced learning CD’s, mentoring and guidance, access to others, etc) and a goal relevant to their upcoming work and asked to teach themselves. Does this take more effort? Sure. Is it more effective? That’s the wrong question - it will actually be effective where training courses aren’t.

We all need to stop pretending and bite the bullet. Managers should create customised training plans for developers that provide a combination of on-the-job activities, self-paced learning and guidance from existing experts. Developers should expect that they need to apply effort. Its okay to ask for help to create your training plan but its up to you to do it. You are a professional and its your career. Sitting in a room with a bunch of other bored developers really isn’t going to do the trick is it?