I wrote my first line of code when I was 19, maybe 20. It ended up being a significant step in my professional development, but at the time, I needed to pass a single class.
I was a civil engineering student, and we had to take a course called "Engineering Computing". The class was taught by the most notoriously difficult to please professor and was generally thought of as an enormous hurdle you had to get over to get back to normal engineering classes. I don't think many of us took it seriously, except as something we needed to survive. This approach perplexes me now, but it is how we saw things at the time.
We worked with MATlab, which is not how I would teach it if they let me teach the class today. On a related note, University of the Pacific, let me teach this class as an adjunct and everyone will learn Python! We had to do all of our work in the computer lab because we didn't have individual MATLab licenses. (Open source is amazing y'all, if only I had known).
But even after jumping through those hoops, when I sat down to write a program It. Was. Magic.
I now know that there was a lot that was abstracted away from me. A lot of things were going on under the hood to make my programs work. But at the time, writing a program felt like speaking things into existence. X equaled 5 because I had declared it so and there was evening and there was morning, the first day.
I don't think I ever took another class that produced such a visceral reaction of surprise, joy, and delight. It didn't change my course immediately though. I finished the class, and went back to my "normal" civil engineering curriculum. I didn't feel like a "real programmer" because we had used MATLab and the mechanical engineers wrote programs in C++. They were real programmers, and I had enjoyed my vacation in Engineering Computing. Oh the stories we tell ourselves. Oh the assumptions we leave un-examined.
Fast forwarding a lot, but coding found its way back to me. After five years of programming professionally, and close to fifteen years since my semester in Engineering Computing, I keep coming back to a few things.
First, that there is magic and creativity in writing code. It can sometimes be a slog, but there is truly something special writing code and watching it come to life. You write, and something happens. That will always be cool.
Second, that I have to examine my assumptions–about why I write code, about what it means for my future, about how I use it to contribute to the world, and about its limitations. Because there are limits and I never want to forget or ignore important work that goes on outside of the liminal space of my text editor.
Third, that I never want to just code. Though, I don't really think anyone does just code. We work on teams, we plan, we triage problems, and more.
I enjoy my work in developer relations where I get to wear a whole bunch of hats. I do fun things like give a talk in which I address the failures at Jurassic Park or hack an app my cat wrote. And there is also a lot of behind the scenes stuff, like working with product, business development, and sometimes people and marketing teams. And yes, I write code. Sometimes at work, sometimes just for fun.
In the end, the reason I like being a developer is very similar to why I liked college, and why I liked my Engineering Computing class. I get to learn all the time, whether it is about software security, or being a better public speaker, or machine learning. And sometimes, it is magic.