Great Programmers Answer Questions From Aspiring Student
NathanBFH writes "Many of the questions that make it to the Ask Slashdot pages come from young and aspiring programmers wanting to know the role math and education play in the profession, or what makes certain programmers so much more productive than others, or what the future of the craft will look like. One young programmer by the name of Jarosaw "sztywny" Rzeszótko decided to ask these types of questions (and more) to the programmers he admired the most who also, it turns out, happen to be some of the most influential computer scientists and programmers of the last several decades. The result? Most of them happily responded. The results include the following: Linus Torvalds (Linux), Bjarne Stroustrup (C++), James Gosling (Java), Tim Bray (XML, Atom), Guido Van Rossum (Python), Dave Thomas (Pragmatic Programmer), David Heinemeier Hansson (Rails Framework), and Googlers Steve Yegge and Peter Norvig."
Ada nuff said.
The war with islam is a war on the beast
The war on terror is a war for peace
I'm suprised they didnt say "go into sales kid".
What makes a programmer great? The software they produce? The influence they have in the markt? The money they earn?
or what makes certain programmers so much more productive than others
The most productive programmers have slashdot.org pointed at 0.0.0.0 in their hosts file.
liqbase
I don't think i've seen it on /. yet (but I may very well err). Your feeling is more likely to exist because this thing's several month old (23rd of july)
So it's less of a dupe and more of a "slow news day" thing.
"The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
without Donald Knuth this list is *SO* incomplete.
Google passes Turing test : see my journal
I hear he's really approachable in person.
We recently had heard in the office over one of the Yellow Machine that's made by Anthology Solutions.
One young programmer by the name of Jarosaw "sztywny" Rzeszótko decided to ask these types of questions (and more) to the programmers he admired the most who also, it turns out, happen to be some of the most influential computer scientists and programmers of the last several decades.
He asks such age-old questions as, "Why am I forced to learn the LISP programming language? Seriously? What the hell? I can program in C just fine."
Push Button, Receive Bacon
Heh. I missed that the first time around.
My work here is dung.
Jarosaw "sztywny" Rzeszótko
That's it... I resign!!
- suv4x4's spellchecker.
...it's all about answers. Those guys answered them - and everybody knows how busy they are. I think it shows something about them - their character, the way they treat other people, how helpful they're trying to be. When I was younger I met many times people who claimed to be good programmers, but every time I asked them any kind of questions answer was fairly the same: you noob go to books, online, and other abuse. That effectively prevented me from joining OSS club. If we want more good programmers, people with passion - we need to allow them to enter mainstream - by helping them, not rejecting. Everybody started some time ago, and all of us know how hard was to get over some, now basic, problems. If we show them positive way - they will learn it - and do the same to other. jackharrer
"an experienced, industrious, ambitious, and often, quite often, picturesque liar" - Mark Twain
What I found interesting were the books these guys listed as favourites or recently read. Hofstadter, Dennet, Dawkins, Diamond, Gaiman, Vonnegut, Orwell... are all my favourites too.
Strange no one mentioned Pinker, though.
"Blah blah blah." - [citation needed]
Linus Torvalds (Linux) - cloned Minix because he was too tight to pay for a copy
Bjarne Stroustrup (C++) - added all the easy bits of smalltalk to C. Wow.
James Gosling (Java) - Took C++ and made it slower
Tim Bray (XML, Atom) - XML has nothing to do with programming
Guido Van Rossum (Python) - Nor does Python
Dave Thomas (Pragmatic Programmer) - Pragmatic = can't do decent designs
David Heinemeier Hansson (Rails Framework) - Yeah right, sure
Googlers Steve Yegge and Peter Norvig. - LOLz
Where are Turing, Knuth and Parnas? The people listed above are all just latter-day uber-geeks. Big fish-small pond types. Re-inventors of other peoples ideas and custodians of gradual decay in the standards of modern software.
The list is nice, but what about some of the forefathers? To not have these guys (and gal) on the list is crazy, especially when talking about most influential computer scientists:
Alan Turing
Charles Babbage
Ada Lovelace
Edsger Dijkstra
There are many others, but certainly 1 or all of theses people were crucial to the field of computer science.
What's this?! The great hacker god Eric Raymond is not in this list?!
- the-codea ymond2.jpg. jpgm l
http://geekz.co.uk/lovesraymond/archive/show-them
http://catb.org/jargon/html/S/suit.html
http://www.self-gov.org/celebrities/images/eric-r
http://pepelucho.blogsome.com/images/eric_raymond
http://www.sacred-texts.com/bos/bos086.htm
http://www.catb.org/~esr/writings/sextips/sexy.ht
That everybody on the list just started programming, and most enhanced programming with education.
I firmly believe that programming is something that you are born with, and can do or pretty much can't do. Like everything else, its something where you can always learn more tricks, tips, and techniques, but I don't believe that it is something that can really be "learned". The attention to detail, troubleshooting, and all of those little skills that are necessary to program are tough.
To put it another way, I can program just fine. I can draw a stick person or something and another person can recognise it, and whatnot. I am by no means an artist, and never will be.
I also find it interesting that K&R is the only book mentioned by more than one responder.
But where is the C# / VB.Net representation? I'm not saying its the industry standard, but it is pretty wisely used out there. Also, its a little easier to get into, if you're on the novice level, but will also allow you to build some pretty robust applications.
Just askin'
I consider Carmack to be one of the greatest programmers, I wonder if the guy asked him.
The anonymous hero at IBM that wrote hero.bas for qbasic.
DECLARE FUNCTION ExplodeGorilla (x#, y#)
But who would be the top programmers to interview? A lot of the famous names are (a) dead, and (b) never actually wrote a line of code in their lives.
Then they said, in unison, "one word for you young man, Plastics".
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
what Jarosaw "sztywny" Rzeszótko is worth at scrabble....
cat and lister playing scrabble
cat places sztywny on the board
Lister: is that a word?
cat : yes it's a cat word for when you get you privates caught it your zip
Lister: is it in the dictionary
cat: could be if you're reading it in the nude and close it quickly cat demostrates the action and result
With appropriate apologies
;-]
Not yet. Give it time.
Communication being stated as a very important skill by more than one of the Greats was a definite surprise to me, since it is, IMHO, not addressed usually. Thats the thing which almost all the just-out-of-the-greatest-college-with-the-best-gra des programmers seem to lack.
-- Prem
Aiming to tweet on a rice
An interesting thing I noticed is the disagreement of what is "math" when talking about programming. I think it's a matter where you come from. If you started with mathematics and went into programming, then I guess everything is math.
On the other hand, a self-taught programmer often sees pretty much everything as "programming". "Math" is then algebra and all that boring stuff they learned in school like trigonometry, which they never use when coding. From this point of view, graphs, trees, recursion, etc are just programming concepts and not seen as necessarily related to the underlying mathematics.
This seems to explain the confusion that occurs when a student asks "do I need math?" to an experienced professional. The student understands math as in elementary algebra, trigonomery, derivation and matrices, and wonders what's the point all of all that when probably nowhere in the Linux kernel there's any need to derivate anything.
knuth answers email through a proxy. It is possible to send/receive email from him.
Why did the submitter think an article that was created on July of 2006 fresh enough to be posted on a forum which is News for nerds. An article that old is hardly news.
A witty signature proves nothing
It is better to remain silent and be thought a fool than to speak (write) and remove all doubt 8-)
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
I noticed a commonality in some of their answers. More I guess the way they answered them. When they didn't know an answer, they said "I don't know". I think the ability to admit you actually don't know the answer to something is very important. How many actors, salesman, or politicians have you ever heard use those words? Not too many!
If an officer ever threatens to taze you, say you have a pacemaker.
Shouldn't that be "Dave Thomas (Wendy's)"?
It was featured on reddit.com .. perhaps that's what's confusing you
- Leon Mergen
http://www.solatis.com
The guy is brilliant. He wrote my 4th year AI text (Russell & Norvig).
Also one of my favorites: Teach Yourself Programming in Ten Years
Knuth is great for his theoretical work, but I don't know if he'd rank up there as an important programmer. Although I suppose someone could make an argument for it based on his work on TeX.
The real great programmers omissions I see are Ken Thompson and Dennis Ritchie. It's hard to top creating the most influencial programming language and the most influential OS of all time. (C and Unix, obviously).
When it comes to the OS, Thompson would be a thousand times more interesting to talk to than Torvalds.
Happy people make bad consumers.
Gotta say that I didn't see that one coming.
How could the creator of the program to move a fraction of a penny from millions of transactions into a personal account be left off this list? 'Experts' indeed...
He missed Larry Wall, creator of Perl. Not that Perl makes for great programs (though the fact that Perl works so much, so often, says a lot). But because Wall's C programming of Perl is some of the best programming out there. Perl, an interpreted language, runs faster than most equivalent C programs written by lesser programmers than Wall. It runs on more hardware than almost any language, including Java (and runs better on more HW than Java). Perl has the largest free, open source archive and one of the best FOSS communities, and has since before that was considered a feature of the language. Including the source to the language itself.
Wall also wrote rn, which was equivalent to Usenet for thousands of people for many years, and patch, on which practically everyone outside the MS programming world depend.
These programs are long-lived and popular because Larry programmed them so well to do their essential function. And since he's had to deal with so many obfuscated Perl programs, even winning the Obfuscated C Programming Contest twice, I expect he has a lot of wisdom to deliver to aspiring programmers with question.
He's also probably still available to answer these questions.
--
make install -not war
... to see that Larry Wall didn't make the list.
Ray Ozzie?
Hell, why not: Bill Gates!
I agree with you. When I entered my freshman year into a computer science program there were probably 70+ people in my "class" but nearly every semester the amount of people was cut in half. In this particular school the number of people graduating with a CS degree each year was only about 5. This was not a super intensive school, yet the professors all knew what they were talking about and did a good job of helping students.
While, yes, you can learn a programming language that doesn't mean you can speak it. Simply knowing syntax will get you absolutely no where. A matter of point regarding my current job; While we do ask some questions to new programmers about syntax most of our questions revolve around trouble shooting and strong mental cognitive ability. We want to know how someone thinks, their ideas to solving a problem, what they do when they don't know the answer. These types of things, while they can be enhanced are not something that everyone has innately, this has been proven. Some people are right brained others are left brained. All in all you are an analytical type person or you are not. And that's not saying this is all a good programmer requires...
Anyone can learn a programming language not everyone can program effectively.
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. ~Albert Einstein
I was also going to post about the disagreement but you beat me to it. Honestly, though, I think how much mathematics that you need is dependent on what you are doing. Most programmers really only need small amounts of discrete mathematics and logic, and some programmers won't even need that. If you're designing a 3-D engine you need a lot of geometry and matrix theory. Physics engines need physics (which is really just applied mathematics). Kernels, embedded systems, and other core devices often need to be optimised to run as fast as possible on minimal hardware, which requires a good grasp of run-time complexity (which goes back to the discrete math and logic). I work in the manufacturing industry myself, and I use huge amounts of 3-D geometry/trig in my work. I've only used Calculus once in the workplace so far, but Calculus is useful for simulations of real-world events.
Basically, what I'm telling aspiring programmers out there is that a strong Math background gives you more options- but that you don't need it to be a successful programmer.
You are reading a copy of my copyrighted post.
I'd argue that Stroustrup was more influenced by Simula-67 than by Smalltalk.
Fascism starts when the efficiency of the government becomes more important than the rights of the people.
Interesting answers, but more because of the different take on things than any individual specifics.
However, I wasn't too impressed with the answers to the productivity question.
While general intelligence doesn't hurt, I think the real key to productivity comes down to maintaining an interest/passion in the craft of designing and writing code. If you care about it then you will always be trying new techniques and paying attention to lessons that can be learned. At the neurological level, one only learns (lays down new memories) for something if one is paying attention to it, and form the strongest memories when there is emotion attached to the experience (totally different areas of the brain are used for emotional memories).
A "blah" programmer just trudges through his/her work without ever really paying attention and trying to learn - they just want to get the job done and go home. A programmer more likely to climb the productivity curve will be always be excited about what they are doing, trying to do it in the best/most consise way (I'd even say correct - many probloems do have minimal solutions that can be found), trying new techniques, etc.
It's too bad that the reality of difference in programmer producticvity isn't better understood, or there might be less outsourcing. The whole premise of outsourcing is that programmers are equivalent and therefore cheaper means better value... Personally I'd prefer to seek out the programmers who are 10-20x more productive than the herd and pay them 2 x normal rather than outsource to some Indian college graduate and pay them 1/3 x normal.
who hates the direction that email has taken.
Attachments, MIME, signature blocks written
by lawyers, blah blah blah.
The world would be a better place if all email
were plain text.
Linus uses Pine. And he's right.
I like how Linus says "taste" is the most important quality for a programmer, but then listens to "various classic-rockish things, ranging from Pink Floyd to the Beatles to Queen and The Who". I guess, like operating systems, there hasn't been anything good since 1980s?
..because she was simply brillant!
With great power comes great electricity bills.
I agree with most of the responses to the questions. But, I would say one of the most import attributes any programmer/developer must have is the ability to get shit done.
Yes, it is a dupe, from a few months back though.
Need help treating your acne? Come here!
It'd be nice if the guy who invented how to make a printout of such pages as the one TFA refers to was also interviewed.
What ? This guy does not exist ?
Seriously, why don't they have an option to print their article ? Or perhaps it was 'czwczywatwxzy' ?
The kid did't ask Dr. J.A.N. Lee, Dr. George Gorsline, or anyone relating to Grace Hopper. Oh, I guess they are a bit old now -- Dr. Lee was my compiler professor at Va Tech 29 years ago. Things have changed a lot in the past 30 years - including most of the players, but supprisingly the languages are not all that different. C the ultimate simplification of assembler is still here somewhere. PL/1 never really became objective, but C++, Objective REXX, Ruby, Perl, and most of the rest are syntactic relatives of PL/1 and it's brother / sister pascal. PERL is exec2 on steriods - even has all the crazy @#$ stuff that exec2 and CLIST needed to tell the parser it was looking at a variable. I have written some incrediably complex stuff in PL/1 for TIRKS, DPRS, etc., which really would have been easier to manage with an objective compilier, but if you are not pushing the edge of the programming envelope you do not need it. Perl works just fine for most of the stuff I do these days, but I will be glad when PERL 6 arrives with the grand universal virtual machine thing in the background, so all the "new" languages can devolve their output into some common assemblage. If we learn this new virtual machine code maybe we can skip learning all the new languages which look like all the old languages, and thus confuse us old guys out of what is left of our minds after five years of unemployment. BTW tell the kid that in a couple years we will have programs writing the programs, so we wont need anymore programmers, let him pass that on to those guys offshore too - they need to git the rates up while the gitting is good, cause like all good things computer program code too will pass.
Like anything else, it's only useful when you need it. I was terrible at trig in high school until I needed to build a staircase.
Ada 2005. Available now from a compiler near you: GNAT GPL Edition
That is quite the old wive's tale that wasn't even true when it was much more common twenty years ago or so. The last C++ code I touched was a multi-tiered billing system engineered to run on Unix and only on Unix. Not to mention that all the large Unix vendors have been on board C++ for quite some time. IIRC the STL, as but one example, was built almost entirely work by SGI and HP.
The answer to "Do I need math?" is, as usual "It depends."
In this case, it depends on what you mean by "math", and what you want to program. For programming in general, you need to be able to think logically; you need to have a clear idea of what operations a computer can perform, and phrase your programs in terms of those. In that sense, programming is just like logic or mathematic proofs. So, if you count logical thinking skills as math, yes, you need math to be a good programmer.
Do you need to take any math courses? No; you can learn programming just fine without math courses.
Do you need any of the other stuff in math, like algebra or trig? No.
Does math knowledge and experience help with programming? Probably.
Please correct me if I got my facts wrong.
I suck at math, but still like to program 3D engines and ray tracing. I don't have anything against math, and try to learn it as i code.
Who is John Galt?
"Stiff asks long, hard questions of big men in the industry"
Whether or not you should have a solid mathematics background is not a static question and depends on what field you wish to work in. Fundamentally, to be a skilled programmer in any field means being able to bridge the gap between the problem domain and practical solutions to problems in that domain. If that problem domain is inherently mathematical in its formulation (e.g. signal processing), then acquiring a background in mathematics is essential to being a highly effective programmer. If you interests lie elsewhere, then gaining a background in whatever the foundational material is in that particular field will probably be more beneficial.
At the very least, you should have enough of a background in mathematics to be able to read the foundational resource/journal for your problem domain and understand the gist of the articles and algorithms. This ability will be the critical enabler in allowing you to incorporate new ideas in the field into novel software, and will ultimately be a limiter to your success in the field.
No RMS, what a pity.
Did anyone verify that the responses listed on this blog really came from the people that are listed? Is there anyway to verify that? I also was impressed that so many of them would have responded. Then I have to ask, did they really? This guy's blog, with ads on it, is getting a lot of hits. Hmm....
OK, I know enough Hebrew to spot "let there be light", but I'm in the dark (so to speak) about the Chuck Norris part. Care to explain?
Media that can be recorded and distributed can be recorded and distributed.
-kfg
"IQs are measurements of rate, not of capacity."
Proof by contradiction: Consider a mentally retarded human with an IQ of 60. Such a person is capable of doing routine work under supervision. Assuming a normal human reaches full adult functioning at age 18, then our example person should be capable of the normal adult functioning at the age of 30. Clearly this is not so, hence IQ is also a capacity measurement.
Expecting a human to become "more intelligent" is akin to expecting your computer to suddenly run faster because you really, really want it to. There is a finite amount of processing power that can be accessed. The human brain is a machine with finite capabilities based upon its particular genetic developmental program.
-- Too lazy to get a lower UID.
....could make me dislike Guido van Rossum so very much.
.. for the posts like this. Really.
Well, you didn't ask me, but I'm going to give you the secret to my success anyway:
Learn to type fast!
The faster you type, the faster you write code:-) It also helps you when you're typing stuff in the debugger.
Jesus Christ! Would someone please remove the large stick from Stroustrup's ass?
What a buzz kill that guy is.
Why are you letting these clowns ruin our country?
Question #11: Where can I get some more vowels for my last name?
It is interesting to see "A day in the life of Ivan Denosavich" and "1984" in the list of books. It suggests that there is a greater recognition of the dangers posed by totalitarian regimes among programmers. Whether this is paranoia or far-sighted-ness is an exercise for the reader...
meh
Was TFA corrupted? I didn't find the list of "influential computer scientists" in it. Just a bunch of "great programmers."
"But all your emitter and collector are belong to me!"
> Jarosaw "sztywny" Rzeszótko
Wow, I bet he's from Qwghlm.
Because, 1) Perl programmers intentionally avoid best practices, and 2) Perl programmers are the ones most likely to be offended by the ommission - having as they do, an extreme culture of personality and of being the Great Hacker.
Note that "influential computer scientists" seems to have been gratuitously added by the Slashdot poster. At least Gosling does fit that description, so maybe the poster should have said "influential computer scientist."
Doug Jensen
where's bill gates? he's teh greatest programmer!
Peoples' brains develop differently and different task competencies arise from parts of the brain that are more or less effective in different people.
I call bullshit on this, because I doubt you can actually substantiate this claim. (And citing somebody like Pinker doesn't count, you know.)
Let me close with by stating that the Standard Social Science Model (where all intellectual skills are culturally determined) is bunk.
Ah, I see where you're coming from. You'll certainly get me to agree that your precious Standard Social Science Modal is a strawman, which makes the fact that it's bunk not particularly interesting.
Are you adequate?
I firmly believe that greediness is something Jews are born with. Oh, wait...
Does anybody else hate those bizarre quotation symbols? What's the deal with that?
They should have sent the interview questions to him, being one of the foremost programmers on the other side of the fence. Mind you, I'm no M$ fanboy but it would have been nice to read from a programmer who doesn't cut his (/her?) teeth on Unix every day.
Absolutely great interview otherwise.
Cheers,
Ben
The overwhelming majority of Windows code is VB. Sure, there is quite a bit of C++, but I'd bet the amount of C code alone rivals, if not surpasses, the amount of C++ Windows code.
By a single word, even?
I've heard it used to describe weapons from a more civilized age, weapons that weren't as random or clumsy as a blaster.
"Chinese Amazons, power armor, laser swords.... things just meant to be." - Shampoo, A Very Scary Bet