Have you ever…
- Wasted a lot of time coding the wrong algorithm?
- Used a data structure that was much too complicated?
- Tested a program but missed an obvious problem?
- Spent a day looking for a bug you should have found in five minutes?
- Needed to make a program run three times faster and use less memory?
- Struggled to move a program from a workstation to a PC or vice versa?
- Tried to make a modest change in someone else’s program?
- Rewritten a program because you couldn’t understand it?
Was it fun?
These things happen to programmers all the time. But dealing with such problems is often harder than it should be because topics like testing, debugging, portability, performance, design alternatives, and style—the practice of programming—are not usually the focus of computer science or programming courses. Most programmers learn them haphazardly as their experience grows, and a few never learn them at all.
Kernighan, Brian W.. The Practice of Programming