7 ways a manager can increase development team’s efficiency
What actions should a manager take to create an environment where developers can do their job more efficiently? How to increase the value that we are creating for our clients? Those are the questions that frequently strike me as a project manager in a software development company.
I started to analyse and rethink our day-to-day activities trying to highlight management practices that boost our development team’s productivity. At the end of the day I put together the following list of the techniques that, from my perspective, do the magic in the process of project development:
Honestly care and take ownership in everything you do
It is essential to get developers with the right expertise in the project. Just as important is getting dedicated project manager, since s/he is the one who is going to lead and direct the project development process. As we often say in our company: project manager is the glue that brings everything together.
As a manager you should take pride in everything you do: standups with teams, planning sessions, demos with clients, retrospectives etc. Strive for automating and polishing your performance with all responsibilities and chores that you have. If trying hard to organise work process effectively, development team will appreciate it a lot and give 110% that they have.
By doing the best you can, you will inspire and energise the rest of the team to do the same and create a more pleasant environment to work in for everybody.
Include all necessary information: user-stories, screenshots, etc.
All software development companies use some sort of task tracking service — be it JIRA, PivotalTracker, Trello or some other external or internal tool. That’s the major tool utilised by development teams for project management: all tasks aka stories are stored, tracked for progress and assigned to specific developers there. However the major challenge is providing complete documentation and descriptions for each of the tasks. Usual case is very brief and vague description of the requirements. Thus developers get frustrated and even demotivated since further clarifications are required, which means the work won’t progress.
For example, a task titled “implement roles for accessing Admin”, with no supporting information and feature specification, doesn’t explain:
which roles exist,
what functionality is available for each of the user types,
how user interface will change for each of the roles etc.
To avoid cases where delivery has been postponed due to lack of complete documentation, always strive to provide detailed and very specific to the task information:
user stories,
feature specifications,
mock-ups, etc.
By doing so the chance for misunderstandings will decrease significantly. Additionally, the time from request for functionality implementation to feature completion and delivery will be reduced. On top of that, developer working on a feature with full information at hand has everything s/he needs to succeed and can create functionality exactly as envisioned by the product owner.
Therefore setting up clear requirements and deliverables are essential for faster feature implementation as well as better working environment for your team.
Empty pipeline is not a good idea, so are randomly listed tasks in the backlog — always prioritise
Backlog is like an action plan; it contains work scope, as a list of tasks, that is to be delivered by the end of some specific time period. So when a developer finishes his current task, he takes the next one from the top of the backlog list. Therefore ordering the stories in the backlog and revising them every once in a while will ensure:
that all stories in the list are up to date,
there are no duplicates created,
the order of tasks is adjusted according to the priorities most recently set by the client.
On top of that, frequent revision of the backlog can give an idea of whether or not the team is keeping up with the planned velocity. Therefore manager will be able to easily determine whether development is taking too long or on the contrary is more rapid than initially estimated. Then a manager will be able to take a necessary action:
gather the development team to determine and resolve the issues that cause declining velocity,
contact the client (product owner) to propose additions to the backlog list.
For example, the work scope that you have planned for 20 work days (month period) is not even half done when 10 working days have already passed. So you as a manager gather the team to determine difficulties that the team is facing. After the discussion you find out that some features turned out to be more complex for implementation in the legacy code. So the next step would be to reestimate the remaining functionality and transparently communicate the situation to the client.
Thus the development team will always have a clear vision of their target and successively work towards reaching it. In other words, developers will be focusing on coding instead of figuring out details like what should be done next, or are we making it on time or not.
Questions and blockers often appear in the development process, but resolving those as fast as possible is the key
Providing a feature specification that won’t require additional clarifications is quite a rear occasion, since usually questions arise. This is a common situation and handling it fast will increase team’s efficiency: timely asked questions will return answers faster. Thus the following cases will be avoided:
developer has to jump to another story and leave something higher in priority on pause;
in case tasks in the list are dependent on each other, the blocker in one task will create downtime for the entire development.
For example, the team has been informed that #1 priority is “implement roles for accessing Admin” functionality. However it turned out that there are some blanks in the feature specification. So the team pings the manager John for more details. However John doesn’t have the answers, so he has to pass the request further to the product owner.
Let’s pause here for a second and add up to the situation — John is also leading another project where the production unexpectedly went down. So John has to sort out issues in both of his projects.
Having production down is more urgent than contacting the product owner in another project for more information. Thus the first issue occupies John’s mind and while trying to bring production back up, he forgot about the questions for his other team until couple of days later.
Hence the questions haven’t been asked on time, the team went on working on other features and at the end of the day, the answers provided by the client also arrived late. The result of this could be late delivery of the key feature, which caused the client some kind of losses (be it revenue, business related issues, etc). Thereby s/he provided negative feedback, which in turn demotivated the development team.
Thus asking questions on time and resolving blockers not only ensures smooth development process, but also creates a less stressful environment for the team.
Keep everything to the point and invite members who’ll be directly influenced by the outcomes
Developers get quite frustrated when they spend more time talking than coding. Therefore it is a good idea:
to keep a clear agenda for a meeting,
to shorten meetings’ lengths,
to keep everything to the point without trying to cover everything on one gathering.
Preparing an agenda is especially helpful, since everybody can decide which part of the meeting is important to sit on and what can be skipped. This way the members who are directly influenced by the agreements made on the meeting will be present, and the rest of the team can continue working on the project.
For example, your team consists of a back-end developer, an iOS developer and a designer (preparing Android application interface). So standup meeting has started and each of the members is sharing their progress from the previous day, plans for the current day and informing about blockers. During designer’s turn she informs you that she came up with a better UX approach that she would like to use. In this case instead of having the BE and iOS developers present during the conversation that is very specific to the design, better idea would be to postpone the discussion.
As a result, everybody will be occupied with the most relevant activities instead of wasting valuable development time on irrelevant conversations.
Be open to suggestions of the team members and always consider ideas that have been proposed
Always saying yes to everything that the team suggests is one extreme, always saying no — is another. But trying to stay somewhere in between and support initiative will encourage the development team to not only focus on their tasks, but to evaluate requirements. Thus the team might come up with more logical and easier to implement approach to meet the specified need or resolve outlined problem.
For example, development team is working on a big service that during peak hours eats up a lot of server resources and becomes almost completely unresponsive. The client immediately contacts the development team and suggests to break the application on various instances and move them to separate servers. Even though it is a good idea in the long run, it is very time consuming. Thus the team suggests to optimise some of the current processes — which should be a faster solution. Hence, in this case the team managed to find a suitable approach for resolving the problem and the service became responsive again.
As a conclusion to this technique, manager who supports ideas will encourage team members to collaborate more thus better solutions will be discovered which will only benefit all the stakeholders in the project.
Rely on your team’s expertise whenever possible
This last approach is a continuation of the previous one, really. No matter how long a manager is in the industry, usually team members are more qualified in their fields. So asking for opinions of the team members regarding development can provide more up to date and relevant solutions to the client’s requests. On top of that, team members feel valued when their opinions are taken into consideration. Thus again, a more involved working environment is created and team members become more dedicated to deliver greater value.
For example, when working on an iOS application iOS developers can suggest the best approaches to use that became trends or accepted principles in mobile development. Thus the final product will be nicer from UX perspective, easier to use and more stable.
Surely there are more approaches to set up a more productive and motivating environment for the development team. None the less these are the ones that could be incorporated in your management practice right away and the results won’t be long-awaited for. I really hope that you find this post helpful and catch yourself on using some or all of these techniques. Please feel free to post questions or additional thoughts that come to your mind when thinking about manager’s role in creating a friendly and comfortable environment for your development team.
Thank you!












