subject: A Comparison On Empirical And Rational Software Development [print this page] Introduction Introduction
The essence of software development lies in the translation of theories, ideas and concepts into structured machine code. It is the translation of knowledge from the abstract to the tangible. In this respect, it is important to understand how this knowledge is gained and how it evolves. There are 2 views regarding this - Rationalism and Empiricism.
Rationalism vs. Empiricism: Fundamental differences
Lets look at the Rationalist perspective first. Rationalists claim that all knowledge is gained from Reason. They are of the opinion that our knowledge is gained a priori, independent of experience. It evolves naturally from our sense of rationalism or reasoning. On the other hand, empiricists claim that experience is the fountainhead of all our concepts and knowledge. So rationalists stumble upon a theory and then search for the evidence to support it. Empiricists, on the other hand, gather evidence first, and then builds upon it to arrive at a theory. The most important question facing both is: How do we know that our theory is true knowledge and not a mere conjecture?
Different applications
Rationalism and empiricism, both the schools of thought, have various degrees of success in different areas:
Mathematics is a field where the rationalists triumph because all the complex branches and theories are deducted logically from a few intuitive basic premises
Natural sciences, when attempting to explain dynamic complex systems, make use of both rationalism and empiricism. Here, empirical observations and experiments are combined with rational hypotheses and predictions
Social sciences, politics, economics are generally unsuitable for rationalist approaches. However, the application of empirical principles in this field is not entirely free from problems because it is difficult to make comprehensive social experiments and deduct from them any true knowledge and theory about human groups and their societies
What view does work better for software development?
In the realm of software development services, rationalists would prefer developing complete concepts and knowledge behind the software system using intuition, logic and creative insights before starting to write the program. The empiricists, on the other hand, would first dive into experiments, programming and deriving early practical conclusions, and then build their knowledge based on this experience.
It is widely believed that software development is mostly empirical in nature. Rationalism is useful in narrow areas of the system development, e.g. algorithms where system input and output are well defined. Within these boundaries developers can use power of their intellect to find rational and logical solution. More complex area, perspectives and relations will need more and more empirical approach.
Therefore, any effective software development company should adopt an empirical approach by:Striving for immediate and early experience to confirm ideas behind a software projectExpecting to adjust these ideas according to experienceRemaining open to discovering new ideas along the wayby: DavidJackson