- There should be clear communication about what the problem actually is.
Don’t solve the wrong problem.
- Solve the problem to meet specifications.
- Perform test driven design.
If you are unsure of your goals then you’ll never reach them.
- Use debugging tools.
You can find and fix the problem much faster using debugging tools instead of print commands or, worse, randomly changing things.
- Don’t repeat yourself.
- Create a personal collection of software tools and libraries that I wrote.
Learn from the work you do, and keep it with you in order to use it in the future.
- Write modules with a single responsibility.
If a module tries to do more than one thing, splitting it up will probably make the design easier.
- Write against interfaces, not classes.
Even if it seems simple and silly to write a simple interface for a single class to use, chances are, in a big project, having it written against an interface will very likely make your life easier in the future.
- Learn how the entire software system works.
If you can be that person on the project that knows what every part of the system does, you’ll be invaluable.