Showing posts with label agile. Show all posts
Showing posts with label agile. Show all posts

Friday, March 7, 2014

What You (Non-Tech Founder) Need To Know About Outsourcing - Part 1: Selecting Your Outsourcing Partner


Not so long ago, being a startup founder meant being a tech guy. Alternatively, you're the business guy who had to recruit the tech co-founder to get your product built. These days, building a mobile app is no longer impossible without a tech co-founder. And even for the tech co-founder, you can easily widen your technical muscle (say you're a backend guy and need an iOS developer) without having to give away equity. But anyone who's ever outsourced will tell you it's not that easy. 

We built Melltoo, social classifieds marketplace, a mobile app for iOS and Android, by outsourcing. We hired a freelance UI/UX designer from Ukraine and had the coding done in India. We built a great product (download it to believe it!), but it was neither easy nor quick. Here are some tips based on our experience to help you select your outsourcing partner successfully. 

1. Know what you want
First and foremost, you must know your product. What is the product you are building? What are the features that need to be built? How much time do you have? How much money can you spend? Who is your target audience (affects the UI/UX)? What is the brand identity (again, UI/UX)? 

Next, you must know your own work ethic and the expectations you have of your outsourcing team. For instance, entrepreneurs like us tend to work around the clock. We send messages to our UI/UX guy and our coders at all times of the day, night, and weekend. Our Ukrainian designer does not reply outside of work hours, but our Indian coders quite often do. If you are someone who needs immediate answers, then you should look hire people that don't mind providing them immediately. 

2. Understand the development process
You are not a tech guy, but you should still do your best to understand how tech products are built. For instance, read up on agile development or the difference between PHP SQL v ASP.net. The aim is not to learn how to do what your tech team is doing; rather, it is to familiarize yourself with the processes. In this way, you will not frustrate yourself or your tech team with unrealistic expectations. These days, agile development is the preferred approach to development. What this means is that your team will be focusing on general functionality before details; so if you keep nitpicking the details because you don't understand agile, then you will end up driving yourself and them nuts. 

3. Do your research on outsourcing
If you google mobile app development, you will get about 800 million hits. Not very helpful. First, narrow it down by country. Which country you develop in depends on a number of things: your budget, your language proficiency, your work ethic, distance, time difference, the type of app you are building. We started by looking at Romania first. Romanians produce excellent work and are known to be professionals; as a result, they are a popular outsourcing destination, which means higher prices and lower availability. We then moved to Ukraine. Again, Ukrainians are known to be professionals and design-oriented. Their prices are moderately lower than Romanians but availability remains an issue and we were told our app would take 6-8 months to build, at least. Next, we looked at India. Costs are low and availability is high but a couple of bad eggs have made it such that outsourcing in India has a bad name on the Internet. However, in talking to a number of Indian friends (thanks Suhel Khan!) in the tech industry, we were reassured that outsourcing with Indian companies was the way to go.

4. Take your time in selecting your outsourcing team
Selecting your outsourcing team is second in importance only to selecting a tech co-founder. Your outsourcing team can make or break you. They can help you launch your app in 3 months or they can cause you to give up on your business after 6 months of bad development. The only thing that differentiates them from a tech co-founder is that you don't have to buy them out if things don't work out. 

Once we decided on India, the next step was to narrow it down. Through sourcingline.com, we identified five companies in India that we wanted to work with. We read everything we could about them, both good and bad reviews. We spoke to their sales people, got a ballpark quote, asked for references of previous clients and called those clients. We pored over their portfolios and looked at every app they built that was remotely similar to ours. We identified the technical strengths and weaknesses of each company and took detailed notes of everything.  

Then, we narrowed it down to two companies. At this point, we signed a non-disclosure agreement and provided them with a detailed description of the app and its features. We also did a mock-up of the app that highlighted some of the main features and went over it with each company using teamviewer.com. At this point, we requested a final quote and a sample logo design in order to help us make the final decision. This process took a month and a half. All throughout, we were communicating with the companies and asking them every question that popped into our heads. Not only was this process useful in helping us select who we wanted to work with, it was beneficial in getting technical input for product development purposes. It also led us to select a freelancer for our UI/UX design, but that's a different blog post. 

And by the way, do not be shy to negotiate. It never hurts to ask, the worst they can do is say no. Sometimes, a company is willing to accept a lower bid if they believe in the project and/or if they don't have any other projects going on at the time and need something to keep their people busy. 

5. Communicate well right from the beginning
Even before you engage with an outsourcing partner, be sure that you are communicating well. Make sure they understand your project and its scope. This is the foundation for a successful outsourcing relationship. In our case, because of some paranoid fear (my co-founder!) that they would steal our idea, we failed to properly communicate the scope of our project to our outsourcing partner. Naturally, they underestimated the scope of our project and quoted us a figure that was too low. Once we finalized everything and begun going into details with the actual team of developers, we were told that the sales person made a mistake on the quote. Fortunately, we had made sure that they incorporated our app features documentation and wireframes into the work contract. So the company had no option but to renegotiate the deal with highly favorable terms. 

If you would like to hear my recommendations for outsourcing partners in India, please tweet me @melltoo_mom.

To see what is possible with outsourcing, download Melltoo for iOS or Android:



Sunday, February 16, 2014

Agile Development for Dummies (aka Non-Tech Founders)

What it means for you as a non-tech startup founder...

Cartoon by: adamprescott.net

We built Melltoo (mobile classifieds with built-in instant messaging, launching 1st March 2014 for iOS and Android) by outsourcing app development to India. Every developer we contacted spoke of "agile development". We googled it of course and semi-understood but plunged in anyway, ignorance is bliss in this case... 

The tech writers say that agile software development is all about iteration and re-iteration. They contrast this with the traditional "waterfall model" of software development. In my limited understanding, waterfall development is a systematic process where each component of software is built and perfected before development proceeds. In contrast, agile development is adaptive and flexible and multiple components of software may be developed simultaneously and put together, then taken apart, then redeveloped according to the needs of the user. Development teams work out a rough prototype then improve on it, then improve on it, then improve on it some more. 

This is all good and fine but what does it mean for you as a non-tech startup founder? Let me share some insights...

1. In the past, software was sold and distributed as a CD. Remember those large cardboard boxes that were basically empty except for that one CD? These days, software is typically distributed to end users through downloads. This makes agile development possible. If you have to burn a million CDs to be sold, you better have a software product that is as near to perfect as possible. Otherwise, your entire inventory could be rendered worthless if a bug were discovered. With downloads, if the first version was flawed, it is easy to replace it with a debugged version; best part, users won't even notice. 

2. Agile development is the preferred approach today due to widespread internet connectivity. Because our devices are always online, software companies are able to build automatic update capabilities into their products.  So if the product is not 100% perfect, or if a bug is discovered, or if new features are added, the software company can update  the product without having to do a massive recall. 

3. Agile development is also popular because it means that you can get your product to market in a fraction of the time it takes with waterfall development. Since you are not looking for perfection at each stage before moving on, delays tend to be fewer and development can continue even if problems are discovered. 

4. Agile development makes it possible for you to adapt and adjust your product based on user feedback. New features can be pushed out as an update. This allows a company to be highly responsive to users and to pivot quickly if necessary. 

5. Product development is ongoing and will never stop. So don't get rid of your overseas tech team just yet. In addition to working out the bugs, you will probably end up adding and subtracting features; and in some cases overhauling your product entirely based on user feedback. And let me repeat: product development will never stop; and should never stop because you need to continuously innovate and improve on your product to remain viable and competitive. 

6. Do not strive for or expect perfection when you launch your product. Agile development leaves plenty of room for fixes, adjustments and improvements post launch. The important thing is to get your minimum viable product to market as soon as you can. Once you are out there, user feedback will be your guide to product development. What you were obsessing about perfecting might be something you end up throwing out because users don't like it. 

7. Your tech team is not lazy, sloppy, or whatever; and they are not trying to "get you". They are "not fixing that problem" not because they don't want to, but because it will slow them down and you might end up chucking that feature out later anyway. 

Agile development is not only the preferred approach these days, it is the only feasible option. If you do not want to be in a situation where you are stuck in development forever and go to market 2 months after your competitor, then get comfortable with agile development. For us, who are part of the "old school", agile development was difficult to swallow. We kept trying to perfect everything and fix all the bugs before moving on. This led to friction with our developers (who are all much younger than us) and to unnecessary delays. Understanding the approach has brought us new clarity about where our efforts are best spent and how best to allocate our limited resources.

Download Melltoo today to see what agile development produced!