Developing software requires a wonderfully unique blend of math, science and art. Some call what we do a craft which rings true to me. All the great developers I’ve known treat everything they do with the respect an artisan would.
I sometimes worry that the modern day ubiquity of easy-to-use computers, now often through mobile and wearable devices, is making it increasingly hard to attract the next generation of developers. While developing software applications is becoming easier in many ways, there are also more layers of abstraction. While it’s easier to pick up and use a computer today, it’s also much harder to get a glimpse behind the curtain — or even a sense that there’s a curtain at all.
I consider myself lucky that I discovered my calling early in life — a true passion that also handily pays the bills. Who could ask for more in a career? Recently I’ve been thinking back on what it took for me to realize this path that I’m on. I’ve narrowed down my primary sources of inspiration into to three separate phases through my formative years.
Phase 1: Childhood Inspiration
One of my earliest memories of impressive technology was a bright red digital Timex Snoopy watch that my parents got for me on a road trip. I was probably 5 years old and this was my first watch. This device really made an impression on me because when you pressed a button, there would be a short animation of Snoopy pitching a baseball. On a watch! To be animated whenever I wanted!
In the mid ’80s, I became quite obsessed with the Casio Databank watch. Yes, the calculator watch that I’m sure many high-school kids were made fun of for wearing — thankfully my elementary school peers didn’t seem to notice or care. Although a fine feature, it wasn’t the calculator that really impressed me on this watch, it was the data storage feature — type in and access 50 short pieces of arbitrary text. This coupled with the nifty LCD display that was capable of scrolling truly readable letters and numbers across the face. I could even play around with this wonderful device during class!
I never really got into watches but it now seems clear that these two watches were quite influential in making me passionate about technology in general.
Also around this time I started being exposed to video games. My grandfather, always quite the techno-enthusiast, purchased a TI-99/4A computer. I never quite got into programming that thing (for more than 20 minutes anyway) but it was really fun playing some of the cartridge games on it including TI Invaders, Parsec (my grandmother’s favorite) and the brutally challenging Car Wars.
My daycare in grade school had a Colecovision which was totally awesome. And then one day my mom amazed me at the local K-Mart by purchasing the Nintendo Entertainment System. This thing was simply wonderful and captured so much of my attention for years. That passion for gaming eventually led to countless hours spent in various arcades and plenty of portable gaming too.
Phase 2: Teenage Tinkering
The next phase of my tech-odyssey revolved around more general purpose computers. My dad became particularly interested in the new personal computing revolution after he read an article stating basically that, as of Windows 3.0, PCs were finally affordable and easy enough to use for everyone. So he picked up a IBM Personal System/2. This thing seemed fairly weird, even at the time: super clicky keyboard, ugly beige color and loud and slow (compared to my Nintendo anyway). My dad used it for keeping books and I used it for, well, everything else. I learned the ins and outs of MS-DOS, played with the Windows 3 UI and pushed this machine to play games. It didn’t have a “real” sound card and mostly bleeped and blooped through the so-called PC speaker. I was absolutely amazed when the delightful Another World managed to play real music and sound effects.
My dad also encouraged me to take a Keyboarding class in high school and got me a “game” for the IBM, Mario Teaches Typing. Mario didn’t help much but the class was super useful. Can you accurately hit the numbers row without looking?
My next machine was a 386 clone and although it was faster and better, the kicker was the Sound Blaster multimedia kit to go with it. That set had a CD-ROM drive and some amazing Lucasarts games (Secret of Monkey Island, Loom) and I spent many hours tinkering with games that were in some ways even better than the ones I adored on the Nintendo.
I also did a bit of BBS-ing with the PS/2 which had a built in 2400 baud modem and then around ’94 got a Sportster so that I could properly connect to the internet. I can still remember fretting over the monthly fee (around $20 I think) for dial up internet. “But what will I use it for?” I can remember seriously thinking. The answer was: IRC, News groups, FTP sites and of course, the good old World Wide Web. This was before most web pages had background colors or images (things were very gray). I remember once buying a magazine that simply listed and described various web pages one might want to visit. I think I visited each of the websites that were in that magazine.
One important thing that the Net brought to me was the demoscene. I was blown away by everything produced by the Finnish group Future Crew and had to download all of their PC demos and tracker music mods. These programs truly inspired me to dabble with music tracking and graphics programming late into the night.
Basically, all of the time I spent with these two machines really opened my eyes up to what computers were capable of — including and well beyond gaming.
Phase 3: Formal Studies
I am lucky that my high school, North Toronto CI, mostly known for it’s music program had excellent computer science and mathematics programs too. I became curious about CS in 10th grade when my buddy who was fast-tracking — taking the class a year earlier than recommended — let me browse through his textbook one day. The next fall I decided to give it a shot and that led to three great years of CS in high school.
These classes were taught with a sincere passion by John Carter and Gerry Heffernan. The 11th grade class was intro to programing with Pascal, 12th grade was C with more advanced fundamentals and 13th grade was intro to C++ and OO along with independent studies. (Yes, we once had grade 13 in Ontario — a fine thing to have had).
I fondly remember spending class time discovering and playing Nibbles, a game that shipped with MS-DOS. I was also quite proud of my two big grade 13 projects. One was a fractal screensaver that did color cycling on fractal images I had generated and the program even stayed resident in memory. The other was a space shooter, the only game I’ve ever bothered writing. (Surprisingly and thankfully, I quickly learned that developing games was not my bag.)
A local software entrepreneur was looking for a few interns and reached out to my CS teacher. A buddy and I interviewed and we got part time jobs after class. This job was completely awesome. I got to learn some Windows programming using Visual Basic and I was able to play with databases (MS Access). It paid $8 an hour. Plus, after the boss went home the younger guys played hours of multiplayer Doom II on the LAN.
By the time I was applying to Universities, I was absolutely sure of my major. This confidence helped me get into my first choice, the University of Waterloo, arguably the top CS undergrad program in Canada. While I can’t say I loved most of my college courses, I did really enjoy the CS and some of the math classes I took. Some of my favorites were Graphics (SGI O2s in the darkened, private lab!), Concurrency, Compilers, Operating Systems, and Chaos & Fractals.
Not only did the University of Waterloo develop the first Math faculty in North America, but it developed the world’s largest co-op work program, which was invaluable for me. These work terms helped me pay for my degree and gave me a strong resume that ensured my first full time job. Because of all of this rich work experience I was sure that I was in both the right major and the right career.