I have been building software professionally for more than twenty years. Long enough to have watched technologies, frameworks, companies, and entire ways of building for the web come and go.
Sometime in 2027, I plan to go back to school for a master's degree in computer science.
My goal is to have it before I turn 50.
That might seem like an unusual decision at this point in my career. I am already a Principal engineer. I have written a technical book, contributed to open source for years, designed and built large systems, led engineers, and worked on AI, search, developer tooling, infrastructure, and products.
I don't need another degree to prove that I can write software.
That isn't why I want one.
I want to understand more.
There Are Still Gaps
My career in software engineering was not particularly linear.
I originally wanted to study computer science more than two decades ago. Instead, I earned a degree in Microcomputer Networking and ultimately built my career almost entirely in software (and did, virtually, zero networking).
Most of what I know about software engineering came from doing it.
I learned because there was a problem in front of me that I didn't know how to solve. I would read, experiment, break something, understand why it broke, and try again.
Do that for 26 years and you accumulate a lot of knowledge.
But experience and formal computer science are not exactly the same thing.
I can design systems because I have designed systems. I understand software architecture because I have spent years making architectural decisions and living with the consequences. I understand APIs, databases, search systems, distributed applications, deployment pipelines, and increasingly AI systems because I have built and operated them.
There is another layer underneath all of that.
Algorithms. Computation. Mathematics. Operating systems. Compilers. Machine learning. The theoretical foundations behind abstractions I have used throughout my career.
There are things I understand because I have encountered them repeatedly in practice. There are other things I know just well enough to recognize that there is considerably more underneath them. After this long in the field, that doesn't bother me.
It makes me curious.
I Don't Want Another Badge
Right now, I am looking seriously at graduate computer science programs at Arizona State University and Georgia Tech. Both offer a path to pursue this while continuing to work, which matters to me.
The institution matters too.
If I am going to invest the time and effort required to study computer science formally, I want to earn a real graduate degree from an established, accredited university with a serious computer science program.
There is no shortage of ways to collect credentials in technology today.
Online courses, certificates, certifications, badges, boot camps, and vendor-specific programs are everywhere. Some of them teach useful things, and I have certainly learned from that kind of material throughout my career.
But increasingly, those credentials feel hollow to me.
You can spend a few hours or a few weeks completing something, pass an assessment, add another badge to a profile, and move on to the next one. It may demonstrate exposure to a technology, but it isn't what I am looking for anymore.
I don't want another badge, posted and forgotten on LinkedIn after 24 hours.
I want something that requires years rather than hours. I want graduate-level courses where I cannot simply skim the material and move on. I want difficult subjects, deadlines, exams, projects, mathematics, and the uncomfortable experience of encountering something I don't understand and having to work until I do.
I want the rigor, and when I finish, I want the credential to carry the weight of that rigor.
I am not interested in checking a box with some obscure program simply because it is convenient or easy to complete. If I am going to do this, I want to earn the degree from a university I respect and one whose computer science program is taken seriously by other people in the field.
There is something particularly appealing about studying computer science now, after spending decades practicing it.
I won't be learning these subjects in a vacuum. I will be able to connect them to systems I have built, mistakes I have made, architectural decisions I have defended, and problems I am still trying to solve.
And I think I will appreciate the material differently at this point in my life than I would have at 18.
Back then, computer science would have been preparation for a career I hoped to have.
Now I would be studying it after living that career for more than two decades, with enough experience to understand why much of it matters.
AI Makes Me Want to Learn More, Not Less
There is an understandable question hanging over software engineering right now.
If AI can generate increasingly sophisticated software, why invest years becoming a better software engineer?
My reaction has been almost exactly the opposite.
AI has already changed how I work. I use it. I build with it. I have spent considerable time thinking about how AI changes software development, developer tooling, knowledge management, search, and the way engineering teams operate.
I don't believe the lesson from any of this is that understanding matters less.
I think understanding matters more.
Determining what should be built, understanding why a system behaves the way it does, recognizing when an abstraction is wrong, designing architectures that survive contact with reality, and making good technical decisions are different problems.
The availability of extraordinarily powerful tools does not make me less interested in the machinery underneath them.
I Want to Go Bigger
I also don't intend for the next phase of my career to simply be a continuation of the previous one.
I want greater responsibility.
I want to lead engineering teams. I want to lead products. Eventually, I would like the opportunity to help lead companies.
That doesn't mean I want to move away from technology.
Quite the opposite.
I want the technical depth to sit alongside the leadership experience.
I want to be able to move between product strategy, architecture, engineering organizations, and implementation without treating any of them as somebody else's problem.
I don't believe technical depth and leadership are opposing paths. Some of the people I respect most are capable of thinking at both levels. They understand the business and the product, but they can also sit with engineers and understand why a technical problem is genuinely difficult.
That is the kind of leader I want to become.
There is enormous value in experience. Twenty-plus years of shipping software has taught me things that aren't found in a textbook.
But experience isn't an argument against education.
For me, it is an argument for knowing what I want from it.
I am not entering computer science wondering whether I like computers.
I have spent most of my life answering that question.
Why Now?
There is another reason I am pursuing this now rather than ten or fifteen years ago.
For years, I lived with sleep apnea. Until I finally addressed it in 2021, I did not fully appreciate how much it was taking from me.
This is important to say clearly: it wasn't laziness, and it wasn't a lack of ability or ambition.
I was exhausted.
There is a difference between being capable of understanding difficult material and being physically capable of sustaining the concentration required to study it night after night.
A master's degree in computer science is not something I expect to coast through. It will require reading, mathematics, studying, programming, frustration, and long stretches of concentrated thought, all while continuing to have a career and a life outside of school.
There was a period in my life when I simply could not have sustained that.
I know that now.
Solving my sleep apnea changed what I am capable of asking from myself. I can concentrate differently. I have energy I didn't have before.
Looking backward, I have a much better understanding of why certain things that seemed like they should have been possible felt impossibly difficult.
That realization has also changed the way I think about the years ahead.
I don't look back and wonder why I didn't just try harder.
I look forward and realize that I finally can.
So when I say that I want to earn a master's degree in computer science before I turn 50, the age isn't a deadline born out of panic about getting older.
It is almost the opposite.
For perhaps the first time in my adult life, I feel physically capable of taking on the sustained intellectual challenge that something like this demands.
And I don't want to waste that opportunity.
Before 50
There is something else deeply personal about this goal.
No one in my family has earned a degree in a technology field like computer science. Few people among my peers have a computer science degree either.
I want one.
Not because I think it invalidates everything I have done without it. It doesn't.
More than twenty years of building software, solving difficult problems, contributing to open source, writing a technical book, and leading technical work cannot be reduced to whether a particular credential appears on my resume.
But I would be lying if I said the credential doesn't matter to me.
I want the respect that comes with earning it.
That is difficult to admit because we like to believe that experience and ability should always speak for themselves.
Sometimes they do.
Sometimes they don't.
There have been times throughout my career when I have felt underestimated because I did not come through the traditional computer science path. There are people who see the absence of a computer science degree and make assumptions about what someone knows, what they are capable of understanding, or how far their technical depth extends.
After more than two decades in this field, I am tired of being underestimated.
I don't want a degree so I can pretend those twenty years didn't matter.
I want one because they did matter, and because I want to put the academic foundation underneath the career I built without it.
There is some pride involved in that.
I am comfortable admitting it.
I want to earn something difficult from a university I respect. I want to see Master of Science in Computer Science next to my name and know exactly what it took to get there.
I want my family to see it.
I want my peers to see it.
And yes, I want people who might otherwise underestimate my background to see it too.
But ultimately, I will be the person who cares about it most.
I want it because this field has been one of the defining threads of my life.
I Still Want to Know How It Works
Computers fascinated me as a child.
That fascination became experimentation. Experimentation became a career. That career eventually became leadership, open source work, writing, products, and opportunities I could not have imagined when I first started messing around with our Tandy 1000 SL.
But underneath all of it, the original curiosity never really disappeared.
How does this work?
Why does it work this way?
What is happening underneath this abstraction?
What happens if I take it apart?
Those questions have probably done more to shape my career than any particular programming language ever has.
And they are still the questions I find myself asking.
Recently, I have found myself going further down again. Not just wanting to know how to use an abstraction, but what exists beneath it. How a compiler turns something recognizable into instructions a processor can execute. What those instructions actually do. Why an operating system behaves the way it does. How the layers we take for granted were constructed in the first place.
After more than twenty years, I still find this stuff fascinating.
Maybe more than I did before.
There is a temptation after doing something for a long time to believe that experience itself is the destination.
I don't think it is.
The more I learn about computing, the more aware I become of how much there is left to understand.
That used to bother me.
Now I find it exciting.
There are areas of computer science that I have touched only indirectly during my career. There are concepts I understand practically but not as rigorously as I would like. There are things I have built without fully exploring the theory that made them possible.
I want to change that.
A master's degree will not magically provide complete understanding. No degree could.
But it gives me a structure for deliberately exploring parts of computer science that twenty years of professional work did not require me to explore.
And maybe that is the real goal.
Going Deeper
I will turn 50 in a little over five years.
By then, I want to be able to look back at this period of my life and know that when technology began changing faster than at any previous point in my career, I chose not to become satisfied with what I already knew.
I didn't decide I had learned enough. I didn't decide AI could learn the rest for me, and I didn't decide that twenty years of experience entitled me to stop being a student of my own profession.
Instead, I chose to understand more about the field that has fascinated me since childhood. More about the foundations underneath the systems I have spent my career building. More about the things I have used for decades without ever having enough time or reason to study as deeply as I wanted.
I want the education, the rigor, the credential.
I want to become a better engineer and, eventually, a better technical leader because of it.
And yes, I want the accomplishment too. I need to prove it to myself.
There is still an enormous amount I don't know. At this point in my career, I don't find that intimidating.
I find it motivating.