Why do I like to create Software?

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.

maslow_hier.png

Top 5 things I will miss from India

I will be leaving for US in another 2 days. As I grapple with last minute things and battle the ebb of emotions within me, I realize that there are some things that I am going to miss. My stay in India was for almost 9 months and were filled with many memorable moments. As I look back, this stay here has caused some great changes within me which I welcome and adorn. So, here are my top 5 things that I am going to miss from India.

1. Family: I am going miss all the love, affection and care of my family. These 9 months passed away as a breeze only because I was loved so much here. My relatives love me, respect me and look up to me. It was exciting to be with them for a long stretch. One of the thing which was nice for me was – this time I didn’t get sucked up into any of the dramas. I am going to miss all the love, affection and care of my family.

2. Food: No where would I get food like I do at my home here. My mother is the best cook in the world. I love the food and my mom shows her love towards me through cooking amazing curries. It is also so easy to get some specialized food items outside easily and cheap in India. But I loved my home cooked food as it’s more healthier than outside and I would definitely miss the food.

3. Friends: I never thought I would put this under this list 3 months back. But now it’s a different scenario. I will miss the friends I made in the past 8 months. Some I kinda played mentor and I am looking forward to how their career unfolds. Some I had fun with, I am going to miss those Indian drink sessions. I am also going to miss some very quality tech discussions with Ratheesh. In the past few weeks, I realized that we both have some very close interests in some tech areas and I wish I came to know about this earlier. I am gonna miss having those tech conversations.

4. Color: It’s ironic that I am leaving a day after “Holi” (Festival of Colors). India is much more colorful than US. In US I find only shades of gray and the most stark color would be purple, that too if you live in Berkeley. Here color plays a major cultural role in people’s life. I am kinda used to see a lot of varied colors around me now. It’s going to take some time to get used to subtle and dull colors. I am going to miss the colors around me.

5 . Babies: Not mine! Even though I get so tired and sometimes very crazy tired by my nephews, but I loved spending time with them. Watching them learn to walk, watching them following me like little ducks, watching them learn to say words was an amazing experience. I realized that the first skill which babies learn is “On/Off”. It’s amazing to watch them grow and see how their minds develops. I had so much fun every day playing with them. I am going to miss them terribly.

Stage Actors Vs. Backstage Crew

The other day I was having a chat with one of the very bright colleagues of mine. He mentioned something that stuck with me and kind gave me a big picture of what I have been thinking of. He mentioned about how on a broader scale job skills are divided. I am currently looking for job and also trying to get into a career which not only would be challenging but also deeply meaningful to me. What he mentioned kinda gave me a picture of what I should be looking for in an Ideal Job. Ok, here is the scoop on the story.

There are 2 kinds of job skills – to make it more analogous, let’s consider Theater performances. You have people who perform various roles on the stage and then there is a whole crew which makes the show happen behind the scenes. Now if we generalize we can cast them in basically 2 groups(very broad).

  1. Stage actors
  2. Backstage crew

So, in the area of job skills – Stage actors are the ones that deal basically with one idea – ‘CRUDding on the client data‘(TM). All these guys do is to take the content which gets created or exists and show it to client in various ways so that it’s easy for the client to modify and maintain the data. Irrespective of job descriptions and technology used almost all of the people in this bucket(Stage Actors) do this perennial task. Your American Idol in this area would be DHH

Backstage crew are the ones who deal with ‘In-Memory computation‘. These are the people who pull the strings (or threads, or processes). These are the experts of code optimizations and innovative algorithm designers. These people make the machine do all the grunt work using automation and make it work the way they want it to be. Your American Idol in this area would be ZSFA

A simple example would be of Facebook. When it started, Facebook is nothing but a bunch of PHP files and MySQL database. The stage actors did a great job of making it popular, but then when it started to have millions of page hits – this actually made the expert backstage crew to step in and write those smart programs that can deal with those millions of hits. In the early stage the backstage crew was present too but their role was not that prominent, in the later stage the stage actors are still there but their role has become one of the important role, not just the only important role.

Serendipity again I guess, it so happened the day we talked about this – Steve Yegge came out with his stunning post of ‘Get that job at Google‘. If you carefully analyze what he says or the skill set he is looking for, he is actually referring to the back stage crew guys.

So what can I do to advance my career of 7+ years which I spent in ‘CRUDding with client data’? I took the clue from Steve and got myself 2 books.

  1. Introduction to Algorithms
  2. Algorithm Design Manual

As I go through these books, I realize they have a deep learning curve and probably it’s a good thing. You just don’t get to become a stage director (part of backstage crew) over night. I am going to invest my time and energy and see where it goes. I already enjoyed couple of cool moments when I try to implement some of the ideas in those books in Ruby code.

Also I have decided to learn Erlang. I think that learning a functional language actually twists my brain cells in such a way that I would end up being more creative and start to think about computation in very different terms. In addition to that I am going ahead with Flex learning too. The reason why I love Flex is that it gives super wings to my programming imagination. I can actually write Actionscript code and generate a visual way of saying things.

My immediate idea would be take for example – take binary search, implement it in Ruby or Erlang and then write a program in Flex which would visually follow, in slow motion how binary search works and shows it in the browser for the user! Now that’s what I call complete learning.

Note: The credit goes to Ratheesh for discussing with me the pattern he saw. I added in more of my flavor to it.

Muslim Tomb & Hindu Priest

Last weekend we all went to my Grand parent’s place for 4 days. As a part of the ritual, I was supposed to don a hat of a barber (or hold a scissor) and cut my nephew’s hair for the first time. It’s a well known thing in India that a maternal uncle should cut his nephew’s/niece’s hair for the first time. Thank God it’s only one time! It is not as simple as it sounds. This act is usually associated with a holy place. Meaning someone in the family would make a deal with God(TM) that they will visit so and so holy place to offer the hair.

So, in this case it was my nephew’s Grand mother (father’s side) who cut the deal. It was in a “Darga” (Tomb of a holy person) in a very remote village called “Bodapadu”. Yes, we don’t have any qualms about visiting tombs and offering hairs – they could also be used incidentally for tourism purpose for ya all white people.

Anyhow, as we are Muslims – there is a strict code in Muslim law (I haven’t studied it but heard about this taboo a lot many times) that we are not supposed to visit any tombs as Islam is all against with Idolization of our pithy worldly objects. So, we broke that rule. But usually in India all these tombs (the holy ones of course) are all an offshoot of “Sufism” sect. They do belong to Islamic saints but come from a sect where it’s ok to have a tombs built and adorned for you. But a lot of Muslims don’t understand that. There is actually no reference made to Sufism, except that it’s just called plain old wrong. If you think we freak out with Tombs wait till we see the whirling dervishes!

So we broke the rule eh and we traveled to this remote place with hair full of nephews. What shocked me once I got there was – how this place is maintained. It’s all maintained by Hindus! Shocking. It’s gets more shocking – the priests’ of this tomb are actually women! Did you get jaw dropped yet? If not there is one more shocker – all those women are widowed. Oh my.

To put things in perspective for people who are not familiar with India. Here are the steps.

  1. Imagine you go to Vatican to see Pope
  2. You are one of those million people waiting to see ‘him’
  3. Now you are shocked because the pope is actually a woman
  4. As you try to wiggle out from your shock, you also realize that pope is actually a ‘African-American’ woman.
  5. Oooh you say, then you are told that she is actually Gay!

So what are you thinking now? I am sure you must be saying, someone wake me out of this dream. It was something similar to me when I saw a bunch of hindu, widowed, women are playing the act of priests for a Muslim holy saint. Now this is not so un-usual in India. Shirdi Sai Baba a holy saint from Shirdi is actually revered and prayed not only by Muslims, Hindus but also from various religion people.

I was quite amused by the surprise I got. I think Indians in general has some high tolerance capacity for other religions than theirs.

As to my nephew’s hair cut. It went great. His dad fed him chocolates and I cut his hair. So, here is the cutie:

dsc_0009.jpg

Here is me in action:

100_5070.jpg

And after 5 snickers, a lot of cajoling, a barber, a holy place, 15 relatives and some crying here is the outcome – 1 clean tonsured head with some Sandal wood paste on it. Priceless.

100_5120.jpg

Bricks and Sheep

I find two aspects of Indian system that are very disturbing to me. I try to tell about it to everyone I come across here in India, but not everyone understands it or sees it the way I see it. Hear me out.

1. Bricks – The Educational system: Whenever I think of the Educational system and the IT training system in India, it reminds me of that song “another brick in the wall“. The system just churns out bricks after bricks. Same studies, curriculum and no creativity. I am more close to IT training system here, so I want to pick out an example from there.

Recently I happen to go to the IT training capital of Hyderabad – Ameerpet. I was there to checkout Adobe’s Flex training. I was shocked to see what has happened to the place. The place is filled with posters and banners – everywhere about all the technology training they are offering. The place is filled with pamphlets. Oh, let me correct myself – the place is ‘littered’ with pamphlets. All the time I was there, I was actually walking on them. People just randomly give out details of IT training in those pamphlets. When some guy offered me one, I said no thanks and you should look at his face. He was shocked to see some new response from people. No one there says no to the junk that gets handed over. They just take it and drop it right there on the street!

So, anyhow my point is not about the junk yard IT training. It’s about how all these million training institutes are giving the same training and churning out same damn bricks. A typical Indian guy comes out of college and heads straight to one of these institutes. This is the place where his American dreams are crafted and sharpened (Another blog post on American dreams later) He learns some course which is in hype and everyone else is learning. Putting in no love in what he does. Later enters the market where everyone else and their mom has the same skill set he has.

There is no differentiation. There is no creativity. The training institutes makes a lot of money. The trainers actually mint money. If the trainer is somewhat good, then there is a queue for his classes. I used to attend a class where there were 1000+ students in one class. We used to watch the trainer in a TV sitting in some 50th row. The trainer also can get weird with their hubris – once I attended a very popular class on EJB (don’t bother if you don’t know what it is – the world doesn’t care) where the trainer came to class drunk! He did a great job of lecturing though.

So, my point is – almost all the training institutes do the same old training and make a lot of money. The end result is we have a lot of Indian techie population who are trained in same things. There is a reason for these bricks and that’s my second point.

2. Sheep – The herd mentality of Indians: At my job I tend to mingle with everyone. I talk to almost everyone and check what they do and how they are doing whatever they are doing. I try to talk to young people who joined the company recently and ask them questions as to what they want to become. I don’t blame them for not knowing what they want, but I do feel uncomfortable by the way they are thinking.

These guys, most of them are in IT field because:

  1. Someone told them that there is more money in it.
  2. Their cousin did it.
  3. It’s cool to sit in front of a computer all day (You can browse!)
  4. Most frequent and important reason – Everyone else is doing it.

I feel so sorry for them. All these sheep that are coming in to IT world are just going to be some tech slaves to someone in some corner of the world. Not many of them are in Tech field because they actually love it. Very few and very rare to find a non-sheep in there. These guys just blindly follow what others are doing. They have some ideas about how they do “follow the often followed path”. Everyone thinks that they are doing it different, but frigging no. They just think that they do, but they are just following someone in the tech field.

When they ask me questions about my career and my life, I always tell them that I always tried to differentiate. That’s how I got so far. I always wanted to stand out in my field. So, I end up learning different language other than Java (gasp!). I try to read people, software management books even though I am not doing management actively (gasp!). I try to draw up my thoughts, ideas etc on white paper rather than typing the code first (gasp!, you should look at my school exam papers – they are filled with my creative art. Hehe)

I believe we are all unique. If God intended or made us same then we all would be carpenters – Hint: Jesus. But nope. He made us unique. It means that we as human beings, every one of us,has something in us which is so unique that there exists nothing else like that in this universe. It’s our job to find that out and just enhance it. Viola. The world would love you for just doing that. To follow some dumb, rotten well followed path means to ignore the uniqueness within us and disrespect the uniqueness that Universe has bestowed upon us.

My unique interests are Technology, Software, Economics, Spirituality, Cognitive Science – all mixed up together. I add a little of all of the above when I write code or pick out a language to learn.

So, coming back to sheep. This herd mentality actually hurts companies, teams, even our country. These sheep produce crappy software, crappy team management etc., because they are not in the business because they love it but someone else has led them there. I know a lot of guys, who actually, literally cried in front of me because they couldn’t work on Java! They were frigging working on far more advanced projects and technolgy than Java. But they were whining about not being able to work on Java. Why? Because their friends we able to go to US of A because they knew Java. Phew! It’s like their hands are in India and heads are in US.

So, I conclude:

Sheep Mentality + Brick Training == One nation of followers

If you think seriously, so far India hasn’t done anything pioneering in Software/Technology even after having so many tech aware people. We are all good followers, but never make good leaders. I think it has something to do with those 400 years British ruled us. The imperialistic mind tend to follow instructions a lot than making it’s own rules. We lost it so much that now we have to learn Ayurveda from Westerners. We are a very good nation for BPO work. And if you come across any great leader in India, just look back and see where the person did his/her education or work in the past – I bet it’s some western country. Don’t believe me? Checkout Gandhi’s history!

So I end this with one last thing, if we ever do a evolution chart for Indian Tech people it would be something like this:

Brick -> Sheep Evolution

Stupid Internet Blocking

Recently our company woke up to a revelation that Internet browsing is affecting the productivity of the developers. Fair enough. They have every right to decide on that. But I really get annoyed how it has been handled. I go to work one day and can’t access Internet. I think may be it’s down so I send out a nice email asking if the Internet is down. The IT people confirm it is. So I do some local work and pass away my time. But later I see people accessing Internet and then I start to get emails from my team basically asking me to enable Internet for them. I am a little confused as I am under the impression that the Internet is down.

Upon checking the IT people change the tune now. The guy just comes to my computer and configures it to a proxy server. So, I had to figure it out myself that they are curtailing Internet access.  There is no frigging policy on it. There is no email sent to everyone about it. It’s just on a need a to know basis. God forbid we let everyone know that we are using a proxy to use Internet. OOH.

It’s so typical of an organization. To totally mis-trust the employees and treat them as stock animals. No one complains. They just go along with IT person’s proxy setup. But everyone is secretly trying to figure out to over come it. The company is dealing with Tech people – we are not dumb nuts. Everyone has a way to circumvent it. A lot of rebel heroes are born out of no where who guide everyone else to by pass the blocks on Internet.

If you want anything to be get done, the best and surest way to do is to make the person want to do it. If you impose it secretly and then have no policy or no intimation it then it’s just going to waste more time of the employees. I personally think that if the Management had just sent an email to everyone telling them why we are having a block on Internet and why the company takes productivity seriously – then it would have been in such a positive spirit. Now it’s all about breaking the wall in front of us. Totally opposite attitude of what Management expects.

And you would think that the guys who configured proxy and blocks are bright enough. They say we have only some allowable timings for browsing. Guess what it doesn’t work! It’s a block on browsing all day and all night.

They still wonder how I get my gmail?

Way to Mastery

genius.jpg

1. Un-Conscious In-Competence: The Ignorance is bliss place. We are not aware of our incompetency.

2. Conscious In-Competence: The Insecurity land. We realize how unprepared we are and how ignorant we are. This is the place where all the newbies drop off or give up. This is the phase where life is showing you the mirror in your face.

3. Conscious Competence: The Knowledge is Power land. We are aware of our practice and goals.

4. Un-Conscious Competence: The Mastery land. The Genius level. Our skills become a habit. Woot Woot.