Who’s More Disciplined: Hardware or Software Developers?

I’ve often heard the statement that hardware developers follow a more disciplined development process than software developers. What I haven’t heard much about is what it means to be disciplined and/or why that’s the case. So let’s open that discussion in hopes it takes us somewhere useful.

  • How would you characterize a disciplined development process?
  • What makes one team more disciplined than another?
  • What’s the best example you’ve witnessed/heard of a team acting following disciplined development process?
  • Why is it important to have a disciplined development process?
  • Who follows a more disciplined approach to development: hardware or software? Why is that the case?

Those questions are for you so feel free to address any/all of them. No right or wrong answers to these questions, just opinions. Please share yours :).

-neil

Share/Bookmark

About nosnhojn

I've been working in ASIC and FPGA development for more than 13 years at various IP and product development companies and now as a consultant with XtremeEDA Corp. In 2008 I took an interest in agile software development. I've found a massive amount of material out there related to agile development, all of it is interesting and most of it is applicable to hardware development in one form or another. So I'm here to find what agile concepts will work for hardware development and to help other developers use them successfully. I've been fortunate to have the chance to speak about agile hardware development at various conferences like Agile2011, Agile2012, Intel Lean/Agile Conference 2013 and SNUG. I also do lunch-n-learn talks for small groups and enjoy talking to anyone with an agile hardware story to tell! You can find me at neil.johnson@agilesoc.com.
This entry was posted in Uncategorized. Bookmark the permalink.

2 Responses to Who’s More Disciplined: Hardware or Software Developers?

  1. Chiggs says:

    How would you characterize a disciplined development process?

    I would describe discipline as a combination of attention to detail, following an appropriate and well defined process and a culture of distributed responsibility.

    Attention to detail:
    * Relevant and accurate commit messages
    * Clean diffs (no unnecessary/accidental changes)
    * Old / stale information removed (be they comments, documentation, wiki pages, tests etc.)

    Well defined process;
    * Appropriate and correct use of revision control systems
    * Automated regressions
    * Code review by peers (which should highlight any lapses in attention to detail)

    Distributed responsibility:
    * Developers test their changes
    * Developers ensure regressions don’t break
    * Developers update documentation etc. if required
    * Developers ensure automation is complete

    What makes one team more disciplined than another?

    Personality differences, small projects/teams where discipline is less crucial, lack of enforcement, lack of definition, lack of justification.

    Who follows a more disciplined approach to development: hardware or software? Why is that the case?

    Many hardware engineers come from backgrounds where it was possible for a couple of engineers to design a chip using schematic capture implementing ‘revision control’ by zipping up their working directory each day. For these people getting their head around a distributed revision control system like Git is a major learning curve and is therefore something that is likely to encounter resistance.

    In my personal experience software teams are typically far more disciplined than hardware teams. My completely unfounded speculation is that software teams are typically larger than hardware teams and equally their code-bases are far larger. In that environment lapses of discipline have a clear cost and therefore the value is evident.

  2. Chiggs says:

    I would add another characteristic to my comment above: Business awareness

    A disciplined team stays focussed on creating value which assuming they are employed by a company this means keeping aligned with the goals of the business.

    This manifests in several ways:

    * Working with equal enthusiasm on the ‘boring’ bits in addition to the interesting stuff.
    * Understanding the appropriate level of quality required to generate revenue (sometimes this might be lower than a particular developer might be comfortable with)
    * Responding well to evolving demands, requirements, markets and competitors

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>