How to Manage Software Development Team? Methodologies, Practices & Tools
How to manage a remote team so that its effectiveness and performance are satisfactory for the client?
I’ve been in this field for quite a while to say that it may be very tough at times. As a PM in Qubit Labs, I have been tasked with establishing and managing in-house and offshore/nearshore software development teams for several clients and have accumulated vast experience about what works and what doesn’t.
Now I successfully manage two remote teams – one for game dev and another one – for web development.
Here I share some of my best practices and lessons learnt from team building and management of remote staff for advanced performance and avoidance of dreadful, but nevertheless too common, underwater stones.
3 Popular Software Development Methodologies
The way you staff your remote department depends first of all on the software development methodology your company pursues.
Let’s discuss each of them in a bit more detail.
The Agile management ideology is very common in software development today; it is the basis of managing remote teams best practices in many companies.
The cornerstones of Agile include prioritization of the client’s needs, regular and frequent delivery of product results, frequent release of the working product, close collaboration between business and development, communication, project flexibility, simplicity, self-organizing staff, and systematic review and correction of work.
Another way to manage a remote team is SCRUM, a type of Agile methodology.
Companies working with SCRUM have SCRUM-masters and product owners in their teams, and the development process includes mandatory stages of product planning, daily meetings and retrospectives, as well as such artefacts as the product backlog, sprint, and the product increment.
KANBAN is also an Agile methodology; it originated in the 1950s in Japan.
Its name literally means a “signboard,” which is the primary point of the methodology’s implementation.
The main signboard of the project always features its backlog filled with tasks for further execution.
Neighboring columns include completed tasks, tasks in progress, the ones that are ready for testing, undergo testing, and are under the PM’s review.
Each column has a particular coefficient that indicates the maximum number of processes for implementation.
However, it’s vital to keep in mind that KANBAN works well for teams of up to 5 members; complexity of process tracking and evaluation grows with larger numbers of people.
Team Structure Main Software Development Project Roles
One of the secrets to managing remote teams is to distribute roles properly. Based on my experience of work with remote staff, I distinguish five key roles:
This role is strategically important in software development project as it guarantees that the staff understands and adheres to the product vision, all decisions are made on time, and critical feedback from the client arrives on time.
Moreover, this person’s responsibility is to maximize the project’s ROI and manage the product’s backlog.
Project Manager (PM)
The PM communicates with all stakeholders of the project and manages the work done on it. In most cases, PMs perform a variety of functions on the project ranging from staff recruitment to task assignment; they also report progress to the client or the product owner.
The key spheres of PM’s responsibilities include managing the budget and deadlines; additional areas involve managing risks and addressing problems.
Development starts when business needs are broken down in technical processes for their achievement; this is what a technical lead does.
Once the work breakdown structure is produced, the task of technical lead is day-to-day oversight of development work and its reporting to the PM.
Developers use the instructions of their technical lead to perform the development tasks.
They complete assigned tasks, warn the lead and PM about possible troubles and bottlenecks, and report on the progress.
As soon as development is over, testers check the technical product’s compliance with the initially formulated business requirements.
They also verify the product’s quality and detect bugs for troubleshooting before the product’s release.
These roles are hierarchical; the product owner guides the entire process, while the PM is accountable for the project’s progress to the product owner.
The PM in turn oversees the work of the technical lead, developers and testers, while developers are directly accountable to their lead.
Testers report detected bugs to developers.
10 Secrets to Successful Managing of Remote Teams
To understand how to manage a remote team, you need to implement the following secrets I learned during my work for Qubit Labs.
They work in all situations and help achieve outstanding work results.
- Select staff thoroughly Not all people can work on a remote basis.An ability to handle such jobs depends on a set of specific soft skills such as responsibility, advanced and clear written expression, self-organization.Recruiters at Qubit Labs select candidates for their clients’ remote staff based on these soft skills.All teams work from our office, so strictly speaking, it’s not freelance work from one’s home, where one finds it hard to concentrate on the job. Here we have an HR who monitors the staff’s morale.However, even for our remote staff, we select individuals thoroughly by considering multiple layers of their skills and abilities.
- Onboard remote employees I strongly believe that proper remote team management can’t do without the staff’s effective onboarding.A perfect solution is to familiarize the in-house and remote staff on day one of their collaboration on the project so that all of them know their responsibilities and tasks.They should all understand to whom to turn in case they need a vacation or a sick leave, as well as obtain access to all required systems and get their corporate emails for internal communication.It’s also a great idea to create a water cooler chat for communication between the two teams.
- Communicate effectively The most challenging part of working with a remote development team is communication.To be more precise, for most projects, this is the only problem that is uncommon to collocated teams.You are not in personal contact for all the time, and this may get even worse if you are in different time zones.Project management requires lots of communication regarding the details of tasks, and it is very important to be able to get back to any previously described detail.Here is some advice on how to make your communication more efficient:
- Avoid working in email, and transfer all the feature-related conversation directly to task tracking software of your team (for example, TFS, JIRA, Redmine, etc).
- Avoid undocumented management, especially via phone or video chat with someone from the team. You can find a nice list of technology that allow real-time communication here. Chats and apps register every single word written so you won’t waste time on meeting notes.
- Use voice or video calls for meetings with your remote team management and heads. Always do these meetings at exact time so that everyone is fully prepared, and all the questions for the day or week can be managed at one time, again to save time and funds.
- Don’t oversupervise. If you overmanage them, they will get slower and more aimed at making you satisfied instead of providing a better software. Your team should know their KPIs and benchmarks, and you should go more in depth only if there are any real problems with them.
- Arrange working visits
Whenever possible, welcome the remote staff in your office and let it work side by side with the in-house staff for a couple of days.In such a way, you will achieve a greater degree of collaboration and better teambuilding.
- Create team rituals
Work is not only about work; people need socialization and small rituals to feel appreciated and live a full working life.So, I have a strong belief in the need for rituals that work well for remote staff.For instance, it may be a Monday standup with all developers, both in-house and remote, meeting in online space and discussing the project’s progress in an informal, “lean coffee” atmosphere. I also try to foster one-on-one events to avoid overloading the staff with redundant meetings but ensuring a closer personal contact between remote engineers and the client’s in-house developers.
- Set clear requirements
One of my personal best practices for managing remote teams is to set clear tasks without any ambiguity.Voice all your expectations, preferably in writing, so that the team and the project’s execution are controlled without excessive interference.Set up a task manager or at least organize e-mail communication properly and you will avoid much trouble.It also helps you to self-manage by reviewing what you are doing and whether you made yourself clear to all subordinates.
- Give and receive feedback
Everyone needs feedback.It may take the form of weekly meetings at which you discuss the project’s progress or one-on-one meetings (held once a month or even rarer).Keep in mind that when it comes to feedback, it’s critical not only to give it, but to ask the team for their feedback.That’s the golden rule for building trustful relations.
- Automate routine
Automate and simplify all you can.When you select the task manager or any other piece of software, pay attention to how user-friendly it is and how much time it may take to master it.Don’t urge staff to waste too much time on non-core tasks.
- Plan your schedule
If your hiring model is nearshore outsourcing – no problem, your schedules will coincide.But if the teams are separated by far distances, your time zones will differ greatly.Plan the work schedule in such a way that teams overlap for at least a couple of hours.The more time they have to collaborate, the better.Another best practice of managing remote teams is not to appoint meetings for the overtime; it’s ideal if the meetups are convenient for all staff.I also recommend informing all employees in advance so that they have enough time to get ready.
- Avoid the remote team syndrome
A company or a PM, you should never divide teams into insiders and outsiders.Your remote staff are full-fledged members of your company, so distribute resources evenly among them: invite them to meetings, give them a raise, issue bonuses.Never pin dull tasks on remote developers while reserving the fun stuff for the in-house programmers.If you do so, you risk losing staff (turnover drains financial resources) and reputation.
Don’t Go Too Far with Management!
Management is cool, and with business processes getting ever more complex day by day, you can’t do without it.
But it is effective if exercised in moderation; surprisingly, it doesn’t work once you cut too fat.
Developers are people who love to have a certain degree of freedom.
If they have it, they feel your trust and perform much better.
So, what can you do not to piss your developers off and to preserve a loyal, well-functioning team?
First, learn to understand the mindset of remote coders better.
They hate when:
- Requirements and tasks change too often
We all hate uncertainty in work, and programmers are no different.They wish to plan tasks and workload in advance to manage it effectively, while changing tasks and tossed requirements may distract anyone.
- They are provided with crucial data not on time
Imagine a situation: you go to a shop to buy a vacuum cleaner.Your wife asked you to and explained some key features it should possess.You spend two hours in the shop and finally select the one you consider the best.Once you leave the shop, your wife calls you and tells that she remembered the exact model she wanted.Will you be mad?Sure you will!The same happens with programmers who rack their brains on solving some project-related tasks and then the client provides them with details that mean redoing all that stuff.
- They are distracted from work for too frequent meetups
Agile management is effective and progressive; it indeed makes a difference in managing remote teams.Meetups are the cornerstone of effective in-house and outsourced staff management; but be reasonable with scheduling them!If your staff spends a lion share of their working day at the meetings, they will simply have no time to move the project further!
- They are not trusted
It’s again the issue of personal freedom that I touched upon above.People who work under a close gaze of their manager perform worse because they feel nervous and don’t want to take responsibility.Once you let go some control and let people take the initiative, they will reward you with outstanding performance.
- They are micromanaged
Engineers and programmers are a specific people; they need freedom to be creative and resourceful.Don’t breathe down their necks, and they will work much better.
- Their opinion is ignored
Participatory management is king; once you include your staff into the decision-making progress, your gains will be enormous.People appreciate respect to their opinion and once they assume ownership of the project, they start going an extra mile for its success.
- They lack technical resources
Once you hire a team for completion of a specific project, make sure that they possess all resources needed for it.Discovering the lacking software or hardware in the middle of the project is a problem since its purchase may take time.
Tools for Managing Software Development Teams
Successful and smooth performance of your remote team greatly depends on the ways you manage it.
Choosing the right tools for communication and tracking will help you run your team efficiently.
- Emails are good for official requests and important information when you don’t need an instant reply.
- Google Hangouts (send messeges, videos, pics or use voice mail for coummunication);
- Slack (shared space for communication with searchable archive of conversations);
- Workplace (connect whole organization, create group chats and live videos).
- Skype (the most reliable video chatting tool for any platform);
- FaceTime (simple and free app for Mac users).
2) Workflow Tools
Screen capture tools:
- Snagit (captures a full screen or a part of it);
- Skitch (capture screen and add notes, commentaries and sketches).
- Google Docs (allows real-time collaboration for creating documents, spreadsheets and presentations);
- EtherPad (tool for working with plain text documents that saves and restores revisions);
- Zoho (create spreadsheets, documents and databases for a single person or a group of people).
- nTask (free Agile project management software to track projects, tasks, meetings, timesheets, bugs/issues and project risks);
- TrackingTime (user-friendly app for all platforms);
- Harvest (compatible with the majority of project managment tools);
- Scoro (time tracking and time billing).
So, let’s sum up, management of an outsourced software development team is quite easy, especially if you have experience in managing your own business teams.
The most problematic parts in such collaboration are distance, lack of personal contact, possible cultural or social differences, although all of these are quite easy to overcome. Check more tips here, if your company is a startup.
But any problem like this will be definitely outshone by privileges of working with an experienced software development team: if managed correctly, you will end up with lots of funds saved, with a much better final product in much less time.
Instead of constant usual problems of having an own team, you just need to get people to know your goals and support them in their work to achieve trouble-free success.
If you don’t want to learn how to avoid problems in outsourced web, software and mobile development, choose Qubit Labs. Feel free to contact us and ask questions about dedicated developers and managing remote teams.