Saturday, December 14, 2013

Experiences with code development

It all began for me when colleagues in the first company I worked in had a nickname for me - something like "internet guy". I kind of liked that mold so I decided to try it out

I did have a mold for myself before that - that of a systems developer transcending the bounds between software and hardware. The world decides, however, what it wants of you ..

So from the days of the dot com bubble and burst the dream as always been this - convert idea to code, get the money flowing, then ditch your boss and so on

The need for continuity, fear of the unknown, perceived lack of knowledge, confidence, even social taboo etc. The things responsible for me continuing in "meter down" mode, giving rides to entrepreneurs in my rickshaw, never myself going anywhere specific but putting food on my table (even if the table were already full)

However, just like life sprouts in the most surprising of places, so too does ingenuity and entrepreneurship. "Necessity" may be the mother of invention, but is there any such thing in the universe as Man without a Necessity?And so I began taking small baby steps into making entrepreneurial software that solved imagined problems.

There was the time when I worked on "jailbreaking" membership-based web-sites, enabling people to exchange profile ID's etc. I don't know where that code-base is, however, but did not miss it much as it was not a work of great genius

Then I imagined a problem -- of keeping cinemas on housefull, so a polling application to find people to fill the seats, based on demand trends. Why can we not screen older movies if that's what enough people want?

Then a comprehensive plan based on how I felt a good job-site should work. Wanted to push this thru a manager but with Zero success

However, it would be inaccurate to say that "nothing" came out of these half-arsed efforts. Some lessons I found worth noting are:
- Get your plan down pat. Build from the ground-up and mechanize the process
- Technologies like the various Server-side scripting engines and their similarity with C/C++
- natural-born resentment for frameworks (it began with VC++/MFC and continued into Java)

Before you become totally dismissive and stop reading let me say that views always evolve, and the above are VERY old views ... so dont leave just yet!

All these ventures had these in common
- It was exhausting, but a comprehensive database plan was do-able. Partly also because I was eager to apply what had been imparted to me the best (hint: it was NOT entrepreneurship, project management, innovation, or business models, or anything else that help in making a viable business plan)

- When implementing, the details would rear their ugly heads, and things such as "how should I name my variables" took up 90% of my energies. I wanted to make a "premier product" with picture-perfect code and design, but forgot that I wont be on this earth for a million years. And no way you could have convinced me, because an attempt to do so would be an attempt to talk me away from my plans and goals. Yes, being a little screwed up in the head comes with some cons

- The idea would spend several weeks, months and even years in my mind, and I developed  an iron grip for my ideas in general, never giving up on them. Eventually when I let go of an idea it would be because I could clearly see that the times have moved on, or there is something better to do, or the truth struck me strongly enough, that the idea won't fly. This very often got me thinking the same thing - if only I could more passionately critique my own idea instead of wasting my precious energy on its design, I might do a lot better

- Apart from naming variables there was also the problem of taking care of pesky side-projects like a login/authentication module and site admin and management, and database and schema backup scripts and keeping everything suitcase-ready. And then the problem of internet-space, domains, and a host of other invisibles

So what is the take-away?
- Once you select an idea, scrap it. Yes, you heard right -- just scrap it. Then select the most crucial point in the whole idea -- the point that makes your idea unique. Forget about the rest. Just forget. Because all the non-unique parts can be stolen from somewhere or gotten for free, or just outsourced to someone who has already done it before and therefore knows what s/he is doing
- In how many ways can your core idea evolve? Do you have a rich vision for it?
- Select the dumbest (to learn) technology to implement it. Get it done and move it to your de-facto production. There: now you have gone live in a single night, instead of hacking away endlessly and ultimately reaching nowhere. A lesson that has always repeated itself all my life is this: it is most pleasurable and thus productive when your creation is alive now rather than years in the making!

Ok, now it's time for me to go back to my new pet idea so good luck and bye

1 comment: