For every project I work on, I take my client through a templated process that I have developed over years of experience working for startups and freelancing.
I tailor this process depending on the needs of the client, in order to save time yet deliver the greatest value possible.
The process consists of the following steps:
For each project, I start of by formally defining the product vision either by extracting this information from documentation and descriptions the client has already provided, or by taking the client through an intensive workshop, depending on the size and complexity of the project, and the progress the client has already made towards this goal.
The purpose of the resultant Vision Statement is to guide and unify the team towards a common purpose, so that in case of any gray areas the ultimate goal is clear and everybody stays on track.
It is extremely important to identify and construct formalized Personas for the users of the product. We want to know what kinds of user roles will interact with the product, roles like "admin" or "end user" for instance, and also get an idea of how we expect users to interact and whom to prioritize.
Products can have many different types of users, each of whom may respond to unique messaging and each of whom have unique needs that can all be satisfied by the product.
Conducting a formalized analysis of the users of the product allows us to make inferences and decisions as to the best design and infrastructural provisioning, to ensure the site or application can handle any traffic patterns thrown at it and can serve all its users optimally, within the constraints of the project's budget.
Every product has a goal or series of goals, and defining a Roadmap is the best way to plan out how to get there. Different roadmapping techniques are used depending on the project, but the result is a timeline of high level features or goals to be achieved, along with indicators (KPIs or OKRs) that tell us when we have achieved the goals, and events that we expect to occur over time which will influence our decision making or effect the outcome of our efforts, and of course any deadlines that must be met.
I like to work according to agile principles, but although somewhat reminiscent of a waterfall approach to project management, it is best practice to start every project off with rounds of input from the client and all competencies within the team, to create a high level design of the system which can prove basic assumptions about how the product should work and help us figure out the most efficient plan of action to achieve our goals as we can take fully into consideration technical complexities and limitations that can affect the order in which things are built or tradeoffs the overall product will have to make in satisfying its value propositions within any time constraints we may have.
We all team together for this in a series of rapid iterations on flow diagrams and visual prototypes, which make it easy for everybody to visualize and digest the intended features, capabilities and user interface flows of the product.
Sometimes this step is done before, or in parallel with the Roadmapping step, and sometimes the knowledge we gain from this step will require us to rework the Roadmap.
As soon as we have what we need, we begin rapidly constructing a product backlog, and actually building he product.
I prefer to deliver working versions of the product to the client as rapidly as possible, and thus push the use of continuous development and integration systems as early on as possible to whatever extend the size and complexity of the project justifies.
Ths way we can get real feedback from the client and real users continuously to make sure we are always on the right track and to identify and correct any misunderstandings we may have about what is desired as soon as possible. This ensures that when we launch the product it has coalesced into the best fit for the market and the client's needs using data and feedback from the real world and not just developers' assumptions about what it should be.
Although deployment can happen simultaneously as we develop, through the use of continuous integration systems and techniques, with testing a part of this process at every step, before the launch we will always construct a launch plan defining who the product should launch to, whether the launch should be staggered in waves, any surrounding systems that must be updated in coordination with the launch, and prepare any notifications to existing or prospective users of the product for when it launches such as email blasts, etc.
We will always conduct rigorous QA an the product, ultimately running it through a serious of "acceptance tests" based directly off of the original product specifications and ask how well it fulfills the vision we initially defined before we give the go ahead for launch. The client will always have chance to use demo the product before launch and has the final say in whether it launches or not.
This is a basic description of the steps I go through on every project. I have the steps laid out in a template that can be customized for every project. I employ the template to ensure that no steps are missed, and tailor it to each project for efficiency depending on what level of service is necessary.
Contact me if you are interested in learning more about my process, or have any web site or application development needs.