Golden Rules of software development March 16, 2008
Posted by babblefrog in Geek.trackback
Controlling complexity is the essence of computer programming
-Brian Kernighan
Just a few observations from watching some software development projects:
Change Increases Risk – Every time you want to make a change to something in the middle of the project, make sure that the benefit is worth the cost. The more critical the project, the more you need to manage change.
Follow your standards – If you have coding standards, documentation standards, commenting standards, standard processes and procedures: Follow them! Every time you think you can save time and effort by shortcutting any of this, it will turn out to cost you double (or more) time in the end.
Use the tools and techniques you know – Trying out new technologies, tools, or techniques should be done in small, non-critical projects. Doing this is large, critical projects will increase risk, and make the project take longer.
Complexity is risky - If you have a choice between doing something a simple way, or a complex way, choose simple every time.
Test, test, test - Unit test everything. That one small change that won’t effect anything else, will ultimately come back to bite you.
Catch exceptions – each one is a bug you didn’t know was there. Check return codes – The one you don’t check will turn into a bug a thousand lines away in a different module.
Keep maintenance in mind – Make the code simple and easy to understand, and comment anything not immediately obvious. After 6 months, even you won’t know why you wrote it the way you did, so how are the maintainers supposed to know?
Use popular languages and tools – Your project may be a perfect match for that new language Babel-E++, but how the heck are you going to be able to hire programmers to maintain it?
Do peer reviews – Review requirements, architecture and design documents, and code. A second set of eyes can flush out errors and fill holes that the original author missed.
Hire good people – Experience counts, and experience with a broad range of technologies is much better than focused experience with the one technology you happen to be using now.
Comments»
No comments yet — be the first.