Development Principles

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.