Java’s James Gosling on Fame, Freedom, Failure Modes and Fun
James Gosling is revered as the original founder and lead designer of the Java programming language. Now a distinguished engineer at Amazon Web Services, Gosling also made a keynote appearance in early December at the reClojure 2022 virtual conference.
Gosling shared what he’d learned from his decades in a tech industry that eventually led him to cloud servers, in a wide-ranging talk covering everything from how programming languages evolve to how projects fail.
Here are some of the highlights…
Adventures in the Real World
Gosling gave a glimpse of life at his current employer. Discussing the difficulties in writing a language’s memory-recovering “garbage collector,” Gosling shared an interesting aside. “Take a giant cloud system — and Amazon has a bunch of — they just live or die based on the garbage collector.” He returned to the same thought when discussing how “If you’re trying to spread a very large volume of work… You really really need every drop of performance. A lot of the guts of AWS is Java, and AWS has a pretty big Java team — and it’s all about performance. Particularly, garbage collection performance is our largest team. But [performance] is a really big deal.”
But Gosling also shared one of his personal quirks during his appreciation for Clojure’s strong emphasis on functional programming. Gosling confided that his own preference for functional programming “is actually one of the things that some people find most obnoxious about my coding style… I will use recursion instead of an array, for example.” The problem, he’s learned is that “most people don’t think that way.” And he illustrated this with a particularly vivid example.
“With my most recent project that shipped, I knew that my part in the project was done when I was summoned into a room. It was sort of like an intervention that the family has with an alcoholic.” Gosling remembers that his teammates had ultimately told him, essentially, “Your coding style is psychotic!”
Theories of Evolution
For the second half of his keynote, Gosling answered questions from the audience, which led to a surprisingly candid look back at the history of Java. “When I was working on Java, one of the goals was essentially to give people rocket science without knowing that it’s rocket science. It’s kind of the wolf in sheep’s clothing model. I wanted C programmers to be able to look at a Java program and think they understood what was going on. And mostly they did. ”
But then Gosling also shared some reflections on the drawbacks of that popularity. “Being successful turns out to be a problem — because there are now billions of lines of Java code out there. Within a couple of years of Java being launched, it became really clear that we couldn’t change anything that would break anyone’s code. So that puts a real crimp on just how crazy you can be in evolving things.”
Yet earlier Gosling had quipped that “When Java was started, essentially all languages except C had died.” So returning to that theme, Gosling said that now “I’ve really liked the diversity of the other languages in the JVM community. Because it’s like the chokehold of C on the universe kind of got broken.”
So what did he learn from his experiences? At the end of his talk, Gosling encouraged the Clojure community “not to try to do a design, and then hope that it takes over the world. I would do a whole lot of little experiments. Don’t overthink it. Do the experiments, and see what catches people’s eye.”
And he pointed out that one of Java’s weaknesses is a strength for Clojure. “You guys have dramatically more freedom of action than the current Java language team. You know, you don’t have billions of lines of code to break!
“The plasticity of the core language is itself kind of a grant of freedom. So, play. Do experiments. Don’t try to resolve anything. Just do experiments, and then find your way through it.”
Gosling on Java
Responding to a later question from the audience, Gosling remembered that Java’s massive uptake was completely unexpected. “The project had failed two or three times. I actually got laid off at one point, because a certain, executive VP just wanted the whole thing to go away. But then Bill Joy, in one of his acts of heroism got a bunch of these termination notices squashed.
“So I had always thought it was interesting, but there’s a big difference between doing something interesting and doing something successful.”
Gosling also shared some thoughts on the state of Java today. “Brian Getz and company at Oracle, who are doing the Java evolution work or are at the center of it — I’m generally really happy with what they’re doing.”
Although for Project Valhalla, an attempt to bring user-defined primitives and value objects, Gosling observes with a laugh that “I think they really underestimated how hard that was going to be! Because I had spent a bunch of time on it, and it was, you know — it’s many Ph.D. theses to make Valhalla work. Someday they’ll get that one to really work.”
Why Projects Fail
Gosling was clearly speaking with the voice of experience — especially when one audience member asked why so much research and experimentation doesn’t always get translated into things people end up actually using. Gosling launched into a delightful round of pontification, explaining that “there are a bunch of failure modes for projects.
“A lot of the time, the biggest problem is that engineers often don’t know how to explain what they’re doing. When somebody says ‘Oh, what are you working on? Why is it cool?’, you leap into these low-level, nerdy details about how this or that is done. And that would make sense to you, but to the person who’s listening to you, what they really want to hear is, how would this make my life better? How would this make the system I’m building faster, more reliable, easier to build?”
Gosling later described it as the problem of “how do you tell, like, a senior manager in your company why this low-level nerdy detail is important.”
His memory reached back to the early days of Java, when his wife urged him to relate Java to people who were just trying to run a business, “and try to explain how it would make life better for them. So I wrote up a dozen scenarios of different kinds of companies, and what they might be trying to do and why Java would make things better. And that helped a lot.”
Gosling also identified another mode of failure common among people doing Ph.D. theses/masters theses. “Their goal is to graduate. So they write their thesis and then they’re done — and so they don’t try to spread it around.” As an example, Gosling counts himself as one of the thesis writers who committed a common form of this failure: envisioning applications for which “the computer power of the day just barely able to perform the work.” But this just reinforced his larger conclusion.
“There’s a whole lot of ways to fail.”
Finding the Fun
One of the talk’s most inspiring moments came towards the end. An audience member asked Gosling what he’d say if he could deliver one message to every programmer on earth — from those writing HTML for a web page to those writing compilers.
Gosling had replied: “Have fun.”
“If you’re working on some engineering project, find the fun in it. There’s always fun in anything.” Gosling then described himself as having “a bad case of Shiny Object Disease,” so much so that he’s chased after things that are cool rather than building a career. “It’s like, whatever I’m working on, if it isn’t fun — I’m gone.
“But I’ve also found that I can find fun in almost anything. And as soon as you can figure out how to make things fun, you’re more engaged, you don’t get distracted, you’re almost certainly going to be more creative.
“And, you know… Life is boring if your nose is on a grindstone.”
- Two “algorithmic artists” use computer simulations to generate breathtaking, nature-inspired designs.
- How a self-educated Vermont farmer took the world’s first close-up photographs of snowflakes.
- How computers helped researchers crack a Spanish king’s secret code for a letter sent in 1547.
- Solis’s new consumer-friendly tech gadget: a portable Wi-Fi Hotspot.