Framework for Software Development Productivity
In software development, project management and communication towards the client are critical tasks in building a successful development framework. It is not enough that we can design and code. We need to also be able to communicate and track each development task and milestone, provide exact software reports, explain systems in common language, help customer support with any technical system issues, and provide the client an overall understanding of their software.
Since we are a small team, we have taken the following steps to ensure quality assurance and client satisfaction while maintaining development productivity. The list may not be fully inclusive or text book, but it is a tested set up for dedicated and continuous software development over the past four years:
1) Prioritizing. With a small development team that has to deliver a lot, prioritizing becomes crucial. We identify each development request and idea with a priority level that helps us to identify critical tasks that need to get done. We use timeline based development and commit to clear deadlines that can be communicated to the client and end-user.
2) Development cycles. We work at minimum on two week cycles that allow our programmers to focus on the identified tasks with as little disturbance and side requests as possible. Coding takes focus and we foster project management style that gives that.
3) Tolerance. Because we are a small team developing a large software system, we need to be able to tolerate a certain level of system issues and bugs. No system is ever 100% perfect. Usability is never fully optimal; any system can be improved. Our advice would be to find the sweet spot with the client where development flows at a pace that is needed while any system and usability issues stay under control and can be documented. If it looks like along with new systems or updates, bugs and confusion emerges, then it is needed to allocate more time for the development and slow down a bit. Perhaps take on less tasks per development cycle or allocate more resources on system testing and quality assurance.
4) Setting Standards for Quality Assurance. Related to above, it is important to identify and document the ideal quality assurance process and reflect it to the reality. The client should be given tools to make their own risk analysis how much resources to allocate to the quality assurance process. The quality assurance is a process of multiple tasks that at least should include automated testing for errors, routine system testing, focused system testing, technical system specifications documentation, real life usage monitoring, client feedback, and server and security monitoring.
5) Customer Feedback. We have created a system that allows our client to input all their customer feedback. When certain feedback starts to trend, we discuss the requirements and any needed system changes, give a priority, and take it to development. The customer feedback logging along with real life usage monitoring is critical to gain an understanding of the user acceptance of the system.
6) Interaction. Even as a small team we make ourselves available as technology consultants, in team leader positions, and system documentation providers. We hold a development meeting with the client weekly, and respond to any software questions within one to two hours. In a small team, the time allocated towards communication can be a a surprisingly large portion. Instead of feeling that it “eats” time away from development, it could/should be regarded as a crucial part of successful software development.
7) Time Management. In our software development team, each team member identifies critical tasks, develops goals and plans, logs time spent on each task, and identifies issues that lead to not so optimal management of time. Negative stress and any first symptoms of burn out need to be identified adequately and taken into account moving forward. The team needs to be able to adjust to any needed changes to make work tolerable and towards pleasant and to foster productivity. The client should be shared with some insight about human capital and taxing nature of this type of work as it is also a critical risk factor in hiring a small development team.