I am an application developer/consultant by profession and part of my work involves programming systems. I have been doing this for over 10 years now and I have often wondered, what is it that keeps me going.
I have met quite a few professionals from the software industry who are motivated by the monetary gains by being in the industry. While this is true, here is my view what are more important reasons to be a programmer, and what gives me joy!
Challenging - there are always boundaries to be pushed. Programming is an intellectual task, the more one masters it, the more one discovers about the next set of problems. The world is changing around us and I find that there are enough avenues to explore.
Fun - There are often more than one way of doing something, and it is always interesting to learn new techniques. Languages evolve, and so do paradigms. The element of possibility is something that always surprises me. It is also a source of serendipitous learning for me.
Intense - I have lost count of occassions when I have stayed up till the wee hours of the night hacking, often because I lost track of time. Despite being such, it is a great experience. Hackathons are great examples of intense programming.
Imagination - Programming requires one to be imaginative, in order to keep enjoying it. The choice of problems and also the choice of the solutions all require a good level of imagination. Ideas evolve as a result of this imagination.
Creativity - not be constrained by traditional approaches, but keep looking for innovative ways to work. Computer science is one of the fortunate fields with low cost of failure! We should exploit it.
Passion - take a task to completion. While a software project is very easy and cheap to start, it is also one of the fields with most abandoned/half-worked ideas and projects. It takes real passion to take things to completion.
Programming gives a sense of…
Achievement - when one sees his/her creation in action. It is often a case where a programmer takes an idea/problem and uses his/her skill to put the idea into a working entity.
Satisfaction - when one sees his/her idea being used by another (or even oneself) - a whole community of open-source developers are motivated by this.
Enlightenment - as there is always enough for any programmer to learn. The technology is moving forward, and what we have seen over the time is the problems that technology can solve have also been expanding.