Wednesday, January 31, 2007

Technology Indroduction: My Early Years...

I've been involved in Computer Science and Technology for my entire career, and for a good portion of my education before...

I was interested in electronics and tinkering around with Radios and Tape Players from the time I was in 5th grade. My mum, who worked in Indian Institute of Science, helped me build a 555-based flashing LED for the school science fair when I was in 6th grade. My interest in electronics remains until this day...

The first computer I wrote any software for was a Sinclair ZX Spectrum - while I was still in high school. A couple of friends and I then went on to build our own Zilog Z-80 computer. We wrote programs for these machines in Basic, and using PEEK and POKE to write stuff into memory was considered cutting-edge!

The first computer I owned was a Macintosh Plus - which was the standard-issue computer for the class of '93 at Dartmouth College. The whole concept of event-driven programming and visually appealing user interfaces was a sea-change from the low-level, command-line based, DOS programs I had written until then.

I managed to find a balance between the powerful GUI-driven paradigms of the Mac and the NeXT boxes found in the computing clusters at Dartmouth with the command-line and shell-script heavy environments of the unix accounts given to us at the computer science department, so to this day, it's nice to feel at home in both worlds.

It was here that I made my first contribution to global software - a fix in Emacs, submitted and accepted!

It was at this time I was offered an internship at Microsoft Corporation, and I had the good fortune to work on Excel 4.5 as a developer in the Charting Group. This introduced me to visual debuggers, x86 assembly code, and production-grade software engineering methodology. Very useful exposure...

I then spent a short stint at Oracle Corporation after graduating, in the Oracle Forms development team. This was my first experience using industry-strength VMS and Unix tools, and working in an environment where portability between dozens of environments was concern #1. I must say that I really didn't appreciate the experience I got there until much much later...

My big break was in 1994, when I joined Microsoft Corporation as an employee in the Microsoft Project group. Microsoft Project was one of the coolest, albeit little-known, applications in the Office group, and the team was an extremely talented and hard-working group. In a lot of ways, this was my baptism in fire, and I don't think I had a bigger influence in my career than my team lead and colleagues in those days at Microsoft.

One of the tasks I was assigned was to help sever the connections between the front and back ends of Project, so that the back end could be replaced with a powerful new custom database. This experience had me touching almost all of the grungiest parts of a version 5 application and gave me a real appreciation for solid software architecture - one of my driving passions to this day. The importance of writing clean, maintainable code within a clean, extensible architecture was driven home so forcefully that I cannot imagine working any other way. It is indeed a valuable skill to keep a balance between performance, future extensibility, maintainability and coding efficiency.

In addition to this, this was also where I learned the importance of building and maintaining a proper development environment - I became intimately acquainted with the versioning and build processes, identifying and applying software tools and hardware knowledge.

My first new software project was a project that eventually served as the prototype for SharePoint Portal. The small team that worked on this was on fire to use the collective knowledge to set the foundation for a solid product with a long future, so architectural purity became a driving design guideline. It also introduced me to XML, and gave me a serious primer on database design and usage. Again, I would only appreciate the nuances of what I learned much later...

I then moved back to India for personal reasons, and joined the fledgling Microsoft India R&D Private Limited, where I worked on what was to become Visual J#. Although some of the work I did here resulted in my first US Patent application, it was becoming clear to me that the time had come for me to move on...

In March 2000, I resigned from my post at Microsoft, bringing to a close more than 5 years with the software company. By all accounts, these were enjoyable years, where both skills and friendships were forged, and which set me up for the next part of my career...

4 comments:

inlokesh said...

Is it any wonder that you have such deep and extensive knowledge on computers and technology. Starting early and well in life gives lot of edge, I consider it to be a privilege to be working for you - Lokesh

Unknown said...

Thanks man...it's a privilege working with you as well!

Ta'fxkz said...

did you write that post yourself of did your computer do it on your behalf ???

Batman said...

Hehhehee Love the previous comment@If your computer wrote the above post.

Anyways I finally have a read up on where you possibly begun this time in chronological order(As far as you can recall , prolly you started off much earlier than you can recall)

Damn glad I met you and sure have certainly motivated me in many ways. Nice having you as a friend.

And that Nyama Choma will certainly be served sooner or later.