Productivity by delegation vs. productivity by outsourcing

Teamwork's Q&A's new site

Teamwork's Q&A's new site

In Open Lab we just adopted a StackExchange instance as support for Q&A’s for our Teamwork product (here), and another one for generic jQuery support (here). Now, the speed with which you put up one of the highest quality services available on the web is such that it ridicules any attempt to build such a service in-house – a mistake that we actually pursued. This has led me to the following thoughts.

Many developers and managers live in a omnipotence dream. The apparent power of a Turing-complete tool, that in principle can perform any kind of computation, feeds the illusion that having developers in-house means that any software task can be solved by simply developing the application from scratch. If this seems obviously false to you, just take a look around and you’ll find more examples that you’d ever imagine.

So, we need a support forum for our product? Let’s just develop one. We need a bug tracking system? Let’s just develop one. We need to build a web site with database? Lets develop it internally.

Taking the opposite attitude, that is, developing from scratch only what is strictly related to your core business, can be a way to becoming more productive. I’ll call this the software delegation principle.

Ok, assuming this principle looks easy enough; but… there are several mistakes that can be taken in sweeping generalizations of the principle above. The worst one is confusing delegation of secondary services with outsourcing the core productivity of your company. There is a semantic difference between “delegating” and “outsourcing”, and it is connected to where you put your company’s worth.

If you put it in designers, developers and their skills, you can delegate everything but their activity, you will have to struggle to keep their focus on our main development, without making them develop say a support forum when it has nothing to do with their core issues.

If you are a software house, renting a coder is probably a bad idea – see Jeff Atwood’s Can You Really Rent a Coder? . For similar reasons, though many developers and bloggers don’t get it, it is just as well a bad idea to rent a designer. Your people’s skills are the core of your value. Like, our core competencies are development, design and marketing our web applications. Anything that distracts us from our goal, should be removed if possible.

Another in some sense opposite mistake is delegating problem solving which touches your core competencies: like using tools that give you simplistic solutions that hide you the real complexities involved and that will lead you to great troubles when going in production. A classical example is like trying to set up a web site using visual tools, without understanding HTML, JavaScript, and eventually the server-side part that goes with that: maintenance, cross browser compatibility etc. will soon become a nightmare. But delegating non core issues will actually help you going in-depth about your core issues. This is the mistake of outsourcing the core productivity of your company.

If you are a traditional custom-development based software house, what I am saying here applies in a different interpretation, simply because the value of the company is in the customers, not in production (in the case of a software house, this means the developers). Quality is concentrated in making deals with the managers, not in providing good solutions. That is why often such companies really outsource everything but marketing.(I personally don’t like much such business model, but that is another matter).

Made the necessary distinctions, if you overcome the temptation to build everything in-house, here are some examples of services that you can delegate if you are developing online services:

– writing code -> get the best IDEs, working stations, monitors, keyboards, that money can buy (see CodingHorror for many advices)
– integrating third-party technologies in your software: -> rely on available APIs
– designing mock ups ->use Balsamiq Mockups

Testing and support:
– testing your application – use or similar services
– collect feedback from your users  – use an online service like UserVoice or GetSatisfaction
– support questions and FAQ – use StackExchange

– statistics of your site – use Google’s analytics
– following marketing progress – use StartupTodo

These are just some examples that I am using or exploring.

Using the best tools for development, like using the best IDEs (see The Joel Test: 12 Steps to Better Code), goes in the same direction: you delegate syntactic work to your development environment, and you focus on solving the business model problems and, most importantly, on usability.

Productivity by delegation can also be a great source of new products and services ideas; we in Open Lab are just now developing two new products exactly for this end, one for delegating collection errors and user feedback online (BugsVoice), the other for making your web sites dynamic without using a CMS (Patapage). Time will show whether I’m right…

2 Responses to “Productivity by delegation vs. productivity by outsourcing”
  1. I just found a blog post by Joel Spolsky “If it’s a core business function — do it yourself, no matter what.” which defends (better than me) some of the themes above:

Check out what others are saying...
  1. […] Lab we are launching two new Q&A’s sites, one for Teamwork and one on jQuery. From this some reflections from me (Pietro) on our startupper path towards releasing the new web […]

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: