Computational Thinking + Doing

Lessons From My Computer Programming History

My nearly 30-year fascination with computer programming humbly started at a New York City public high school.

Yes … I’m dating myself. I started computer programming in the early 1990s, when personal computers (PC) were not ubiquitous, when computer programming was a thing for geeks, and before the dot-com boom made being a geek as chìc.

Let’s go through my (nearly) 30-year journey and look at the lessons learned.

Lesson #1: You don’t need anything fancy to get started.

In the early 1990s, my humble beginning as a “computer scientist” started with an IBM PS/1 with an Intel i386SX, 25 MHz processor and 2 MB of RAM. (Looking at where we are today, we have certainly reaped the benefits of Moore’s law.) That PC (which I shared with two siblings) was not considered top of the line; it actually felt like it took 10 minutes for that PC to boot up Microsoft Windows 3.1 (on top of Microsoft DOS).

In addition, my folks (who didn’t have any technology or engineering background) nudged me to study computer engineering at Thomas A. Edison High School (a public high school in Queens, New York City). The quality of education I was receiving was average (at best), but I was willing to work hard. I was hungry.

Before you get somewhere, you have to get started where you are at (ideally, today, if you haven’t done so already) and be okay without having much or knowing much when you start. I started without fancy equipment and without a fancy education.

Lesson #2: Take baby steps and go back to basics often as you evolve

As a programmer, you’ll evolve from one language to the next. Here are the programming languages I’ve learned in nearly 30 years:

  • 1992 - BASIC (high school)
  • 1993 - Pascal (high school)
  • 1994 - Machine Code (high school)
  • 1996 - C (undergraduate engineering school)
  • 1996 - C++ (undergraduate engineering school)
  • 1996 - HTML (self-taught)
  • 1997 - SQL (undergraduate engineering school)
  • 1998 - JavaScript (self-taught)
  • 1998 - Lingo (self-taught)
  • 1998 - Java (self-taught)
  • 2000 - ActionScript (self-taught)
  • 2000 - SMIL (self-taught)
  • 2003 - PHP (self-taught)
  • 2004 - CSS (self-taught)
  • 2005 - Python (self-taught)
  • 2008 - R (business school)
  • 2017 - Snap! (self-taught)
  • 2020 - Julia (graduate school)

There’s nothing wrong with taking baby steps and going back to basics often (especially when you’re stuck and frustrated). It may feel unsophisticated or not relevant in the real world, but you’d be surprised by how much of the real world is about getting the basics right. Mastering the basics helped me build true confidence.

Lesson #3: It’s a journey, not a destination

It sounds cliché, but it’s true. Change is constant. Become a lifelong learner. What you do well today can be done better in 5 years. Be prepared to adapt (remember Moore’s law).

Currently, I’m pretty excited about Julia; I’m 100% sold on Julia as the future of data science, artificial intelligence, and machine learning. But what’s popular or in-demand can quickly change, especially with momentum behind Blockchain and Web3.

Lesson #4: Learn from failing

Experiment. Intentionally do things differently. Don’t be afraid to break things. Some of the best learnings are from failures (instead of simply copying code as is).

Lesson #5: Do what inspires you

Do projects that are interesting to you! You’ll persevere through challenges (and there will be challenges) if your projects are interesting to you (and projects feel like a hobby). What is that for me? Check this out!

Applied Computing