There are many challenges in managing software development projects. The following list discusses a few topics that have been highlighted as common challenges of software development. The list is not exhaustive, it does however highlights some of the common challenges I have encountered, and addressed, over past 10 years working in software development.
Interpersonal skills – managing the stakeholders
Every IT project is also a business project, interaction with the business is a must. When declaring a project I always insist on having non-IT project owners and stakeholders. Even the most back-office related project needs to be reported to the business. I have recently participated in a project to provide new desktops to members of my organisation. A key part of the project was to involve members of the business to articulate requirements and to evaluate potential options for a desktop replacement.
Interpersonal skill is a very important skill that every IT manager needs to posses in order to be successful. Managing IT projects of any type (software development, security, etc…) will require a lot of interaction with other members of the business. Establishing and nurturing a healthy relationship between IT and other business units should be one of the priorities for any manager within the IT department.
Unfortunately many IT managers fail to address this topic and in doing so they minimise their chances of conducting successful projects.
Business requirements – the uncertainty factor
One of the main challenges in software development is gathering clear business requirements. When a project fails, many IT managers blame the lack of clear business requirements or the lack of communication from the business to notify changing requirements. I personally think that IT managers should take responsibility for their projects, stop blaming and start acting on it.
In my experience, business users may think they are communicating their requirements clearly but once the software is built they realise that they asked for the wrong functionality. This happens way to often. One of the possible strategies to address this issue is to use an agile methodology that builds the system in increments and gets the business users to review every increment built. This way if the requirement is not addressed as the users expect the issue can be dealt with before the system is live. This can save a lot of time and money.
Project management – real project management skills please
I have seen a few development projects being managed by individuals who do not posses the necessary project management skills to manage a project, let alone a software development project. Sometimes good software developers that evolve into management positions fall into the situation where they need to manage the projects, however, more often than not all that they do is create a good looking project plan that once approved is never revisited again.
Regardless of the background of the person managing software development projects, it is necessary that he/she possesses real project management skills and a track record of successful delivery of real life projects.
Resource management – managing IT and non-IT resources
One of the challenges in delivering software development projects is resource management (IT and non-IT resources). Non-IT staff need to be managed from different perspectives depending on their role in the project. Business managers that are not stakeholders in a project only care about high level updates, project stakeholders are interested in detailed updates and they are the ones providing the requirements for the project. .
It is very important that IT personnel develop professional relationships with members of the business in order to support business related communications. This relates to the first point mentioned above where I mention that IT managers need to have well developed interpersonal skills. For more information on relationship building please visit the article entitled The effective IT manager – the importance of relationship building.
In terms of IT resources, the project manager needs to ensure that the right IT resources with the necessary skills and experiences are allocated to the various projects. He needs to make sure that resources allocation is based on the requirements of each project. If your project requires a lot of complex T-SQL, the manager needs to allocate a developer that has enough knowledge and experience in that area in order to maximise the chances of delivering a successful project.
Software architecture – maximising the use of IT assets
When working on software development projects, it is important to maximise the use of previous development investments by reutilising your IT assets. An IT asset may be a web service, a stored procedure or any architectural building block of an application. Development managers need to be
managing their team in way that a valuable library of development assets is built and they need to ensure that those assets are reutilised whenever there is an opportunity to do so.
Te list above is not exhaustive and barely scratches the surface on challenges related to software development. Many of my readers will be able to add many more challenges. I guess that is what makes software development interesting, solving those challenges and enabling organisations to achieve competitive advantage through the effective and efficient use of technology.