How will you and I create a web app for your idea?

Execution is paramount. Ideas are a dime a dozen, but being able to get it done differentiates you.

First, we define what value the product provides.

Although this sounds obvious, getting the core of your idea down on paper in 1-2 sentences is an important exercise. Being able to clearly articulate the problem, and how you solve it will guide every step of the development process. Often founders will have a laundry list of features that they want to provide their customers, which is great for the long-term. Focusing on what you're going to go live with Launch Day will help us get a first version in front of customers as quickly as possible.

feature1

Second, we make a list of requirements.

Empowered by our key value proposition as defined by our previous exercise, we start to draft a set of requirements for the web application. My preference to accomplish this is creating user based stories. For example, a customer should be able to signup for a subscription with a valid credit card. This is where the concept of a minimum viable product (MVP) comes into play. You have assumptions about the market, but we need to prove them. We must define the requirements that the MVP must have to accomplish this and to start gathering customer feedback.

feature2

Third, we either engage a designer or find a template.

I will encourage every one of my clients to engage with a designer over using a template. The input that a great designer can have on a project is invaluable towards crafting a high quality customer experience. Designers do increase the head count of the project however and increase the cost of development considerably. Using an already made template is sometimes acceptable depending on your product, and typically cost less than $100.

feature3

Interested in the technical steps?

I'm gonna nerd out here, but this section may help vet me as a developer.

Test Driven Development

For every line of code written for your app, there is an explicitly written set of tests to ensure that it works properly, despite any changes that could occur elsewhere in the project.

Environment Provisioning

Independent of where I setup the servers, I use Ansible to automate the deployment of the environment. This makes redundancy, reliability, and disaster recovery easier and more predictable.

Continuous Integration

To provide bugs from making it into production, I use CircleCI to run the test suite on code commit, and automatically deploy on success.

High Availability

Whether your website attracts 100 or 1,000,000 visitors a day, you don't want any downtime. This risk can be dramatically reduced by having multiple app servers and failover databases.

Strong Backups

You have to be prepared for the worst case scenario. If you have catastrophic database failure, you need to have recent backups ready to be restored.

Security Hardening

Security is a large topic, but this includes ensuring that services are only exposed as absolutely necessary on your servers. Additionally, you must be aware of recently found vulnerabilities.

Database modeling

Modeling your data has long lasting implications and it's very time consuming to change after the fact. You must take into account anticipated flexibility when planning associations.

Monitoring

If a server goes down, does it make a sound? I'll typically setup Server Density to ensure that your servers are up, as well as put preventative alerts in place.

Analytics

How do your customers use your app? What functionality to they use, how do they use it, and how often? Getting insight into customer behavior will enable you to continually improve the product. I use Mixpanel to gather this insight.

Read on for costs and timelines.

Cost of Development