The non technical factors of a project are sometimes even more important than the technical ones, what follows is, in my opinion, the seven most important non technical factors to be taken into consideration to deliver good software.
1. – Have a clear development process.
A good process is fundamental for a successful project. It should be as lean as possible and everyone in the team should embrace it. It doesn’t matter if the process is agile oriented, or waterfall oriented, having a clear understanding of what to do and how to do it is basic to reduce waste and to align everyone in the team in the same direction, not having a clear development process is highly unproductive.
2. – Understand the vision and goals of the project.
It is easier to fulfil the customer needs when everyone understands the reasons behind the product development, that’s why every project should have a vision document and a list of goals, these documents should have high visibility and all the team should know them.
3. – Use iterations.
Even in waterfall projects it is a good idea to deliver the product in iterations:
- It helps to know if the development is going in the right direction.
- It makes easier the development by splitting a big problem into smaller ones.
- It provides value to the business sooner, so the ROI is maximized.
4. – Transparency.
Transparency helps to prevent some of the most common problems in software development.
- It helps to detect misdirection sooner during the development process.
- It helps to build trust.
- It helps to validate the planning.
In order to be transparent is important to enhance the communication across the team and with the stakeholders.
5. – Commitment.
The team has to embrace every decision and take them as their own decisions; it has to take accountability for failures and success, a committed team is likely to meet the different milestones of the project.
To have a committed team is essential to promote the motivation of the different members.
6. – Leadership
A good leader removes impediments, coaches the team, makes sure that all the conversations and meetings are fluent, and is always keeping an eye to make sure that the project is going in the right direction, a project without good leadership is likely to waste many time in meetings and development.
Leadership is spontaneous and is based more on informal facts than formal facts, the leadership doesn’t necessarily have to come from a boss, and don’t need to be taken just by one person, but it can be dangerous if two or more team members try to lead the team in different directions.
7. – Customer focus.
Instead on focusing on providing the best possible solution for a customer, some developers tend to focus in the different technologies/frameworks/architectures or tools which they think may fulfil them, that’s wrong, don’t ever let technical considerations to drive how your software is going to be, your software should be completely driven by what makes your customer happier.