I am looking for a job right now. I have had couple of discussions with some recruiters, companies in my first week here. A couple of people asked me a very interesting question – “Why do I like to create/write software?” or in other words, why do I like to do what I do? I knew the answer to the question to some extent, but I realized that I need to look deeper to get to more core reasons. So I did my bit – journaled, meditated etc and I think now I have good enough reasons to blog about it.
So, here we go – the list of reasons “Why do I like to create Software?“.
5. Creative Canvas: Like for a painter who plays within his canvas area, like for a sculptor who dabbles with his chisel and carve out the image from stone, Software environment gives me a creative play ground where I can test out my ideas. It’s the playground for my creative self to express itself. I write programs that crash and then I make them work and once they are working fine, I make them better. I talk to myself, I try to find inspiration, I read, I discuss, I think deep until I find a solution to my problem at hand within this area of canvas. It fulfills my creative needs and gives me a satisfaction of I created something new.
4. Problem Solving: Software is a very specific instance of problem solving. In this area I can apply my problem solving skills which are generic to the context of software. “Breaking it down”, “Problem re-statement”etc problem solving tools can equally be applied to Software and the outcome or result of those techniques is most of the time immediate. So, not only it’s sharpens my problem solving skills but it provides feedback and lets me improve my skills in that area.
3. Fun: Let’s me just admit, if it weren’t fun I would have never been in Software field at all. This process of taking up a problem or task, thinking about it, applying my creativity to it, trying out a solution, gathering feedback, re-trying the solution, learning, perfecting the solution – is an immensely gratifying as well as a fun filled process. I always imagine myself as a 5 year old kid with a paint brush, having fun with what I am doing. What I create may not solve world hunger, but it’s unique to me, it came from me, it’s an identity for me and it gives me a perspective of where I stand out in this world.
2. Interaction: It’s not any fun to write software inside an Igloo. It’s no fun to write software where I use the same solution again and again. Having other people who are also writing software around me and interacting with them makes it worthy. I realized (about myself) that my learning accelerates when I have a very quality technical interaction with other quality software people. Learning by reading, practicing comes next. Interacting, discussing, talking it loud about any software topic with others is such a creative process. It enhances my point of views and makes me a better software developer. I take back all those learning and try to adopt them in my daily programming.
1. Greater Good: This is a little tricky to explain. I would love to be a part of team which is solving world’s biggest problems – like poverty, global warming etc. But I also understand my position and purpose in life. So, I try to look at the work I do and think of what ‘need’, is my software fulfilling?. I am not big on bashing corporates for the sake of non-profits. It would be silly to do that. A lot of Open source zealots do like to bash anything Microsoft. I think it’s silly to do that too. When you look at the bigger picture, it’s the Ying and Yang.
I try to look at whether my software is meeting the required needs in the best possible way or not. That itself is inspiring to me. Yes, my software doesn’t help global leaders to take preventive actions on eradicating poverty (yet!), but I am happy that it solves a very tricky business process and make my client’s life as easy as clicking a button (so far!). I would love to solve big problems but I always try to see, irrespective of how big or small the issue at hand is, whether what I am doing is aligned to the needs of my client. That’s greater good for me.
As I was typing this, I got a great feeling of Deja Vu. I realized that almost all the above reasons I mentioned fall in the categories/bucket of what Maslow has proposed long time back. So, I checked Maslow’ hierarchy of needs and realized how most of the reasons why I create software fit into Maslow’ hierarchy beautifully.