Showing posts with label custom software. Show all posts
Showing posts with label custom software. Show all posts

Friday, July 10, 2009

Software development business: Peculiarities in delivering results

How software development differs from other types of business? At a first glance there should be no difference whether you sell custom developed software product or some made-to-order material product. Be you a tailor or a software developer, a customer just comes to pay you for a product he/she needs, be it a shirt or an application.

Unfortunately, it’s not so simple. The difference is caused by the nature of product: Software app looks like something absolutely “unmaterial”, like an idea, just a product of somebody’s thinking process. If such, a customer at any given moment feels free to require changing of any single, big or smallish, part of it instantly. When ordering a shirt from a tailor - its model, fabric and buttons are being agreed before the work begins; and as the shirt is made, no sane customer would ever dispute, for instance, number of sleeves or would say that he/she wants a collar to be done inside the shirt. For a shirt there remains only one issue: Whether it fits or not. This becomes absolutely another thing if we speak about software: Post-requirements similar to having three sleeves or a pink collar inside the shirt, at the waist level, are quite habitual.

Okay, software app is something different to a usual material product. If so, can we judge a software app as a bespoke artwork? Unfortunately, my answer again is: No, we can’t. If you order some portrait or a landscape, you would judge the result in general terms: “I like it!” or “It’s awful!” I hardly imagine a person saying that the landscape is perfect, but that grass under the third tree if counted from the left should have been painted 1.5 inches longer. With respect to software app, you would never be surprised with similar judgment.

That is why we have requirements. Long live to them! Requirements are supposed to be if not material, but at least a written base of the agreement between the customer and the developer. However, as the work is done, and the customer comes to see the result, you might hear something like: “Wasn’t it obvious, that this button should have been in the upper right corner of the screen?! I remember exactly that in our phone call I insisted that here should be a pie-chart rather than a table!” And your feeble attempts to refer to the requirements would be repelled indignantly: “It was obvious!” or “I remember I told you!” In this case you would better have either patience of Job, or good law department, or both.

So, certainly you must use fitting formal approaches, but it's not enough. One more "must have" is your personal attitude: We should be totally and implicitly friendly to a customer. Saying ‘friendly’, I mean it. Not just routine smile or even high five (still routine, though), but fair intention to do what the customer really wants, often after helping him/her understand what he/she really wants. It’s not pure altruism: Being really good to customer you are good to yourself. No other way to success in developing bespoke software.

Monday, June 22, 2009

Software development business essentials

I am in IT business for more than 20 years already, and since 1991 I am a CTO and one of the two co-owners of the Inreco LAN software development (SD) company. It's quite a time. One day this notion has transformed into a sudden idea: why not share my experience and my thoughts about how this business lives; what are the benefits; what are the difficulties; when and how issues tend to become problems, and so on, so on. It is interesting to discuss these ideas with people who would find my notes worth reading.

So, let's go. Where to start from? Ab ovo, i.e. from the basics, from the very beginning.

Although at a first glance SD business looks easy to organize, to manage and to make money on, in reality it is a very difficult business.

It was difficult always: from the very first days when people began thinking of software as of a product, and up to our times when software is considered just an ordinary industrial object. At the beginning, software was something weird, something unusual, and it required a lot of efforts from an enthusiastic seller to open client's eyes to the benefits that might be got after a new software product is developed.

Now all this stuff about selling SD services is quite the contrary: client is able to find an existing software product for any reasonable need. In this situation, custom-made software seems to be absolutely unneeded. Like if you want to furnish your home, you just visit a store and buy furniture. Right? Yes, but not for all people and not for all possible homes. If you have some special ideas and/or some special home, what you need is custom-made furniture. More often than not, such custom-made furniture costs more than the contemporary, available at stores, however it is worth money you pay for it: this furniture is made for you exactly, and it fits your home, your situation and your style completely.

Absolutely the same is true for software: if you just need to type texts or to send e-mails, or, say, to do simple calculations, than you will be fine with some existing cheap or even free software tool. However, a person might discover a need that cannot be satisfied by existing software. For instance, one is struck by an idea of a new promising business that requires very special computer-based activities or some computer-based backing. In this case customer undoubtedly needs his/here own software adjusted to special narrow requirements. Successfully developed, this software can become a locomotive for the entire customer's business. It is not just a theory, we have a number of real examples around us, among our clients. Take, for instance, the Better World Books company: brilliant business idea and its perfect software implementation resulted in successful business.

So, the general concept of custom-developed software turns out to be absolutely viable. At the same time, the key advantage of such software, i.e. its novelty, becomes the first serious obstacle for the supporting business activities. For a customer and for a vendor, the way they move forward from their very first meeting, is much more alike R&D process rather than a routine business procedure. All this makes custom software development so interesting, so challenging and equitably so difficult.