Software Startups often have a few really smart people and a great idea. The problems with a bad idea or poor funding or poor execution are easily solved – you go out of business. However, there is also a danger of failing from too much SUCCESS.
Let’s say you strap together some funding and a good solid team, maybe a chief architect, an engineering lead and a few good programmers and testers. This is your “Core” engineering team.
You get the software up and running and you ship. This is great! Now comes the hard part – with a little success your VP of Engineering says “We need 10 more engineers now!” You start hiring people; Project Managers, Leads, more people to code: Your pay-roll, employee taxes, insurance, all go up – you move to a larger building. Now your employee overhead and your average cost per employee has gone through the roof. You need to hit a home-run with every software release or project. The first speed-bump you hit forces you to either raise more money (give more of your company away) or lay-off people. And if you hit more than a speed bump, then maybe you even have to sell off all your assets or shut-down completely.
There is a better way.
A combination of engineering and program management external to your core team. Some of these resources will be off-shore (to lower costs) and some will be off-site: An External Team.
You supplement your Core team with a compatible “External” team – working hand-in-hand. They use the same process, adhere to the same standards and are involved in planning meetings. They are a true part of your team but without the over-head. Using this model allows you to treat the external or “External” team as a fixed expense.
You have much more control over growth while at the same time meeting the demands of a growing business. You only hire the very best people, slowly and on your terms, not because you need to add people immediately. If done right, you supplement resources when times are good and you stay lean and mean when you hit small speed-bumps. If the company you work with is good – then you have an engineering partner that stays in-step with your growth.
Important considerations when choosing an External Resource partner: INTELLECTUAL PROPERTY: This is more than Patents, copyrights and source code. It’s the PEOPLE who make up your CORE team. This is why selecting a LONG-TERM partner is very important. Your internal team needs to be the creative force behind your software. They need be comfortable with working with a competent external team. Most resistance to working with external teams comes from a lack of involvement and a feeling of not being in control. If your internal team his happy, you’ll keep your turn-over low and this more than anything else help protect your IP.
QUALITY: The quality of the External Resources has to be equal to your internal team – or at least have the ability to execute at the same level.
TIME-ZONE: The internal teams and external teams have to be able to communicate in REAL TIME without a “middle-man” or only through written communication. In other words, the PEOPLE DOING THE WORK must be able to talk to each other during some over-lap of NORMAL BUSINESS HOURS – one-on-one.
LANGUAGE: 100% of the engineers working on the project must be able to communicate in ENGLISH. This is really important for two reasons. First, because the issues listed in item number 2 but also because code documentation must be kept, tracked and verified and if the code comments are not in clear English, you are jeopardizing your intellectual property.
PROCESS: The External Resources have to be able to fit in your internal development and testing process. Without this ability, you can’t plan MILESTONES or SPRINTS reliably with the main or “core” team.
COST: When evaluating cost you must consider everything listed above first. Second you must know how most outsourcing companies “hide” their real cost. This formula translates to VALUE. Not just getting a good price, but getting an efficient, well trained team at a reasonable price that works in concert with your core team is true value.
PRICING: Hourly Rates. This is counter intuitive because in software development no one works to create software on an hourly basis. Usually in this model there are over-time charges for nights and week-ends which dramatically raise the over-all cost and impact any process or requirement changes to the project. Software professionals work to get the job done – sometimes this means working more than a standard 8 hour day. FIXED-RATE monthly charges allow you to using “External Resources” like internal resource – they work similar number hours and can work in the same process as your internal team. It also gives you a clear, simple way to budget for every External resource. It simplifies your planning and budget process.
If you have a software start-up or if you are thinking of starting a software venture, talk to me about how we’ve used the criteria listed above as a model to help dozens of companies stay lean while adding additional Engineering resources to meet project demand. All while still managing their bottom line.