Stephan Schwab

Software development and farm life

When your organization is a software company

with one comment

Innovation at the core of the business

Imagine you are the owner of a chain of restaurants with about 800 locations. One day during travel you discover a restaurant where they have little computers with touch screens on every table, which the patrons can use to order from the menu. You are so intrigued by that that you want to introduce this to your own chain of restaurants. Besides bringing food faster to the table you also envision benefits for your supply chain management.

“We are not a software company”

Your organization is a chain of restaurants. Everybody has a hospitality background and their only connection to software is that they use computers and several programs day in and day out to send email, write letters, do accounting, print checks for the patrons and run statistics. Most of these programs are quite easy to use but some require some training for up to a day. It’s probably safe to say that nobody knows how to actually make software but then some of your managers report how their sons and daughters are taught about computers and programming in school so it doesn’t seem to be so challenging. Sure, kids in school don’t work on large programs but the basics are certainly the same – isn’t it?

Reasons to keep it in-house

Because you view this new initiative as being so critical to the success of your business you decide that you should not contract an outside party for the development of it. You fear that this new thing may get into the hands of your competition too soon. Instead of awarding a contract to an established software development company you decide to hire a number of programmers and create the solution in-house.

Things to consider

Ideas are worth nothing. It’s the execution that counts. You can ask around at Venture Capital companies and they will tell you that they get hundreds of proposals and never would consider signing any form of non-disclosure agreement.

A company implementing software on behalf of their clients has no incentive to disclose one client’s idea to another client or to the public. Doing so would destroy their reputation and their company. There is nothing to gain for them. And don’t forget “ideas are worth nothing”. Even, if the contractor would disclose your idea to a competitor, it doesn’t really help the competitor. He still has to implement a lot of other things in his organization around the idea of the software solution to really take advantage of your idea.

Software development is a difficult undertaking. It is a risky and expensive business that requires a lot of experience and knowledge. Anyone can tinker with code and get something done. It is not difficult to learn how to write a script or even a Java program (or whatever other language one might choose). However, the development of a maintainable software solution that solves a business problem in the right way is a totally different thing.

By keeping software development of any dimension – if you write one line of code, you are basically already doing it – in-house, you have made the decision to learn how to develop software. As with any learning it will take time to master the subject. And while you learn a subject, you shouldn’t be delivering any critical work products created using the subject of your studies. Plus – and that’s more important in a business context – all that learning takes a lot of time. While you learn your competition may be working on the implementation of a similar idea and in the end succeed at executing their idea while you are still learning how to execute your own.

“We hire qualified software developers” I hear you say. Really? How can you know who is qualified? How can you judge someone’s skill without knowing much about their field? If you still want to keep development in-house, the best you can do is to hire a qualified advisor so that this person basically sets up your internal software development shop. But are you prepared to spend the money that such a venture requires. You are basically creating another company from scratch. And for how long? How will that new company – you may call it “department” – live?

I think that unless you are willing to transform your company into a software company you should find a qualified software development company and let these guys do their job. It is much easier to figure out who has successfully created software you like by looking at what they did for other clients than to build an organization from scratch.

Written by Stephan Schwab

February 24, 2012 at 3:20 pm

Posted in Thoughts

One Response

Subscribe to comments with RSS.

  1. You make some compelling arguments Stephan. I guess I’d characterize it (perhaps too) simply as “focus on your knitting and outsource the rest”.
    Don’t hire cleaners for your non-cleaning biz; contract a cleaning firm.
    Don’t hire accountants for your non-accounting firm; use an accounting firm.
    Don’t hire software developers for your non-software firm; outsource the development.

    The classic question is “make or buy”. I think a better model for software development must be somewhere in between. Truth is – it’s not whether you *are* a software firm or not. It’s whether you garner a large portion of your competitive advantage from software. Many firms fall into this latter camp, and it would behoove them to develop their talent rather than relegating it to outside firms.

    I accept your premise that most non-software companies aren’t very good at hiring IT folks. There are many reasons for this, not the least of which is that maintaining existing software (a large part of the work in a non-software IT organization) is not very sexy work and perhaps not that attractive to the best talent, who are probably more interested in working in new technologies. When the greenfield gets brown, it gets boring, and they’d rather do something else. So they take their talents (and their knowledge) elsewhere. Many of the software dev “boutiques” don’t do maintenance because they can’t attract the talent they need when there’s a possibility of “just” doing maintenance.

    I argue that a large part of the asset you form in developing software is the institutional memory around the development as it progresses that allows for ease of maintenance and enhancement over time. It’s not like cleaning, with a smooth ramp up (“where do you keep the vacuum cleaner?”) or perhaps a little less smooth in accounting (“I need to review the past couple of years of tax returns first”). Understanding a code base is quite a bit more difficult than writing code in the first place. As a software consultant, I presume you won’t disagree here.

    If the firm with whom you are outsourcing your development is not interested in the longer term, more mundane aspects of maintenance and upkeep, you absorb risk. Yes, the code works, but “what the heck is this LINQ stuff and where do I find the talent to understand it who is willing to do brownfield dev?”. Or… “hmmm… where do I find a Ruby on Rails developer who wants to work for a reasonable price doing maintenance and small enhancements?”.

    If your outsourcing firm *is* willing to do maintenance then you get, perhaps, locked into a relationship and lose your buying power. (Think Y2K). You also get a firm that has, potentially, less “cutting edge” talent (willing to do maintenance).

    Also, without significant organizational technical oversight from your firm, when you outsource software dev, you run the risk of technical decisions that make your code base less maintainable by the brownfield talent that you will eventually need.

    Respectfully,
    Adrian

    Adrian Wible (@awible)

    April 4, 2012 at 2:59 pm


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 138 other followers