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."
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
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.
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.
(and
(why? (am (forced 'I (to-learn (language (programming 'the-LISP))))))
(seriously?)
(what? 'the-hell)
(can 'I (program (in 'C) 'just-fine)
)
Fixed that for you.
We recently had heard in the office over one of the Yellow Machine that's made by Anthology Solutions.
...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
She might have some difficulty answering the questions though, what with being dead for the last 154 years.
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
I think if there was anything I got from the interviews, it is that great programming skills come from individuals that have a broad background. (And what brings this out is the juxtaposition of the different viewpoints - which is a nice approach).
I'm sure you can program fine in C. But knowing low-level assembly or even machine code can make the difference between a mediocre C programmer and a brilliant one. Similarly, knowing LISP makes you think differently about how lists work within your C programs. And so on....
These guys all come from different backgrounds and have made substantial efforts to keep their knowledge honed. They also have very open minds to new ideas - (Except for Bjarne who just sounds like a grumpy bugger).
Genesis 1:32 And God typed
Edsger Dijkstra died in 2002.
Alan Turing committed suicide in 1954.
Charles Babbage and Ada Lovelace died in the 19th century.
I'm sure you _could_ ask questions of each of these people, but getting the responses may prove problematic...
Everyone knows that dead people are shit at filling out questionaires.
Great voters - but questionaires? It's just not their thing.
Genesis 1:32 And God typed
Where are Turing, Knuth and Parnas
At least two of them are very definitely unavailable for email interviews...
Programming Pearls by Jon Bentley and Structure and Interpretation of Computer Programs by Sussman, Abelson and Sussman were both mentioned twice too.
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
;-]
Brevity.
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.
Has anybody else noticed that Knuth looks like Yoda?
I believe the opposite. I think people are an infinite well of potential, their decisions shape their potential. I think whether or not you become a great artist is almost solely a function of how much you choose to dedicate yourself to it. People shape themselves into great things all the time, and things they never actually intended to be nor thought they had any potential for.
I think it's a matter of mental blocks. If a person believes they can't be an artist, then they're not going to put in the necessary effort to make it happen. They won't spend anytime contemplating things like form and composition, not because they inherently lack the capacity to understand it, but because they refuse to. If they lift that mental block and purge the self-defeatist mentality, they can become as great an artists as anyone else, regardless of where their prior talent was.
I don't understand "Lisp Hate" at all. Having used C and other C like programming languages since I learned programming, 9 years back - and having learned Lisp just last year - I always consider it approaching what programming should be much closer than an Algol descended language.
Maybe Lisp shouldn't be a first language in college, so the people who do come to it can appreciate it more. That way they have the fundamentals that occur in any programming language well out of the way.
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.
Programming is very easy, and most people can learn it, like any kind of language.
Of course, it's much easier if you learn as a kid, because your language skills are starting to form, but it can be taught the same way that difficult languages can.
I would compare learning programming to learning a foreign language that is fundamentally different from yours, like a western person learning chinese. You need new structures in your head, and obviously there are people that do that kind of thing more easily, but it's not just a gift.
Aside from that, enjoying programming can go a long way, and probably has much more influence in the development of a programmer.
D.E. Knuth is then indefinitely unavailable for an email interview.
Je me souviens.
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.
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
"I think people are an infinite well of potential, their decisions shape their potential."
Not true. Some people are clearly more gifted in certain areas than others. Peoples' brains develop differently and different task competencies arise from parts of the brain that are more or less effective in different people.
While it's true that in many fields one can become an expert through years of hard work overcoming natural limits or through years of easier work in a field they are gifted in, only someone who is naturally gifted and a hard worked can aspire to and achieve recognition as a genius in their field.
Given your example, despite my huge intellect, no matter how much I studied I would still not have the skills of composition and form of Rembrandt or Michaelangelo. I'm sure, however, that I could be a quite accomplished painter but I don't have the genius for it that these men do.
Let me close with by stating that the Standard Social Science Model (where all intellectual skills are culturally determined) is bunk. Just as some people are taller or shorter, blacker or whiter, faster or slower, some people are smarter or dumber. Just as some people have stronger upper bodies or stronger lower bodies, are faster runners or swimmers or rowers or powerlifters, the brain is modular and people are better or worse at math, music, logic, spirituality, face recognition, self-control, and many of the other functions of the brain. These genetic differences in intellectual ability are just as important as the intellectual environment and need to be aligned with it in order to achieve genius-level work.
-- Too lazy to get a lower UID.
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.
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?
Thank you Peter Pan.
"I was surprised nobody mentioned the design patterns book"
programmers program, designers design. that's why.
I don't feel like it...
Spoken like a true non-programmer.
Solving trivial problems poorly can be easy; solving interesting problems, or trivial problems in interesting and elegant ways, is not easy.
My apologies in advance if you're a Turing Prize winner.
Meh. I can write just as bad pseudo C...
#include "reason.h"
#include "answer.h"
#include "query.h"
#include "statement.h"
#include "failure.h"
void why(query* question, statement* declaration, char* lang1, char* lang2, ANSWER* ans) {
REASON *reason;
reason = forced_reason_lookup(person,question,lang1);
ans = modify_reason(reason,declaration,lang2));
}
int main() {
ANSWER *ans;
query *quest;
statement *st;
char * me = "I";
init = new_answer();
if (init == 0) failwith(BAD_ANSWER_INIT);
quest = new_query();
if (quest == 0) failwith(BAD_QUERY_INIT);
st = new_statement();
if (st == 0) failwith(BAD_STATEMENT_INIT);
pack_query2(quest,me,"learn");
pack_statement2(st,me,"program");
append_statement_modifier(st,FINE_ST);
wrap_statement_consternation(st,WTH_ST);
wrap_statement_consternation(st,SERIOUSLY_ST);
if (!is_valid_statement(st)) failwith(INVALID_STATEMENT);
why(quest, st, "LISP", "C", ans);
if (ans == 0) failwith (QUESTION_UNANSWERABLE);
print_answer(ans)
destroy_answer(ans);
destroy_query(quest);
destroy_statement(st);
return 0;
}
-30-
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.
No RMS, what a pity.