Some questions I can't answer

This is a picture of a concrete building in a post about building concrete knowledge.

I feel like I know quite a bit about programming, but a lot of that knowledge is tacit. I know intuitively how various bits fit together, but it’s hard to put that knowledge into words. One of the reasons why I write this blog is to practice making my knowledge explicit.

Today I was thinking of something else: how to make my lack of knowledge explicit? If you know what you don’t know, that’s fine, you can work on it. If you don’t know it, you might be in trouble. Who knows? Not you, that’s for sure.

To get started, I decided to map some of my known unknowns. I wrote down some questions about software engineering that I can’t answer. I recommend this exercise: it is surprisingly difficult to condense the unknowns into concrete questions. Here is my list:

How do you manage dependency updates for JavaScript projects? JavaScript projects tend to have a lot of fast-moving dependencies, and the common practice seems to be to use bleeding-edge versions of them. How do you ensure that the updates do not break your software?

Are projects a good way to organize software engineering work? I mean project as in subcontracting project, not as in open source project. The question probably gives away the fact that I think the answer might be ”no”. Projects by definition have end date, but to me it seems that software that is used requires continuous work. What are alternatives to projects, though?

What does a well-working software engineering process look like? I’m thinking of something like agile-as-in-the-manifesto, but what are the essential parts?

What makes a senior programmer? I mean senior-as-recognized-by-peers, not senior-as-in-title. What are the essential skills and skill areas? Seniority is a continuum, but are there natural checkpoints on that continuum?

What were the most significant new discoveries in software engineering and computer science in the 00s? What will the years 2000-2009 be remembered for? My knowledge on this is so weak that I don’t even know what to suggest. Maybe the advances to deep learning could be on the list?

These are the questions on my mind tonight. They are my unknowns: obviously there are many people out there who could give well-reasoned answers to these questions. It also shows what I’ve been thinking about lately. The list will look different next month, or next year.

So, what does your list look like?

Comments or questions? Send me an e-mail.