Hire the Author: Nutan B
Managing a software development team in a remote startup can be challenging, but it’s not impossible. Effective remote software development strategies can help you manage your team, boost productivity, and grow your startup.
It’s no surprise that many companies have switched to remote work after the impact of Covid 19. But in the software industry, the remote culture existed even before the pandemic. Enterprises in G7 countries such as the United States, Canada, France, Germany, Italy, Japan, and the United Kingdom hire overseas software developers for remote management. This article outlines the management strategies for remote software development teams for your startup in a more efficient manner.
When managing a dedicated software development team in a remote startup, you may want to rethink your management approach. In this article, we have outlined the process of managing your remote teams for your startup in a more efficient manner.
Table of Contents
- Respect timezone diversity of your remote teams
- Choose sync vs. async wisely
- Plan and assign work based on time zones
- Monitor your remote team’s work on a daily basis
- Mix fixed price vs. hourly carefully
- Make a prioritized list of issues to resolve
- Hire remote team to find the right people
- Define roles and responsibilities
- Understand project management vs. product management
- Follow a process for hiring remote developers
- Organize the collaboration
- Use the right project management tools
- Streamline your technical processes with DevOps/CI
- Schedule meetings with your remote software development team
- Develop a personal connection with remote team members
- Meet your remote team in person
- Reward your team and give feedback
- Maintain transparency with your remote team
- Trust your employees
- Build team spirit
1. Respect timezone diversity of your remote teams
Working in different time zones can be difficult. Some of the key challenges you face include a lack of face-to-face communication and collaboration at unexpected times. Additionally, there is a lack of team cohesion due to no face-to-face meetings or interactions. We have some mindful ways to deal with time zone differences.
When working with a software development team in a remote setup across different time zones, always be respectful. You should not force anyone to follow a certain way of thinking while working. Employees are assets to your company, and micromanagement can affect their productivity. Hence, it’s important to maintain a healthy work-life balance with your remote team.
2. Choose sync vs. async wisely
When communicating with your software development team in a remote startup in a different time zone, you need to understand the difference between synchronous and asynchronous communication. You also need to know when to use each.
- Synchronous Communication is when team members are able to collaborate at the same time and send instant responses. This type of communication can be done over the phone, via video calls, or via instant messaging platforms such as Slack.
- Asynchronous Communication is when the team members are not available at the same time and there is a delay in the responses by hours. In this style of communication, people can respond in their own time. This is usually via email, Slack messages, or voicemail, enabling team members to check at their convenience.
In a remote setting, it is important for you to accommodate asynchronous communication as much as possible. Even if your team is located in different geographical locations, an efficient async communication can really help you grow.
3. Plan and assign work based on time zones
When it comes to remote software development, you will have a team of developers, testers, and QA (quality assurance) engineers. While some developers focus on the front end, others specialize in the back end or APIs.
If your team is in a time zone that is ahead of you, you can still review their work and offer feedback before the day is done. Otherwise, if you’re ahead of their time zone, you can prepare them for the next day’s assignment. This is one of the benefits of being in a different time zone.
Given the time difference, there is no time for everyone to be at work at the same time. Hence, daily written reports come into the picture. You can add the list of tasks the developers need to complete on a daily, weekly, and monthly basis to a project management tool like Trello. If not, you can use the same worksheet and they can fill in completed tasks. Also, it is better to divide the main task into subtasks.
When it comes to remote work, there’s no hard and fast rule about sticking to a 9-5 job. When it comes to remote work, you can allow a flexible schedule instead of sticking to 9-5, as long as your employees complete their work for the day.
Schedule your meeting in such a way that the time zones of all participants overlap. Verify the team’s availability for team meetings or one-on-one sessions.
4. Monitor your remote team’s work on a daily basis
Instead of asking your developers about what’s done and what’s still in progress, you can have them use work sessions. They can also use Trello boards or worksheets to check their progress. When managing a remote software development team, you should focus on long-term goals because they are independent and goal-oriented, and you must manage them accordingly.
You can maintain a list of your developers’ previous deadlines, cross them out as they are missed, and replace them with the new deadline. Doing so can also help them develop more realistic time estimation skills. This is because they will want to keep their word and avoid overcommitting themselves to too many short deadlines. In your meetings, gently cross out the deadline and then set it again with a new deadline in front of them.
Some of the points to remember while monitoring work sessions include:
- When using Trello or any other project management software, it is ideal to divide the primary tasks into subtasks.
- For every few work sessions they add, engineers should provide you with a git commit.
- You should make sure that the engineers keep the repo up to date. Thus, in the event that an engineer needs to be replaced, the new engineer can continue the work of the previous engineer.
- The client may offer the engineers more opportunities if they appear to be proactive and enthusiastic. So, it’s crucial for engineers to be responsive.
- You have to make sure engineers meet deadlines and the project expectations.
- Make sure you are not completely dependent on a single engineer. In trying to stay within your budget, you don’t want to put all your eggs in one basket.
- Make sure the code is well-written, documented, linted, peer-reviewed, tested on development, unit-tested, e2e-tested, and continually integrated.
At LD Talent, our talent use Slack-based half-hour work sessions to showcase specific tasks they’re working on.
Here are some points to consider before approving a Slack-based work meeting:
- When you review the work sessions, set standards for a productive 30-minute work session.
- Carry out these requirements and only approve work sessions if you are satisfied with the results.
- If work is of poor quality, work sessions are rejected, and these standards are enforced.
5. Mix fixed price vs. hourly carefully
Dealing with compensation is another big decision you need to make: whether to pay a fixed price or pay by the hour. Most teams are concerned about this. They find it challenging to deal with a freelancer because it’s hard to predict how many hours programming or fixing bugs will take.
Most clients feel they know how long a project will take and find a fixed price cheaper, but you might face low quality, creativity, and productivity. You can never predict the estimated time for a project because sometimes it can take forever to fix a bug, while other times it only takes a minute.
Since no software project is well-structured, you cannot rely on the idea of a fixed price for software development. This may work for other disciplines, but not for software development. The fixed pricing is typically chosen even before the developer begins working on the project. They find it challenging to make a decision because the project’s scope is unclear. The client may sometimes request modifications and several revisions, which can take more time. As a result, both the client and the freelancer will lose time and money.
Freelancers, on the other hand, prefer hourly billing. They put in a certain amount of working hours and get paid accordingly. However, building high-quality code requires time.
By reading our article “Developer Time Tracking using Slack – beyond Fixed Price vs Hourly” you may gain a better understanding of why hourly billing is preferable to paying a fixed price.
6. Make a prioritized list of issues to resolve
It might be a good idea to add a priority column to the developer’s worksheet. This will help in identifying items as “1” for high importance, “2” for medium level, and “3” for low priority. There may be issues that need to be addressed immediately or ones that can wait. When numbered this way, it is clear to the developer that the exact order is to be followed.
Also, it is always a good idea to have an emergency contact or a communication channel where your team can reach you any time when you are not at your desk.
7. Hire remote team to find the right people
The main benefit of hiring a remote workforce is that it provides companies the freedom to find reliable and qualified candidates anywhere in the world. This is because there are no limitations to location or availability, and you can choose from a larger pool of candidates.
8. Define roles and responsibilities
For every business, the requirements of development can be different. Here are some software development roles you might want to consider when building a software development team in a remote startup.
- Developers are responsible for developing operating systems, network systems, robotic systems, operating systems, mobile applications, computer software, and web applications. The efforts of these people will determine how well your product works. So, it makes sense to hire them. You can choose from the following list of developers and experts based on the needs of your project. Examples:
- QA (Quality Assurance) Engineers are responsible for maintaining the quality of developed products and ensuring that development is completed according to customer specifications.
- Designers make your website look attractive and are responsible for building the user interface (UI) and user experience (UX) of digital products such as websites, mobile applications, etc.
- Product Managers gather ideas for building a product to deliver value based on the market, identifying consumer wants and objectives.
- Project Managers are the people in charge of a project’s requirements, team management, task assignment, team meetings, and timely completion of work according to specifications.
- Marketers are responsible for bringing in new customers, running online marketing campaigns, and promoting the company’s goods and services. To gain more insights on this role, you can read our article on how to hire an SEO expert.
9. Understand project management vs. product management
Project managers and product managers are two distinct roles in a company, though they share similar responsibilities.
A project manager is the one who manages the team and the projects. They are responsible for planning, executing, and completing the projects. Their main goal is to deliver the project on time, within the budget, and make sure its quality is as per the customer’s requirements. Project managers focus on what is happening in the project day-to-day.
On the other hand, a product manager is responsible for the strategy, development, delivery, and success of a product. They identify market needs, define the product vision, create the product roadmap. Also, they define product features and functionality, and ensure they meet all product requirements. Product managers focus on the long-term success of the product.
While both roles involve managing a team and ensuring the success of a project or product, project managers are more focused on the execution and delivery of a specific project, while product managers are more focused on the overall strategy and success of a product or product line.
10. Follow a process for hiring remote developers
Hiring a software development team in a remote startup can be tricky as it involves creating a job post, screening and interviewing numerous candidates, and eventually bringing them onboard to test their skills. Here are some resources that may help:
- Suggested Interview Questions for Tech Talent
- How to Interview Developers Regardless of Whether You are Technical
- Recruiting and Hiring from 100+ Remote Startup Mantras
- Steps for Hiring SEO Talent
For example, here is how you hire on LD Talent.
On LD, you can find diverse and vetted developers, data scientists, and designers from around the world for contract or full-time roles. To convince our clients of the strengths of our talent, we offer a 5-hour free trial (technically, it’s $100 of free credit). Talent are paid, but LD covers the cost of the first few hours.
On LD, clients can search for talent based on their rate, skills, experience, and location. Once they find the right talent, they can sign up and send them an invitation. When the invitation is accepted, the client and the talent will be introduced to each other on LD Slack. They can then discuss and set up an interview based on their availability. The interview is a time to not only ask technical questions, but also gauge cultural fit and get granular project estimates (example 1, example 2).
11. Organize the collaboration
Remote work is becoming increasingly popular these days, and many businesses are hiring remote teams. Studies have shown that remote workers tend to be more productive than on-site workers. Freedom to work from home (often with family) and set their own schedule keeps them happier. Improved productivity is also facilitated by better sync/async communication technology (i.e. Slack, Zoom, Github), but also by productivity tools (i.e. meditations apps, focus-related chrome extensions, white/brown noise rain, noise cancelling headphones, and even mental health pomodoro timers like Jeho is building at LD Ventures).
Once you’ve made the decision to go remote, it can be challenging to navigate the organizational hurdles that come with leading a team of remote workers from around the globe. Every remote business requires a specific set of collaboration tools to effectively manage a remote workforce. These tools include email services, file sharing platforms, instant messaging software, and video conferencing solutions. Hence you need to choose wisely:
12. Use the right project management tools
- Slack is one of the best communication tools for corporate use. It goes beyond just instant messaging by offering features such as file attachments, integration with Google Suite, Jira, and other tools, and the ability to create private rooms. At LD Talent, we use a Slack-based time tracking system for developers. With this system, engineers can track 30-minute work sessions, but funds are only released when clients or engineering managers approve them. Before approving work sessions, managers should review related git commits or visual application updates to ensure that the work has been done satisfactorily. Engineers can communicate what they worked on and justify their time using this technique. This not only allows for accurate time tracking, but also ensures that management is satisfied, as they only pay for work that meets their expectations.
- Jira is another excellent platform for time tracking. Software developers use this tool to track the time they spend in resolving software issues, whereas project managers use this tool for project planning and managing their remote development team.
- Trello is a progress tracking platform where you can add tasks to the board, assign tasks to specific team members, and create lists like “To Do,” “Work In Progress,” “Done,” “In Review,” “Completed,” and “Think About It Later.” It’s a great tool to keep your development team motivated and also helps in planning and distributing tasks.
- Zoom is a video conferencing platform that enables you to organize and record webinars (see here for our first webinar), video chat, connect with team members, join meetings, screen share, and make screencast recordings. This platform is particularly suitable for large organizations and can accommodate up to 10,000 participants, making it an ideal choice for events with numerous attendees.
- Google Meet is another video conferencing platform for quick and immediate video calls or online meetings as most people use gmail accounts and it becomes easier to connect on this platform.
- Google Drive is a great storage platform where you can share files like sheets and docs with your team. It allows you to create multiple folders to store documents, images, audios, videos, and other useful content. When you share these files with someone, you can choose the level of access you want to give them, such as who can view, comment, or edit the files.
- Box is another cloud-based platform for storing large files, content management, collaboration, and file sharing tools for businesses. This is a safe tool to store important documents as the files are encrypted, so you can share, access, and manage your content with confidence. It allows you to create multiple folders to store documents, images, audios, videos, and other useful content. When you share these files with someone, you can choose the rights you want to give them, like who can view, comment, or edit them.
- Google Analytics and Google Search Console (formerly known as Webmaster Tools) – are powerful tools that can help you analyze how users interact with your website, provide information about web traffic performance, identify and fix issues, and optimize your site’s appearance in Google Search results.
- GitHub Github is a web-based platform that uses Git for version control and provides hosting for software development projects. It is widely used by developers to share code, collaborate on projects, and track changes to code. Github also offers features such as issue tracking, code review, and continuous integration to improve the software development process.
- Dashlane is a password manager application and a perfect place to store all your important passwords. It is secure and difficult to hack. It fills in all your passwords, payments, and personal details wherever you need them, across the web, on any device. It’s the app that makes the internet easier. You can store an unlimited number of passwords and access them anywhere.
13. Streamline your technical processes with DevOps/CI
- Take a moment to calmly review everything you have done, run through a few scenarios, and make sure it makes sense before sending important messages or pushing code. Don’t rush, as you’ll only end up paying for it later when you have to correct mistakes.
- Check out this guide to engineering management, which covers DevOps, Continuous Integration, linters, unit tests, end-to-end tests, package management, logging, a dev testing environment, a protected prod server, and organized peer code reviews on GitHub.
- Specifically, we recommend all IT teams keep a GitHub wiki for organized peer code reviews. Heuristic questions, best practices, and guidelines should be included on the wiki for code reviews.
- We recommend blocking pushes into master until at least three team members approve a pull request (PR). During the peer review phase, we recommend that the three team members go through the project’s “wiki rules” and make sure the pull request’s diffs respect them. Code, unit tests, end-to-end tests, linters, and static analysis scripts will then run before code is merged into dev or prod.
- When approving code from a development environment to production, your distributed team will need to do the following at minimum:
- Manually test features (that were pushed after the commit currently deployed to prod) on dev server if possible.
- Manually click into all tables on database admin to make sure there are no migration errors.
- If it’s a major deploy affecting many cron jobs, you may want to do the following:
- comment out all the crons (or the risky ones)
- go through each cron one by one and uncomment it if it’s trivial
- or run it once in the shell if it’s not (control C if something’s going wrong) before uncommenting
- All your crons are now are tested on development and uncommented.
- Test Driven Development: when you assign work, you need to assign/tell developers to write corresponding end-to-end tests for views and unit tests for crons.
- Even if you are making an exception, you need to explicitly note the exception in the test file.
- No piggybacking in pull requests.
- By this, we mean that you should have one pull request per new feature.
- Do not piggyback some quick but unrelated fix into an existing pull request — create a new pull request for this.
- As a team reject such piggybacked PRs .
- Overconfidence, unilateralism, sloppiness, and arrogance to not ask others questions, for help, or for a peer review of important things like critical code and work assignment is not acceptable.
- Only do or assign work once you’ve understood it.
- Nobody at your remote startup can be responsible for monitoring you – you have to ask others.
- Never touch a database migrations folder! Let it be autogenerated.
- Leverage effective tools for coordinating code version control, continuous integration, and deployment. For instance we use:
- Github for source control
- AWS Code Pipeline for continuous integration
- AWS Elastic Beanstalk for hosting
- and we acknowledge that some of our advice here might be biased by our development environment
- Check if packages or APIs you’re using need to be upgraded.
- Monthly, you should make sure that your server and database instances are getting backed up. You should make sure that autoscaling of your servers is configured correctly.
14. Schedule meetings with your remote software development team
When you are in a remote setup, your software development team is working from a different location, and probably from a different time zone, so it is important to have scheduled 1on1 and team meetings. This will help you stay organized and up-to-date with your work. Not having scheduled meetings can cause chaos, create confusion due to no communication, and may lead to delays in project launch.
Also, it is good to have face-to-face conversations with your team on a regular basis, as facial expressions convey more than words. When you are talking on a call or text, you cannot analyze the tone of that person. This can actually help you connect and give your conversations a more human touch than just exposure to technical work. Hence it’s good to have scheduled weekly meetings with your team.
15. Develop a personal connection with remote team members
It is crucial to develop a personal connection with all your team members. Being in a remote setup doesn’t mean you always have to communicate work-related matters. Sometimes, it’s nice to know what they are up to, about their hobbies, families and friends, and their lifestyle. You never know you may have something in common. Build an healthy relationship with your colleagues. Having a healthy rapport with your team can boost their performance and motivate them to do better at their jobs. It’s nice to have team-building activities once in a while. Other than that, celebrating a team member’s birthday or a special day by wishing them. This is the way to get to know them and build a cordial relationship.
16. Meet your remote team in person
It’s always good to meet your IT team in person. If possible, once or twice a year, all the teams should get together and discuss what they want to achieve together. You can discuss the questions and concerns related to your project. The point of meeting in person is to get acquainted and see one another as people, not just colleagues. This will lead to better communication moving forward.
17. Reward your team and give feedback
When you start a meeting, always begin with a compliment for a job well done. Tell them what part, in particular, you like about their job and how much you appreciate their help. When they hit a major milestone, reward them with company merchandise like t-shirts, coffee mugs, pens, and more. Sometimes, reward them with cash when they solve a problem that took them hours or days. Additionally, provide constructive feedback to help them grow and improve their performance.
18. Maintain transparency with your remote team
Always be on the same page with your remote team, and ensure that every important decision or conversation is discussed with them. Also, make sure that everyone on the team performs daily check-ins on the platforms you use. In this way, everyone will be aware of what is happening and what everyone is doing.
Moreover, remember that regular video calls are the most effective approach to communicate with your team and encourage collaboration.
Some of the element you can discuss to maintain trust and transparency include:
- How is the project progressing so far
- What part of the project needs improvement
- Whether someone is stuck and needs help with a particular task
- If someone has a personal matter to discuss that is affecting their job
Written communication is a fundamental way to maintain transparency in a distributed engineering team regarding a project. When engineers say they are working on something and it took them many hours, it is just vague.
At LD Talent, our engineers’ 30-minute Slack work sessions give a clear and detailed record of the work done. This method encourages developers to write descriptive work sessions, as they get paid entirely based on their work sessions and associated git commits. This further encourages fanatic transparency. Developers, team leaders, and designers are all on the same page since everyone in Slack is communicating what they are doing.
19. Trust your employees
Whether it’s a remote or in-house team, the secret to effectively managing a team is trust. It is crucial to develop trust in your team by letting them handle projects and responsibilities.
To begin with, you must confirm that they are aware of the company’s objectives, mission, working methods, and company guidelines. Give them some breathing room so they can come up with solutions to your problems, but don’t ignore them entirely or stop keeping an eye on them.
It’s time to stop micromanaging them and encourage creative problem-solving. Instead of following their every move, you should sit down and discuss the problems that you are having and the objectives of your project. Don’t try to force them to do things your way; this will limit their creativity and raise the chances of them getting frustrated with the project as a whole.
Some of the key factors to keep in mind when it comes to trusting your remote team are:
- You hired them because you know they will do a great job.
- They will lose interest and stop being productive if you watch over them all the time.
- They will feel pressured and stressed.
- They’ll eventually give up, and you’ll lose them.
If you micromanage each developer, your team will never be able to grow. By using Slack work sessions, you never have to ask how it’s going or what are you working on. As the team leader or manager, you will continuously receive updates on what is taking time and what is getting done quickly. And you can participate as needed to diagnose problems.
20. Build team spirit
As a manager of a software development team in a remote startup, it can be challenging to maintain team spirit when you haven’t met your employees in person. However, it’s important to remember that your employees are valuable members of your organization. By building trust, being transparent, and fostering healthy relationships, you can promote productivity among your remote team and contribute to the growth of your company.
Remember that your team is more than just a group of individuals working on a project. It’s a cohesive unit striving to achieve a common goal. Therefore, it’s essential to recognize and appreciate the hard work of your team members. Boost their morale by offering words of encouragement and recognizing their accomplishments. By doing so, you can help to maintain a positive and productive work environment for your remote team.