Computer’s are really smart, right?
I would use an operating system like Mac OS and think, why isn’t it that all operating systems are this good?
Things should always be this intuitive and obvious; visual and clean.
We’re spoiled with excellent programs, available for public use for free; and often the more freely available programs are also the best written ones. I began working as a web developer in small start-up companies where I would often be the only person in the office with a particular technical knowledge and understanding of technologies that other people use every day without knowing it.
The funny thing about being a software developer in relation to a user is that there’s almost no indication to the user of how much is under the hood of a program.
You can think of a computer as a calculator, which is really all any computer actually is. They understand ones and zeros, binaries, like or dislike, true or false, right wrong, good bad. If you want them to do anything more complex than that you have to work really really hard to do it. It’s easy to use a program and think it’s doing more than it is because the programs we use have been laboured over by some extremely hard working and smart people. And also masses of people over collaborative online networks, sharing and swapping code, information and learning resources.
It’s not the computers that are smart, it’s the people who write them. Every single line of code that isn’t simply “1” or “0” has been built up from that point. Could you imagine the amount of work it takes to make Grand Theft Auto using just two digits as your building material? It’s comparable to building St Paul’s Cathedral out of a pile of toothpicks.
I’ve written an internal web application for a company where I typed out almost 95% of the code-base but even that’s a collaborative effort by that fact that if I’m stuck with a problem I can head over to Stack Overflow and look it up. Often I’ll find at least 5 different suggestions from other devs who have solved it before or are even having a go at figuring it out in their spare time. Not to mention the amount of different protocols and programming languages I’m using that have been built one on top of another so that I don’t have to manage the individual pixels on my screen or worry about whether the last variable I used needs to be garbage-collected to recover my computer’s memory. That way I can get on with fiddling around with my text linter or trying to get Vim’s colours to work so I don’t sustain brain damage while I stare at my computer screen for 15 hours a day.
It took computers a good while to work out that aesthetics are important to human beings and that maybe they should be important to computers as well. Why don’t we care about whether our tools are beautiful? We don’t build hammers with engravings in them or tape measures that sing as they unravel. In many people’s understanding of them computers changed from being tools to use into environments to be surrounded by, and lots of people care about how their surroundings look and feel.
It takes so much more work and effort to build something elegant and computers can afford that time now. You often hear people say, it’s all about the long game. I think that’s very true. The long game requires you take time over your work, which requires you’re given time. I think there’s space for us to slow down.
I think there’s a tendency for people to treat themselves like they’re computers. Like they have to work incredibly fast or make a quick judgement on whether something is right or wrong, good or bad, true or false. As if we’re that simple or even logical or even that we should be.
I love working with computers and I think that the amount of creative satisfaction I get from building things in them will keep me working with them for the rest of my life, but I don’t over-estimate what they are. Computers aren’t our successors and they aren’t our equals, they’re just tools.
I think there’s an unfair misconception towards devs where people tend to think they’re doing less than they are. It’s hard for a developer to communicate the work they’re doing to someone who doesn’t code because the concepts they have to use are so abstract that often it’s difficult for devs to even communicate between one another. It isn’t an aloofness to say that you wouldn’t understand if you’re not a dev, it’s a reflection of how alien the computer environment is to the world outside.
The computer’s world is a surprisingly simple one, far simpler than the world we actually live in. In fact it’s not helpful to even think of it as “another world” because it’s just a two dimensional slice of our world. St Paul’s wasn’t built out of just two elements, it has wood and brick, paint and probably numerous types of metals, glass and clay, ceramics and even fabrics and oils. Nobody knows what those things are when you drill down to the very minuscule level, and there’s all the evidence to suggest that things are even more complicated down there than initially thought.
Then consider the meta substance of a cathedral; the people that inhabit it and use it, the community that surrounds it and the work that links into the wider context of Christianity, the literary work that adds to it and builds on the meaning and understanding of that tradition.
This community aspect of the thing is what makes the internet interesting. In a way I work on the most uninteresting aspect of computers: the nuts and bolts. What is interesting about that aspect is the potential people have extracted out of such a fundamentally simple set of materials. Just ones and zeros.
Web developers often work hard to make things that people get for free at a very high level of quality. They’re surrounded by critics without much understanding of the work they’re doing and expected to build things at an incredible pace. So I want to say this: it’s not computer’s that are smart, it’s devs. Computer’s don’t do much of anything on their own and the programs, web apps and computer games that we use for free every day cost a whole lot more time and effort to build than you might think. Not only do they take time to build but they take the time that the developer took to learn the skills to build them.
The platforms are just a reflection of the people who built them. Have you ever watched The Social Network with Jesse Eisenberg as Mark Zuckerberg? There’s a truth to that story irrespective of the truth of the actual events that developed facebook. Zuckerberg is portrayed as a person wrestling with the fact that he alienates the people, and most importantly the women, in his life and so he builds a social platform that’s main effect has been to alienate people from one another.
Much of the internet was built through natural inclination and plain curiosity. The developers of my generation weren’t taught computer science in school, even if they did go on to a university to learn it. My IT classes at school were preoccupied with teaching us how to use Microsoft Office, which I now consider a total waste of time and energy; as if there’s enough depth in any computer program to spend a person’s entire teenage life learning it.
We could have been learning how UNIX systems work for example, a fundamental operating system that powers something like 90% of the internet’s servers (and all Apple Mac computers btw). We spent so much time on Microsoft proprietary software that I think Bill Gates had probably conned British schools into thinking that Word was the only text processing program that existed.
It’s surprising how computer programs and web apps can become a kind of trap where a person gets so used to using that platform that they feel they can’t leave it, and so teaching a program, that’s actually very easy to pick up, doesn’t really serve as a skill for that person. Instead it just supplies the software proprietor with a customer base. You can see this happening in schools with iPads at the moment. You can find them in many classrooms across the UK and I hear parents amazed at how quickly their children “learn” to use them.
My own son could use his mother’s iPhone to swipe through pictures of himself at 2 years old, he even knew how to exit into the gallery view so he could scroll through clusters of images rather than looking at them one at a time. You can be forgiven for thinking that developers are doing less than they are when computer’s have become this easy to use.
Have you ever heard of Vim? If you’re a developer you almost certainly have. It’s a text editor, like Word but it’s free and can be found on almost every Mac and Linux computer in the world and even many Windows computers as well. It’s extremely powerful, extendible and light. But it’s very hard to pick up for newcomers. I became obsessed with learning Vim about 8 months ago and now I use it daily for all of my programming.
It’s the polar opposite of an iPhone because it requires so much investment from the user before it becomes usable. You could compare it to learning a musical instrument. Mac software has a tendency to market itself at the creative and artistic users but it actually doesn’t take much creativity or artfulness to use at all.
There’s a mystery to the work of a developer for most people that obscures their value and often leaves them under-appreciated and misunderstood.
It’s hugely beneficial to continue to learn things that, at first, appear difficult and I think if we did that more often we’d begin to better understand the people who do that every day for a living.