I want to share my approach to track customer's needs, in order to:
- Organize our work
- Help the customer to prioritize
- Provide to every stakeholder a clear view of the status of any project
So, I mapped what we call "Necesidades" (Needs in english) in a database:
Every need has a header with an Id, the client (Cliente), the working contract (Contrato) and the person who is accountable for that need (Contacto). Also, there is a current state (Necesidad Estado) and an estimate of the hours needed to fullfil that need (Horas estimadas).
In the terms of software requirements, the need has the following information:
Descripcion: here we or the customer writes what does he want to achieve
Objetivos: this is the place where we write what bussines goals this need pretends to satisfy
Procedimiento actual: in this field we write how this need is being worked now
Reglas: here we write the bussines rules, constraints and politics that have impact on the need.
Requirente: here goes the main stakeholder, in organizational terms. For instance, Marketing, or Plant
Enfoque de implementacion: here goes the implementation approach, or how are we going to satisfy the need
Adaptaciones: here we write the impact on software. In our projects, we work with an ERP and several other softwares, and many of our costumers have an array of solutions. Some provided by us, some developed in-house and some provided by other vendors. Here we track the impact on the whole array.
As you can see, every field has a comment button. That comment generates a Change Request, where every user has to indicate if he/she wants to change something in the text of the field:
Then, the owner of the need can approve or reject every change request:
Only the owner of the need has permission to accept or reject change requests. This gives our workflow change control.
One as an user can interact with the list of needs of the firs image, or the Kanban board:
This last view gives a good sense of the status of a project. We have 4 columns:
Backlog, for everything that the customer has told us but it's not currently prioritized
En evaluacion, stands for the work being evaluated. The evaluation stage includes activities such as requirement writing, communication, discussion and approval (or not)
En progreso is the WIP stage.
Completadas is the column with the implemented needs
In order to have integration, this web app has a REST API that provides the following current capabilities:
The customers, contracts and contacts are created in our ERP backoffice and then replicated in the web app
Several steps of the workflow are reinforced with a mail to some interested user. That mail is sent by an email marketing tool linked with this app
Every time we have got to send a status report to a customer, we have a tool that gathers needs and presents them in the Kanban board and a full list. That tool also gathers the time tracking records from the ERP and generates a Markdown file with all the info. Then we complete some descriptive fields and convert that MD to a standard DOCX with template.
In the close future, I want to decorate this model with:
- Giving structured detail to the components of each field.
- Storing descriptive dimensions to the need. For instance, perceived risk and perceived value. This would be useful to create a risk-value matrix and give some tools to prioritize
- Adding to-do detail to the need entity, so we can specify the workflow
So, do you people think this could be a good approach? I thought it could be a good fit for an open source project.