Friday, August 24, 2007

Discpline and Software Development

Jeff Atwood writes over at Coding Horror that "Discipline Makes Strong Developers". Discipline is important and the best developers are certainly disciplined. But what sort of discipline are we actually talking about? Let's start with what sort of discipline we are not interested in -
  • Not imposed discipline.
  • Not about drill sergeants or enforcers.
  • Not about being able to code in low level languages like C or assembler.
  • Not about being anal-retentive.
  • While I have great respect for Watt's Humphrey, it's not about recording and reporting every minute detail of your work day.
Disciplined software development is about -
  • self-discipline
  • focus
  • attitude
  • approach
  • organization
  • responsibility and accountability
This includes the having the discipline to -
  • write the unit tests
  • add the Java Doc comments
  • find the best name for a variable or method
  • leave the code better than you found it
  • fix problems not of your making
  • improve your skills
  • learn new things
  • keep the coding standards
  • use source control
  • check-in changes frequently
  • run the units often
  • run the unit tests before every check-in
  • write a test for a bug before you fix it
  • get your code reviewed
  • fix the problem not just treat the symptom
  • keep code consistent
As a technical lead I struggle with this. I have no desire to be the cop, but there can be too much bad code to ignore. One helpful option is automation. Use analysis tools to identify coding problems, violations of coding standards, and generate test coverage metrics. Automate your builds and do a nightly integration build or preferably a continuous integration build after every change. Run the analysis as part of every integration build. Fail the build if there are to many violations and notify the development team of every failure.

I think that ultimately it is up the individual developer to have pride in his or her work. I think the Pragmatic Programmers said it best. A developer must "Care About Your Craft" and "Think! About Your Work".

4 comments:

Joshua Smith said...

Thanks a lot for saying about useful tips. It is required to understand that android apps development could help in your industry by installing customized software products. Also you may turn your attention on outsourced sharepoint developers.

Joshua Smith said...

It's well done posts. Let me mention about homeowners insurance that are from home protection agents. Save on free rates on homeowners insurance.

Joshua Smith said...

Thanks for sharing with us this useful review. You have affordable possibility to choose gaming affiliate. The best gambling programs such as betfair casino and great poker rooms such as redbet.

Joshua Smith said...

I'm glad to read this review. Here we are willing to share with cheap quotes insurance that is supported by best auto insurance companies. Customer could save on cheap auto insurance quotes which allow customers to apply for cheap policy.