Besides a great, well-managed team of software developers, there is yet another contributor to the high quality of our work. It is a polished development process. The best team ever would fail developing a relatively simple code without such a process. What does our development process involve and why is it so effective?
Working time log
First of all, we keep detailed records of each and every working minute of our software developers. We have in place an internal system we have developed ourselves for our needs. At the end of every month, the system generates a detailed worklog which we send to our clients.
The system reports working time by projects, each project being broken down into single tasks. On that account, our client gets a direct insight into our overall and detailed working time and our managers always have an up-to-date comparison of the estimates v. the actual working time.
Now, I am going to tell you about our task system.
In our process, tasks are well-defined technical jobs of 40-80 work hours. We decide on their size so that software developer should be able to evaluate their time requirements. We group minor tasks and divide the large ones and thus our managers always have a clear idea of work progress. Whenever asked about the progress, they can provide a precise answer and control the actual working time devoted to a specific task.
Thus their work and overall project management are facilitated and our clients receive specific information about what tasks our team is currently handling, as every work hour HAS TO be assigned to a task.
So the manager has an effective system to track the completion of all the tasks of his or her team. We have included another procedure though to help the manager manage the budget even better.
In line with the procedure, our software developer should have the first prototype and know any and all challenges and unknowns halfway through the estimated working time required for the task. On that account, the manager gets an insight into the developer’s work and if the manager determines that the task will exceed the original estimates, he or she will consult the client immediately.
Such a consultation may result in the cost revaluation, scope change, task abandonment or another optimal solution. Every such change is confirmed with an e-mail at least.
This is another way to ensure both our managers and clients have a clear insight into the project.
Upon completion of each task, we also monitor the stabilisation costs. Every time we assume that we will allocate 20% of the estimated completion cost of the task to its optimisation. A higher cost means the code quality was lower than expected or there was an issue in the task analysis.
In such a case we always look for the cause and based on that we optimise the estimation process for future tasks.
So now you know how we manage the time and monitor the performance of the smallest tasks. Every project however must consist of major portions which group the minor ones and are responsible for the completion of specific system sections or modules. We call them initiatives.
An initiative is a major task defined with business targets. It represents a specific system function or module which needs to be included in the system due to the client’s requirements. The initiative consists of several up to a dozen or so tasks which combine to provide a functionality.
An example of initiatives is a module for communication with an external date base provided by a third-part company or body. The module needs to be included in the system since it is required for its proper operation – hence it is a business target.
As we already know what the initiative is, we may plan the tasks required thereunder to implement the communication module. The manager divides it into tasks and assigns them to individual employees in his or her team.
As compared to tasks, the performance of every initiative has a more formal nature. Every initiative is represented by a document describing its goal, work scope, working time estimates and schedule. The document shall be accepted by the client and the management board of our company.
At the end of every initiative, the manager draws a client acceptance protocol once the production version is launched.
The main objective of the project manager on our side is to carry out such task planning and client communication so as to obtain an optimum implementation of the project business targets within the working time set. Initiatives and the subsequent division into tasks are effective tools helping him or help achieve the goal.
Now you know our project allotment and time management fully. Are there any other contributors to the effective completion of our projects? Most certainly. It is a crucial process which ensures our clients have a full insight into our work progress.
This is reporting of course. We provide our clients on a monthly basis with:
- A detailed worklog of working hours
- Progress degree of the tasks started and plans for the next month
- Initiative performance status
Task and initiative reports also provide information on changed working time estimates as compared to the previous-month plans. The information may include: increased estimated for a more difficult task, a scope change made by the client, modified priorities etc.
That’s basically all; one last puzzle piece remains … The one which will determine our cooperation in the long run.
Continuous improvement of the process
Managers hold regular meetings with our CEO responsible for the production and review projects, initiatives and tasks together. The objective of such meetings is to confirm that projects advance and to detect potential issues before the client reports them.
We also meet with our clients to sum up the objectives achieved in the last period, plan further objectives and receive the feedback on our cooperation and methodology. We analyse all the problems and failures and look for their causes. We implement our findings from the analyses and talks with the clients in our methodology to eliminate any similar problems in the future. Then we deploy all the enhancements in all our projects and thus improve our development process on a continuous basis.
Excellent management is our priority
Working on extensive IT projects does not only require technical mastery but also excellent management. I hope I have explained in this article how we manage a project and how we carry out the code development process. To sum it all up, we always focus on the precise control of the process, provide our client with a full insight into our work and refine our cooperation base on the lessons learned from problems or understatements.
Our development process is a perfect complement to the high skills of our software developers and enables them to use their abilities in the implementation of projects for our clients.