Every software project has a core set of people who do their best to ensure successful delivery. Such projects are complex with large number of people involved, each with their unique set of skills and responsibilities. As a business sponsor or a stakeholder you need to be aware of associated risks. What follows is a short look at key roles, detailing how they can endanger the delivery of the project as well as offering possible solutions to minimise the risk.
- Customers who think they know what they want and produce large, detailed requirements. Once the requirements are delivered they disappear and are difficult to get hold of. This affects product owners and developers who have queries that are blocking the implementation. Sometimes it is easier to assume customer requirements and move on to the next feature. The price for this decision is paid in showcase sessions where customer sees something they do not expect or agree with. Solution is to educate the customer and explain the benefits of having them involved in every stage of software development. This is where some aspects of agile software development could be useful such as weekly show and tells, written user stories and acceptance tests.
- Project managers who rush the team and encourage corner cutting. They create technical debt and fail to understand their decisions cause problems in the latter stages of the project. Symptoms of such management are fake deadlines and constant meetings where good software practices are discouraged and "just make it work" mentality takes over. Security teams are put under pressure to “sign off” software with potential vulnerabilities. Solution is to raise issues without sounding too negative. Examples of how rushed decisions impact the project should be presented to the project managers and if no action is taken escalated to another level within a company.
- Technical leads who have no time to implement software practices within the team such as reviewing code, ensuring the team adheres to coding standard rules or guiding technical direction. Pull requests are approved and merged after quick glance. They lack time to mentor junior developers or share knowledge. It takes them days to reply to emails from the business that sometime require answers to simple technical questions. Some technical leads only fire-fight and have no time to lead the team. Others spend 100% of time on implementing the core architecture of the product and keep their head down. They do not like to be disturbed because they deadlines and do not want to be seen as blockers. On most occasions this is a symptom of bigger problems within a company. Solution to this issue is not easy and even the most experienced software managers will need time. It needs careful analysis of development team, everyone’s responsibilities, skills and/if re-organisation is necessary in multi-functional teams.
- Developers who do not understand creating software is a craft and have stubborn views about tools/methodologies. Agile vs waterfall, React vs Angular or Scrum vs Kanban for example. They write code that cannot be easily understood or changed and fail to take security or performance into the equation. There are others who are good at what they do but have the difficulty expressing technical concepts to the rest of the business. This can cause confusion amongst stakeholders and slow down progress. Solution is to provide training, build technical knowledge within the team and for the technical lead to ensure knowledge sharing. Creating blameless environment where asking for help is encouraged would go a long way to allow developers who lack in confidence to step up and take their skills to a new level.
- Various middle line managers who cannot justify a day’s work and want to be involved in every decision. These people have the need to be heard on every call and decision. They are often insecure in their job and feel the need to be relevant. This is mostly an issue in larger organisations where processes are riddled with bureaucracy and manual approval forms. Solution is to invite only relevant people to meetings and limit any email distribution lists to people who need to be aware of the email content. Every time you add someone to the email ask yourself if the project will benefit from them reading the email. In certain instances a company-wide transformation can be the only solution where a new perspective is needed to improve decision making.
- Customer's technical teams. There are times when you need to interface to customer’s APIs and these systems are subcontracted to another company. These companies can charge less but also provide inferior service although this depends on the individual company and by no means is a general rule. Endless meetings with technical people to resolve simple issues such as API payloads or unavailability of sandbox systems for testing cause frustration for developers and the rest of the team. Solution is to put pressure on customer's business contact to get their house in order. This can involve over communicating issues and constantly chasing people for answers.
- Directors who stumble on new technology or software methodology and demand their teams to transform during the implementation of the project without fully understanding the implications on the people and delivery timeline. Solution is for technical managers to step in and quietly have a chat with the directors to explain the impact of their involvement. Managers who only want to keep their jobs will not go down this path as such interventions take courage. A good manager who cares about their team and the product will make a stand even though it could impact their career.
It is highly unlikely you will encounter more than three of the issues describe above during the implementation of a single project. If you do, then understand that the project is destined to fail and distance yourself from it sooner rather than later.
Use the strength and experience of other project team members to address these issues. Often, there are opaque reasons behind problems in the delivery of a project and good set of people skills together with business domain knowledge is vital to ensure success.