I offered 40 years experience. A young squirt just out of school can't
solve problems the way I could. He could code to a spec, but he could
not write the specs, write the docs in idiomatic English. He could not
suggest 10 totally different ways to approach a problem. You need
experience to do that.
One of my bosses expounds the same basic idea. The strategy is that we
compete with the outsourcers on a cost-per-project basis. We can't compete
on cost-per-head, because we live in London (or even worse, live in the UK
and commute to London), not Bangalore, and we like to work 40-hour weeks
and earn enough to live comfortable lives [1]. However, if we're good
enough - skilled, experienced, and well-organised enough - we can deliver
a project with a fraction of the man-hours of an outsourcing shop, and
thus be competitive on total cost.
This strategy seems to be working. It works for us for several reasons:
- We're a small company - two software gurus, a business/product/customer
guru, a training and tech writing guy, one permanent programmer (and
jobbing sysop), the intern, and zero to a handful of contractors. That
means we have very low communication overhead, and can coordinate
effectively. We don't waste time with meetings, emails queued in inboxes,
duplication of effort, misunderstood instructions, etc. We don't spend any
time doing anything that isn't concrete, productive work. Apart from
ten-minute stand-up meetings twice a day. And the crossword at lunch.
- We do agile development. I know not everyone's a convert, but honestly,
when you do it right (or near enough to right), it works like a charm. You
spend more of your working time on producing deliverables, and more of
that time is spent effectively.
- We do a lot of work with an e-commerce framework that's powerful but
arcane. We know it well enough to work with it smoothly, which few people
do. That means we can build big, complex e-commerce apps using it more
quickly than non-adepts could, with or without it (probably). It also
means that we're very well placed to pick up maintenance and extension
work on apps that have already been built with it - fortunately, there are
a lot of other shops using it, but using it badly, supplying a crop of
opportunities for us to harvest! That said, we are interested in doing
stuff not using this framework, as it's a rather harsh mistress; it'd be
interesting to see how much competitive edge we lose by stepping away from
it.
- We're not a straight development shop. Indeed, the gurus claim that we
aren't a development shop - apparently we're primarily a consultancy, but
one which can also do implementation should the need arise. A good slice
of the company's work (handled almost entirely by the gurus) is stuff like
proposing an architecture or outline of a solution to company A, or
reviewing such a proposal that company B have got from company C, or going
over company D's existing systems and telling them how to do what they
wan, etc. I don't fully grok how this works - i understand how they can do
that, but i don't see how it synergises with the programmers in the back
office. It's not like you can waltz in and say "oh, clearly the right
solution is to hire us to build this for you", can you. Can you? Maybe
it's about building trust and connections, and establishing ourselves as
people who can be called in to sort things out and get things done. Sort
of a cross between Red Adair and the SAS.
- I would say this, but we're bloody good programmers! The gurus are wise
and crafty (both the technical guys are ex-Smalltalkers, FWIW), and they
make a policy of only hiring people who are good. Our mercenaries^W
contractors are drawn from a smallish pool of people we know and trust,
who have worked with us on and off for ages. We don't have people sitting
around not being on top of their game or not pulling their weight. Apart
from me, obviously - i'm still quite shocked that i haven't been fired.
Anyway, as i said, it seems to be working.
One of the difficulties we run into is that clients' purchasing
departments don't always see things our way. Perversely, they don't look
at the price of the thing they're buying, they actually look at the price
of the programmers. We've had clients offering contracts which did things
like specify caps for salaries, and even annual increases in salaries. I
guess some clients are used to thinking in terms of parts-and-labour
costing, rather than fixed-price. This is shortsighted when the actual
value of labour can vary wildly (or so we claim).
It'll be interesting to see how this strategy pans out in the long run. At
the moment, it works because the competition, domestic and outsourced, are
not so hot. As the Indian software industry matures, we'll see companies
every bit as good as us emerge - and in huge numbers, of course. Will be
all be out of a job then? Or will salaries in India have inflated to the
point where they've lost their cost edge by then? Oh well, chances are the
whole of Europe'll be bankrupt by then anyway.
tom
[1] At least, the others do. I'm part-time, and technically an intern, so
my salary is correspondingly spartan!