tomcarnell.com

Wednesday, March 21, 2012

Software development and the dangers of the word "Done"

People like using the word "done" and with good reason - if something is "done" it means we no longer have to worry about it and we can get on with the next task - its a decisive and positive word. But this word is usually misleading and in the real world, software development tasks are very rarely "done".

To say that a software development task is "done" tends to send a message to the project manager and client that the specific user story or feature will never need any revision and is completely free from errors. This is almost certainly not the case. It's a good assumption that new code will contain errors, even if you haven't found them yet and you can be pretty sure that when the new feature is demonstrated to the client or as soon as real people start to use the system, changes will be required.

And at the engineering level, well organized code will generally adhere to the DRY (dont repeat yourself) principal. This means that engineers will try to 'abstract' code, functions and structures to be as general as possible so that they are used as often as possible. This implies that although a feature may appear unchanged from one version to the next, the engineers really know that actually a lot of the underlying code may well have changed and although unit testing can 'positively' test and confirm consistent behaviour, a good dose of manual testing will do no harm.

But this article is not about code organization or testing techniques, it is about why we should try not to use the word "done". When we say this word, we probably really mean: "done to the point where another task is of higher priority". If this definition of "done" is generally accepted then project managers and clients can continue as usual, but should not be alarmed when something marked as "done" contains bugs, needs changing or the code requires rework.

14 comments:

  1. Interesting thoughts. So, in your opinion, when we could say "done" to our client ? I am working in a big software development company Nix Solutions that's why it's interesting for me.

    ReplyDelete
  2. To focus in on a solid firm, think about the items and administrations offered by every firm. Likewise check its past certifications. Be that as it may, a careful check of association's experts and their expertise set is an absolute necessity. Different variables you can consider incorporate framework, opportune conveyance, client invitingness and so on. useful reference

    ReplyDelete
  3. Well, yaeh. Before the word "Done" should be the most carefull testing period ever. For this purpose I'm using this guys http://qatestlab.com/services/we-are-professionals-in/server-service-testing/.

    ReplyDelete
  4. Now you can win free stuff online, free giveaways, enter every day to win latest iphones, smartphones, macbooks, laptops, accessories, technology and much more.

    Participate, Win & Keep A Free Apple iPhone XS

    ReplyDelete
  5. Get your hands on unlimited pc & mac torrent applications. You can easily download and install these premium applications on your macbook Teamviewer Crack

    ReplyDelete
  6. Very good points you wrote here..Great stuff...I think you've made some truly interesting points.Keep up the good work. So Website Scraper Software

    ReplyDelete

  7. Both of these assertions lead to the possibility that Agile Software Development invites changes from clients and different partners in the undertaking. software consultancy

    ReplyDelete
  8. Great job for publishing such a nice article. Your article isn’t only useful but it is additionally really informative. creative website development service providers USA Thank you because you have been willing to share information with us.

    ReplyDelete
  9. The Best Casinos in USA - APRCasino
    It is one of the most well-known 토토 사이트 casino casinos, aprcasino and it is owned and worrione operated by www.jtmhub.com the Rincon Band of Luiseno febcasino.com Indians. There are over 100 different

    ReplyDelete