Software development tenets
Software development principles I firmly stand by and/or strive for
- The goal of every sprint should be that the software is useable, of high quality, and testable
- Reuse is NOT what we should initially strive for; however, it should be a side-effect of building quality, testable software
- Iteration one can not and should not be perfect...striving for perfection on the first iteration is a waste of time because things change too quickly
- Try writing code first without a fancy debugger; only rely on unit tests and see how far that takes you (should be a good surprise)
- Code comments are great; however, they should not be used as a substitute for clear and concise code
- Reuse is good if that is the actual goal of the project (i.e. you are tasked with building a framework); otherwise, YAGNI (you ain't gonna need it)
- Be positive, attentive, and helpful (ALWAYS); no excuses
- Be communicative and transparent regarding the status of your work. Even if (especially if) you are behind. You will get better and faster, no doubt, but people need to know they can trust you to tell them the truth
My favorite soundbites from the book "Refactoring - Improving the design of existing code" (see page 417)
- When you feel the need to write a comment, first try to refactor the code so that any comment becomes superfluous.
- When you get a bug report, start by writing a unit test that exposes the bug.
- Don't forget to test that exceptions are raised when things are expected to go wrong.