Wednesday 10 December 2014

Software development is like doing art

I think the culture, the personality and so many other aspects of the people working on a software do have an effect on any parts of the software development cycles. In fact, it is not only a software but any other things human builds or invents or creates somehow has the personality influence and signs  of the builder, inventor or creator.

For example, when you get familiar with the way a famous painter paints, you can guess if a specific painting belongs to him or not because you know they way he/she thinks or works. Or in music you can see the different way of creating master pieces from two different composers in the same era. Compare the Chopin's piano work with Beethoven's in the following the first is one of the Chopin's nocturnes and shows the feelings of this composer at the time of composition:




And this one shows the feelings of Beethoven, 3rd movement of Moonlight sonata. These two pieces of music are totally different.



Programing is like art, like music, there exist many similarities. In music the composer has an idea to express and there are some regulations or limitations and with the composed music, he tries to express the idea he is thinking on it in music language. At the same time, another composer may express the same idea in another way. The difference is the way they use the instruments, notes, rests, motifs, articulations, and ... Software developers are like them, they have many options to choose, programming language, platforms, development methodology, ... and most important the way their brain work, see  the problem and find a solution.

One clear example is the way two companies build the same thing. For example an operation system of a cell phone. Compare BlackBerry phones with Apple's iPhone. They both works but they have to different aspect to build the cell-phone OS. Or compare Windows 8 and Mac OS X.

Here you see some of the most important things I think influences the software development (as well as art) which we usually don't think about them at all.

Culture 
Culture affects the way people think and see the world. So it is not surprising when you see so many differences between western Europe music compositions and the eastern ones. Although in these days we have some "cultural convergence phenomenon" because of the Internet and better communication and transformation, but it still exists and will be. This exists in software development too.

The period of time 
By "period of time" I mean the overall influence of the world at the time we build a software. In art, for example, music, we have eras like baroque, classical, romantic, 20th century ... we have the same thing in software development too. I don't know if anybody has already tried to name them, but i do remember the time when SSADM (Structured systems analysis and design method) was the only way people did development, now we mostly use some Agile methods and ... or procedural programming, object-oriented programming, functional programming and ...

Personality of the programmer or developer
This comes to the play whenever it is time to make decisions. Choosing color, drawing curves, ... in painting or choosing the instrument, note, duration and ... in music, and the same decision in programming. We human - most of the time - make our decisions by emotions not by mind this is also true when you work on a software. A high temper guy often chooses offensive options while an even-tempered one rarely chooses offensive options.

The mood
Although it is most acceptable for arts like music, painting or literature, but it does exist in software development too. If you are experiencing a bad period of your life and things don't go well, it definitely influences your decision-making system. I don't tell it is makes your decisions worse or better, but it affects your design, coding, and ... If you have been in many software projects, just take a look at the mood you were in, at the time you were working on the project and the project itself.

The job you have to do and your own taste
Sometimes an artist has the order to do something just for money! He doesn't like it at all, the result will be different than what he would do something he likes. Exactly like a software developer, you do your best if you are in a project you like it, otherwise, you just spending time on the project.