I grew up around technology, so I don’t have good memories of when I really “started” getting in to programming. When I was around 14, I picked up HTML and started playing around with that. I learned to make simple graphics in AppleWorks that I’d embed in those pages.
But, I do remember my first “real” app. I wrote it during the 2001–2002 school year, when I was taking trigonometry in high school. I had a TI-83+ graphing calculator and a smattering of games to play on it, but one day early on it occurred to me that I could, in theory, make my calculator do my homework for me. My homework usually consisted of endless applications of the Law of sines and Law of cosines, and the constant repetition seemed like an ideal thing to make something else do for me.
So, I dragged out the manual that came with my calculator and started creating a program that would ask for three pieces of information about a triangle (some combination of angles and sides) and would give me the rest of the information.
I iterated on this program a LOT. I remember working on my bedroom floor with graph paper, sketching out all of the interaction and (what I later learned was called) control flow. It was a lot to keep in my 15-year-old brain, and the paper helped a lot. The program was enormously helpful, but had the unfortunate side effect of making me learn the material better because of all the time I spent picking apart algorithms, than if I had just done the homework myself.
A couple years ago, I rediscovered my calculator in a box of old stuff. On a whim, I bought a data cable off Amazon, put in fresh batteries, and Lo And Behold, there was my program!
This is a really important program to me. The code itself is straight-forward (lots of
goto statements, asking for input, and then doing math and printing the result), but what it represents is so much more. First, it triggered a deeper interest in math, leading me to go off and derive a new formula related to solving triangles. But more importantly, it was the catalyst to get me really interested in programming: I had a need, and I discovered that I could make something to satisfy that need and make my life (and the lives of my classmates, who also got copies of this program) so much easier. That core epiphany has stayed with me and continues to drive me, two decades later.
So if you’re curious, I’ve put the code online. I also translated it into C to make it more readable, and so you can run it on your computer: