About Software Development in Companies, Communities and the Academia

No Comments

The purpose of this article is to line out some of the software development related peculiarities of the 3 types of institutions.

For-profit companies can fund the project, to a certain extent, but often ship crap, because clients pay for functionality and are not able to evaluate the reliability of the software. Reliability being the reliability to hackers (the IT security stuff), bigger amount of concurrent users, bigger data sets (the algorithmic complexity, data transfers, etc.), hardware amortization (portability, administration topics), etc. Unreliable technology checks out beautify at acceptance testing, but leaves the clients in trouble after a few years. The side-effect is that flaws tend to accumulate, specially design flaws. The flaws, specially design flaws, effectively render the project useless in the long run.

Community driven projects can afford the quality, because they do not have to ship a flawed product by some pre-determined deadline, but the main problem with the Community projects is that software developers need money to live and hobby development can effectively take place only during week-ends, which many people prefer to spend with their families and conduct essential house-work.

The Academia is financed by the number of references to the scientific articles. Therefore, the implementations (of software) that the Academia produces has a focus on novel algorithms and mathematics rather than the ability to use the novel parts in software that depends on prior works, for example, prior academic projects, the ability to use existing images, videos, fonts, databases, etc. The Academia just does not care, whether the software that they produce is usable as a component in works that depend on more than one software component or has to support real-life data, like all characters, practical numerical values, etc.

I have to admit that I have not figured out, why the Academia does not generally apply the thought that if they produce a novel component that is easy to integrate to a commercial project, then the scientific article that describes the novel component receives the attention of people, who might advance the novel component and list the scientific article as a reference in their own academic and commercial works.

Interestingly, the more forth-thinking companies have figured out that it makes business sense to secure the maintenance and availability of the technology that is crucial to their business by financing open source, community backed, projects.

One philosophical aspect of technology development is, which operation serves what other operation. Is the technology development in the service of business or, vice versa, the business in the service of technology development. For economists, there seems to be only one option: IT, technology development, is financed to serve business and, if financially justified, technology development, research results, software code, etc. is scrapped in favor of business, the bottom line. For people, who can value human life, non-parasitic human relations, reduction of human suffering more than money, it's vice versa: business is in the service of technology development. Business, including profit opportunities, are sacrificed in favor of research results, technology proliferation. Examples: various open source movements, public cource-ware, public anti patent-troll patent pools, etc.

In terms of the evolution of programming languages, new programming languages are adapted and old ones dismissed due to some problem that the new technologies solve and the old ones do not. Modernization of old technology, for example, a programming language and its libraries, is conducted by making it possible to cheaply solve the newly emerged problem with the old technology. However, if the update is fundamentally not possible, like it is with the text processing software from the 7-bit characters era, the old technology has to be dumped. As the cliché goes: the more forward thinking the design, the longer the life of the technology and longer-lasting the opportunity to gather both, monetary and non-monetary, returns on the investment.

Comments are closed for this post