InfoQ

News

Prefer Broad Design Skills over Platform Knowledge

Posted by Sadek Drobi on Jan 24, 2008 06:07 PM

Community
Architecture,
Agile
Topics
Delivering Quality,
Design,
Delivering Value,
Programming
Tags
Modeling Tool

Building a team is always a tricky task since it is pretty unlikely to find people who would fit all the criteria of the ideal candidate. Trade-offs are inevitable and, in this context, it is crucial to determine priorities. Broad skills, in terms of software design but not only, this is what really matters for Martin Fowler.

He asserts in his latest article, that if he had to choose between someone who knows very well the platform used but has limited knowledge about design and someone else who has broad design skills but knows nothing about the specific technology used on the project, he would choose the latter. He argues, indeed, that even though design skills are not fully portable from one technology to another and cannot be replicated blindly, great part of them can carry over not only among similar technologies but also from curly-brace languages to Ruby, for example.

According to Fowler, someone with broad design skills would rapidly deliver equal value on a different platform and be "more productive than the competing platform expert" lacking design skills:

A platform specialist also has to learn broad design skills if he's going to produce maintainable code. Here it's important to remember that not just is it usually harder to learn design than platforms, it's also less certain. Given a motivated broad-designer, I can be pretty sure she'll pick up a platform in time. But there's no guarantee the other way around. Some people are good at learning details of a platform, but never figure out how to write clear code.

This also applies to non technical fields. Someone who does not know the specific business domain, can bring interesting insights from other domains and rapidly gain the necessary understanding by collaboration with domain experts and communication with clients.

Hence, according to Martin Fowler, having broad skills is really instrumental for building quality software and delivering value on a project in spite of initial lack of experience in a specific domain or on a specific technology.

There is, however, a certain number of conditions that need to be fulfilled for the programmer with broad skills to gain necessary experience and to become effective quickly enough. First of all, it is necessary to have on the team a domain and/or a platform expert who can pass over his experience. Obviously enough, the motivation of the developer and his ability to learn fast and to interact with other team members are also critical skills.

What is your opinion about these considerations? What guides your hiring choices?


Related Sponsor

VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.

4 comments

Reply

Have both by Francois Ward Posted Jan 24, 2008 10:06 PM
Re: Have both by Brian Dittmer Posted Jan 24, 2008 11:18 PM
If you can´t have both by Christian Schneider Posted Jan 26, 2008 7:21 AM
Re: If you can´t have both by Nedumaran Rajagopal Posted Jan 28, 2008 5:12 PM
  1. Back to top

    Have both

    Jan 24, 2008 10:06 PM by Francois Ward

    Really, ideally you need both. While it is true that general design skills are more important than knowing a platform, the consequences of bringing, let say, a J2EE design to a .NET application can be a disaster (and is especially common, considering how similar the 2 platforms look to the untrained eyes). The most common occurance I've seen however, is C++ devs porting their design skills to Java or .NET. If there's one leading cause on these platforms of project failures, thats the one. Note: I know many C++ devs who switched platform successfuly. I just know way more that did not.

  2. Back to top

    Re: Have both

    Jan 24, 2008 11:18 PM by Brian Dittmer

    I've personally been on a .NET team consisting of almost exclusively Java developers (myself included) and we successfully implemented a large scale ASP.NET application in a relatively short period of time. We used NHibernate and Spring.NET and felt right at home. Incidentally the .NET team I'm working with now uses the ASP.NET WebForms approach to development and we're seeing serious performance issues with about 1/10th the load. I think Fowler hit the nail on the head with this post.

  3. Back to top

    If you can´t have both

    Jan 26, 2008 7:21 AM by Christian Schneider

    Of course having people with design and plattform skills is best but as you will usually not have this combination that often here is what I would suggest. Try to hire people with good design skills as main developers and add some plattform consultants for the start. After some weeks the core people will have the ability to do most things alone and you can use the plattform specialists for remote support.

  4. Back to top

    Re: If you can´t have both

    Jan 28, 2008 5:12 PM by Nedumaran Rajagopal

    I agree. Design skills can only be gained over the time unlike the platform skills where grads coming out collage spend most of their early years to gain more knowledge in platform skills like in Lamp, j2ee or .net. Over the time, when we get into different assignments and challenges, we see patterns, similarities and better equipped with past mistakes with leads to natural outcome of design skills. Lead developers and application architects should hold design skills where they have platform skills or not. Good level of abstractions and design skills can be obtained over time after you made all mistake you can possible make.

Exclusive Content

Discover RailsKits and Stop Writing Redundant Code

Ruby on Rails has become a popular Ruby framework for creating web applications in recent years. An aspect of creating a web application is the need to repeatedly create the same base functionality.

A Formal Performance Tuning Methodology: Wait-Based Tuning

Steven Haines talks about tackling web application performance tuning by proposing a method called wait-based tuning.

Shaw and Fowler About Forging a New Alliance

Shaw and Fowler talk about the need for a new relationship between the business department and the IT department. Studies have shown that projects mostly fail due to miscommunication between the two.

How to GET a Cup of Coffee

In this article, Jim Webber, Savas Parastatidis and Ian Robinson show how to drive an application's flow through the use of hypermedia in a RESTful application.

Archaeopteryx: A Ruby MIDI Generator

Eccentric artist turned overnight anti-celebrity, Giles Bowkett captures the heart and soul of RubyFringe as he demonstrates his revolutionary Archaeopteryx MIDI drum pattern generator.

Alexandru Popescu Discusses the InfoQ.com Site Architecture

InfoQ Chief Architect Alexandru Popescu discusses the InfoQ architecture, WebWork and DWR, Hibernate and JCR, Hibernate scalability, the new InfoQ video streaming system, and future plans for InfoQ.

LHC Grid: Data storage and analysis for the largest scientific instrument on the planet

higgs-event

The Worldwide Large Hadron Collider (LHC) Computing Grid provides data storage and analysis for the entire high energy physics community that will use the LHC.

Fostering Software Craftsmanship in a Corporate Setting

Scott talks about software craftsmanship represented by people responsible for their work, continuously learning, taking pride in their work, sharing knowledge and respecting professional standards.