Article

Craftsmanship Trials: Project Priorities

Posted  by Dave Hoover.

PublicNot categorized.

Tagged with craftsmanship trials question.

At the Software Craftsmanship Summit last weekend we sat in groups of 5 or 6 and put each other on trial.  We were looking for the types of questions we would ask someone to determine whether they were a "craftsman" or not.  I volunteered to go first for my group and Scott Pfister asked me a real head scratcher:

Rank the following 3 project attributes in order of importance and explain why.

  • Test Coverage
  • Timely Delivery
  • Code Quality

I thought about it for around 30 seconds and then gave my answer. Micah Martin was asked the same question and gave the same answer as I did.  Interestingly, I brought up the question at Obtiva's Geekfest and Tyler Jennings, someone I have a ton of respect for as a craftsman, gave the opposite answer.

How would you answer this question?  Explain yourself!  (You'll need to register and login to comment.)


Arrow_down Hide comments
  1. Michael Hunger said  

    1. Timely Delivery: as the craftsmans main goal is to delivery working software to the client (the focus here is more on delivery) that doesn't mean all initially planned featured (rescoping) but the ones that are useful/valueable. Delivery also shouldn't mean deliver anything that works somehow but something that can and has to be accepted by the client as fitting its needs.
    2. Code Quality: is what we strive for. its the basis for a working delivery and getting things done (as well as understandability,maintainability, extensibility). Rather than decreasing code quality decrease the number or scope of requested features that are not so important (with the client)
    3. Test Coverage: is a two sided medal. Its path coverage actually. The main flow of your application is easily tested (50%) the next 30% is doable. But with each additional percent the effort grows exponentially. I'd value functional tests and system tests even higher than unit tests as they show if necessary functionality as a whole is implemented correctly (not just bits and pieces). You can easily get lost in writing and maintaining tests and don't get anything else done.
    Michael


Copyright O'Reilly Media

Powered by Near-TimeTerms of Services | Privacy Policy | Security Policy |