Shyam Pather's Blog

20Aug/08Off

Software Development Meme

Some people on my team having been propagating the software development meme on their blogs. Now it's my turn.

How old were you when you started programming?
I was 10.

How did you get started in programming?
SilverSpoons It was 1987, I was living in South Africa, and one of my favorite TV shows was, Silver Spoons. Episode 7, "The Great Computer Caper" (which, I discovered to my recent delight, can still be viewed online) involved the main character (a kid, coincidentally aged about 10) "hacking" into a government database and accessing secret blueprints for a fighter jet called The Starlight 2000. This apparently involved "code breaking algorithm". I found this inspirational and was determined to achieve similar results.  

First, I needed a computer. I think I'd been talking about this with the parents for some time, but I'm not sure how the actual purchase was made to happen (no doubt, some amount of demonstration of consistent good behavior was required). Regardless, we ended up with a Commodore 64 in our home. Ours was actually the hot looking C64c, complete with tape drive, but no monitor (the TV was used instead).

My assumption when we bought this machine was that at some point my dad would learn to program it. Such things did not seem accessible to us kids. At some point after we acquired the machine and used it to play games, I borrowed a programming book from the library which offered a listing of the BASIC source code for some kind of game. I painstakingly typed the whole thing in. Twice, I think, because of an ill-timed power failure about two-thirds of the way through the first time. Regardless, the thing didn't work at all and I started reading the C64 manual to try to figure out why. After I few hours of this, I realized I was "programming" and it took off from there.

What was your first language?  
C64_startup_animiert

What was the first real program you wrote?
I think the first program that did something useful was one I wrote to help my dad analyze some data from his experiments. He was a pharmacy professor at the time and was doing research on quality assessment for emulsions (suspensions of one liquid in another e.g. oil in water). Apparently, the prevailing method for assessing the stability of the emulsion was to measure the size of the globules of the suspended liquid and produce a distribution of the number of globules of each size range. My dad's research showed that you could get a more reliable assessment by looking at the distribution of the total volume of the globules in each size range. I wrote some Pascal code to sort the globule data into size ranges and then calculate the total volume in each range. This now trival-seeming programming task resulted in the paper stating that the analysis was done "using a computer program specially developed for this study..."

What languages have you used since you started programming?
Pretty much all the standard ones you'd expect. I'm always amused when people list every language they've ever used on their resumes, so I won't do that here.

If you knew then what you know now, would you have started programming?
Yes - definitely. And I would have tried to stay a programmer, i.e. someone who spends the majority of their day programming as opposed to managing, a little longer than I did. I think I was in a hurry to move up the management chain and may have missed out on some experiences as a developer. I probably could have stayed in development 2-3 more years and still ended up in basically the same place career-wise. Regardless, I've had a lot of fun managing some amazing developers, so no regrets. 

If there is one thing you learned along the way that you would tell new developers, what would it be?  
I don't think I was intentional enough about picking the things I worked on. For a while, I was just awed by the idea of working for Microsoft and mostly was willing to do whatever came my way. When picking jobs, I didn't think much about what I would learn, what experiences I would have, what they would teach me about the business, or how they would prepare me to do what I wanted to do next.  I did have lots of fun, learned more than I could have imagined, and met some great people, but looking back (maybe this is just 20/20 hindsight) it does seem like I could have optimized my path by planning a little better and making more intentional choices about the jobs I took on.

What's the most fun you've ever had ... programming? 

Programming is the most fun when you have a tough problem to solve, a tight (maybe impossible-looking) deadline to meet, and a great group of people to work with. I've been fortunate to have had many such times in my career (and before).

One experience in particular that will always stand out for me is one of the first projects I worked on at Microsoft. It was called "Raw Channel Access" and the basic idea was to support streaming over connection-oriented network interfaces like ISDN and ATM (look where those two technologies went!) entirely in kernel mode. I was a new developer, knew nothing about networking, streaming, kernel-mode or Windows development and it took lots of late nights to get this going. I worked closely with a tester who had some interesting musical tastes and I recall that the first time we got this thing up and running, we knew it worked when we heard the song "I Like to Move It" by Zoo Gang blasting through the speakers, streamed from a machine on the other end of the room over an ATM network.