Programming Essay

Proper, conspicuous and professional design is an art and not a science. The essence of developing an effective program lies not only in the need to meet the user interface requirements, but also on the need to enhance efficiency and achieve effectiveness. Therefore, prior to embarking on programming design, it is paramount to grasp the design principles (Brooks, n.d.). Functional and non-functional attributes of a program are highly influenced by its design. The fundamental reason of inculcating design principles is to reduce the cost of development.
In the development life cycle of a software, the design is a phase that is of crucial importance as it stipulates the direction to be followed by the software development. It is the design phase of programming that brings out the craftsmanship in the field. Artists aim at keeping things simple and straight forward. One of the basic rules of design is keeping things simple and stupid (KISS). Avoiding complexity and sticking to simplicity is the key to efficient design. In addition to this, the abstraction principle further supports the art of programming as an art since significant pieces of program functionality are only implemented once. Artistically, an element should not consist of unwanted elements that are not required. In a similar manner, programming design principles propagate that one should avoid adding unwanted functionality in a system. In a nutshell, the application of design principles enhances the elimination of redundancy as they offer advice on the need to eliminate unwanted repetition (Brooks, n.d.).
Lastly, the open-closed principle rules that the entities in the system such as classes, functions and modules be open for extension but closed for modification. The policy provides an adequate similarity with art since a masterpiece work of art has only one author and cannot be replicated (Brooks, n.d.). If programming were implemented as a science and not an art, then reuse of code would not be promoted. However, the proper design promotes code reuse which saves time and cost significantly and enables the construction of robust systems. For these reasons, the design serves as the key to making shorter programs.

Brooks, F. The mythical man-month.