By Alexander Nemtsov
What is meant by correct development of programming systems? What is right? Be it a primitive “piece of cake” or an exotic product using modern RUP, XP, UML, or something still more sophisticated, when can we praise the development as correct and what are the criteria?
The leading question in the title is somewhat similar to a widely discussed holy war of Delphi’s superiority over C++ or vice versa. Quite a number of folks will ignore it and try to prove that all this sophistication is nothing but a bubble in comparison to Visual Basic, the best programming language of everything ever written with a skillful pen of a man. You know, it is so simple without any classes or something odd used to work with a strange, almost swear word UML.
Let such advocates stick to their point. It is a highly thankless task to argue a person out of their opinion. It is not our mission as well to explain which tools help create programs. We will focus on how programs are created, that is, highlight the process in question.
Fancy that! John Doe, a creative programmer, appears at work by noon but presses his computer buttons with great enthusiasm till 3 a.m. When John is in a great mood, he can develop a very sophisticated algorithm, a real thing to boast about. Being out of spirits or humor, he just plays Quake or chats with his buddies. In his free time or even hiding from all-seeing eyes of the boss John sometimes tailors small applications, say in Java/C#/Delphi (you can choose any you like and tick it). The applications are supposed to automate routine work in the accounting department where his girlfriend/grandma/friend works (go on ticking the variant you like). Avoiding any novelties and any help of testers or analysts – the latter will want to be paid, won’t they? – John gets a decent fee, which can be spent on beer with friends, and is absolutely happy about his life in spite of the crisis and all that stuff. Do you think such an approach without a line of official documentation or a UML diagram in Rational Rose or Visio,etc. is a correct way of developing programs? I believe it is, and I am going to argue it. Just go on reading. We will be back soon.
Let’s start thinking in terms of the development goal. It might be a bit unclear, but it always exists. In the case of John he did his work meaning to create a necessary product and get a deserved fee. If the fee is paid, the goal has been achieved successfully. The fee can be not only the money but also some useful experience, one’s friends’ praise, self-satisfaction with one’s wide intelligence and what not. However, the end user does not have a slightest interest in the inside of the product or the development itself. Nor are they going to distinguish between Delphi and Java. The program should work fast enough, take up modest resources and be worth the money paid. And the last but not the least – to perform all the desired functions. In such a case John will get his money.
So, John aims at getting an adequate fee enough to, say, visit a pub/restaurant/bowling/Hawaii in return for his efforts. (If you still tick variants, it is high time you went for a cleaning tissue and wiped your screen.) The fee is the indicator of good and correct work. If John does not receive any complaints or face angry customers, they can be thought of to be satisfied. So, John is on the right way.
Let’s now take a small developing company with 10-15 employees who write programs for small businesses trading goods, or furniture, or something else granted that Excel cannot cope with the amount of data to be analyzed. Should our company use object oriented programming, UML, RUP, MSF or anything else equally complicated? There is a trap here. We cannot be sure if a company needs such tools unless we consider the fee for the efforts. Suppose the customers’ needs are met. Then why invest additional money into expensive courses or buying new licensed products?
It is here when we come to the crucial question asked at the beginning – what is meant by correct software development? I guess now you are ready to answer. Correct development is the process helping the customer to get profit. The choice between waterfall or an iterative process as well as the degree of formalism and sticking to traditional processes is important only in terms of your client’s business.
The series of articles to follow will describe making a product for our needs called Sibers Meetings. You will see how the product grew from «we have a problem» phase to a «ready to use solution».
Sibers Meetings dates back to the moment Sibers expanded its power to a new city office. The office showed up with a number of problems the main being everyday communication. Using a traditional telephone soon became ineffective as public address equipment did not serve the purposes of project meetings. We realized a need in some environment for collective discussions on our customers’ projects. It became the basis for the product in question.
(to be continued)