I’ve been curious about technology for as long as I can remember. Before I knew what software engineering was, I was already wondering what was happening behind the screen, how a browser knew where to take me, how an app responded the instant I touched something, how computers on opposite sides of the world could talk to each other through the internet. I didn’t have the vocabulary for any of it yet. I just knew I wanted to understand how it worked.
I grew up in Halifax, Nova Scotia, until I was eight, when my family moved to Qatar. I finished school there before coming back to Canada on my own for university at McMaster in Hamilton. By then, I finally had names for the things I had spent years being curious about, and when it came time to choose an engineering stream, software was the one I kept coming back to.
There was something different about it. With most kinds of engineering, building something meaningful seemed to require equipment, materials, labs, or factories. With software, I could sit down with a laptop, what I knew, what I was willing to learn, and probably a few dozen Google searches, and build something that could eventually end up in somebody else’s hands. A website. An app. A system running somewhere in the background. The distance between an idea and something real felt unusually short, and that fascinated me.
My timing also made learning software engineering a little strange in the best possible way. I started university just as generative AI was becoming mainstream. ChatGPT appeared near the beginning of my degree, and while we were learning data structures, algorithms, databases, operating systems, architecture, and all the fundamentals software engineers have traditionally learned, AI was improving beside us at an almost ridiculous pace.
Every year, the tools changed. Then the conversations changed. Eventually the curriculum started changing too. Courses began incorporating AI, new AI focused classes appeared, and the question slowly shifted from “Can these models actually write useful software?” to “What does it mean to learn software engineering when they can?”
Getting to watch that transition happen while I was still learning the fundamentals has shaped how I think about the field. Sometimes I think my cohort sits in an unusual middle ground. We were early enough that our education was still built heavily around understanding how software works from the bottom up, but late enough that AI was part of our engineering lives almost from the beginning.
And I’m grateful for that.
Because the thing I value most about my education isn’t knowing a particular framework, language, or tool. Those change constantly. It’s having enough of the fundamentals to pick up the next one quickly.
I’m not going to pretend I’m the person who knows the most in every room. I probably won’t be. What I trust about myself is that I can learn. Give me a system I haven’t seen before, a codebase I don’t understand yet, or a problem that sits outside what I already know, and I’m comfortable starting from “I don’t know” and working my way toward understanding it.
That is why I value the fundamentals so much. Languages change. Frameworks come and go. The way we build software will keep evolving. But understanding how systems fit together, how data moves, how abstractions work, and how to break an unfamiliar problem into smaller ones gives you something much more durable. It gives you the ability to adapt.
I think that is also why I am comfortable with how quickly the field is changing. I do not expect the tools I use today to be the tools I use ten years from now. I expect to keep learning new ones.
The tools will change. AI will probably make them change even faster. What I want to carry with me is the ability to understand what is underneath them, learn what comes next, and use it to build something useful.
I got into software because I wanted to understand how technology worked. I stayed because once you understand enough of the pieces, you can start putting them together yourself.
That is still the part I enjoy most.