I started writing code in grade 7, and in the 8th (in 1988!), had stitched up a desktop app (we called them "projects" back then) that presented visual + text questions - with some level of animated graphics painstakingly coded one motion at a time - to test people's knowledge of road rules and best practices. I saw a very similar - tho of course more advanced - piece of software when I took my driving license test at the DMV in Beaverton, OR.
College was one massive waste of time, except a couple of interesting "projects" we did - from a fundamental growth of knowledge point of view. Sure we picked up a lot of stuff, but didn't really connect to lots of it till much later, as we stumbled upon concept after beautiful concept.
My first job was in operating systems - initially in the command layer and later - nirvana - inside the kernel itself - of a very cutting edge OS for parallel architectures. I learnt new stuff every single day.
The next job came because of a huge jump in salary - and got boring as hell in a few weeks. We were porting massive amounts of code with very little clue to the underlying architectures, designs or even concepts. Personally, that turned out to be a good place because I couldn't bear to stay in front of the screen doing diffs on logs - so automated bits and pieces and improved my scripting skills a lot. Laziness, boredom are indeed drivers of innovation :)
An unexpected switch to an "R&D" group brought much needed activity to the brain - we were trying to solve the problem of base platform developers who needed to fix bugs reported on platforms that the code had been ported on to. Did my first major design work for this - and got to a stage where basic core dumps from one platform could be captured and migrated to the base platform, with context intact, for debugging. Filed a few patents, and this would've had a major impact if it were used for reduced triaging effort and manpower.
The next bit of "R&D" involved mapping pieces of database logic - across constructs and languages - to a common format, looking for opportunity for recommended practices, improvements and optimizations as documented in a huge number of "expert" level books and cross-compiling into an appropriate target language. Awesome work again, and we got to present this and interact with end users for whom this could be potentially very very useful. But, as is the fitrat of R&D projects, that, was that. Of course, with a coupld of more patent applications filed.
Yahoo was a huge opportunity and next step in "impact". I got into the fascinating realm of machine learning, information retrieval and text mining that I had no formal training in, yet took to - more pragmatically than most with formal training - instantly. We did a great job of our project - coming with lots of innovative ideas, techniques and solutions than solved more than just our immediate problem. It was a joyride and even had impact as it got rolled out as a new property for Yahoo India. Of course, where that went then became a question.
Another zoom-out followed as yet another R&D effort where we were trying to model visualize and deal with messages, chats, mails, blogs etc as one : conversations - with social authority and impact used for ranking. This was way before buzz/facebook etc had made an appearance. Good work again. R&D project again :)
Then Ziva happened. An amazing exciting journey that started with ideas, design, implementations, customer interfacing - but took me way beyond code. The scale of problems and impact assessment grew to envelope the software/development bit of it as one part of the solution, not the whole of it. Not that we succeeded in doing all we started to - but the neurons were pushed hard everyday, and the breadth of skills and ability to deal with fuzziness grew tremendously.
So much so that I became what I refer to as a "Product Manager". This is a much abused term and means a lot many things to a lot many people. To me its the guy who's got the 360 around a product in his head, and driving his life. Needs people to build, sell, hire etc etc - but the one who's marrying the strategic to the tactical, and keeping track of the story.
Linger is an effort at product management too. The code-writing is very different. But fundamentally, the ideas are the same. A product needs to be designed, created, tweaked continuously. The team has expanded, and the vision has grown.
What I've realized is that each plateau, there's been an urge to see if the problem solving effort made any real difference - and the next level was subconsciously desired, and found. Its not the coding, or the designs, or the rollouts that mattered. The question about what they became - or led to - eventually cropped up. Managing to score on somebody else's report card did not satisfy at all.
Is entrepreneurship the culmination of this ? Is this freedom to think, create, follow a path the ultimate path to satisfaction ? Dunno, but so far, its better, and I have found in me an urge to keep doing this despite its not insignificant costs. Amazingly, all the old rules of "hard work" (as measured), killer instinct, dog-eat-dog etc seem to not apply. Yes it still takes work and getting around a lot of procrastination - but those are by-products of a bigger desire, not drivers.
As always - "lets see how this goes".