How to Effectively Hire and Manage a Virtual Team of Software DevelopersAre you planning on managing a team of virtual software developers, or are you already managing ateam of virtual developers? I ask because if you are already managing a virtual workforce, then you’vehoned in on a key competitive advantage. In my 15+ years of creating software in various roles fromdeveloper to VP to business owner, I have always sought better, faster and more efficient ways todevelop quality applications. Today, you have a whopping competitive advantage right in front of yourface: the ability to find and hire talent from around the world, and with incredible ease.There are two key advantages to working with a virtual workforce. First and foremost, you remove theshackles of geo-location restraints. Instead of confining your search for that perfect PHP or .NETdeveloper within 50 radius miles of your office, you open your search to an entire planet. Softwaredevelopment is a discipline of many, many specialties. Often, your project requires a good half-dozenspecialized skills, like database, user design, SaaS, etc. Opening your search to the whole worldincreases your odds of finding the right talent, and very often talent with multiple skills that match yourneeds perfectly.That brings us to the second advantage of working with a virtual workforce: cost. Chances are very goodthat the talent you source will be located in a country whose cost of living is less than the United States;hence you pay less for equivalent talent. But there‘s more to this story. As you open the geo-boundariesof your search, you increase the odds of finding developers adept in multiple disciplines. That means youmay find a database guru who’s also great at UI design… two for the price of one!Sounds great, huh? So here’s comes the dark cloud. According to a study by the Aberdeen Group, about50% - 90% of all software development projects executed by virtual teams fail. That’s staggering. Thatmeans only 10% - 50% of software development projects executed by virtual teams succeed. Learningand improving from very early failures, my career success rate of starting and delivering software projectsutilizing virtual teams is 95%; way above the mean success rate. It’s the primary reason why my softwaredevelopment services company has grown so rapidly. How do I do it? How do I consistently beat theodds? I beat the odds with a methodical process. That’s what the rest of this paper discusses. And thegood news is, the process can be taught.Finding and Hiring your Virtual DevelopersSo where do you find these virtual developers? There are online marketplaces that match talent withprojects, usually posted by entrepreneurs and small to medium sized businesses.. The 2 largest areElance, with over 2,000,000 freelancers, and oDesk. There are many more as the market for virtual talentis growing exponentially (hey, it’s a competitive advantage!). This site lists the top 50 to choose from:http://jobmob.co.il/blog/freelance-marketplaces. I personally have had some great experiences with bothElance and oDesk. The key is in knowing how to post your project and how to hire the talent.When posting a project on a freelance market site, many posters focus on the features they want and theprogramming language required. While these are certainly important attributes of a project to address,they miss the target of what the project is all about, namely the goals of the project. For example, let meshare a real-world project that my services company developed for a client. The posting read, in short andparaphrased, “Developer wanted to create an iOS iPhone app and Java Android app that can send SMSmessages”. Well on the surface, I could certainly provide this type of app for the client. But when we dugdeeper, we discovered the client was looking for a messaging system for taxi drivers. So werecommended a server based solution and an implementation platform that shaved about 6 weeks off theestimated time of their project and saved them and nearly $30k. The lesson here is to communicate thegoals of your project versus the features you want.
Once you find developers that really understand what you want to build, give them a test. I’m not talkingabout some run-of-the mill multiple-choice test; I’m talking about a real-world programming assignment. Itypically create tests that closely match the project. The tests I create are open-ended programmingassignments. This allows me to evaluate a few criteria at once. First, what kind of ambition does thedeveloper have? How much time and effort did they apply towards the test? Some developers will refuseto even take a test. Second, how well do they communicate with you? Do they ask questions or do theyfill in the blanks on their own? There are pros and cons to both, of course. Finally, can they code? Arethey a good programmer or just a hacker?The art of posting a project and interviewing a developer takes time. This is an extremely important step.Do not assume developers are commodities. These are the people who will build your dream so choosewisely. I suggest hiring a consultant to assist the first few times, until you are comfortable with theprocess.Planning your ProjectWould you build a house without a blueprint? Would you drive around in a new town without a map? Icertainly hope you answered ‘no’ to both. Yet, so many entrepreneurs and developers code without aplan. “We wing it”, “We’re lean”, “It just writes itself”, and the list of excuses go on and on. Budgetoverrun, buggy code and worst of all, an app that does not meet business goals, are the usualconsequences for not planning. But in my 15+ years of doing this, I can tell you that a good plan isessential.(Quick tangent: You’re plan will change. Your plan will probably change a lot from the first revision. This iscalled a “pivot” in software development terms. It’s a perfectly natural course of development that leads toultimate success. But you cannot pivot to success if you do not already have a clear idea of where youare going.)Planning starts with you, and then passes to the developers. The first step is to visually and textuallydescribe your app in detail. The best way to visually describe your app is to create “wire-frames”. Wire-frames are a sketched version of each screen in your app and how each screen connects to otherscreens. It is the user experience (UX) and workflow of your app. For example, a wire-frame for a loginscreen may show the text fields where a user enters their username and password, as well as a loginbutton. There are many great tools to create wire-frames. Two really good ones arehttp://www.balsamiq.com/ and https://moqups.com/#!/.The best way to textually describe your product is with “use cases”. Use cases are plain text thataccompanies wire-frames. They describe what each control, button, link, combo-box, etc. do on a screen.Use cases describe the permutations a user can experience when interacting with a screen. For example,referring to the login wireframe, a use case may describe what happens when a user presses ‘login’. Forinstance, what screen is the user taken to next when he presses ‘login’? Or what happens when a userenters an invalid username or password. The various user experiences are described in use cases.(On a side note, it’s a good idea to run your wire-frames and use cases by a few third party eyes. If itmakes sense to them, you’re on the right track. If they have constructive feedback, that’s even better!)Now that the wire-frames and use cases are ready, it’s time to plan the project. This is typically performedby a minimum of a senior level developer, and optimally with a project manager to help with scoping.Project planning is a process of slicing the project in segments, or “sprints” as they are sometimesreferred to in software development. A project is comprised of several sprints, and each sprint is
comprised of granular tasks assigned to various members of the team. For example, Sprint One may bethe Database Sprint, which has 10 tasks assigned to several developers that will build the database.A typical sprint will run anywhere from 1-3 weeks. Properly planning the correct number of sprints in aproject and in the correct order will lay the entire foundation of the project’s execution and delivery. It’svital that you ensure that the necessary time is spent on this phase, which usually runs about 1-2 weeks,depending on the size of your project. It is time very well spent, and I personally would never do a projectwithout this phase. With the sprints in place, you now have a timeline for your project. The tasks assignedensure everyone knows their marching order. This creates a sense of accountability within the team toperform to the mandate laid out in the sprints. Now it’s time to execute.Building your DreamManaging a virtual team of developers is an art built upon a process. The art form is something you willenhance and perfect over time based on your own management style and flair. Naturally, I cannot teachthe art of management, that’s your own unique approach, but I can teach a proven process to managevirtual developers. This is a process that I have perfected over many years of successfully managingvirtual employees from the United States, Latin America, India, the Middle East and the Ukraine. It’s aprocess that, if followed with strict adherence, will greatly improved your chances of success whenmanaging a team of virtual employees, whether they are developers, testers, or any other discipline.First, start each day with a 15-minute meeting. In the software development world, these meetings arecalled “daily scrums” or “stand-ups”. The purpose of these meetings is communication and accountability.Each person in the scrum quickly states what they accomplished yesterday, what their goals are for theday, and cite any impediments to their goals. These daily scrums should run 15 minutes. It is an overviewmeeting to get the entire team synched for the day. Any sideline conversations should be conducted afterthe daily scrum with the interested parties. Keep the daily scrum short and focused.Who should attend the daily scrum? Most development teams confine the daily scrums to key developers.I, on the other hand, involve the entire team. I involve developers as well as testers, designers and projectmanagers. My rationale is that if everyone in the team knows what everyone else is working on, then atrue synergetic atmosphere is built. If QA knows what’s coming down the pike from a developer, they canbe better prepared. If a designer listens in on a new feature discussion, they may lend valuable UX insightearly on in the development process. In my experience, the quality of a product is directly related to themore involved and intertwined the various members of a team are.Now that the team is synched and producing, it’s important that the team continues communicatingthroughout the day. If the team were all sitting together in a brick and mortar office, this would naturallyhappen as the project manager makes her rounds, or the developers chat by the water cooler, at lunch orelsewhere. But this is less natural for a virtual team so a process is needed. I have found that regularstatus updates facilitate communication thought out the day. A status update is an email sent to the entireteam that states a few key attributes to the team: 1. What are you working on now? 2. What is your progress? 3. Are there any issues?These status update emails should be sent 3-5 times per day, or as tasks, progress or statuses change.They should also include availability. In other words, team members must inform other team memberswhat time they will be online until, or what time they will be returning back to work.
A steady stream of status updates keeps the team talking in a manner that simulates the officeexperience. It takes a bit of getting used to, but once employed as a habit, communication andcollaboration skyrocket as the team members become accountable to each other. Now to wrap the workday up.A daily reflection on the day’s activities and a mental preparedness for the next day is a practice Ipersonally employ to stay sharp. Once again, this happens almost automatically in the office asdevelopers wrap up their day and cite to their manager and each other what they’ll be working on the nextday. It’s not so natural in the world of virtual employees so once again a process is employed. A dailyprogress report sent from each team member to his or her immediate supervisor sets the stage for aproductive next day. The daily progress report should be a simple form, which answers 3 questions: 1. What did I accomplish today? 2. What I will accomplish tomorrow. 3. Any impediments to my goals.Similar to the morning scrum, this daily progress report is a tight and efficient way to wrap up a day’swork. Team members can mentally prepare their next day’s activities, as well as team leads, superiorsand managers. The daily progress report may be the single most important way to create a synergy ofcommunication and accountability.The trinity of (1) the daily morning scrums, (2) 3-5x status updates throughout the day, and (3) the dailyprogress reports at the end of a work day form the foundation for a process of communication that willyield amazing results. As you can see, it forms a sense of group accountability, where the team is allworking together synergistically. Your own personal flair will shape the process, but the basics shouldremain intact.The benefits of employing a virtual team provide a necessary competitive advantage in today’s world ofsoftware development. It enables you to find the perfect talent at the perfect price. But managing a virtualteam is a process different than managing an onsite team. Managed properly with a proven process thatproduces positive results will reap the rewards of a virtual team. Take the care to find and hire the righttalent. Expend the time and effort to plan your project. Exercise the diligence to see the trinity ofprocesses of virtual team management is followed each day. These are your keys to successfullymanage a virtual team and unlock their potential.Questions or comments? Visit our website at http://www.spotlightppm.com and contact us.