So I’ve been working in software for over 10 years, and so I figured its about time I came out with some highly scientific principles of software engineering. Follow these, and I personally guarantee success…
- Don’t try and do too much at once.
- Hire smart people.
It’s important that you do both of these – leave either out and you’ll probably fail.
Firstly, software is too hard to try and get too much of it done at once. Don’t bother trying – no matter how smart your team is you’ll fail – or have to redefine success to something less than 100% satisfactory. If you’ve got a big project to do, then incrememental delivery is the only way forward.
Secondly, no matter how small the project is you need smart people. Software is too hard, and it has an amplifying effect on stupidity. Since the smallest bug can cause big problems, and the number of bugs decreases expoentially with smartness you just can’t afford to have less than the smartest people available (I’ve got no evidence this bug vs smartness relationship is true, but it sounds kinda scientific & shit, so I’ll leave it in). However, if you have smart people, you have to stop them trying to do too much at once. See rule one.
That’s it. I now declare software development to be a solved field.