One of the most important aspects I’ve found in software engineering, is pre-planning. And I don’t just mean a simple discussion either.
I’ve been keeping track of the different items really necessary to successfully complete most of the more complex projects I work on, they are (but not limited to):
- Lo-Def Screen Layouts (Using Fireworks, Pencil or Visio)
- Hi-Def Screen Layouts (Using Fireworks, Illustrator, Photoshop, GIMP or Inkscape)
- Project Workfow (Using Pencil or Visio)
- Project Description and What’s to be accomplished
- Technology breakdown:
- Is it html/css/js? Or is it in Java?
- What libraries?
- Do any new technologies need to be learned?
- Timeline restrictions
- Build phases and milestones
- Major milestones and minor milestones in the phases and at the phase transitions
- Hosting architecture
- Will it be a cloud server? Or is it a single VPS?
- Database diagram and planning
- Stored procedures
- Foreign Key (FK) Relationships
- Platform, Engine, etc.
- QA Requirements and Planning
- System deployment and update handling
- Development Style (TDD, etc.)
Feel free to post anymore things that you do to improve the overall development process for your projects.