Development Principles

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.