Life Beyond Code

Great Programmers Answers….Interview with Steve Yegge, Linus Torvalds, Dave Thomas, David Heinemeier, Peter Norvig, James Gosling, Guido Van, Tim Bray.

Posted on: August 2, 2006

These questions were asked by Stiff from Great Programmers of the times. I felt these Questions with answers to be included in my blogs. So Here it is.

The participants are all quite notable:

  • Linus Torvalds (Linux)
  • Dave Thomas (Pragmatic Programmer)
  • David Heinemeier Hansson (Ruby/Rails)
  • Steve Yegge (Google/Amazon)
  • Peter Norvig (Google Research Director)
  • Guido Van Rossum (Python)
  • James Gosling (Java)
  • Tim Bray (XML)

How did you learn programming? Were any schools of any use? Or maybe you didn’t even bother with ending any Schools 🙂 ?

Steve Yegge:

Itaught myself to program on an HP calculator using their RPN stack language when Iwas 17 years old. I’d tried to learn programming afew times before that but never really „got” it. The HP 28c and 48g scientific calculators were pretty powerful and had great docs. Iwrote a3D wireframe viewer for the 48g — Igot abook on 3D graphics and painstakingly translated an example program in Pascal into the RPN stack language. It was pretty sweet when Igot it running. After that Ibought aPC and Turbo Pascal, and started
studying programming in earnest. Iwas adecently good programmer by the time Iwent into the CS program in college.

Iwent to the University of Washington and got an undergrad degree in CS. It was definitely worthwhile, and Irecommend that all programmers should try to get aCS degree if possible.

Linus Torvalds:

Ididn’t learn programming in school, but mostly on my own reading books and just doing it (initially on aCommodore VIC-20, later on aSinclair QL).

That said, Ithink especially University was very useful. Rather than go to an engineering school, Iwent to Helsinki University, which is pretty theoretical, so there the teaching concentrated not so much on programming (which was just asmall part, and which Iended up doing more of „on the side” anyway), but most of the courses tended to be on fundamental concepts and things like complexity analysis.

Which can seem boring and even awaste of effort at times, but Ithink it was useful, and Imostly enjoyed it. And Ithink I’m probably abetter programmer for it.

David Heinemeier Hansson:

Ilearned programming by starting to put together my first web page in HTML. Then Iwanted to make some dynamic pieces and picked up first ASP then PHP. After Ialready knew how to program, Ithen started on ajoint computer science and business administration degree.

Peter Norvig:

Itook courses in high school and college, but always felt Ilearned more on my own.

Dave Thomas:

During my secondary schooling Itook aclass in alocal technical college on computers. It got me totally hooked: Ifell in love with programming, and looked around for colleges offering courses in software. Eventually Iwent to Imperial College, part of London University. It was only the second year they’d offered acourse in software, and it was absolutely marvelous: the staff and students worked together to make the materials better, and everyone learned alot. The undergraduate course there gave me an incredibly
strong background in software development. Istayed on to start aPhD, but got lured away by astartup.

But the overall question is „how did you learn programming?” The real answer to that is „I’m still learning programming.” Ithink any good developer continues to learn throughout their careers. It isn’t just aquestion of picking up new languages and libraries: good developers also refine their techniques and practices over the years.

Guido Van Rossum:

Iwent to university where they had abig mainframe and there were various computer courses. This was very important for me.

James Gosling:

Initially, Iwas self-taught. Igot my first programming job before Iwent to college. But I’m glad Idid. Ihad alot of fun. Ikept going until Ihad aPhD.

Tim Bray:

Ithought Iwas going to be amath teacher. The math program at University required afew computer science courses.

– What do you think is the most important skill every programmer should posses?

Steve Yegge:

Written and verbal communication skills. You’ll never make it very far as aprogrammer in any field unless you can get your ideas across to people effectively. Programmers should read voraciously, practice writing, take writing courses, and even practice at public speaking.

Linus Torvalds:

It’s athing Icall „taste”.

Itend to judge the people Iwork with not by how proficient they are: some people can churn out a_lot_ of code, but more by how they react to other peoples code, and then obviously by what their own code _looks_ like, and what approaches they chose. That tells me whether they have „good taste” or not, and the thing is, aperson without „good taste” often is not very good at judging other peoples code, but his own code often ends up not being wonderfully good.

But hey, it’s not the only thing. One thing that is very useful, especially in an open source project, is simply the ability to communicate well what you want to do, and how you are going to do it. The ability to explain to others _why_ you do something acertain way is very important, and not everybody has that ability.

That said, in the end there are also the people who just churn out good code. They may not be good at explaining it, and they may not even have great taste, but the code works well. Sometimes you need another person (one that _does_ have that hard-to-define „taste”) to maybe massage the code into aform where it’s useful in the bigger picture, but just the ability to write clear code for difficult problems is obviously afairly fundamnetal part of any programmer.

David Heinemeier Hansson:

Astrong sense of value. The ability to ask yourself the question: Is it worth doing what I’m doing right now? So many programmers seem to waste oceans of time on stuff that just doesn’t matter. And not enough on the stuff that does.

Peter Norvig:

Idon’t think there’s one, but let’s say concentration.

Dave Thomas:

Passion.

Guido Van Rossum:

Your questions are rather general and hard to answer. 🙂 Iguess being able to cook an egg for breakfast is invaluable.

James Gosling:

To be self motivated. To be really good, you have to be in love with what you do.

Tim Bray:

Ability to prefer evidence to intuition.

– Do you think mathematics and/or physics are an important skill for a programmer? Why?

Steve Yegge:

There is alarge branch of mathematics that’s very important for programmers called „discrete math” or „concrete math”. It includes disciplines such as probability, combinatorics, graph theory, induction proofs, and other useful tools. Iwould encourage all programmers to study discrete mathematics to whatever extent they can. Even alittle is better than none at all.

As for more traditional math, well, Idon’t use it as often, but it comes in very handy when Ineed it. For instance, I’ve only used calculus once in the past year as part of my job. Ihad to estimate loads for the peak traffic hour of the day for aservice whose load „follows the sun” in an approximate sine curve. The simplest way to make the estimate was to integrate over 1/24th of the curve at aspecific time. If Ihadn’t known calculus, Iwould not have known how to make areasonably accurate estimate.

When Iwas writing my game, Wyvern, having asolid working knowledge of basic planar geometry was incredibly helpful. And it’s quite common to use algebra and linear algebra on aregular basis. But Irarely use trigonometry or differential equations on the job, and not much calculus either.

I’d say my basic math foundation has made me maybe 5% to 10% better as aprogrammer. If Iknew alot more math, I’d undoubtedly be amuch better programmer than Iam today, so Istudy and practice math several hours aweek.

Ilove physics and Ihave an ongoing, lifelong quest to try to understand the underpinnings of quantum mechanics. But I’ve never personally found any physics very useful towards my job as aprogrammer. That would, of course, be diffferent if Iwere doing something in aphysics domain, such as 3D game programming, or certain types of simulation.

Linus Torvalds:

Ipersonally think afairly strong math background is agood thing. I’m not as sure about the physics side, but I’m convinced that understanding math and having agood background in it helps you to be abetter programmer. If only because the mental models are similar – you can build up any kind of set of rules you want, but it should be self-consistent.

David Heinemeier Hansson:

Not at all. At least not for the kind of business programming needed for web applications. Iconsider it much more important that someone is agood writer.

Peter Norvig:

Yes. Many ideas are inherently mathematical: induction, recursion, logic, etc.

Dave Thomas:

Maybe. But, to be honest, Ihaven’t seen much of acorrelation either way between these types of discipline and good software developers.

However, I_have_ seen astrong correlation between people who have some music in their background and programming skills. Ihave no idea why, but Isuspect that some of the areas of the brain that make someone musical also make them good at software development.

Guido Van Rossum:

Math, yes (for some parts; Idon’t care for differential equations, but algebra and logic are important). Physics, Idon’t think so except it’s always useful to be interested in many different things.

James Gosling:

Yes! They teach you logic & deduction…. To have an analytical eye. And there’s no replacement for mathematics when it comes to analyzing algorithms.

Tim Bray:

In my case, I’ve almost never used my university-level math to support my programming.

– What do you think will be the next big thing in computer programming? X-oriented programming, y language, quantum computers, what?

Steve Yegge:

Ithink web application programming is gradually going to become the most important client-side programming out there. Ithink it will mostly obsolete all other client-side toolkits: GTK, Java Swing/SWT, Qt, and of course all the platform-specific ones like Cocoa and Win32/MFC/etc.

It’s not going to happen overnight. It’s very slowly been going that direction for ten years, and it could well be another ten years before web apps „win”. The tools, languages, APIs, protocols, and browser technology will all have to improve far beyond what you can accomplish with them today. But each year they get alittle closer, and I’ve finally decided to switch all my own app development over to browser-based programming from now on.

Microsoft and Apple definitely don’t want this to happen, so anecessary first step will be for an open-source browser such as Firefox to achieve adominant market position, which will in turn require some sort of Firefox-only killer app. (A killer app would be something like iTunes, something that everyone in the world wants to use, badly enough to download Firefox for it.)

Linus Torvalds:

Idon’t think we’ll see a„big jump”. We’ve seen alot of tools to help make all the everyday drudgery easier – with high-level languages and perhaps the integration of simple databases into the language being the main ones. But most of the buzz-words have been of pretty limited use.

For example, Ipersonally believe that „Visual Basic” did more for programming than „Object-Oriented Languages” did. Yet people laugh at VB and say it’s abad language, and they’ve been talking about OO languages for decades.

And no, Visual Basic wasn’t agreat language, but Ithink the easy DB interfaces in VB were fundmantally more important than object orientation is, for example.

So Ithink there will be alot of incremental improvements, and the hardware improvements will make programming easier, but Idon’t expect any _huge_ productivity help or revolutions in how people do things.

At least not until you start approaching real AI, and Idon’t think real AI is going to be anything you will ever „program”.

David Heinemeier Hansson:

Itry not to predict the future. I’m not abig believer in fortune telling. The best way to predict the future is to implement it.

Peter Norvig:

Large-scale distributed processing.

Dave Thomas:

The next big thing in computer programming will be eclipsed by the next–next big thing in programming, and so on, and so on. I’m kinda tired of the endless search for the big things, because while doing it people tend to forget about the real issues: getting the fundamentals right. We need to get awhole lot better at talking with our customers, focussing on delivering value, and taking pride in what we do. Adeveloper who can do these things can deliver great software with any tool set, and won’t need to worry
about tracking the fads and fashions.

Guido Van Rossum:

Sorry, I’m not much of acrystal ball person. Ipredicted CGI about 5 years after it had been invented. 🙂

James Gosling:

The two issues I’m most concerned about now are coping with parallelism and complexity.

Tim Bray:

No idea.

– If you had three months to learn one relativly new technology, which one would You choose?

Steve Yegge:

Ido happen to have 3 months (part-time), and I’m spending it learning Dojo (http://dojotoolkit.org) and advanced AJAX and DHTML. I’m learning it by writing afairly ambitious web application. Dojo’s really cool, and I’m sure it will only improve with time.

Linus Torvalds:

Hmm. I’d really love to do FPGA’s, but I’ve always been too busy to really sit down and start learning. Ilove the notion of playing with hardware: it’s obviously one of the reasons Iended up doing operating systems, since that (along with compilers) is about as close as you can get to playing with the hardware, without actually designing or building it yourself.

David Heinemeier Hansson:

Cocoa programming for the Mac.

Peter Norvig:

I’d like to know Javascript better. Also flash.

Dave Thomas:

If „new” means „new to Dave Thomas” then Ithink I’d take intensive piano lessons.

If „new” means technology stuff, then Iguess I’d choose technologies related to accessibility for people with disabilities.

Guido Van Rossum:

Snowboarding.

James Gosling:

For fun, I’d catch up on the latest in 3D rendering. I’d probably write aphoton-map renderer.

Tim Bray:

Security, encryption, digital signatures, identity, etc. It’s abig problem for me that I’ve never learned this stuff.

– What do you think makes some programmers 10 or 100 times more productive than others?

Steve Yegge:

Ithink if you pause to consider why not all atheletes are equally good, you’ll have your answer(s). Thomas Edison has arelevant quote about genius that might also provide you some clues.

Linus Torvalds:

Ireally have no idea. Ithink some people are just better able to concentrate on the things that matter, and Ithink alot of it is just doing it. Most of the really good programmers Iknow started doing it fairly young.

David Heinemeier Hansson:

The ability to restate hard problems as easy ones.

Peter Norvig:

The ability to fit the whole problem into their heads at one time.

Dave Thomas:

They care about what they do.

Guido Van Rossum:

Genetic differet brain structure.

James Gosling:

They think about what they do. They don’t rush in and slap things together. They have aholistic picture of what is to be built.

Tim Bray:

The surprising variability of the human mind.

– What are your favourite tools (operating system, programming/scripting language, text editor, version control system, shell, database engine, other tools you can’t live without) and why do you like them more than others?

Steve Yegge:

OS: Unix! Iuse linux, cygwin, and darwin all about equally often now. You just can’t beat it for productivity tools. Every programmer should learn how to use every tool in /bin and /usr/bin.

Scripting language: Ruby. I’m proficient with just about every major scripting language out there: Perl, Python, Tcl, Lua, Awk, Bash, and others I’m forgetting. But I’m really lazy, and Ruby’s by far the easiest, so it’s amatch made in heaven.

Programming language: Idon’t have afavorite; Ithink they all suck. Itend to prefer Java because it’s astrong, portable platform with good tools and good libraries. But the Java language will evolve or die; it’s not good enough as-is to hold the lead indefinitely.

Text editor: Emacs, because it’s the best thing out there today.

Version control: SVN. Perforce is better, but it’s very expensive.

Shell: Bash, because I’m too lazy to learn abetter one.

Database engine: MySQL, of course. Nothing else comes close.

Others: Ifind the GIMP invaluable, and also maddeningly unintuitive. I’ve been using it for years and can still barely do anything with it. But Icouldn’t live without it, ironically enough.

Firefox is becoming an increasingly critical part of my tools lineup. Ifeel suffocated when I’m forced to use IE or Safari.

Note that all these tools (Unix, Emacs, Firefox, GIMP, MySQL, Bash, SVN, Perforce) have something in common: they’re extensible; i.e., they all have programming APIs. Great programmers learn how to program their tools, not just use them.

Linus Torvalds:

Iactually don’t end up having that many tools Iwork with, and for the many of them Ihave spent some time of my own to just make them work for me. The OS part is clearly the biggest one, but I’ve obviously also written my own version control system (git), and the text editor Iuse (micro-emacs) I’ve ended up customizing and extending upon too.

Other than those three parts, the only thing Icare deeply about is my email reader. Iuse „pine” – not because it’s necessarily the greatest email reader ever, but because I’m used to it, and it does what Ineed it to do with aminimum of fuzz.

David Heinemeier Hansson:

OS X, TextMate, Ruby, Subversion, MySQL. That’s the combo currently keeping me happy. Ilike tools that exhibit good taste and afocus on the stuff that matters.

Peter Norvig:

Idislike all three major OS – Windows, Mac, Linux. Ilike Python and Lisp. Emacs.

Dave Thomas:

Iswitched to Macs acouple of years ago after being aLinux person for more than 10 years. The tools are not necessarily better, but they don’t have to be sharpened or maintained as often, which lets be concentrate on just using them.

I’m not agreat believer in single tools: Itend to switch around quite frequently just so Ican get experience with as many tools as possible. Right now I’m using OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres, and awhole lot of small productivity aids. Who knows what I’ll be using next year.

Guido Van Rossum:

Unix/Linux, Python, vi+emacs, Firefox.

James Gosling:

These days Ilive in NetBeans. It does everything Iwant, very cleanly simply and efficiently. It’s the nicest environment I’ve ever lived in.

Tim Bray:

Ilike Unix-like operating systems, dynamic languages like Python and Ruby and statically-typed languages like Java (in particular the Java APIs), Emacs, whatever, bash, whatever, NetBeans.

– What is your favourite book related to computer programming?

Steve Yegge:

Man, that’s atough one. Maybe *Gödel, Escher, Bach: an Eternal Golden Braid *(Hofstadter)? Although it’s not strictly about programming. If you specifically mean „favorite book about programming”, then maybe SICP (mitpress.mit.edu/* sicp*/).

Linus Torvalds:

Heh. When Iread these days, Itend to either read fiction, or non-computer-related stuff (oldie but goodie: „The Selfish Gene” by Richard Dawkins).

When it comes to programming, the only real programming book that comes to mind is actually the classic Kernighan & Ritchie „The C Programming Language” book, because it’s such an incredibly useful book while being so very readable and _short_. Considering that you can basically learn one of the most important programming languages of our times from it, the fact that it’s thin and readable is just awonder.

That said, many other books Ienjoyed alot were not about programming per se, but about computer architecture and hardware. There’s obviously Patterson & Hennessy’s computer architecture book, but for me personally perhaps even more Crawford & Gelsinger’s „Programming the 80386″, which was what Iused when Istarted with Linux.

For similar reasons, Ihave asoft spot for Andrew Tanenbaum’s „Operating Systems: Design and Implementation”.

David Heinemeier Hansson:

Ilike Extreme Programming Explained for its rejection of common thinking about programming practices and Patterns of Enterprise Application Architecture for striking the right balance of abstract and concrete.

Peter Norvig:

Structure and Interpretation of Computer Programs

Dave Thomas:

It depends on what you mean by „favorite.” Probably the best written book I’ve read in the area is IBM’s „IBM/360 Principles of Operation.”

Guido Van Rossum:

Neil Stephenson’s Quicksilver.

James Gosling:

Programming Pearls by Jon Bentley.

Tim Bray:

Bentley’s Programming Pearls

– What is Your favourite book NOT related to computer programming?

Steve Yegge:

Just one book? You’re asking for the impossible. There are too many great books out there to choose just one.

My favorite books that I’ve read this month are „Stardust” (Neil Gaiman) and „The Mind’s I” (Hofstadter/Dennet).

My favorite writers are Kurt Vonnegut, Jr. and Jack Vance.

Linus Torvalds:

Well, Ialready mentioned the Selfish Gene by Dawkins. On the fictional side, there’s just alot of books I’ve read and anjoyed, but few I’d say were my „favourite” one. Itend to not often re-read the books, and the selection would change over time. It’s mostly science fiction and fantasy, eg „Stranger in aStrange Land” by Heinlein was my favourite one as ateenager, but it’s abit less clear-cut for me these days..

David Heinemeier Hansson:

1984, George Orwell.

Guido Van Rossum:

Neil Stephenson’s Quicksilver.

James Gosling:

Guns, Germs & Steel by Jared Diamond

Tim Bray:

One Day in the Life of Ivan Denisovich

– What are your favourite music bands/performers/compositors?

Steve Yegge:

Favorite genres: classical, anime soundtracks, video-game music
Favorite composers: Rachmaninoff, Chopin, Bach
Favorite performers: David Russell (classical guitar), Sviatoslav Richter
(piano)
Favorite anime OSTs: Last Exile, Haibane Renmei

Linus Torvalds:

I’m actually not very much into music, but when Ilisten to it, Itend to listen to various classic-rockish things, ranging from Pink Floyd to the Beatles to Queen and The Who.

David Heinemeier Hansson:

Ilike alot of genres. Beth Orton, Aimee Mann, Jewel, Lauryn Hill. Actually, all those examples would fit under Girls with Guitars ;).

Guido Van Rossum:

Philip Glass.

James Gosling:

Itend to like folk musicians: Christine Lavin, Woody Guthrie, Pete Seeger…

Tim Bray:

Read my blog.

20 Responses to "Great Programmers Answers….Interview with Steve Yegge, Linus Torvalds, Dave Thomas, David Heinemeier, Peter Norvig, James Gosling, Guido Van, Tim Bray."

[…] I read Stiff’s questions for great programmers. One of his interviewees was Steve Yegge. […]

[…] very nice Q&A with a bunch of different programmers. Some nice pearls of wisdom in […]

[…] quote Dave Thomas: The tools are not necessarily better, but they don’t have to be sharpened or maintained as […]

This is very nice and informative post. I have bookmarked your site in order to find out your post in the future.

There seems to be some problems with words sticking together.

Example:

“Ipersonally think afairly strong math background is agood thing”

Want to start your private office arms race right now?

I just got my own USB rocket launcher 🙂 Awsome thing.

Plug into your computer and you got a remote controlled office missile launcher with 360 degrees horizontal and 45 degree vertival rotation with a range of more than 6 meters – which gives you a coverage of 113 square meters round your workplace.
You can get the gadget here: http://tinyurl.com/2qul3c

Check out the video they have on the page.

Cheers

Marko Fando

[…] Torvalds cita spesso il buon gusto come una caratteristica fondamentale di un ingegnere: I see myself as not just a […]

Two new studies show why some people are more attractive for members of the opposite sex than others.

The University of Florida, Florida State University found that physically attractive people almost instantly attract the attention of the interlocutor, sobesednitsy with them, literally, it is difficult to make eye. This conclusion was reached by a series of psychological experiments, which were determined by the people who believe in sending the first seconds after the acquaintance. Here, a curious feature: single, unmarried experimental preferred to look at the guys, beauty opposite sex, and family, people most often by representatives of their sex.

The authors believe that this feature developed a behavior as a result of the evolution: a man trying to find a decent pair to acquire offspring. If this is resolved, he wondered potential rivals. Detailed information about this magazine will be published Journal of Personality and Social Psychology.

In turn, a joint study of the Rockefeller University, Rockefeller University and Duke University, Duke University in North Carolina revealed that women are perceived differently by men smell. During experiments studied the perception of women one of the ingredients of male pheromone-androstenona smell, which is contained in urine or sweat.

The results were startling: women are part of this repugnant odor, and the other part is very attractive, resembling the smell of vanilla, and the third group have not felt any smell. The authors argue that the reason is that the differences in the receptor responsible for the olfactory system, from different people are different.

It has long been proven that mammals (including human) odor is one way of attracting the attention of representatives of the opposite sex. A detailed article about the journal Nature will publish.

Nice stuff,
Thanks for sharing.

игры скачать бесплатно бесплатные песни скачать бесплатно

I have to show some thanks to the writer just for bailing me out of such a dilemma. As a result of surfing throughout the online world and coming across strategies that were not beneficial, I believed my entire life was well over. Existing minus the solutions to the difficulties you have resolved all through the post is a serious case, and the kind that would have negatively damaged my career if I had not discovered your web page. Your own personal know-how and kindness in playing with every part was tremendous. I’m not sure what I would have done if I hadn’t come upon such a stuff like this. I can also at this moment look ahead to my future. Thanks very much for your specialized and results-oriented help. I won’t be reluctant to suggest your web site to anybody who needs guide on this subject matter.

I really like your writing style, fantastic info , regards for putting up : D.

Hi, I am new to running a blog and internet sites in general and was wanting to know how you got the “www” included in your domain name?
I see your domain name, “https://usmanahmad.wordpress.com/2006/08/02/great-programmers-answersinterview-with-steve-yegge-linus-torvalds-dave-thomas-david-heinemeier-peter-norvig-james-gosling-guido-van-tim-bray/” has the www and my web address looks
like, “http://mydomain.com”. Do you know exactly how I
can change this? I’m using WordPress platform. Thanks for your time

http://www.technoscrum.blogspot.in/2013/07/ruby-on-rails-interview-questions.html

This may Help People. I have gathered some best ROR Interview questions and answers.

fire safety training for Construction Sites Maybe not too many people
homeless. Smoke hoods can fit both children and adults alike.
Remember that fire extinguishers are used for class ‘A’ and B.
Not all fires are accidental and part of your fire safety training system.
Honeymoon Shopping Spree in London Honeymoon shopping in London will make your next
holiday a little easier.

I’m keen on the valuable information and facts anyone offer with your articles or blog posts. I will take a note of your weblog and check again the following often.. Read Homepage I will be reasonably sure I am going to understand numerous completely new goods appropriate listed here! All the best for!

Fantastic difficulties once and test for all, you only earned a brand new viewer. Just what exactly can you advocate when it comes to your current set up you designed at times earlier? Any guaranteed?

Thanks for sharing this information is useful for us, also I read an article on the same theme https://drawings.archicgi.com/revit-modeling-services-7-advantages-for-architectural-projects/

I really enjoyed reading this post. It actually inspired me to share with you another useful article on the subject https://archicgi.com/blog/architecture/types-of-3d-rendering-for-architecture-and-design/

Leave a comment

Calendar

August 2006
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
28293031  

My del.icio.us

RSS Readings

  • An error has occurred; the feed is probably down. Try again later.

And Here is ME...

Top Clicks

  • None