Skip to main content
Martin Hähnel

Alien Moonlanding Scenario

This just came to me in the sauna: At work, I often want to over-engineer things. Everything needs to be linted, tested and architected! I can't make all the decisions by myself, so we don't lint, test or architect everything. But what if I had to decide everything? What would it look like? Suppose a person came to me and said:

Aliens are real. And they devised a weird test to figure out if humanity is worth it to protect or not. Here it is: A random programmer is chosen. They have to solve the following problem: A package of information has to be brought to the moon. It can be brought in person, or via drone or via lasers or whatever. The information package needs to be parsed and transmitted - it is about 100GB of semi-connected JSON, SQL and other data formats. The information package has to be transported to the moon, yes, but not just as cold data. They want to query that data, so an Interface has to be devised. One catch: The programmer has to start from scratch. This means that they can simply ask NASA or ESA or whatever to do it for them. They have to create their own organization. They can hire people, they can make technology decisions, they can delegate things. As long as the programmer makes the decision that lead to another decision downstream, that's fine. The programmer has to be involved in the actual programming in some way, though. They have to eat their own dog food. Resources are no object and so is time. As long as the delivery of the information happens in their lifetime the aliens will be pleased.

This is of course totally over the top, but I find it an interesting thought experiment. Like, for example: If I am the one to decide how we go about developing the various software systems needed to get to the moon in some way, would I insist on testing? Would I forbid AI? Would I use a hyperscaler to drive the data interface or a few giant hunks of metal? What language would I use? Are any of the ones available to me passable at parts of this? PHP, JavaScript? Would Python be better? I know trace amounts of Go and Swift. How would I handle the data? How would I get the interface to the moon? What tools would I use?

What is cool about this is that it makes me (at least) think of what I actually value in technology and organizational decisions. What do I believe gets me actually closer to the goal?

In reality, we very often don't have this freedom and so end up entangled in all kinds of situations and relationships and processes in which we only have very limited agency. A much more realistic state of affairs. We can't really "decide" to only use Laravel and Postgres with the frontend written in Vue from now on. But what if we could? What would we chose to use? Where do we not have strong opinions? Why not?