Outsourcing software development: pros and cons

Outsourcing part of software engineering is not for everyone. Outsourcing requires a lot of micromanagement and software engineering background to make sure that what you ask for is what you get.

What follows is my own experience over the last 10 years in many outsourcing contracts working across India, China and Eastern Europe outsources both independent and agencies.

Are you sure it’s for you?

Never “palm off” the job in the form of outsourcing. Otherwise you will be heading down a spiral. Because the important piece of outsourcing is both micromanaging and understanding what the fuck is getting delivered. This way you can either pull the plug on crappy code or influence the right sort of implementation.

If you outsource too early or the core IP you lose the power to radically change the design of your product. Early design is constantly changing especially if you are building something which has never been done before. You want the flexibility to change fast. You need to be under control and know what is going on with all the moving pieces. Read more on this how bad outsourcing impacted Boeing’s Dreamliners (787’s).

This leads me to some key points on what skills you should have if you are going to outsource. Mind you I said “you” because it cannot be someone else you palm it off to.

1. Have a strong background in software engineering.

Loose coupling, Less code, Don’t repeat yourself (DRY), explicit is better than implicit, Test-driven development (TDD), Distributed Version Control System (DVCS), and what .Net develops is all important. Did you understand any of those? If not then you are going to get a piece of crap code. Why is code important? Because it determines the type of engineering culture you build out internally & future maintenance (this is where the hard costs nail you down) and local hiring – quiet frankly great engineers do not like working in a pile of mess.

If you do not know how to code move on or go and learn to code. Anyone with the right attitude and time today can learn to code. See http://www.codecademy.com/, http://www.udacity.com/, https://developers.google.com/university/, etc… plenty of resources online for free. No excuses.

If the outsources delivers crap code you tell them to fix it. If they continue to deliver crap code. You break the contract and provide constructive feedback to them.

Detail detail detail. “The devil is in the detail.” my previous biz partner stressed this to a point where it is now embedded into my psyche and into how I work.

If you are outsourcing make sure that you or the person working 1:1 with the outsourcer are very detail orientated. This way errors are caught fast and stopped at the front line, and where appropriate move fast and fire the outsourcer.

2. People skills

If you have a background working with people (we all do right) and managing those people (oh here we go) then this part will also get smoother. You need to understand you are working with people who have their own lives, family, goals and ambitions etc… so don’t be an ass because you outsourced a piece of work to a “cheaper” labor country.

If it helps, review (even if you have already read it) How to Win Friends and Influence People by Dale Carnegie. The 3 basic principles:

  • Don’t criticize, condemn, or complain.
  • Give honest and sincere appreciation.
  • Arouse in the other person an eager want.

Look, you are going to have to micromanage them. Yes micromanagement ain’t ideal for your immediate employees but for contractors it is a must. They are paid to do a certain job and usually move on. You need to receive quality (refer to point 1 on engineering) and also make sure commitments are completed on time and within budget. Hence the micromanagement.

I also like to emphasize to build a good relationship so you can work with them again. Obviously pending the results of your encounter. Results is all that matter at the end of the day. But, never lose sight of maintaining that level of expected quality. If it drops, give them a chance to correct it by providing constructive feedback. If nothing changes again, then cut the tie immediately.

Remember: “Once shame on you, twice shame on me” (in 1st person)

Right so you have the necessary skills to get moving. Here is where the harder stuff begins.

The checklist!

1. Automate.

As much as you can. Outsourcing isn’t just relationship management. There are a number of balls in the air from managing the relationship to code review & feedback to product questions that need to be answered and/or fleshed out.

Use DVCS (ref my previous blog post) with email alerts enabled for code checkins, comments and issue tracking. Have everyone involved with the job on email alerts so you know when code is checked in or issues logged. I like using Bitbucket for all of this.

I also recommend you put them on HipChat for Private group chat and IM, business and team collaboration. This way you will maintain all communication in the one place.

2. The standards list.

Send the contractor your “standards list” of what you expect out of the engagement. Use Google Apps to write one up & share it if you do not have now. Put a line in the sand. A bar in front on:

  • Expected quality – DRY baby!,
  • Naming conventions,
  • Daily status updates – email or via HipChat,
  • Use of standard industry engineer practices like TDD else you will get code without unit tests!!
  • How everyone can reach each other for questions on product spec or similar ie. Skype, emails, cell #, HipChat etc. Include timezones everyone is working on.

3. Requirements.

Fuck sake man. More detail. Stipulate any API calls, use cases, designs, standards as mentioned above etc.. If you have an engineering background you will appreciate and say “fuck yeah” to what I just said.

No one likes to document things but this small initial investment will weigh in its worth when the final product is delivered to spec. Do not leave anything for misinterpretation.

  • Have a Balsamiq design illustrating all the screens you expect and how they should look.
  • Where applicable provide designs for every screen. Do not let the contractor try to work out for themselves what you want. Never ends well and you get billed for that time.
  • Technical detail around API calls (request & response) with examples, use cases, high levee flow diagram etc..

4. Understand it before you open your mouth.

If you are developing for a channel you have no experience in, ie. Android. Then spend time learning it from at least a “high level” understanding so you can speak the lingo and know when you are getting lied to in the face. If you level out with the lingo then you will get respected more and the contractor will not be able to pull a “shifty” on you.

5. Hiring.

Never straight forward and always requires a ton of work. But this pays off when you have the right contractor on board working with you.

  • Spend time writing up a detailed job spec and list it on oDesk/eLance and wait for the flood of offers. Immediately decline those that have not met all 5 stars criteria.
  • Setup a spreadsheet of all those that applied to keep track of who you short list, their contact details, your last communication with them etc… From the 100 narrow it down to top 20.
  • Interview the top 20 via Skype video (yes you need to see them) and listen for something that will differentiate one from the rest. For me it was getting asked questions I did not have an immediate answer to. Smart switched on engineers are like that and you know you got a winner there.

Remember that at every point in the interview/communication you need to be prepared with a series of questions so you can use those as a base for quality and comparison.

Tip: And when you do engage the outsourcer make sure you stay working via oDesk or similar tool. As much as you may be conned into believing working outside oDesk is worth 10% discount it isn’t  oDesk provides great tools to track your contractors time (with videos) and in the end you get to provide feedback on them. Bad business means bad comments means no future business. So it is in everyone’s favor to be on best terms and get the job done right.

6. Have fun!

Not a long-term strategy

Outsourcing is great when you first kick off a startup and need to fill in skill or time restraint gaps like kicking off a new channel which will interface with your in-house platform (your IP – which you built and are evolving) or design work. But that is where it stops.

Remember that outsourcing is work for hire. Your own company / startup is a labor of love which only you and those that live and breathe it each day share in the office. So if you have high expectations of the outsourcer to care and be on the ball with something they are building or have built then you most likely skipped the crucial part. The part where I told you to own the whole process and be laser focused on the work getting outsourced. You fucked up. You’re at fault not them.

Never outsource your core business. Only channels. Those that are not what I call IP (intellectual property). Your IP always stays in-house managed by you and your cofounder.. and ultimately a kickass in-house team. For example; a business that’s attractive to investors typically has some sort of IP that’s hard to clone by competitors. That thing that makes it unique. It could be a unique algorithm or even data. You’d never outsource that. Stuff that can be outsourced might be a channel eg. a mobile app as long as the IP (say that algorithm) is in the API your local team manages. For a smoother system consider using SD-WAN software as it gives you a better application system and more efficient business operations.

Final note

You are not looking for a “sweat shop”. Find rock stars! That have a history of delivering quality code on time while communicating effectively. Communication decides if you get an apple or an orange when all you wanted is an apple.

If you have any stories (good or bad) please share with me them below in the comments.

Happy outsourcing!
~ Ernest

Startups and Equity: it’s all about being fair

Startups and Equity is often a complicated yet simple discussion that must take place before moving forward on a deal to come on board with equity in the compensation mix. It’s even harder when you are the 1st hire or a co-founder. The topic has definitely been debated a lot and there are many varying opinions online. Having been through this process before a few, I want to put this into simple so you don’t have to spend reading through every one resource and be left confused more than ever.

I will assume you are coming on board as a co-founder. Just the fact that you are at this point of the discussion with your co-founder is superb. Since this part only requires working out a “fair value” you both can be comfortable with.

Question 1 – are you both starting from ground zero?

An idea is still ground 0. If one of you have already executed an MVP then this is not ground 0.

If YES, Then Joel Spolsky’s advice nails it well. Split equity 50/50. Done.

Why?

  • Ideas are dime a dozen. It’s all about the execution of this idea. Both of you will work together to make it fly.
  • “Fairness, and the perception of fairness, is much more valuable than owning a large stake.” ~ Joel Spolsky
  • x3 the last point. I will expand on this in the next question.

If NO, then Question 2 – how much value has your co-founder already created?

There is no right or wrong here. Seriously. There is only 1 thing here. What was said above about “Fairness, and the perception of fairness”. Speak freely with your co-founder about this. Get external advice from advisors, friends, partner etc… You really need to be comfortable with whatever you finalize.

At this point you and your co-founder have to work out what is fair. For BOTH of you. There is no room for lies. Or cheating each other to gain the upper hand. This is NOT an employment contract. Successful founders are successful because they trust each other and are fair to each other. Angels / Investors invest in people. For this solid reason. Ethics are everything.

Remember that the journey ahead is long and so even if the company has already got traction you still will be adding a lot of value. What has been done to date will change. What has been done to date is the confirmation of something there which can turn into a successful business. Startup companies pivot frequently to find a business model that sticks. Most successful startups in the valley are not famous for what they started off. They are famous for their last pivot. Read FoundersatWork by JessicaLivingston (YC partner) to get a feel for this.

Start from the back

It is easiest to just start from the back. The back meaning “how much ownership do you want after 3 rounds of dilution.”. The dilution comes from rounds of investments (A, B and C). It helps if you already have a feel for the equity value you believe is fair.

A typical funding round dilutions look something like this:

Round A – 20 to 40%

Round B – 10 to 30%

Round C – 5 to 20%

A great Infographic produced by BothSidesofTheTable.com and visual.ly explains dilution in alot more detail here.

Visualizing dilution – click to expand

Bingo. You are done!

Now start the discussion with your co-founder explaining how you got to this number. Remember, the outcome has to be that the both of you are comfortable and that it is fair.

Happy entrepreneurship!

~ Ernest

Employment & Contracts at Silicon Valley Startups

Recently I was helping a friend from Australia with employment contracts & options from few Silicon Valley startups. Then it struck me that I need to share this knowledge with other folks in the same shoes. I cannot believe that I had not blogged about this earlier.

So you already know that Silicon Valley is the world’s hub for startups. Companies that are starting up with big visions to turn into a multi-million dollar company that is going to revolutionize the industry they are focused on. The fact is that only few ever succeed to become a feature article, a story making headlines, leading to an IPO or an acquisition and making its employees wealthy in the process.

So you came to Silicon Valley and are ready to start cracking working for a startup to help it reach success. Here is a few things you need to know about employment and contracts when joining a startup or running your own startup in the valley.

Salary

Check out glassdoor.com to see company salaries, reviews, and interviews – all posted anonymously by employees in Silicon Valley. Don’t forget that the salary is only a part of the whole package so make sure you understand the next topic on stock options which can make that average salary skewed.

The low down is that if you have been head hunted and the company really wants you then you control the price on your head. Not a website showing you what the average Joe out there earns.

Stock options

If you are joining a startup or about to start one you will be hearing a lot about stock option grants, also known as ISO (Incentive Stock Option). The purpose of stock options is to attract and retain the best available personnel and promote the success of the company’s business. Basically to make the employee feel like they own a part of the company and will feast in the rewards of the company’s success. If you’re looking for some of the most reliable dividend stocks I recommend to visit https://www.stocktrades.ca/best-canadian-dividend-stocks/.

“Employee Stock Options are call options which grants its holder the right, but not the obligation, to buy the company’s shares at a fixed price known as the “Grant” or “strike price” before the expiration date is reached.” ~ optiontradingpedia

The long-term goal is that those stock options will be worth something in few years… more than they are at the time of issue. Like x10 more. And the employee will profit favorably during a private acquisition or an IPO (Initial Public Offering on the public stock market) of the company. At that point the stock “option contracts” are said to be “exercised” and converted to real stock and sold to new holder/owner. Assuming that they don’t expire before then.

Typically in an early startup, employee’s wage is sacrificed for more stock options. This is high risk but more of a rewarding strategy assuming the stock options percentage (%) is favorable. I wrote (%) percentage since this is typically worth more than being given a volume that is hard to justify & work out. The reverse holds true that once the company has grown well into few dozen employees and doing well financially, stock options are reduced and wage levels out with industry standards.

Here’s a previous blog post I did on equity split, common terms & compensation 101.

Let’s do the numbers

Issue value = volume x issue stock value
Your profits = (issue value * growth (assume x10)) – issue value

So your $100K of stock options could be worth $1 million and you profit $900K before taxes.

If you worked at this company for 10 years and earned a wage of $50K then its like earning $150K per year in wages. Now is this worth it? What are the opportunity costs? Work them out. Since taxes will be different in both scenarios and you may have been able to early a larger wage with bonus per year which would have compounded exponentially – especially if you had invested that money! So is it worth it? Theoretically you could be better off earning a higher wage then taking a pay cut to get more stock options. Work this out and don’t fall prey to what may happen in the future because failure in a startup in pretty high in the early days.

At-Will Employment

California is an At-Will Employment state. This means that you or the company has the right to terminate the employment relationship at any time, with or without cause, and with or without notice.

At first this sounds a bit harsh but it has its merits. Back in Australia you have to give the employer notice and this is always a 2-4 week period. You have to. In California if you are leaving on good terms then it’s customary to give a 2-week notice as a nice gesture. However not required by law. Now, if you are leaving on bad terms like say to due unfair treatment, you can just walk out the door immediately. Why waste another breath in a place you are not happy at.

The other angle is that the employer can terminate you instantly. Now if this termination is unfair you can seek legal action. For this reason, many employers have what is called Performance Improvement Plan (PIP) which gives the employee a fair chance to succeed. If this doesn’t work out then a termination by law is customary. It also protects the employer from legal action. Which happens very frequently.

Health Insurance

You need insurance in the USA. Without it you can end up a sitting duck should you get sick and not have enough money to cover the bills. Medicine in the USA is very expensive. A standard visit to the GP could cost you around $200.

Just about every startup that has funding will be providing it’s employee a form of medical cover. Typical choice of 2 or more insurers (options) will be available. These 2 options will be in the form of Health Maintenance Organizations (HMO) or Preferred Provider Organizations (PPO).

In a nutshell PPO is choice with higher co-pay and HMO is less choice with lower co-pay.

Co-pay

A co-pay is what you are expected to cover after every medical expense. Say you visit a GP and your co-pay is $10. So you pay $10 to the medical foundation your GP belongs to and your insurance company covers the rest. Same with medicine, it’s all $10 out of your pocket per prescription. PPO co-pay is typically double of HMO so you end up paying around $20.

In or Out of Network

If you select HMO you will need to find a medical group to join. This is called In-Network and is the medical network (a group specialists affiliate themselves with) you will use to find & see the same GP. Yes you must find a GP which is taking patients and then work through them. I personally like the Palo Alto Medical Foundation. A group of large hospitals & medical facilities in the bay area. Once inside this network you GP will only ever assign you to see a specialist that “belongs” to that network.

On the other hand if you have PPO you can opt to see a GP or specialists In-Network (co-pay will be lower) or go outside to another network also known as Out-Of-Network where your co-pay will be higher but you will have the choice and medical coverage to see a specialist of choice. One you selected. It’s what you pay for, the choice.

If you’re healthy and have selected a good network then HMO is a good choice. If you’re paranoid and have health issues get PPO. The price difference isn’t that much.
But be warned, plan choice only ever happens once per year. Typically in December. The only other time you can alter the plan is when a “major event” has occurred like adding your spouse to the plan or loss of employment.

Dental

This usually comes bundled with your employee health plan and is typically the Delta Dental. It will cover around $1,500 worth of dental procedures on a tiered coverage plan with gap where standard checkups are 100% covered, fillings 80% and major work like root canals 50%. Some dentists can cover this gap so ask before you choose a dentist. Typically you need not make any decisions here, it’s a 1 plan for everyone. Use this great opportunity to get your teeth fixed like removing mercury fillings and replacing them with ceramic versions and get that crown you always needed but couldn’t afford in Australia due to bloated dental fees and crappy coverage back home.

I did a story comparing the Australian private insurance to the American here. The American is definitely better by a long stretch. The problem becomes if you don’t have insurance in American then your a dead man walking should you get sick.

Paid Time Off (PDO)

In America this is typically 2 weeks. Half of the comfy 4 weeks we get in Australia. However if you are head hunted you can negotiate this to 4 weeks or more. Some companies are now starting to give 4 weeks since a work and life balance is becoming a very popular topic in productivity and employee morale & motivation.

Having 4 weeks per year of holiday leave will give you ample opportunity to travel to beautiful places like Yellowstone, Yosemite, Los Angeles, New York, Hawaii etc. so you get to enjoy your USA adventure while helping a company succeed.

Other perks

Other ways employers have been luring employees is via additional perks.

  • Travel allowance. If your travel is covered you can not only go green but also have free travel. Bonus!
  • A fixed amount to buy your own computer equipment like a nice shiny Apple hardware. Everyone loves a Mac.
  • Free lunch. Such a common trend today. It has 2 benefits. The employee doesn’t have to buy or spend time making their lunch and the employer gets more productivity from their employees since the employee doesn’t have to travel to a shop to buy lunch thus spending less time having lunch. Also the employee gets to socialize with fellow colleagues during lunch hour building a tighter solid organization.

Some notable companies like AirBnB, Facebook, Google, Dropbox et al. provide plenty of perks and sell their way to your hear. Additionally, if your organization is in the process of pre-employment, you might want to use a cognitive ability test that helps you understand if a candidate can do the job.