Over the years I have seen and have been part of different product development processes and not all of them had a good start. That at the end led to unsustainable and unscalable final product. The reason is that everything is developed in hurry to meet deadlines and/or develop a feature in short time when in reality this feature requires more research and more time to develop.
At the end all weight goes on the shoulders of the developers and that may result in a developer not been happy and possibly (most likely) leave the company.
This is definitively not the developer’s fault. Poor management and and false promises to the clients lead to this kind of development and results in good looking applications with rusty interior.
I was thinking on how to avoid all that and I will now suggest a short notes on a product development manual which I think will avoid all the problems that come out of hasty development and rushing to meet unrealistic deadlines. I encourage you after reading this to point out any cons this product development process might have and of course give suggestions on how to make it better.
This document will describe the process of how to start a project development that will lead to better workflow, giving better estimations, meeting deadlines and of course happier developers.
The scope of this manual consists of how the clients should be approached so that we can gather the most valuable information on their idea, how to use that information in project planning, how to transfer all that into something a developer can understand and how the developers can turn that into reusable code.
First step in making an idea happen is to gather as much information as possible on what exactly the client wants. How they imagine the product should work, what is the goal of that product, what they hope to achieve, what is the target group.
It is important that in this step are included all parties that are or will be involved in the project, like the project manager(s), designer(s), at least one technical person.
This step is where it is decided the direction in which the project will go. The client should also invite others that are involved in the project on his side, consultants, marketing person, sales person. They may also have insights on the project which the client can not foresee. It is best if everything is on the table while the whole project is still in “fluid” state.
This process of information gathering may last from few days to few weeks depending on the complexity of the product.
Once all information is gathered and all opinions heard, the project manager starts arranging all information and creating a product flow accompanied with mock-ups of how the application will look and how all is connected.
In this step, the project manager can work with the tech lead who can help with the logic of how the components in the application can be connect and if that is possible to be done in first place.
After finishing with the product flow and mock-ups, all is presented to the client where they show every step and action in the application. The client may or may not like what he/she sees so the project manager takes notes from the client of what should be changed. This can lead to adjusting the mock-ups and the flow and presenting again to the client.
This process goes in loop, that is gets repeated, until the client agrees on final flow. Once the client agrees on the flow, the project goes in designing and story creating state.
Here the designer takes over while the project manager starts creating stories using some project management system (JIRA).
The designer is creating the design based on the client’s info and the mock-ups. After the design is ready, another presentation is done for the client where they can see the design and how the application will look.
This may repeat over and over if client wants some design changes. The designer makes the changes, presents again etc. until the client agrees on final design. This phase locks the project and no more changes can be made in the logic and design. This is version 1 of the product and development starts next.
After the design is finalized the tech lead forms the team. First the database is planned and creating all models and entities. After, they separate all components that show on multiple pages. With this is achieved creating reusable components.
This phase of the product development is setting the base of the code. Find all reusable components and global variables, like colors, buttons look etc. create them and after that the scrum process can start. This leads to not have conflicts while different developers work on two or more different tasks where a same piece of code or component is used and not having to write same code on several locations throughout the project. If changes are needed on the base, global code, the changes are done and pushed on the master. These changes will be pulled by all developers in their branches.
Each developer’s code must be reviewed. This will also lead to faster and better coding. By pointing what the developer is doing wrong, you teach them how to improve their skills and that leads to clean code and faster development.
I will write a more detailed view on the technical part and how should be organized from a developer’s point of view.
Feel free to give any thoughts on this.