Joel Spolsky and Clive Thompson discuss the past, present, and future of coding
What inspires someone to become a software developer? Joel Spolsky and Clive Thompson discuss how the culture of coding has evolved over the decades and where they hope it’s headed next.
Earlier this year, Clive Thompson, veteran technology journalist and best-selling author, stopped by Stack Overflow for a chat with our founder and CEO Joel Spolsky. Thompson’s latest book, Coders, is a wide ranging look at the past, present, and future of programmers. It’s a sort of ethnographic history of this particular tribe, examining how software developers fit into the world of business and culture and how their role in society has shifted in recent decades.
The official conversation kicked off after a 15-minute tangent on Joel’s collection of Omni magazine and the formative role this publication had for both men. What follows is a transcript of their conversation, lightly edited for length and clarity.
Clive: What! You have Omni! No way. I read all these the first time around. It’s part of why I do this. That’s where I discovered William Gibson.
Joel: Yeah. They were publishing Ben Bova and fresh Isaac Asimov. It was amazing, It’s funny, almost every consumer electronics item advertised in there is now just something your smartphone does.
Clive: They had all the great Heathkit ads for robots with terrible grippers. Every once in a while I go to eBay and hover over the complete collection of Omni, but I live in Brooklyn and just don’t have the room for it. Joel: Alright, let’s change tack for a second before we get too far off topic. What did you learn researching this book? Where is the craft of coding headed?
Clive: There was a Twitter challenge to describe coding in five words, and this woman Erin Spiceland wrote, “Telling rocks what to think.” That could have been the title of the book! So the question in my mind is, who is interested in this? What gets them bit by the bug so they are willing to crawl over all the broken glass that is the daily work.
Joel: In my time, it was the absolute control. Whatever code you wrote, that’s what executed. There was no translation. It wasn’t like, well the flour was kind of old, and I tried to make the souffle but it collapsed. Unlike so many things you will try to accomplish as a child or an adult, where you work on something but it doesn’t turn out as you expect it to, with code it will do exactly what you told it. Even if that’s not what you meant. You might suddenly realize you’re obeying me to the point of making me angry.
Clive: The monkey’s paw thing. I shouldn’t have wished for that.
Joel: But the computer is still being completely obedient.
Clive: That thrill is a common thread I found in my research, from the 1960s through today. I will talk to people in their 80s who worked on machines the size of an entire room, and it’s the same damn thing talking to a 15-year-old girl at an afterschool program working on a raspberry pi or P5. There is something unique about the micro-world that is inside the machine, qualitatively different from our real world.
Joel: It’s sort of utopian. Things behave as they are supposed to. The reason I put a question mark on that, as programmers move higher and higher up the abstraction tree, that kinda goes away.
Clive: I think the rise of machine learning is an interesting challenge to the traditional craft of software development. Some of the people I spoke with for the book aren’t interested in it because they don’t like the idea of working with these indeterminate training systems. Someone said to me, this is like training a puppy not to piss on the floor. I got in here to build clockwork mechanisms, or at least make them run better. I like how comprehensible they are, and there is something unsettling about not really knowing what’s going on with what you’re building.
Joel: I just picked up Arduino a year ago and that was enormously fun because it was like going back to C, instead of all these fancy high-level languages where you don’t know what they are going to do. It offered a really detailed level of control. If something doesn’t work, you can figure it out, because everything is tractable.
Clive: What was your original pathway into coding?
Joel: My parents were professors at the University of New Mexico, and the University bought a mainframe and didn’t know what do with it. They gave every professor an account. And the professors gave those to their kids.
So I was part of a group of teenage kids just hanging around the computer center trying to figure stuff out.
Clive: So what was it, FORTRAN?
Joel: It had an interactive operating system because those had gotten trendy at universities. They had an interactive terminal system that had BASIC, FORTRAN, and PL/I. Many, many years later I realized there was no way they had enough memory for three compilers and in fact what they had was a very simple pre-processsor that made Basic, FORTRAN, and PL/I all look like the same mush. It was a very crappy subset of each of those three languages.
Clive: Oh my god, that’s trippy. For me, it was the generation of BASIC computers you could plug into a TV, that’s what got me in. But also, hilariously, my high school in Toronto had set up a computer programming course you could take in your fourth year, where we learned FORTRAN on punchcards. You fed them in and came back two hours later for them. I’m glad to have done it, because when I interview coders in their 70s and 80s, we can bond over tripping while walking down the hallway carrying a stack of 100 cards you forgot to number. “File:Punch card Fortran Uni Stuttgart (6).jpg” by Harke is licensed under CC BY-SA 3.0
Clive: Here is an interesting question for you that leads into the history and trajectory of coding. When you were young and getting interested in this, did you think that it could be a lucrative career, or were you just interested and one step led to the next.
Joel: Yeah, it was a thing. My grandparents said, you can go to MIT and be a computer engineer. There were operators running the computers at the University of New Mexico. I didn’t always think that it was what I wanted to do. There was a lot of negative associations around being a nerd. I wanted to be a gaffer putting up lights on movies.
Clive: That had cultural capital, and in the early 80s, coding did not!
Joel: Today people understand coders are important, but they are very suspicious of them. We’re at the phase of Newman’s [Wayne Knight] character from Jurassic park.
Clive: What I discovered is that there have been a couple of inflection points. During the 1990s and the first dot-com boom, it became obvious that there was the potential of quick riches to be made in software. Money changes things, it confers cultural capital. But also, computation moved to the center of people’s lives.
Joel: With the internet everybody saw there is really cool stuff going on here, and it’s getting better every year.
Clive: Once it became the medium to talk with your friends, to learn about the world, to express yourself, that created the Hollywood cultural capital.
“Funnily enough, lots of coders aren’t that great at math.”
The thing that is interesting about what’s happening with AI and machine learning to today is that, to do it at a high level, to do more than just download someone’s model and tinker with it, you need some pretty sophisticated mathematical and statistical thinking.
Funnily enough, lots of coders aren’t that great at math, so long as you remember to zero index, you’re fine.
Joel: The big picture there is, the school system should have given up on trigonometry and calculus a long time ago and started teaching statistics and probability. The discrete math is a lot more useful.
Clive: The last chapter of my book looks at how we can expand the universe of people involved in this work. And I think the answer, which accords with our own experience, is to ensure that at some point in the odyssey of life you give them a chance to figure out if they are one of the weirdos who loves this stuff.
Joel: It might be a lot more than you think. It’s funny because if you ever spend time taking apart a car engine and rebuilding it, you can explain to them, programming is kind of the same thing.
Clive: Or knitting and crocheting. There is this site Ravelry, and there are actually a lot of coders in there, because the algorithmic complexity required to execute some of these patterns is just stunning. The jacquard loom is just the beginning of a punch card processor.
“My grandmother had all the right skills to be a programmer.”
Joel: Exactly! I get the same feeling when I go into maker spaces. My grandmother had all the right skills to be a programmer. She was doing all the same mental processes.
Clive: This was one of the things that really struck me in my research for the book. There were all these women in their 70s who were developers in the 50s and 60s. It was so wild because the door was so open back then. Programming was not yet seen as a lucrative, elite thing. In fact, the elite thing was building the hardware.
Joel: This is our opportunity to get more programmers into the field and make it more diverse and inclusive. If we’re writing the script of the future, we need full participation. We have to be more actively welcoming to newcomers. If we’re asking people to try out a career that can be like walking on broken glass a lot, we better be nice to them at the beginning.
Clive: Alright, so looking 5-10 years out into the future, what are you excited about?
Joel: Well, when I think about this company, the future of Stack Overflow and Stack Exchange is all the workers that have knowledge in their head that their organization wishes that wisdom was more readily available. How do you impart the information to co-workers when they aren’t around, or when they are asleep, or after they leave for a new job. So they will use our private version of Stack Overflow to capture the internal system’s knowledge they’ve built up over years, and to share it in a way that allows anyone within that company to easily find or interact with it.
Clive: The classic problem with this is: what is the motivation for someone to externalize what they know? Well, it turns out questions are socially motivating enough. It also gives you permission to show off what you know. You’re not just bloviating, someone actually needs your help.
My first book, which was all about cognition and the internet, I had this long section where I was fascinated by question and answer sites. There is a lot of psychological research about the value of a question as a prompt. This takes us back to the Socratic method. He just went around poking people and asking questions. It’s a very powerful heuristic.
Joel: The other thing that I’m excited about is the electronics maker movement. Starting with arduino but also rasberry pi. You are starting to see companies like Adafruit and SparkFun that are making tiny little circuit boards that take a chip which used to have 18 pins and give you a three pin version of that. So now you just have to solder three things, you don’t have to read a long manual.
It’s like when people started creating libraries. It’s like react for hardware. It used to be, if you wanted a microphone that could convert sound into a digital signal, you had to figure out how to build a lot of that from scratch. Now there is an $8 board which will do it for you. There are three pins, anyone can do it in half an hour. If that trend continues we will see a lot of really cool stuff start to come out, and in fact, I think that’s already happening.
Ok, your turn.
Clive: One thing that gets me excited about the future of coding is that there has been an increasing number of weird, cultural onramps. The late 90s and early aughts saw an explosion of people entering programming from non-traditional backgrounds, and that was because the web made it easy to see and build stuff people could actually use.
Whether it’s the simplified hardware ecosystem you talked about, modern libraries for doing gorgeous generative art, P5 and things like that, to the fact that a language like Python has grown massively and is really accessible to beginners. I feel like that means there are lots of new onramps. And there has been an explosion of organizations, some permanent, some one-offs, from Black Girls Code to after school programs or robot leagues, that was not there ten years ago, and it’s a product of the conversation and the mission to broaden the base.
There are people in college finishing their CS degrees who got turned on to it coding through an Apple Store event. Start with HTML, then a little Javascript, and lo and behold you’re a god damn developer.
Tags: bulletin, clive thompson, coders, culture, joel spolsky, programming, stackoverflow
The Stack Overflow Podcast is a weekly conversation about working in software development, learning to code, and the art and culture of computer programming.
Kenny Hearn, Fund Manager and Head of Research at SwissOne Capital, tells Ben about his path from traditional asset management to Web3 specialist and why he remains optimistic about the future of the market.
Why isn’t this a special edition of the Stack Exchange podcast?
I would prefer the audio over a transcript.
And yes, Arduino is great. There are also several Forth’s for it, e.g. AmForth (which I have used for a real project involving 433 MHz RC). en DOT wikipedia DOT org/wiki/Forth_%28programming_language%29
———————————-
NB: “Javascript” should be “JavaScript”. And I think “PL1” should be “PL/I” – en DOT wikipedia DOT org/wiki/PL/I
Clive’s book is dead on. I recall back in the late 80’s-90’s we had a couple outstanding programmers in out small company. The oldest was a woman with a UCSB degree that had run their Unix system. She was great at C, C++, writing device drivers AND doing documentation. A rare skill set. She was also the most highly paid employee including the execs. The youngest was a kid w/o college that picked up C, then C++, programming because it was just so cool. I remember him saying IK can’t believe I get paid to do this!”
Yeah I always thought my grandfather would have been a coder, he used to keep excessive records about his store and his medication; also he was sorta big into scifi before his time; he liked Flash Gordon. And he was pretty OCD too…
You’re darn right that Machine Learning / AI doesn’t give you the level of control that you have in computer programming; and that it’s quite similar to losing control of things in a large abstraction…everything topples over when done at too high a level.
This came off as a rant between two people discussing their past and some future topics they know about. I wish it was more pointed to the actual future direction of coding. A lot of these concepts were already discussed 2 years ago at least.
“The big picture there is, the school system should have given up on trigonometry and calculus a long time ago and started teaching statistics and probability.”
I keep hearing this suggested, but it makes no sense. Calculus is a pre-requisite for a serious course in probability and statistics. Yes, there are non-calculus statistics courses, but they aren’t going to be sufficient to prepare a student to work with machine learning problems, except in the sense that Clive mentioned: twiddling the knobs on somebody else model.
Nothing is preventing girls from going to comp sci – I did it and never had an issue. The reason why there aren’t so many women in software is because math and exact sciences are being marketed as too hard throughout middle and high school here in North America. I did not go to high school here and these pre-conceived notions of no girls in engineering was very foreign to me.
Just do it. And don’t care what others say.
Now…do we need more women in computing? I don’t know…we need people who can do the job and who they are is less important.
Thanks Jenny! I’ve been thrilled to see more women getting into programming; not just because they are women, but because our culture and history has misled half our society to follow a different path. The result? We’re probably technologically behind where we could be as a society because we’ve been working with only 1/2 the members. Who expects to create great things with just half a mind!? Use the whole! Be inclusive! Embrace different thoughts to challenge the edge of what is possible.
I started high school (USA) in late 1977 when one year of algebra was required before a student would be allowed to take a programming class. When I graduated in 1981 it was mandatory for freshmen to take a programming class. That was a fundamental shift in (1) recognition of the importance of technical awareness in a new era, and (2) recognition that for the beginning programmer, math ability was not significant. I don’t agree with replacing trig or calc with anything. I do recognize that all of these areas of study have value to different people. An introduction to each field is important to give people an opportunity to find their personal passion.
> Whatever code you wrote, that’s what executed. There was no translation. It wasn’t like, well the flour was kind of old, and I tried to make the souffle but it collapsed.
I used to explain my passion for programming in those terms, that unlike people, code did exactly what you told it to do. Of course it still does what “someone” has told it to do. But today under every line of code there are many tiers of transpiling, compiling, and execution of deeply nested referenced code, from people with different skills and levels of interest in the quality and ongoing development of their code. So now coding is just like the above-mentioned souffle, and if our code collapses we need to find new dependencies, or fix the FOSS ourselves, and/or spend a lot of time here in SO. We originally didn’t need to “crawl over all the broken glass that is the daily work”. That condition that we now accept as normal didn’t exist (unless a Hollerith card got stuck in the card reader, or the 1/2″, 9-track tape got tangled).
I hope that the future of coding includes more standards, not limiting or restricting development, but holding all code modules to some level of compliance with all others. Then we can spend less time hunting for why things don’t work, and more time creating and improving new modules that do.
Could you imagine this in a StarTrek universe?
Captain : Engineering! I need warp speed Now!
Chief Engineer : I’m sorry Captain, if we go to warp she’s gonna blow. We just updated the software that manages the dilithium chamber temperature to v4.2.6. It has dependencies on HeatMon v0.4beta which uses an older interface to the chamber monitoring interface.
Captain : Just give me the bottom line!
CE: Well sir, we need to update the communications software because the nearest starbase just updated theirs and there were breaking changes. Then we need to download an unmerged pull request for HeatMon that patches v0.4beta for this issue. The author of HeatMon got tired of the project and no longer maintains it, but it’s the industry standard so no one has messed with it. If that works we may be able to get the temperature under control.
Captain : My God man, what does that all mean? Romulans will be attacking in 20 seconds.
CE: Aye sir – I guess we’re all dead because I lost my password and can’t download the PR, and I can’t get a new password without getting that comms update, and …
BOOM. The End.
There were more women in programming decades ago, because other fields were more closed. When medicine and law opened up to women, they (women) left programming for fields they were more interested in (and more lucrative, prestigious, etc.). Doctors make a lot more than programmers (on average for both fields). Why would women stick with tech when medicine has more to offer? See “Contra Grant On Exaggerated Differences” (https://slatestarcodex.com/2017/08/07/contra-grant-on-exaggerated-differences/) By Scott Alexander.
29 Comments
There’s a mistranscription – should be Ben *Bova*, not Ben *Boba*
https://en.wikipedia.org/wiki/Ben_Bova
Fixed! Thanks for the heads up.
Why isn’t this a special edition of the Stack Exchange podcast?
I would prefer the audio over a transcript.
And yes, Arduino is great. There are also several Forth’s for it, e.g. AmForth (which I have used for a real project involving 433 MHz RC). en DOT wikipedia DOT org/wiki/Forth_%28programming_language%29
———————————-
NB: “Javascript” should be “JavaScript”. And I think “PL1” should be “PL/I” – en DOT wikipedia DOT org/wiki/PL/I
Clive’s book is dead on. I recall back in the late 80’s-90’s we had a couple outstanding programmers in out small company. The oldest was a woman with a UCSB degree that had run their Unix system. She was great at C, C++, writing device drivers AND doing documentation. A rare skill set. She was also the most highly paid employee including the execs. The youngest was a kid w/o college that picked up C, then C++, programming because it was just so cool. I remember him saying IK can’t believe I get paid to do this!”
Another typo: “Wayne Wright” should be “Wayne Knight”, of course.
Thanks, fixed.
Yeah I always thought my grandfather would have been a coder, he used to keep excessive records about his store and his medication; also he was sorta big into scifi before his time; he liked Flash Gordon. And he was pretty OCD too…
You’re darn right that Machine Learning / AI doesn’t give you the level of control that you have in computer programming; and that it’s quite similar to losing control of things in a large abstraction…everything topples over when done at too high a level.
And Issac Asimov should be Isaac.
Thanks, fixed
I can’t wait till ‘AI’ meets the real world of Isaac robot laws. So much work still to be done, seen a lot of changes in the last 50 years.
Hand coding won’t ever be replaced with AI.
So, happy coding for generations to come !!
In the middle, “fortan” was written twice instead of “fortran” (I presume it was a mistake)
“It’s like react for hardware” should be “It’s like React for hardware”. I think Joel is referring to React.js.
This came off as a rant between two people discussing their past and some future topics they know about. I wish it was more pointed to the actual future direction of coding. A lot of these concepts were already discussed 2 years ago at least.
“The big picture there is, the school system should have given up on trigonometry and calculus a long time ago and started teaching statistics and probability.”
I keep hearing this suggested, but it makes no sense. Calculus is a pre-requisite for a serious course in probability and statistics. Yes, there are non-calculus statistics courses, but they aren’t going to be sufficient to prepare a student to work with machine learning problems, except in the sense that Clive mentioned: twiddling the knobs on somebody else model.
Absolutely. Also, backpropagation in deep learning is pure calculus.
Nothing is preventing girls from going to comp sci – I did it and never had an issue. The reason why there aren’t so many women in software is because math and exact sciences are being marketed as too hard throughout middle and high school here in North America. I did not go to high school here and these pre-conceived notions of no girls in engineering was very foreign to me.
Just do it. And don’t care what others say.
Now…do we need more women in computing? I don’t know…we need people who can do the job and who they are is less important.
Thanks Jenny! I’ve been thrilled to see more women getting into programming; not just because they are women, but because our culture and history has misled half our society to follow a different path. The result? We’re probably technologically behind where we could be as a society because we’ve been working with only 1/2 the members. Who expects to create great things with just half a mind!? Use the whole! Be inclusive! Embrace different thoughts to challenge the edge of what is possible.
I started high school (USA) in late 1977 when one year of algebra was required before a student would be allowed to take a programming class. When I graduated in 1981 it was mandatory for freshmen to take a programming class. That was a fundamental shift in (1) recognition of the importance of technical awareness in a new era, and (2) recognition that for the beginning programmer, math ability was not significant. I don’t agree with replacing trig or calc with anything. I do recognize that all of these areas of study have value to different people. An introduction to each field is important to give people an opportunity to find their personal passion.
> Whatever code you wrote, that’s what executed. There was no translation. It wasn’t like, well the flour was kind of old, and I tried to make the souffle but it collapsed.
I used to explain my passion for programming in those terms, that unlike people, code did exactly what you told it to do. Of course it still does what “someone” has told it to do. But today under every line of code there are many tiers of transpiling, compiling, and execution of deeply nested referenced code, from people with different skills and levels of interest in the quality and ongoing development of their code. So now coding is just like the above-mentioned souffle, and if our code collapses we need to find new dependencies, or fix the FOSS ourselves, and/or spend a lot of time here in SO. We originally didn’t need to “crawl over all the broken glass that is the daily work”. That condition that we now accept as normal didn’t exist (unless a Hollerith card got stuck in the card reader, or the 1/2″, 9-track tape got tangled).
I hope that the future of coding includes more standards, not limiting or restricting development, but holding all code modules to some level of compliance with all others. Then we can spend less time hunting for why things don’t work, and more time creating and improving new modules that do.
Could you imagine this in a StarTrek universe?
Captain : Engineering! I need warp speed Now!
Chief Engineer : I’m sorry Captain, if we go to warp she’s gonna blow. We just updated the software that manages the dilithium chamber temperature to v4.2.6. It has dependencies on HeatMon v0.4beta which uses an older interface to the chamber monitoring interface.
Captain : Just give me the bottom line!
CE: Well sir, we need to update the communications software because the nearest starbase just updated theirs and there were breaking changes. Then we need to download an unmerged pull request for HeatMon that patches v0.4beta for this issue. The author of HeatMon got tired of the project and no longer maintains it, but it’s the industry standard so no one has messed with it. If that works we may be able to get the temperature under control.
Captain : My God man, what does that all mean? Romulans will be attacking in 20 seconds.
CE: Aye sir – I guess we’re all dead because I lost my password and can’t download the PR, and I can’t get a new password without getting that comms update, and …
BOOM. The End.
This is art.
‘Adafruit and Spark’ should be ‘Adafruit and SparkFun’
Thanks, fixed
Per the linked Twitter thread, Erin’s last name is Spiceland, not Spice.
Thanks, fixed
There were more women in programming decades ago, because other fields were more closed. When medicine and law opened up to women, they (women) left programming for fields they were more interested in (and more lucrative, prestigious, etc.). Doctors make a lot more than programmers (on average for both fields). Why would women stick with tech when medicine has more to offer? See “Contra Grant On Exaggerated Differences” (https://slatestarcodex.com/2017/08/07/contra-grant-on-exaggerated-differences/) By Scott Alexander.
This article talked about Arduino, Raspberry Pi & robots, I have asked a question in regards to control robots on Arduino through Raspberry Pi (https://raspberrypi.stackexchange.com/questions/104141/how-to-control-servos-on-arduino-through-raspberry-pi), but it was closed. Do Stack Exchange associated sites not encouraging present/future programming based questions?