Saturday, February 14, 2009

Simplicity in an ever more complex world

Uncle Bob has me thinking about software craftsmanship, some of the simple home truths he talks about in that Infoq presentation are very profound. Every day I look over the headlines on technical news websites and read about the latest distributed-cloud-enterprise-service-buses (sounds like a cool new way of getting to work in the morning).

In my opinion, we are a community that enjoys a challenge a little too much, then of course, there is always the powerful self serving aspect - can I make this fashionable new technology work so I can put it on my resume. Our focus should be on establishing ourselves as a profession first - by mastering the basics and providing business value. Its an old tune, but the basics are done very poorly in software development and its not until we learn that mastery of the most basic skills of software construction will do far more to further the 'professional' aspect of our chosen discipline than any other factor, that we will have truly progressed.

Specialists vs Generalists

I have been doing some background thinking on this subject for some time now. Many projects I have worked on are set up the way of the specialist, yet something just doesn't ring true whenever I work on a project staffed this way.

Esther Derby has this take on the subject and it got me thinking. Johanna Rothman has a different perspective on the subject.

Quite often folk from different specialist backgrounds often set up yet more artificial organizational boundaries, even though they may report to the same technical manager. A user interface specialist's work will be "thrown over the wall" to the business domain logic guy and his work in turn to the database guy. No matter how great these folk may know their chosen specialisms, it doesn't compensate for the lost communications channels which suffer greatly from the adoption of this model. Oftentimes, generalists have good enough knowledge for the project and even if not, working alongside a generalist could be a potential solution to this dilemma. In the agile world, one of the truisms for me is common code ownership - it helps to reduce egos and instill a sense of teamwork as well as more practical considerations such as reducing the "truck number" for a team.

Friday, February 13, 2009

Great Presentation

Really enjoyed the presentation Craftsmanship and Ethics from uncle Bob on infoq. In my opinion, Bob has got it spot on. There are many of us out there who consider ourselves professional, yet can we say that software development can really be viewed as a profession? Especially when we bear in the mind the massive costly failures and mediocre performance of most teams.

We have had the tools to do a much better job for years, thought leaders like Beck, Fowler, Bob and many others have pointed the way to a much more successful future in our industry, yet we still fail to follow good advice - why?