Chapter 9

App Housekeeping Features

Does your team handle hosting?

Once the software is built, host servers are required to run it. Depending on the complexity, this can either be a simple outsource function or a team of in-house *dev ops* specialists.

Services like Heroku or DigitalOcean are great at handling much of the hosting needs until the demand grows considerably. For more technical teams, configuring Amazon Web Services is a solid option too.

Does your team handle maintenance?

The notion of ‘set it and forget it’ is largely a farce. Software that is live and actively used will require maintenance. In many cases, the level of maintenance is largely correlated to the time and attention spend in upfront planning and quality engineering.

‘Pay now or pay later’ rings true with software. If the product is a long shot anyway, perhaps there is a strategic advantage to short term thinking. If you can stomach the time and costs of quality, the benefits truly pay off over time.

Do you have terms and conditions?

It’s important to craft clear terms for your software. Who owns content that gets uploaded? What can be done with a users data? What rights does each party have?

While it feels trivial and unlikely that anyone will read them, terms and conditions become more and more important as your technology picks up steam.

Do you have a preferred programming language?

Be careful when asking a software engineer which is programming language is best. This will likely prompt a long monolog that will leave you with more questions than answers.

The truth is, it depends. There are some languages required by certain platform (Android requires Java for instance) but my in large their merits represent and unending series of tradeoffs.

While I favor Ruby on Rails for web applications, the greatest value continues to come from consistency. Becoming highly skilled in one language and unifying a team around that language has allowed for tremendous efficiencies and momentum.