Two years ago a client came to our agency asking to build an iOS messaging app.
It sounded like an interesting project, but the deadline was more than tight. While most sane companies would probably say a polite, but firm “no”, we at Alty decided to accept the challenge.
A challenged that resulted into 5 months of crazy hustle, a complete change in our communication framework, one very bold business decision and a closed investment round of $6.3 million for the said app. (As the NDA is still in place, we can’t disclose the name at this point).
When a Startup is On Mission To Beat The Clock
Hiring new staff or an outsourcing partner immediately is either impossible or will cost you a not-so-tiny fortune in the United States – that’s a no-brainer.
Our client was really lacking time and needed to start the project like last week. As our agency is based in Ukraine – a hub now boasting over 90.000 developers and a steady 20% annual growth in manpower, getting the right candidates on board for a rapid start wasn’t as difficult.
What also played to our advantage, is that we always keep some extra hands within the company to jumpstart an unplanned new project immediately.
Once we gave a pre-estimate quote and mentioned that we are ready to get things cracking immediately – the client signed up the contract and things started to get hot.
Overcoming The Common Communication Challenges Within A Distributed Team
We were assigned with the UX and front-development part, while the client’s onshore team did backend development. Keeping backend development in-house was an important requirement for raising investment as it was deemed as the core technology.
As the first stage of the project had begun, we immediately encountered a few major bumps in our collaboration and communication framework, which are rather common among the distributed teams. Here are a few tips to overcome those:
Lack of Proper Requirements and Project Specifications
In an ideal world, you receive a well-written documentation explaining each and every product feature, along with the general user-flow and other details on the functions.
Yet, that wasn’t our case. We had just some basic insights spoken out by the client.
What We Did
Instead of wasting the precious time on composing detailed tech specifications, we’ve set a series of Skype conferences, where our designers posed a series of probing questions to develop the full idea of the app’s functionality on the fly.
Time Zone Differences and Hiccups in Communication
Having an 8-hour time difference obviously creates some communicational challenges, as our designers often could not get immediate replies and clarification on urgent points.
What We Did
We’ve mutually decided to shift the working hours for the UX team to 12 a.m. till 8-9 pm. As a result, we got 2-4 overlapping hours per day when both parties were online to address urgent queries.
Building an Efficient Communication Funnel
Without an established communication framework your project is doomed. You’ll find yourself building unnecessary or wrong features based on the initial scares specifications or miscommunication in general.
What We Did
We broke the initial task of creating the app’s UX into more bite-sized to-do’s and scheduled regular video conferencing (each 2-3 days) to report to the client. Based on the feedback we’ve gotten, we could immediately make changes on the past features and simultaneously develop new ones.
At the same time, we didn’t want the design team to get buried in conversations. The time zone differences played to our advantage in this case as our pros could let the creative juices flow and get things done fast without any side interruptions while the client was still snoozing.
The golden rule here is – everyone should be able to express ideas and suggestions during the specifically allocated hours. Other than that – it’s pure work time.
Organizing The App Development Workflow
When time doesn’t wait, most teams prefer to stash their to-do lists with ongoing chores and cross off the tasks one after another. Yet, that’s definitely not the wisest approach as it often results into project bottlenecks: when someone’s waiting for a confirmation from the client and can’t move forward without it.
What we did
We scheduled all the ongoing tasks at least one week in advance to avoid any roadblocks. This way we managed to keep continuous development and a designer could switch to another task instead of getting caught up. As well, this approach gives a better overall project overview to the client as they can quickly review which tasks are completed and which ones are due soon.
We’ve also discovered that scheduling tasks well in advance actually saves you heaps of productive time, compared to when each task is discussed on spot.
Optimizing The Communication Channels
Obviously, you’ll have a lot of information to manage and keep on a hotkey access. While emails are still the most common communication channel, it’s definitely not the most convenient one. Letters get lost, your inbox gets cluttered, and retrieving information takes lots of time.
What we did
Our top choice is Basecamp. It’s perfect for keeping all the project messaging in one place, assign tasks with deadlines, create dedicated project threads and to-do lists within etc. All the project data is kept in one place, has a clear structure, can be easily searched and accessed by everyone on board.
For sharing and managing interactive prototypes we typically use Mockup.io (or a similar solution that is more preferable for the client). We love this tool as you can send out an app with static information, which you can share and present even via your smartphone.
The Biggest Challenge Distributed Teams Face
Miscommunication Between The Teams
While we were dealing with the front-end part, the client’s team was all into backend development. Yet, as it often happens, the cross-team communication was far from being ideal in this case. Backend folks did not consult with our team and opted for open source to build the app’s architecture and save some time.
As our team has requested API data and started test-driving it, we’ve discovered a huge nest of problems. Mainly those were with the queries, which the client’s part had to send to the server to retrieve data. After requesting additional documentation we’ve gotten a scarce Google doc file with less than half of the queries and a majority of outdated ones.
To avoid similar scenarios we prefer to use Swagger. The tool is perfect for storing all the documentation and instantly testing all the queries with a real database.
The clock was ticking.
After working in the common: “Found a problem – sent an email- spent the day waiting for reply – got “no time to fix” or “wrong issue” reply” pattern for some days, our team was losing the spirits and we’ve started to realize we’ll not gonna make it till the deadline in such slow motion tempo.
We’ve decided to go extreme.
Part of our team was dispatched to the client’s side (keeping the risks of poaching staff in mind). We signed a no-hiring agreement, bought the tickets, sorted out the visa paperwork and in two weeks the two best iOS developers and one QA were working in the Silicon Valley.
This brazen move allowed us to finish the application’s key part and build better relationships between the two teams (which had a positive long-term productivity effect after our folks were back to the office).
The Final Pre-Release Hustle
The release date was hitting close.
We still had plenty on our plate and the electrified tension never really left our office. Yet, it wasn’t time to lose neither the grip, nor the work tempo.
Once you stop controlling the processes (as everything’s already crystal clear and talked over a thousand times) and managing other chores, things will go AWOL right before the release date.
You don’t want that, do you?
Hence, the best option here is to stage demos after each completed sprint and present your work during this timeframe to the client. Here’s why:
- You gain valuable feedback and can deploy immediate changes.
- Your team feels praised and accomplished by the work done and gets a tiny spirits reboot thought the project is still far from the end.
- Your client gains more control and no time is wasted in vain on any wrongdoings.
In the meantime, the client got an update from the potential investors. They promised to commit to investing if the first product release was rolled out in mid-September, exactly when Apple presents their new products.
This announcement served as a great motivator to our team, though if being 100% honest my first thought was: “This is pure madness. We are not gonna make it.”
At this point, I had to put on my big boy’s pants and through all the spirits into optimizing and forecasting the release date.
At Alty we always track and analyze our work speed using Atlassian JIRA. It’s ideal for the team to monitor tasks, create bug reports and track time. The PM can track the progress, create graphics and forecasts and share those with the client accordingly.
Ideally, you need to put aside two weeks prior to the release for testing and troubleshooting.
Obviously, we did not have that time. It was one week prior to the set release date and we were still cracking the key features. Two days before the deadline and we’ve finished all the planned functionality. While the majority of features worked perfect, we still discovered a few flaws that should have been fixed before rolling out the release.
It was yet decided not to postpone the release date.
From the businesses perspective it’s more important to roll out even a bugged release on time, rather than not doing anything at all. Especially, considering the investment and all the marketing at stake.
Fingers crossed, we uploaded the app to App Store and waited for the verdict.
Some weeks later the client send us over a link to the latest press release. This app just raised $6.3 million in the first seed investment round.
Our whole team was so happy as if someone gave us that money!
What you can learn from our experience in being part of a distributed team on a nerve-wrenching deadline:
- Efficient communication blueprint is key. Create the routine, which works for both parties and stick to it. Schedule regular sync calls, adjust working schedules for more overlapping hours and keep time gaps for work and nothing else to stay on top of your productivity game.
- Plan your tasks ahead to avoid project bottlenecks and blocked tasks. Basecamp and JIRA are two great tools to keep everyone organized even if you are a small team/agency.
- Schedule weekly product demos to avoid wasting time on unnecessary functions and any other mishaps. This way you can sustain continuous project development – fix and add new features simultaneously.
- Get everyone in one office if things get hot and you need immediate replies and instant feedback. Take the risks when needed if you feel like it can move your project forward!
This post is part of our contributor series. It is written and published independently of TNW.