Programming deliberately allows you to catch, fix errors early and helps you write better code. By programming deliberately you should:
- Always be aware of what you are doing.
- (...) explain the code, in detail
- Don't code in the dark. Build an application you don't fully grasp, or use a technology you don't understand.
- Proceed from a plan (...)
- Rely only on reliable things. Don't depend on assumptions.
- Document your assumptions
- Don't just test your code, but test your assumptions as well. Don't guess;
- Prioritize your effort. Spend time on important aspects.
- (...) Don't let existing code dictate future core. All code can be replaced if its no longer appropriate.
That's what we do. When given something that seems simple, we annoy people by looking for edge cases and asking about them.
Another big danger in producing a requirements document is being too specific.
Requirements are not architecture. Requirements are not design, nor are they the user interface. Requirements are need.
These short descriptions are often called user stories. They describe what a small portion of the application should do from the perspective of a user of that functionality.
Your knowledge and experience are your most import day-to-day professional assets.
Tips on how to improve your knowledge:
Learn at least one new language every year
Read a technical book each month
Read nontechnical books too
Experiment with different environments