Tell me more ×
Answers OnStartups is a question and answer site for entrepreneurs looking to start or run a new business. It's 100% free, no registration required.

I am starting up my web-based application business. I have an idea and already done some research on this idea. And now I want to realize it. There are two choices for me either to hire a soft warehouse to build this web-based software, or to hire my own in-house development team.

I am not sure what are the pros and cons of these two approaches?

Will hiring the soft-warehouse creates difficulties later?

what could be a problem if I first hire software house and then get the project transferred back to my in-house development team?

Can anyone give me suggestions?

Thanks for all responses :)

share|improve this question
Describing the site would give a better answer. Could depend on how complex your idea is. – JeffO Jul 6 '10 at 0:00

10 Answers

Find a strong partner with software development expertise. If you can't convince a comptetent IT person to invest their expertise in your site, your idea probably isn't that good. They will be able to get started on the code and add team members as needed. There will be an ongoing combination of employees, consultants, contractors, and other firms during the life cycle of your application.

Imagine driving by a constuction site and pulling one of the carpenters over and asking if he/she can build you a house based on the "blue prints" you drew in your note pad. Do you know as much about building websites as you do about building houses? If you know nothing about home building, hire a contractor.

share|improve this answer
1  
Jeff, the question is not if he needs a dev partner, but if he can manage a development team. In either case he can hire a dev manager. Bringing a partner in the company is a huge decision. – Stefanos Tses Jul 5 '10 at 18:52
1  
The question is moot if you can't manage ANY development team. If you have enough money to throw at the project, you can have just as much control on employees, contract labor or an outside firm. – JeffO Jul 5 '10 at 23:54

Create an in-house team to build your product. This team will later support the application and write code for upgrades and revisions.

I haven't heard any outsourced team outperforming a well chosen in-house development team.

Choose the right people and let them build the company's product. As they do, they'll build a good knowledge of the business domain. Nobody will care more than a responsible employee.

Outsourced teams are fast on building your house, but the moment you get the first leak, their responsiveness decreases considerably...

If you hire an outsourced team to build the product and then hire an in-house team you're in double trouble.

Developers have to understand the code and try to fix bugs using it and this will slow down any effort. Programmers usually love to start clean and this is what they'll do at the first chance they'll get.

share|improve this answer
1  
The problem, however, is that getting a well chosen in-house development team is easier said than done. A properly managed outsourced team with good communication can easily out-perform a non-stellar in-house team. – Elie Jul 5 '10 at 12:08
What make you believe choosing an outsourced team is easier? In a in-house team you can hire/fire on demand... – Stefanos Tses Jul 5 '10 at 18:48
1  
Not quite correct. An outsourced team lets you look at the products the team as a whole has produced, and you don't need to concern yourself with most of the individuals. But hiring/firing is very expensive and time consuming, not to mention the retraining you'll have to do each time there's turn-over. I've worked in both scenarios, and both can work, and both have their faults. But the ability to hire/fire as a point is irrelevant, since in practice it doesn't really work like that. – Elie Jul 5 '10 at 23:08
My point is that you can adjust an in-house team by hiring/firing out-performers, but doing so with an outsourced team is costly since you'll have to start over with a new one. – Stefanos Tses Jul 6 '10 at 13:21
Granted, but hiring the right people is a lot easier said than done, and if it's done with the attitude that you can "just replace the out-performers", then the whole approach is wrong. Not that replacing an entire team is any easier, but it is easier to pick one good TEAM than it is to pick 10 good PEOPLE. – Elie Jul 6 '10 at 13:49

I would 100% recommend an in-house team, for the following reasons:

  1. Consistent Programming Language
  2. Familiarity with the code / system
  3. You will only need to PM one team (introducing teams to an app / project is not really easy)
  4. In house people will (should) have more at stake
  5. You will have more control over the code and the entire process
  6. An in house team will be more flexible

It is definitely much better to start in-house. If you don't -- plan on re-writing most of the code once the new team comes in place.

share|improve this answer
What does programming language have to do with the question? You can outsource to a company that uses the language you want, and if needed, replace them with another company using the same language. The rest of your points all come down to communication - with good communication, anything can work well, with poor communication, anything will fail badly. – Elie Jul 5 '10 at 23:09
I guess I just do not understand your point of commenting here. It is clear that you run a company and clearly you believe that you do it well. The OP is asking for answers and this is my answer based on experience. He is in the researching stage and understanding there are "different" languages is not necessarily a given. In your comment above you claim how inefficient replacing teams are (which I agree) yet you simply state "replace them." – Jeff Epstein Jul 6 '10 at 2:30
I find your comments about communication incorrect. I assume that you charge hourly so "good communication" is more expensive as well? I would argue that "good communication" is little to no communication with the development team. With proper planning, wireframing and scope there should be little need to waste time on managing outsourced tasks. In theory this sounds great -- in my experience it is a ton of work to manage! – Jeff Epstein Jul 6 '10 at 2:35
You are correct that I run a company and believe I do it well. However, I will address your points. I don't recommend replacing teams, but if required, you can find another team that uses the same language as the first, much as you can find another developer who uses the same language. Consistency is not the problem - choosing the right language to begin with is. In answer to your comment about communication, you are wrong about my billing practices. I do not bill for time spent communicating - that's part of my job. (Continued...) – Elie Jul 6 '10 at 2:40
As a result, extra communication is not more expensive. One of the issues with outsourced teams is that often it's the wrong people communicating, or the language used is not clear to everyone involved. If you speak English as a primary language, then you will usually have an easier time talking to someone who speaks English fluently than one who doesn't. If you don't communicate effectively as needed, then the project will be doomed in any case. Effective communication is not the same as a lot of communication, though. – Elie Jul 6 '10 at 2:43

First, if your business is the program itself, then you should ideally bring it in-house, because you don't want your entire business to be out of your control. That being said, you may not be able to do this in practice.

The benefit to outsourcing, when done properly, is that you can gain access to a diverse set of skills that you may not be able to hire in-house. As an example, and I run the risk of over-simplifying, you may need a high-end DBA for some work, but not have enough work for that person to justify hiring them full-time. If you outsource the project, that's not your problem.

The problem, however, is in controlling the quality being produced from an outside vendor, which you may be required to support later on. I have had the misfortune to work on a project built this way (as the later support) and we ultimately replaced the entire code-base. Communication with the development team is one of the key issues, and failure to recognize lapses in quality early on can sink an entire project, even when it doesn't have to end up that way.

However, I have worked with clients who for a variety of reasons did not want to build an entire team in-house (price, cash flow, finding a qualified team, risk management). What I advised those clients to do is to find a third-party to manage the team, and outsource the development from that team manager. The third-party (in those cases, my company) acted as quality control over the companies who were actually doing the programming.

In reference to a comment made previously here, an outside team can outperform an internal team if you don't have the ability to hire effectively. This is one of the biggest reasons to have a technical partner - because without the right background, it will be that much harder to manage this kind of risk.

share|improve this answer

They key word here is "prototype". You may have to throw it away whether you build it entirely in-house, or outsource, or do a combination of the two. But it may take months to build a quality in-house team, whereas is way more important to build a prototype fast.

Also, if you manage to find a good provider interested in a long-term relationship, you may never need to bring the project fully in-house.

At the same time, you'll need someone on staff to help you with the engineering stuff.

So I would start looking for an outsourcing partner and a CTO / VP of Eng.

P.S. It may also be a good idea to outsource testing to a different provider specialized in QA.

share|improve this answer

If you decide to build this internally, you could take a look at the Agile Platform by OutSystems.

You can download it for free, build your prototype, grow it into your final web application product, and then go from there. You don't need to worry about robustness or scalability, since the platform takes care of that for you (so you just need to focus on implementing the functionality of your product).

Take a look at http://www.outsystems.com/goto/startups for more details on the special conditions for startups.

Hope you find this interesting

Michel

Disclaimer: I work at OutSystems

share|improve this answer

Outsourcing often means still babysitting.

if you hand it off you still should be able to do it or understand how all the main pieces should work and fit together.

If you're not sure how best it should be put together, get a system/software architect to sit down with you, capture the lighting in the bottle of why you want to do it how you want to do it and how to best build that into a scalable model.

Finding the sweet spot between over-engineering and under-engineering is key in most startups. It's really easy to be lead astray building all sorts of abstraction factories that don't necessarily build value in 1.0

All the best!

share|improve this answer

In house at start can be more expensive since you have to spend time on finding the right people to work on your project. Outsourcing on other hand can do that for you, but you have to be careful not to fall into a trap of outsourcing: they can show you their best work, but you wont get their best developers, you'll get junior instead.

This is something that many outsourcing companies does.

BUT if you find the right company, you'll get a loyal partner because that company would have interest for your project to succeed since that will bring them ongoing business!

In your position I would recommend to search for smaller outsourcing companies (max 50 employees) because there you can find the best devoted developers with the same cause as you: make your project a success...

Thanks, Ivan

share|improve this answer

I currently work for a firm that builds software/websites as projects. I am somewhat biased by that.

From personal experience, we have partners for whom we are their development team. I would suggest finding a company to build your prototype rather than building a team of individuals, because of all 6 of the points Jeff Epstein raises above. I reach a different conclusion from Jeff, but all of his points are valid and should be taken into consideration. When hiring a software development partner (notice, partner, not body shop) you should make sure of the following:

  1. Get and check references on projects similar to your size
  2. The team understands your goals and ideas as you do (they ask enough questions to understand what you envision, not just what you are asking them to build)
  3. You are given a schedule of deliverables along with an estimated completion date (don't go with a shop that is going to 'big bang' your project, insist on weekly deliverables so that you can realign as early as possible in the process)
  4. Some form of maintenance schedule should be agreed upon from the beginning, along with a warranty period for the code.
share|improve this answer

Your 'business' will be your application so you will eventually want to have that knowledge and the tough decisions made by you and a competent internal staff.

However, where you are at right now it may be very difficult for you to hire:

  • Competent designers, user experience specialists, programmers, system admins etc.

There are a lot of skill sets required to make excellent web applications and rarely can be found by posting up some job ads to hire a developer. The best developers have jobs ;) and if you aren't a developer you don't even have the qualifications to hire one. There are plenty of people who talk a good game.

So using a company initially is probably the best idea, they build many apps all the time, will be in-touch with what the industries are doing, what works.. what doesn't. I would definitely try to find someone local to you that has done this before and has proven results. Don't try to manage an overseas team, you can find local competent people you can meet with and it can be just as cost effective and certainly less stressful and easier to manage.

If the app starts taking off then start to build your internal team.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.