Questions Considered

Notes on thinking, learning, decision making, and occasionally running. Simple ideas, mostly obvious.

(Un)changing

For the general public, AI was not really a topic of conversation before 2022. Now it seems everywhere. The rate of change in that field has been tremendous in the last decade and especially in the last few years.

For years, there was a widely repeated narrative of a skills shortage in the software engineering job market. Young people making decisions about their future were encouraged to pursue courses of study in computer science, software engineering and related fields. In recent years, the industry has repeatedly seen widespread layoffs and there have been oft-repeated concerns about how AI is affecting the profession and perhaps particularly early-career jobs in the field.

This is not just about AI, nor software engineering. Turn on the news, skim the headlines or flip through your favorite periodicals. Change is all around us, all the time. It is a fact of life.

And yet.


One of my favorite books from the last few years is Same as Ever, by Morgan Housel. In it – and by way of twenty-three brief stories – the author draws attention to the fact that there are many things in life and human discourse that are fundamentally unchanging.

Jeff Bezos has been frequently on record about his focus on things that do not change. Likewise, in the book Rework, Jason Fried and David Heinemeier Hansson assert that “the core of your business should be built around things that won’t change. Things that people are going to want today and ten years from now.” This is also clearly a feature of particularly useful mental models: they remain valid and carry explanatory power across time.

Understanding change is important, but that should not distract from the constants in play in your environment. They often matter quite a lot.

Software engineering has always been in a state of change. Making software is an inherently challenging activity and researchers and practitioners have always been striving to understand it better and devise ways to improve how we go about it. The advent of generative artificial intelligence has led to the strong interest in and development of new tools and approaches for software development. We are in the midst of a lot of change because of that.

But there are of course many things that continue to hold true in the profession.

  • Software should provide value. How it can do that (and for whom) needs understanding. Requirements are virtually never fully known at the beginning (and change over time). Building software is an exercise in learning.
  • Software systems rarely exist in isolation, rather they are part of a socio-technical environment. Software has dependencies that themselves evolve, and the software requires ongoing changing to remain well-fit for its environment.
  • We distinguish between essential and accidental complexity. As software is evolved over time, its complexity increases, unless carefully managed.

This is obviously not a complete list. Regardless of the specific mechanics of composing lines of code, software engineering will always present a rich landscape of intellectual challenge.


Even in the busyness of the news cycle of current events or reporting of the new developments at the cutting edge of some field, if you look closely, you can usually find a subtext of constants, principles that remain true.

Often it is precisely those things then that provide important framing to help contextualize and guide the rest.

Many things change.

Some do not.

Discover more from Questions Considered

Subscribe now to keep reading and get access to the full archive.

Continue reading