You have worked for Lucasfilm and Paramount Pictures. How was it, could you share any highlights on the experience you got while working with such well known film production companies?
Skywalker Ranch was the best place I have ever worked. The setting was remote and beautiful. It was staffed with incredibly smart and talented people. We saw lots of previews of movies. And I had the privileged of giving tours of the ranch to guests. Once I was showing the ranch to Nolan Bushnell (founder of Atari). At one point he turned to his assistant and said "I need to make a lot more money."
You participated in the āEā programming language development in 1997. Which programming language was a reference for you those days?
Dean Tribble was developing an amazing language called Joule. Doug Barnes figured out a way to plop the best ideas of Joule onto Java, which we called E. Martin Odersky developed the first E compiler. Mark Miller redesigned E, eliminating many of the bad parts of Java. The goal of these languages was to support the development of secure, distributed systems.
In your opinion, what expected changes in JavaScript are going to be the most important?
The best thing we can do today to JavaScript is to retire it. Twenty years ago, I was one of the few advocates for JavaScript. Its cobbling together of nested functions and dynamic objects was brilliant. I spent a decade trying to correct its flaws. I had a minor success with ES5. But since then, there has been strong interest in further bloating the language instead of making it better. So JavaScript, like the other dinosaur languages, has become a barrier to progress. We should be focused on the next language, which should look more like E than like JavaScript.
Historically, JSON is contrasted to XML. Do you think that JSON already won the battle and XML has to go?
You spread the idea that developers should read each other's code regularly. The business benefit is obvious here. But how should we motivate the team to accept such a way of interaction?
In filmmaking, there is a time in the morning called "dailies", when the previous day's footage is examined. It looks like everyone is just sitting around watching movies and wasting time, but it is critically important in finding problems early and assuring the quality of the product. I believe that we should do the same thing in programming. We have a time every morning when the team gets together and reviews all of the code and designs that were developed the previous day.
The benefits are obvious. As an individual, you collect professional experience points faster by reviewing the work of others. As a team, you have more eyes looking for errors and faulty designs and giving praise for good work and instruction where needed.
It is easy to convince smart programmers to adopt this practice. It is harder to convince managers because the code reading time looks like lost time. But it is not. It is explicitly scheduling quality into the process. It usually does not take much time because we can not write that much code in a day. It can only work if management requires it and it becomes part of the culture.
At previous interviews you mentioned that hardware is a million times better, but software is far behind. Could you give advice to developers on how to improve code quality?
See answer 5. Also, we need better languages. Most of our languages were designed for the paradigm where the entire program is running as a single process in a single machine. That is not the world we live in now.
Some developers have a negative attitude towards jQuery, considering it a heavy collection of syntactic sugar. How do you feel about it?
At the time that jQuery as developed, the Document Object Model was a horrendous mess. It was necessary to have a layer than corrected its mistakes, limitations, and bugs, and improved portability. jQuery did that brilliantly. But since then, better standards were developed, and the browser makers were finally persuaded to comply with them, mostly, and Internet Explorer was finally retired at long last. Meanwhile, jQuery got bloated.
Is it possible that there will be a JavaScript replacement for client-side DOM manipulation in the foreseeable future?
I have been hoping for that since 1995. There are two difficulties. First, we don't have the next language yet. It needs to be a minimal capability-based actor language that is designed specifically for secure distributed programming. Nothing less should be considered. Second, we need all of the browser makers to adopt it and to simultaneously replace the DOM with a well designed interface. Good luck with that.
Besides working on JavaScript, you are a successful writer. What are you working on now? Should we expect any new JavaScript books under your authorship in the future?
I just published A Million And One Random Digits and its sequel, A Million Nines. I am currently working on Lower Mathematics, which is a redesign of Mathematics starting with the foundations of Computer Science: functions and bits. I will not write about JavaScript again, but I am very much looking forward to writing about the next language when it arrives.
At the end of our interview, please share some of your tips regarding work-life balance. Is it necessary for everyday productivity?
I have struggled with sleep deprivation in my career, and I have learned that I write my best stuff when I am well rested. I think it is ultimately counter productive to work too late or too long. When you are exhausted, you are not doing your best work, and in this business, all of our work should be our best work.
Working reasonable hours frees up time to take long walks, to eat healthy food, and to spend time with family and friends.