Returning from a short break from programming brings home how much work it can be: languages, libraries, techniques, all with their own tools and communities, all moving through stages of development or abandonment. For most programmers, working within these worlds means spending many hours a day looking at a jumble of terminal windows, text editors, documentation, and team chat.
It’s hard not to feel like a head in a jar. The world of the computer ends at the edge of the screen, and everything within those edges has the designed assumption that only one person is using it at a time. We interact with this solipsistic world with mice and keyboards that at most use just our fingers. A further indignation is that using a computer requires that you be always be stationary: you can sit, recline or stand, but that’s kind of it. Some bravely try to walk and use their phone at the same time, but lose the ability to be a convincing part of the real world and walk into people, lampposts, and busy roads.
This is all very frustrating, as there are many rewards unique to programming: collaborating with others in a field of ideas, having the strange thrill of seeing something work for the first time, the quiet satisfaction of having refactored some chthonic, untamed part of a codebase — these are all things that make us put up with the obtuse environment we work in.
But environment is a generous word for where we spend our working hours: it suggests a spacious place with many interesting things, shared by many people. It could not be further from reality. Sharing these screens and the worlds in them with others is an exercise in frustration, and we’ve come to accept that to get any real work done we need to each have our own screen, and keep each other abreast of our progress after the fact. We collaborate mainly by assessing additions and deletions of source code, long after the thoughts have been thunk. Instead of being teammates, we are archeologists of each other’s brains. The height of modern remote collaboration is broadcasting what you see on your screen and letting others take control of your mouse.
Don’t get me wrong: I’m not ungrateful for these technologies, and use them daily. But peering over my computer display at my studio-mates (non-programmers all), I begin to feel grateful for these tools in the same way someone with a gateless fence is grateful to have a ladder. I’d watch them gather around a large table, their day’s work in front of them: recently manufactured materials, photos and prints strewn over the table, pens, pencils, rulers. They’d pose their problems physically in front of them on the table’s surface, lifting them in their hands, collaborating with a material and human directness which, when my eyes refocused on the screen in front of me, made the all those tiny windows seem a little absurd.
The same sort of feeling would come over me when — peering over the screen again — I’d spy on one of my friends working alone, carving wood. I’d take in the workspace they’d built around them, the ad-hoc placement of their tools, the positioning of their work in progress next to their sketches, tools and materials being combined in unexpected ways. You could see all the possibilities and progress at once, in the context of the task at hand.
It was then that I decided that programming is difficult enough without having to do all of it exclusively within the confines of a computer screen. Why should we accept what programming has to offer at the expense of our environments, the natural way we interact with other people, of our own bodies?
Toward the end of 2017 I began to see a trickle of images and videos shared by programmers I like. In these videos, you’d see many people in a strange, workshop-like space pushing around bits of paper with coloured circles on them, and ghost-like images would follow the paper around, and change as it was moved. What I was looking at was so strange that at first I couldn’t really tell what the videos were meant to show.
But with more time — and more videos — it all started to become a bit clearer.
These are all videos of people programming, together, in a physical space, using a physical medium. It is called Dynamicland, and it is a building in Oakland, California.
I didn’t know how much I wanted to be in this world until I saw it. I’ve begun to even more hungrily covet the workspaces of my neighbours — illustrators, woodworkers, cooks — envious of their physicality, of being able to call someone over, point to a table somewhere and say “this is what I’ve been working on — do you have any idea how I could fix this bit?”. A workshop for programmers.
It is also clearly more than that, a project that aims to bring the dynamism of programming to those who cannot not tolerate the environment that programming currently demands. The current situation has made it so that programming is a profession today as being a scribe was in ancient Egypt. “Pens, scissors, and staplers are genuinely powerful tools here”, they say, and I can easily believe it, having used the command line. Imagining this system in classrooms, libraries and museums is in many way easier that imagining how this could be used for a full-blooded programming environment. It is easy to cynically wonder how being able to use a stapler really benefits the long-lived libraries, tools, and methods that we rely on to get our work done today. But that is thinking of it in the way that we’d think of a new text editor or versioning system: this computer changes how people work together, and that will have far more of an effect than any dozen new tools could.
It’s also worth comparing to other visions of computing in the future: VR tries to take the solipsistic computer all the way to its extreme conclusion by fooling your eyes and ears — not always successfully — and replacing your real environment with a virtual one. It’s clearly something fun, but has had trouble breaking out of being more than a carnival attraction, and using it as a full-time computer seems like an actual dystopian nightmare. Many consider augmented reality a more exciting prospect, and this requires a headset which superimposes simulated elements onto what you can really see, and in some ways this is like Dynamicland. But you need a headset for AR, and everyone not wearing one just sees a person with weird glasses interacting with thin air. Dynamicland, in contrast, requires an entire building, but with the benefit that everyone present is part of the same world, only needs what they were born with to be part of it, and interacts with real things with mass and texture.
There is also the difference of institution: both VR and AR are embodied by private companies aiming to sell headsets, build marketshare and a new ecosystem with it. Dynamicland is backed by a non-profit organisation and solicits donations and research funding. They see their idea in the context of decades rather than product cycles, and use the Internet’s development as a model. Whichever of these futures you think is most likely, there is undoubtedly a long way to go before something like this could replace the the isolated desks and computers that we use now. But it’s worth entertaining taking that long road, especially when you imagine having to sit at a desk, navigating through a flat world for the rest of your working days.
From here — the very beginning of 2018, the Netherlands — Dynamicland seems a very long way away. It will be some time before I get to experience something like it for myself. But when I selfishly imagine myself having the option to work in a space that looks more than a workshop than a terminal, or (unselfishly) imagine future children having a classroom that looks anything like this — well, I can’t help but write something about it even if it only helps to usher in that future by a minute or two.
Top comments (8)
My mind is actually blown. That is so cool.
eta: I know what it reminds me of! There is an amazing children's museum in our town, full of massively interactive stuff, and a science and tech museum that is the same in a nearby city. Both are hugely dynamic, full of things to manipulate, etc. This reminds me of that but for adults and programming!
I am legit pondering a trip to Oakland expressly for this purpose now...
I know exactly how you feel. For now, I think all we can do is subscribe to the newsletter!
Maybe we need a Dev.To field trip!
It is worth it :)
Great article, I also tried to explore workspaces from the metaphor of a carpenter's workshop uxdesign.cc/a-room-for-understandi...
It seems like a very nice technology, but if you truly see software development / programming as being ‘one person, confined to the pixels on their screen’, then you are definitely doing it wrong.
What does collaborating through programming look like for you?
If most of your day is pair programming, then I'd say you're getting it better than most. But I'd bet that for the vast majority of programmers it looks like asynchronous work, probably in the form of pull requests. But in that way, we're not programming together -- just passing our work along to each other like a chain letter or a baton in a relay race. You do your work and pass it on.
This is in stark contrast with the workspaces of most professions -- carpenters, photographers, musicians -- where they have tools and spaces that allow them to work on things together, simultaneouly, thanks to the physical space and things that people share. We shouldn't kid ourselves that programming is different or would not benefit from these qualities.
I suppose I do get/have it better than most, though it's a matter of just doing it -- nothing stops developers from talking, except the developers themselves.
That said, what you describe above may foster that skill in developers, so thumbs up.