The following points are intended to convey the approach, philosophy and principles of software development in the Center for Academic Innovation.
Understand the needs of the stakeholders. Ask a lot of questions. Establish rapport with the stakeholders.
- Understand that reconciling the needs of diverse stakeholders is a difficult task.
- Make sure the project team understands the market landscape for each tool before starting to code.
- Establish the most minimal specifications before working up an early prototype.
- Periodically (at least daily) check tasks against the big-picture problem that the project is functional, and provide at least a bare minimum of test cases.
- Listen to user’s requests during the development iteration cycle. Don’t confuse adding features with finding a better way of accomplishing a task.
- Evaluate the benefits of outsourcing projects or sub-projects. Revisit the decision to do something in-house.
- Constant communication, both among developers and between developers and stakeholders, is key to avoiding pitfalls.
- Ask for help often. There’s a lot of expertise in the team and at the university: don’t waste time re-inventing the wheel!
- Don’t be afraid to learn new things, but don’t do so at the expense of losing productivity.
- Be open to trying new ways of doing things as specific as adopting a different approach to solving a problem or as general as adopting a new framework.
- Seek to create a Minimum Viable Product (MVP).
- When making design changes, record justification for those changes.
- Focus on lean and agile approaches and methods.
- Be aware of technical debt and avoid it.
- Consider using continuous integration (CI) where appropriate. Justify when CI should not be used for a particular project.
- Use automated deployment tools.