Become a fan of Slashdot on Facebook


Forgot your password?
Programming IT Technology

Paul Graham On 'Great Hackers' 620

dcgrigsby writes "Always interesting, if not unbiased, Paul Graham has published a new article on 'Great Hackers', discussing why Perl and Python are apparently better than Java, on why Microsoft developers get offices, and a host of other sure-to-be-controversial stuff."
This discussion has been archived. No new comments can be posted.

Paul Graham On 'Great Hackers'

Comments Filter:
  • by Fux the Penguin ( 724045 ) on Wednesday July 28, 2004 @09:14PM (#9827282) Journal
    Interesting insights.

    I wonder, how does one become a great hacker? How do you make yourself a great hacker? I'm not sure it's possible...I mean, I know you can do a lot of things to make yourself dumb, but what can you do to make yourself smart?

    I guess a good part of it comes from working on what inspires you, and what makes you happy. In general, I find that it's very difficult to make very smart people do things they don't want to do.

    I suppose that in order to accomplish something important, it has to be important to you. It could be that you love it. Obviously, if you can keep alive the zest for programming you had when you were young, then you're bound to do well. If your current profession is making you senile, then you're probably not going to keep that hacker spark going.

    I think the real issue must be inquisitiveness. I find that good hackers are very curious about the world around them. Ultimately, that must be the answer. To be a good hacker, you must have a genuine thirst for knowledge, and a desire to improve things for those around you. Sounds good to me.
    • Eric Raymond (Score:5, Insightful)

      by EmbeddedJanitor ( 597831 ) on Wednesday July 28, 2004 @09:43PM (#9827451)
      ESR will tell you that you must be like him. He says one should play a musical instrument, enjoy (and preferably write) science fiction. He does not mention having a gun fetish, but I guess this helps...

      Now I would classify myself as a hacker, but cant play a musical instrument (CD player isn't a musical instrument right?) and sci-fi gives me a softie. Dig guns though.

      IMHO a good/great hacker must be prepared to go where he wants to with confidence. Don't just take on everyone else's mindset (if you do what the other 6 billion people are doing you're not going to do anything worthwhile). In short, scratch your own itch.

    • by sinnfeiner1916 ( 793749 ) on Wednesday July 28, 2004 @10:54PM (#9827836) Homepage
      i read in the jargon file once that you cannot "become" a hacker -- rather, others must bestow it upon you. you have to earn it. you can't buy it. you can't decide you are. Yeah, you have to do stuff, but you should be doing it just because. Then others will decide you are a "hacker"
      • by tesmako ( 602075 ) on Thursday July 29, 2004 @09:05AM (#9830499) Homepage
        On the other hand I also read in the jargon file that hackers;
        • Hackers don't like television.
        • Hackers don't like character based menu interfaces (?!)
        • Don't use tobacco
        • Only use alcohol in moderation if at all
        • Are only weakly motivated by money and social approval.
        • Are monumentally disorganized and sloppy about dealing with the physical world (don't pay bills on time, don't clean and so on)
        • Are more likely to have cats than dogs.
        • Have horrible handwriting.

        And so on and so forth with insane stereotyping throughout the whole thing. Anyone who actually takes anything said in that thing (or by ESR in general) seriously... are taking the wrong things seriously :)

    • I wonder, how does one become a great hacker?

      How does one become great at anything else? 1 part talent, 9 parts determination.

      Another part of the question is: how do organizations support the development of "great hackers". The first part is to recognize that programming is a skill. There is only one proven method of developing skills in people, and that is mentoring. We do it for doctors. We do it for carpenters. We do it for all professions that depend on the workmanship and talent of one partic

  • by beee ( 98582 ) on Wednesday July 28, 2004 @09:16PM (#9827301) Homepage
    Anyone who spends their time improving software is doing us all a favor... that's why my screensaver at work has always said: 'Hackers are great'.

    It took some explaining to convince my boss that "hackers" wasn't a negative term, but since then I've received nothing but compliments from other geeks in the office.

    Hackers are great!
    • The best non-techical reference for a hacker to get the point across to people that I've used is the Wright bros. They used bicycles to build a fully flight capable aircraft. If they tried to do that today, they would get procecuted under some form of the DMCA. Thank god they weren't born under the current hampering of innovation that we face....
      • by kfg ( 145172 ) on Wednesday July 28, 2004 @09:52PM (#9827496)
        The Wright Bros. sued nearly everyone in sight for patent infringement, which is the main reason the center of aero-technology moved from America to Europe in less than a decade.

        By the time of WWI America was put in the position of having to license aeroplane and engine technologies from England and France.

        I think you should find a better example.

      • They used bicycles to build a fully flight capable aircraft.
        Seeing as how bicycles are/were made from metal tubing, and the Wright Flyer was made entirely from wood, canvas and wire cables, please explain how the "fully flight capable aircraft" was built.

        So what exactly differentiates a so-called fully flight capable aircraft from other aircraft?

        Suggestion: less time on /.; more time paying attention in school and reading books in the library.

    • by Telex4 ( 265980 ) on Wednesday July 28, 2004 @09:55PM (#9827512) Homepage
      One thing that Graham's essay didn't address directly, but that he alluded to, is not only how you can tell a Great Hacker from an ordinary Hacker, but how one can tell how good a Hacker is in general.

      He mentioned several key qualities, namely: curiosity, concentration, and the desire for control and autonomy over tools and environment. He suggested that Great Hackers exhibit these qualities, but it's not as though you can judge how curious a person is, or rate their desire for autonomy (they might just be a jerk).

      Perhaps the more important thing is that people have these qualities at all. In societies where people seek life quality in television, money and "quality time", we ought to all admire the Hacker's qualities and aspire to them (amongst others, of course). Companies ought not to worry too much about Great Hackers, if they are as rare as Graham suggests, but it's well worth considering how they can improve the lives of their employees and thereby improve their productivity.

      Hackers don't just give us great software... they give us a successful model of how we can improve ourselves. Well, except in terms of exercise perhaps ;-)
      • by killjoe ( 766577 ) on Wednesday July 28, 2004 @11:23PM (#9828021)
        More to the point. Sometimes great hackers make the worst employees. They are hard to get along with, arrogant, and throw tantrums.

        The problem is that frequently the job of programming is routine and boring. Maintaining old code, debugging, writing tests etc are all crucial to delivering software but the great hackers can't be bothered with that boring stuff.

        If you see a great hacker don't hire them as an employee. Hire them as a consultant so they can come and go. They are useless once an application has been built and the mundane stuff kicks in.
        • Maintaining old code, debugging, writing tests etc are all crucial to delivering software...

          I see you've never worked with a great hacker.

          Code written by a great hacker usually doesn't need maintenance because it already does the right thing. If it does need maintenance, it is modular enough that adding new functionality is not an onerous or time-consuming task.

          As for debugging and writing tests, a great hacker's code is so clean and so defect free, they don't need to spend a lot of time debugging and wri

          • Code written by a great hacker usually doesn't need maintenance because it already does the right thing.

            I see you've never worked with a typical business team.

            Sure, a great hacker will produce code that Does the Right Thing based on the specs he (or she) is given, but in the real world those specs are guaranteed to be between 5% and 100% WRONG. The client can't explain what it is they actually want, the business rep can't help draw real specifications out of them, the systems analyst can't convert the n
  • From someone who has RTFA, Graham says,
    What we ought to look at, if we want to know what tools are best, is what hackers choose when they can choose freely-- that is, in projects of their own. When you ask that question, you find that open source operating systems already have a dominant market share, and the number one language is probably Perl.
    First of all, if you look at sourceforge stats, the top languages are C, C++, and Java, so if Graham is right and these languages are vastly less productive than Perl and Python (whose only common characteristic is they are both "scripting languages"), he's very wrong that open source programmers working on their own time are better judges of language power than others.

    Second, and I'll probably be modded as troll for this, but all the programmers I know who like perl are sysadmin types who don't know better. Popularity isn't a much better measure of "goodness" in the open-source world than it is anywhere else.

    Graham may make some good points but he's SO far out in left field on others that his credibility is shot as far as I'm concerned.

    • by Junks Jerzey ( 54586 ) on Wednesday July 28, 2004 @09:27PM (#9827364)
      Second, and I'll probably be modded as troll for this, but all the programmers I know who like perl are sysadmin types who don't know better. Popularity isn't a much better measure of "goodness" in the open-source world than it is anywhere else.

      Nah, that's just the people you know. Perl, in my experience, tends to be used by people who write little programs to get things done quickly. And really, this covers a lot of sysadmins. But that's always been the secret of Perl: it's geared toward solving problems quickly. For example, in most languages you compile regular expressions and get back a handle, then you use the handle for searches. But in Perl the compiler takes care of this for you. You don't worry about it. You don't have to import an "re" library either. A good philosophy overall, even if the language isn't as pure and pristine in other ways.

      Still, I read the article, and I can't help thinking that Graham has already written this same article a couple of times in different forms.
      • Yes, that's exactly my point. Perl is fine for "little programs." I have written many perl programs myself in the 100 line range; by the time you get to 500, though, perl is clearly a poor tool for the job. And however concise perl is, there are few really interesting programs you can write in under 500 lines.
        • by Coryoth ( 254751 ) on Wednesday July 28, 2004 @10:04PM (#9827562) Homepage Journal
          It's quite easy to write larger programs in perl, all you have to do is start the program with a different mentality. Write modules, use perl's OO (which is in some ways a kludge, but in other ways remarkably flexible and versatile). People who claim you can't write large programs in perl are simply failing to use the features of perl available for doing those sorts of things - they're trying to expand the same sort of programming they used for their 500 line program into something that works for a 5000 line program. Really, this is akin to trying to write a large C program by just putting everything in main() and then complaining C is no good for large programs.

          For reference, I much prefer python to perl - I find it cleaner and easier. When pushed I like to use python combined with C for any heavy lifting (farm out any intensive routines to some C code that returns python objects).

          • You can write large programs in assembly, too, but most people would agree that assembly language is not the best tool for the job.
            • by Anonymous Coward on Wednesday July 28, 2004 @10:42PM (#9827759)
              Please define what you mean by "large programs".

              I'm sitting in front of a system containing many modules and programs, and between them including over 60,000 lines of Perl. Is that a large system?

              It depends on your perspective. If you don't know how to manage a 500 line program, it is insanely large. If you've ever worked on a project in C or Java that runs to a few million lines, then it is pretty small. It becomes larger when you consider that the same functionality would take a lot more lines in Java, C or C++ than it is taking in Perl. More critically, you'd probably need more than 6 developers to maintain and expand it, plus your development cycle would slow down significantly.

              Certainly Perl is not the best language for writing a very large system. But for a certain size of project it is a very good language. And that size of project is larger than you'd think.
          • I think when working on a large project that many different people (different abilities, different styles) may touch it is important to choose a language that provides some guidelines for usage syntactically. Java has all kinds of problems, but it forces you to do things a certain way and the community is widespread enough, that for the things it doesn't force you to do a certain way, the community has come up with de facto standards (or patterns of usage). Something like perl can be abused by the idiots on
        • by TheLink ( 130905 ) on Wednesday July 28, 2004 @10:20PM (#9827645) Journal
          I've written 6k line perl programs but that's probably proof that I'm not great. A great programmer/hacker would probably do the same thing 1K lines ;).

          With the wrong language you can't write little programs even if the job is a little job :). Even medium jobs look like huge jobs.

          The advantage of Java is you can outsource the bulk of the programming to 100 different people in Bangalore or something. The hopefully smart person doing the design and architecture at the HQ doesn't have to type many lines of Java - he programs in human languages.

          Whereas with Lisp or other Great Hacker languages while that smart person is 20x-100x more productive, you can't outsource the job, so when the job becomes boring it's hard to keep that smart person around to do maintenance, documentation and other low level stuff.

          And sometimes the boring stuff makes money. I mean how many great hackers want to do accounting programs, custom portals (with ever-changing requirements), ERP etc?

          With Perl the smart hackers have created the blocks of Duplo and Lego (CPAN), and made them available for the not so smart ones like me to use em. Prefab code :).
      • by po8 ( 187055 ) on Thursday July 29, 2004 @03:20AM (#9829078)

        A computer is a machine for getting wrong answers quickly.

        Perl can help with that.

    • by Anonymous Coward on Wednesday July 28, 2004 @09:34PM (#9827399)
      LOL, since when is the number of projects on Sourceforge a good indicator of anything? 90% of them never make it to a release - sooo many projects are "pre-alpha" with near-empty homepages with comments like "project X will be the greatest Y ever built. Right now we're deciding how to start designing it."

      Heck, for all I know, the high number of C, C++, and Java projects could just be an indicator that users of those languages tend to start things but never finish them.

      And, by the way, the _main_ thing Perl and Python have is common isn't that they are scripting languages (a term that isn't very well defined anyway), but they are much higher level than, say, C or C++ (and to a lesser but still important degree Java). And _that's_ why they allow developers to be much more productive. If you have trouble understanding/believing this, then imagine explaining to an assembly programmer why you're so much more productive in C++ than assembly. Now, apply those same principles to something like Python, and you'll start to see the light.
    • by mike_scheck ( 512662 ) on Wednesday July 28, 2004 @09:37PM (#9827414)
      As a sysadmin type who "doesn't know any better", I can tell you that I like PERL because its effective, and easy to write a short legible program that is far more powerful than a shell script. I work at a large company, and we have many cases where a perl script evolved into something much more complex than many C/Java programs in production, simply because when a small change needs to be made, almost anyone who has taken a previous programming language can make the changes or add features.

      BTW, we have had Java programmers come in and give preso's on why Java is so great, and its pretty funny, they talk about a lot of things that perl has, but they don't realize it. Oh, we can create "objects and manipulate them", or "we can reuse our code". Crazy me, I've been typing all those perl modules by hand and throwing them away when I was done with them!
    • by JerkBoB ( 7130 ) on Wednesday July 28, 2004 @09:44PM (#9827459)
      Second, and I'll probably be modded as troll for this, but all the programmers I know who like perl are sysadmin types who don't know better.

      Well, I'm a 'sysadmin type', and Perl lets me get my job done with a minimum of fuss. I have lots of one-off tasks that would be tedious to do by hand, and shell scripting is just annoying. But I've also written a whole ISP provisioning system with Perl, and tied it into our company's proprietary billing system. If I'd been doing it with C or Java it would have taken me a lot longer and definitely wouldn't have been as stable as quickly as it was.

      Is it possible for me to program in C or Java? Sure. I had CS classes. But for me, Perl is the right tool for most of my jobs. People like you who look down your noses at a 'scripting language for sysadmin types' are typically the sort of people whose messes I have to clean up because they have just enough knowledge to demand root on their workstation so they can screw things up.

      You haven't taken the time to appreciate how Perl can be used in a sane manner to create stable, maintainable codebases and applications. That's fine, but it doesn't invalidate or devalue what the rest of us are doing with it.

    • I'm going to have to disagree. You're confusing "open source hackers in general" with "Great Hackers", which is what he was describing. The two terms are not interchangable. For every 1000 crappy programmers who were never meant to be, there's 100 decent programmers, and there's 10 open-sourcy hacker guys are pretty damn cool (they make up your sourceforce demographic), and there's 1 Great Hacker.

      And yeah, these great hackers, oddly enough, tend to have a lot of overlap with those sysadmin-y perl-y type
    • Tool for the job. (Score:5, Insightful)

      by DarkMan ( 32280 ) on Wednesday July 28, 2004 @10:21PM (#9827648) Journal
      First of all, if you look at sourceforge stats, the top languages are C, C++, and Java, ...

      If you look at what a good joiner uses, you'll note that he has a large set of tools, and picks the right one. There is no advantage in trying to turn wood on a lathe with a screwdriver - that's the job of a chisel.

      A similar thing applies with computational work. If you truely know what you are doing, you'll use the right tool for the job. If your wanting to accumulate a large set of facts, and then do some comparisons across that set of facts, that's a job for Prolog. No matter that C, or Java, or Perl, or whatever, is more popular. They are just a poor fit to the task, which would mean you'd need to write a predicate logic packeage in them, to get them to work.

      Look at tools like FFTW. It's written in OCaml, and C. Two different languages, each used seperatly, to play to thier strengths. OCaml does tree parsing, and optimising of an abstract syntax tree. C code does the numerical heavy lifing. That's choosing the right (rather, a good, there is a pluraity of good tools for that) tool for the job. Trying to do the abstract syntax tree parsing in C, or the numerical heavy lifting in OCaml is just stupid - you'll end up with something that's nowhere near as good.

      Try writing an OS kernel in Perl.

      'Favourite language' is something that's not a good metric. I've solved problems (and that's what it's all about) using 50 lines of C feeding 100 lines of Fortran feeding 50 lines of Perl producing Postscript that compiled to the desired diagrams, because that's what suited the problem domains best.

      Claiming that 'good hackers like language X' misses the whole point. Good hackers will use the best tool for the job.

      Also, Graham seems to be conviently ignoring the 'can this be understood three years down the line' aspect. There is no point in having code that you can't maintain. That's where Java comes in - it's got a blend of power and syntactic salt help keep things maintainable. Asserting that maintainabilty isn't relevant just strikes me as something that's, well, immature.
      • I've solved problems (and that's what it's all about) using 50 lines of C feeding 100 lines of Fortran feeding 50 lines of Perl producing Postscript that compiled to the desired diagrams, because that's what suited the problem domains best.
        Please tell me you destroyed the source immediately afterward, or at least that no maintainer knows your name.

        I fear for your life the first time someone wants one little change.
      • by dvdeug ( 5033 )
        Claiming that 'good hackers like language X' misses the whole point. Good hackers will use the best tool for the job.

        Maybe, but most of a Linux distribution is written in C, C++, Perl and Shell because that's what the programmers are used to. Even stuff that should use Prolog don't, because it's not taught in schools and most hackers aren't familar with it.
    • by Garin ( 26873 ) on Wednesday July 28, 2004 @11:01PM (#9827888)
      Perl is a very powerful tool. I've said it before, and I'll say it again:

      Perl, more than any other programming language I've ever used, directly reveals the mind of the programmer.

      Most programmers have very messy minds and very poor discipline. Python neatly solves this problem by having the One True Solution approach. Perl embraces the risks of a TIMTOWTDI, and you often get line-noise (especially with too-cute neophyte "hackers" who figure that doing seventeen operations in one line is somehow a good thing), but in allowing this, Perl allows a few nuggets of utter glorious beauty to shine through.

      Very few people can properly wield Perl in more than a one-off capacity. But those that can will make magic.
  • Java (Score:5, Insightful)

    by kaffiene ( 38781 ) on Wednesday July 28, 2004 @09:27PM (#9827366)
    Is suited to people who simply want to write large bodies of maintainable code. It's not intended for small hacks, nor is it intended for being close-to-the-metal.

    The idea that one must automatically be a crap programmer because one likes Java is an egotistical and obnoxious point of view. I happen to like Python and C and C++ as well as Java, and I use all of those on occassion, but Java is no less a suitable and appropriate language to use for some tasks as any of those other languages.

    I'm sorry, but Graham's dismissive attitude towards Java is evidence of extreme arrogance.

    • Re:Java (Score:5, Insightful)

      by daveinthesky ( 608820 ) on Wednesday July 28, 2004 @09:44PM (#9827455)
      Herd mentality.

      Java has nothing about it that makes it any more maintainable than any other language.

      LISP, Python and Perl do have language _features_ that make it much more powerful to good programmers. Closures, anonymous functions. LISP has macros. Imagine java or C/etc without recursion. That's what Java is. A language without closures, macros and lambda. It's missing stuff!
    • Re:Java (Score:3, Interesting)

      by ansible ( 9585 )

      I have some severe problems with the design of Java. But I don't think that people who choose Java are automatically stupid or something.

      It's all about the tools. How many times have I needed to write a program which does X, but there isn't a library for X in Python? And there are libraries for C and Java. (The situation with Python is continually improving, but still...)

      I like Python much better than either of those, but unless I want to re-write the entire world, I've got to go where there is s

    • Re:Java (Score:5, Insightful)

      by be-fan ( 61476 ) on Wednesday July 28, 2004 @09:58PM (#9827521)
      I'm sorry, but Graham's dismissive attitude towards Java is evidence of extreme arrogance.
      Perhaps arrogance, but also perhaps frustration. To anybody familiar with a broad variety of languages, the ascendance of Java (and C#, which is Java + 1) is irritating at best. Here you have a language that finally managed to overcome the entrentched nature of C/C++, but is at best one step backwards for each step forwards. It's got shades of Smalltalk, but none of it's flexibility; shades of Self but none of it's innovation; shades of C++ but none of it's control. It's not particularly good at anything (but not particularly bad), nor is it a good all-rounder. Certainly, it's decades behind the state of the art compared to something like Lisp, or Smalltalk. The main reason Java got popular was hype, chance (the rise of network computing), and a giant class library that had pre-canned solutions for most things. Put simply, it was an example of worse technology winning out over better technology, for market reasons.
      • Re:Java (Score:3, Insightful)

        by jjohnson ( 62583 )
        "Put simply, it was an example of worse technology winning out over better technology, for market reasons."

        Why are market reasons invalid when determining the quality of technology? How is it that the use of technology in the real world, something market reasons influence very strongly, is less important than the theoretical virtues?
        • Re:Java (Score:3, Interesting)

          by be-fan ( 61476 )
          The market advantages of a technology are orthogonal to the technical advantages of a technology. So market factors do (and should), play a role in the overall decision, but they don't have any bearing on whether a technology is "better" or "worse." Also, you can't try to mush market factors along with practical values. There are theoretical values, practical values, and market forces. They are all seperate things. There are lot's of technologies that have the first two, but not the third.

          More generally, m
      • Re:Java (Score:3, Insightful)

        by kaffiene ( 38781 )
        I don't disagree with a lot of what you say. Just that Java is not popular *now* because of hype. It was hyped at one point, and I ignored it during the period (actually I looked at it, but it was too slow).

        Things have changed. The hype is in the past, Java is a popular language now for real tasks - hence all the jobs in Java - that's not hype, that's work being done. You can't say that the majority of jobs being done are by dot com newbies with Java - glint in their eyes.

        I suppose the reason I like J
      • Re:Java (Score:3, Funny)

        by Thing 1 ( 178996 )

        (and C#, which is Java + 1)

        I may be like the last guy to get on the boat, but I just realized through your parenthetical remark that "C#" is a lot like "C++" squished together: the "#", when separated, is two plus signs.

        I had some cool ASCII art showing what I meant but the fucking lameness filter wouldn't let it through, even with a ton of extra text around the art. So, just imagine that the top line and left line form the first "+", and the bottom line and right line form the second "+", and then

      • Re:Java (Score:3, Interesting)

        by Tony-A ( 29931 )
        It's not particularly good at anything (but not particularly bad), nor is it a good all-rounder.

        I see Java and I see gaggles of mainframes.
        What you describe sounds perfectly suited. The overall effeciency is dominated more by how bad the worst is rather than how good the best is.
        It's always possible to do 90% much better provided you can afford to ignore the remaining 10%. I think the relevant comparison is to the great masses of COBOL.

    • Re:Java (Score:5, Insightful)

      by Cyno ( 85911 ) on Wednesday July 28, 2004 @10:09PM (#9827588) Journal
      I agree. But the same can be said for Perl.
  • by highwaytohell ( 621667 ) on Wednesday July 28, 2004 @09:29PM (#9827374)
    Did he mention that these Great Hackers have quote possibly some of the greatest creative minds in the world. Sure you have to know what your doing, but the ability to think outside yourself, see the bigger picture, is what makes these guys great. When you come across a problem that may seem impossible to get a work around for, these guys think and think, and they get their solution because they are able to see a myriad of different perspecvtives as a possible solution to a really tough problem. these guys are paid the big bucks because they do have that extra quality as well as being good hackers. i think thats what separates the good, from the great.
  • by putaro ( 235078 ) on Wednesday July 28, 2004 @09:37PM (#9827421) Journal
    He knows an interesting set of people, considering that C didn't come up once. Is Linus Torvalds a great hacker? Apparently not because if he was he would have coded the kernel in Perl!!
  • by SnapShot ( 171582 ) on Wednesday July 28, 2004 @09:54PM (#9827505)
    When he starts comparing languages or, to be more specific, makes the blanket statement that better hackers like Python over Perl I am reminded of the fact that the best hackers actually use OCAML and Objective-C.

    "No they don't", you cry, "the best hackers user Assembly and Visual Basic".

    "No, you're a fucking moron", someone else pipes up, "the best hackers use Pascal and COBOL."

    "No, you are a fuckwit," a voice from the back of the croud screams, "Fortran and Algol are the languages of the best hackers".

    "Quiet you fools," an elderly guru from the wings yells out, "I happen to know that the best hackers use Perl when they aren't dictating their programs to their secretaries to be outsourced to Taiwan to be compiled into Haskell"

    "Shows what you know old man", a kid in the front row sneers, "the l33t hax0rs use Lisp and C++".

    Well anyway, it looks like this might go on for a while, please enjoy the other comments while we try and work this out...

    • You left out binary on punch cards. Now that's "L33T HaX0rz sHiZ" yo!
  • Offices Rock! (Score:4, Insightful)

    by billstewart ( 78916 ) on Wednesday July 28, 2004 @10:06PM (#9827576) Journal
    Peopleware [] by DeMarco & Lister, was a fairly good book on software and development organization productivity (and I assume the second edition is still good...) One of their points is that offices are really important, because programming involves a lot of deep focus, and in a cubicle environment, it's much harder to tune out interruptions and stay focussed. Sometimes you need to talk to other people, but when you need to concentrate, you need to concentrate. Two-person offices are usually an ok compromise - you get some social contact, and you get a bit more interaction with other people and projects, but you can still ignore your officemate except if he's having a speakerphone conversation. And of course, if you're into Extreme Programming, two people is probably the perfect number...

    Not all jobs are that way - sometimes overhearing what the other people around you are talking about is more useful to overall productivity. And some people can concentrate even with lots of background noise. But for a lot of people, offices would have been more productive than cubicles.

  • AS/400 (Score:3, Interesting)

    by Bob Cat - NYMPHS ( 313647 ) on Wednesday July 28, 2004 @10:08PM (#9827586) Homepage
    He wrote At a startup I once worked for, one of the things pinned up on our bulletin board was an ad from IBM. It was a picture of an AS400, and the headline read, I think, "hackers despise it.'' [1]

    You bonehead, what a MARKETEER thinks is a 'hacker' (that is, a criminal) hates the AS/400.

    *This* hacker thinks the AS/400 is the most secure, uncrashable system extant. Go ahead, try to gain superuser (QSECOFR)on an AS/400. You can't. AT ALL. Even QSECOFR cannot change a system program to do something it's not supposed to. Go ahead and try to crash one, I've never seen it done short of a lightning bolt.

    BTW, that footnote in his article said nice things about IBM Thinkpads. Sure they are lovely, but PCs are TOYS compared to the REAL computers.
    • Re:AS/400 (Score:5, Insightful)

      by DaveJay ( 133437 ) on Wednesday July 28, 2004 @10:22PM (#9827659)
      I believe that he mentioned this because the guys at the startup viewed 'hacker' to refer to themselves, not to the crackers that they knew the marketers intended, and that they probably did in fact hate working on the AS/400 -- thus making the truth of the headline (for them) ironic.

      I thought it was pretty funny, actually. :) Since, as you point out, the AS/400 is a secure box, the humor comes from the headline being true in both a literal AND an ironic sense simultaneously.
  • Esoteric Languages (Score:5, Interesting)

    by Anonymous Coward on Wednesday July 28, 2004 @10:08PM (#9827587)
    I consider myself to be somewhat of a seasoned hacker. I do hours of pretty intense C programming (Linux kernel code) on a daily basis. I feel that I have mastered the C programming language. Sit me down with any project written in C, and I will be able to (at least syntactically) figure out exactly what's going on with just a glance. I feel absolutely confident in my ability to easily slam through any task in C, without having to resort to any reference guides or manuals.

    Now that I've established myself as a cocky elitist bastard to the Slashdot crowd (or do I just fit in now?), I would like to make one thing clear: I hate C.

    I hate memory corruption (a.k.a. segmentation faults for the rest of the world). I hate explicit types and declarations. I hate casts. I hate memory management (kalloc, kfree - a.k.a. malloc, free for those alien folks off in userspace). I hate iterators. I hate list structures assembled with pointers. I hate pointers for that matter. All that C really does for me is provide me with activation records during function calls (okay, and cross-platform compatibility). The only thing I like about C is the fact that you can compile it and it's fast.

    I hate Java. I hate class cast exceptions. I hate null pointer references. I hate virtual machines. And I still hate iterators.

    I hate Perl. I hate interpreters. I hate pathetic attempts at object oriented behavior.

    I hate Python. I hate C++. I hate PHP. They all suck, all for (more or less) the same reason: run-time errors.

    Enter Objective Caml. More likely than not, when you've got your O'caml program compiling, it just works. No run-time errors, like memory corruption, nonsense casts, class cast exceptions, or null pointer references. You can compile it down to native code, and it runs just as fast as C in many (if not most) cases. There is a complete standard library with pretty much everything you would ever want. There are hooks into GTK and Mysql, among other C libraries. You have real objects, done in a halfway decent manner. Persistent data, by default, exists in a structure (like a list or a type), as it should. Functions are first-class citizens. Iterative structures are possible, but usually not required. Tail-end recursion introduces no stack overhead. Algorithms implemented in O'caml just look elegant, like lambda calculus expressions.

    The problem, of course, is that it will take me several more years before I get to be as efficient in O'Caml as I am currently in C. And anyone who comes in after me to maintain the code will probably know C much better than O'Caml. This means that for any userspace projects that I do at work, it's gotta be in C. I can get by in C, because I am a very disciplined coder, and I know all the quirks and tricks to developing and maintaining good C code. Occasionally, I will get a nightmare mystery segfault in a very large project, and I will curse C and yern for O'Caml, but I must persist.

    At the end of the day, my own Open Source projects that I do on nights and on weekends are in Ruby (if they are web apps) and O'Caml (otherwise). This doesn't necessarily mean that O'Caml is the best language for any given project (mainly do the competency of the employees, current and future, with regards to O'Caml). Maybe in about a year or so, after writing a few Open Source projects in O'Caml on my own time, I will feel confident enough to suggest I use it for a project at work. Even then, it will be a hard sell, despite the fact that it is superior to C in almost every way.

    So my point, if I have one, would probably be that true hackers like to experiment with esoteric languages that the rest of the world knows little about. The shear number of programmers out there who know C and Java present a significant barrier to entry for elegant languages like O'Caml. I suppose that getting the academic types to emphasize languages that solve many of the problems that have plagued computer languages for the last 30 years might begin to help with the situation. Until then, I'll be firing up gdb...
    • At the end of the day, my own Open Source projects that I do on nights and on weekends are in Ruby (if they are web apps) and O'Caml (otherwise).
      Aren't you contradicting yourself here? You say one of the reasons you hate perl because you hate interpreters. That makes me curious as to why you choose Ruby for your personal projects? As far as I know Ruby is as interpreted as Perl.
  • Java Vs. perl (Score:5, Insightful)

    by fimbulvetr ( 598306 ) on Wednesday July 28, 2004 @10:12PM (#9827605)
    He's right. You guys are so personally offended you can't see the forest for the trees.

    He's talking about hackers here, kids. Not 90% of the /. crowd. In your opinion, who's the most likely hacker?

    a. sysadmin
    b. java developer
    c. janitor

    Personally, I'm voting for (a). (A) because most sysadmins deal with perl, lots of unix systems, they know *nix inside and out.
    Java guys are out of the question, they're too wrapped up in their baby blankets sucking their thumbs to realize they are not _in_ the group we're speaking of.
    Janitors, well, it's possible, but probably not common.

    I'm a sysadmin, and I user perl all day long. Sometimes at night, when a brute force ssh attack comes along. I need to know which exploits are out there, I'm constantly trying to break my system. I'm constantly learning about the newest buffer overflows in solaris. I am intimately aware of memory space in the kernel. I don't live in a Java Dream World (tm). I don't have all day long to dream of how, if java were tangible matter, it'd be able to cure world hunger. I'm too busy living in the Real World(tm).

    In conclusion, while it's uncommon to have good hackers know they're good, it's a lot more common to have a bunch of wanna-bes think they are "the hackers".
    • Re:Java Vs. perl (Score:5, Insightful)

      by Michael Crutcher ( 631990 ) on Wednesday July 28, 2004 @10:48PM (#9827792)

      I think our major disagreement stems from our preferred definition of hacker. You seem to think that hacker means sumpreme uber UNIX geek. I have no doubt that you're a good sysadmin but I think that you really have no idea what the "Real World" is when it comes to programming.

      My definition (and I believe it's fairly close to what the article author meant) was that a hacker was someone who used a programming langauge to solve hard problems. Under my definition you're clearly not a hacker. Sure you use perl to help automate your every day tasks, but these are certainly not "hard" problems. The mere fact that you can get the job done with a few hundred lines of code is adequate proof that these problems aren't hard. Hard problems take a lot of smart people working together to solve.

      I dare you to write an application that is scalable, secure, accesses data of a variety of types, sends instructions across the network, maintains transactional integrity, and more in perl. I'm sure you could do it, but I certainly wouldn't want to maintain it. Besides that you'd have to start from scratch and create a bunch of library code before you could even think of starting.

      This is why a lot of people use java to solve hard problems. Its large user base ensures a gigantic amount of reusable code in the form of extremely robust libraries and frameworks that have already been created. The language itself is not really anything special, but the ability to solve hard problems with the language is pretty impressive.

      In that sense (b) java programmers are far and away the most likely people to be hackers in your list. Just because you don't understand what they're doing doesn't mean they aren't hacking.

    • So I'm out of the question because I'm a Java developer? Never mind that I've been paid to work in C, C++, Perl, and a few other propietary languages. Never mind that I write small Perl and Unix scripts most days. Never mind that the reality of being a working senior Java server-side developer is a knowledge of a vast, and ever growing, set of associated platforms, comms and database technologies required for large scale projects for, in my case, telecomms and financial customers. On multiple platforms. Mul
    • Janitor... (Score:3, Insightful)

      by Big Sean O ( 317186 )
      At my last job, the guy who emptied out the garbage cans (so I guess that makes him the janitor) was a real computer enthusiast. He knew all about firewire, bluetooth, USB2.

      He was a janitor in a State Government building, and he was about 40, so I'm guessing he got the job when he was a kid (maybe he bailed out of high school because it was boring) and got this job as a janitor. If I was 10 years or so from a full-ride pension, I'd empty garbage cans all day and hack all night, u'betchum.
  • by jjohnson ( 62583 ) on Wednesday July 28, 2004 @10:14PM (#9827612) Homepage
    Graham essentially spouts a lot of geek cred virtues that suit the stereotype of hackers that we all, in some way, want to be. So we all read the article, see a little bit of ourselves in it ("yeah, I'm pretty politically incorrect, too."), and feel good about how special we are. Just like astrology profiles based on your sign contain a lot of qualified compliments ("you speak your mind, sometimes offending other people without meaning to."), Graham's articles have a constant thread of "geeks are special, and you're a geek, too."

    Taken literally, the people Graham is talking about are perhaps 2-3% of the coding population. In other words, they're the equivalent of supermodels, rock stars, and brilliant twentysomething CEOs, and just as accessible to you or me. In practical terms, you'll almost never, ever work with, hire, or be the kind of person he's discussing, so put down the geek wank material.

    Every time I read a Graham article, I feel dirty at the amount of false modesty and self-congratulation involved. He's like a digital Stuart Smalley.
    • by Animats ( 122034 ) on Wednesday July 28, 2004 @10:53PM (#9827830) Homepage
      I've known quite a number of very good programmers, and worked with some of them. By this I mean people who wrote entire operating systems, major CAD packages, game physics engines, key parts of TCP/IP, and such. I mean people from the original Xerox PARC crowd, Stanford, MIT and CMU. I don't mean people who think they're l33t because they've memorized most of the UNIX command line options.

      Few of the really good ones are like the stereotype of the "geek" mentioned here. First, top programmers write well, and have demonstrated this by writing for publication. Second, they have strong theoretical backgrounds. Some are self taught, but are comfortable filling a white board with math. Third, they're not overly attached to a single programming language or operating system. Fourth, they tend to have a sense of aesthetics, and can articulate why something is ugly in an engineering sense, rather than merely grumbling about it.

  • Microsoft paradox (Score:4, Interesting)

    by _randy_64 ( 457225 ) on Wednesday July 28, 2004 @10:18PM (#9827636) Homepage
    I find it interesting that on one hand, he says no real hackers want to use Microsoft software, but it's Microsoft that has the number one hacker perk of private offices. So does that mean that no good hackers work at MS or that they rate offices higher than the tools they use?
  • Erm... (Score:5, Interesting)

    by Anonymous Coward on Wednesday July 28, 2004 @10:26PM (#9827679)
    Perl is a language only its mother could love. And some people who've never coded in Lisp. Python is a much nicer language of course.

    But it's a scripting language.

    By which I mean: on most modern benchmarks I've run, it's well over fifteen times slower than Java. Than Java!

    Java's got lots of faults. But it has one very good feature: it's rapidly getting faster (as is its evil stepsister, C#) This is largely due to design decisions in the languages which traded off some late binding and dynamic typing for efficiency. Python doesn't make those promises, and as a result it's stuck in the must-check-almost-everything-at-runtime-land of old (pre-Common)Lisps.

    Hackers coding only in Python. Gimme a break. What we're largely seeing is *script* hackers coding in Python. cgi-bin. shell crap. webbots. It's where Python shines. But there's an awfully big collection of code projects that need to straddle the speed of C++ and the dynamicism (to some degree) of higher-level languages. And there's a lot of hacking opportunity there. Java does that region very well, thank you.
  • by smittyoneeach ( 243267 ) * on Wednesday July 28, 2004 @10:28PM (#9827692) Homepage Journal
    (Incidentally, I think this is what people mean when they talk about the "meaning of life." On the face of it, this seems an odd idea. Life isn't an expression; how could it have meaning? But it can have a quality that feels a lot like meaning. In a project like a compiler, you have to solve a lot of problems, but the problems all fall into a pattern, as in a signal. Whereas when the problems you have to solve are random, they seem like noise. ) I think this is what you call a theological question. Besides than the Adams approach (Douglas or Scott), I think the other reasonable approach to the question is to humbly admit that it's like describing the ratio of a circle's circumference to its diameter; the actual answer overflows the finite brain.
    Walk humbly during all the days of your vanity, and look forward to an eternity when all will be revealed.
    Oh, and use emacs.
  • by megamegamegamega ( 703107 ) on Wednesday July 28, 2004 @10:30PM (#9827705)
    Don't bother to RTFA. This guy has had a beef with Java for years, and a large chunk of the article is devoted to gratuitously dumping on Java. That's when he's not trying to justify why its a "good thing" that he has more money than most other people.

    At one time or another I have been fluent in around 6 or 7 programming languages. Personally, I think nothing comes close to Java if building large, maintainable and networked systems is your goal. As many people have pointed out, Perl and Python are good for small jobs but you'd be insane to architect a really large system on them.

  • Short version (Score:4, Informative)

    by Salamander ( 33735 ) <jeff AT pl DOT atyp DOT us> on Wednesday July 28, 2004 @10:35PM (#9827727) Homepage Journal
    "What great hackers have in common is they're a lot like me (or at least like I imagine myself to be)"

    What an amazing ego.
  • by Qui-Gon ( 62090 ) * on Wednesday July 28, 2004 @10:47PM (#9827784) Homepage Journal

    Software maintenance is the single largest portion of the software life cycle. (IMHO)

    So, why would I as chief programmer or system architect on a software project (that has a budget) allow pieces of the of software system to be built with languages that the 'common' programmer doesn't know? Sure, you could spend money training all the 'lesser' programmers in Python and/or PERL but, why waste the money? There are perfectly good languages that are defacto standard, provide loads of functionality, development tools, and are known by the 'so-called common' programmer. Every language has its pros and cons. So, if Java's weakness is uber-hackers don't like to use it than PERL's and Python's is maintainability.
    (However, I think author might be poking the tiger with comments like: "Of all the great programmers I can think of, I know of only one who would voluntarily program in Java." And we all feel right into that trap... I know I did. :) )

    Also, the single most important resource on a software project is people (again IMHO). Typical development scenario: New contract has been acquired. So, you as the "boss" hired 10 developers for the new project. One of which falls in the author's super-elite hacker class. The project's initial system delivery goes as smooth as glass cause the 'brains' of the operation (or the 1% as the author calls it) did majority of the work. Well, shortly after the initial delivery the hacker decides the project is now boring, the system was delivered and he or she is now looking for a new challenge. He or she now leaves the program and/or company. Now, there is a serious issue. Since the hacker did 90% of the work, now 90% of the core knowledge of how to maintain the system has left as well. (And I don't care who you are. Jesus himself couldn't write software that is perfect the first time. Bugs are always present and requirements can and do change. And Jesus also can microwave a burrito so hot he himself couldn't eat it!)

    Given the author's profile of the hacker- Quiet, anti-social and loves his/her corner office with the door locked (which is a BS stereo-type)probably also didn't bother to pass any knowledge on to anyone else on the project. So, tell me again why this person was 'the most valuable thing' to us and the delivered system?

    I personally love working with people are technically sharp but, also like working with other people and sharing info. I have caught myself being sort of elitist when I was the technical authority on something. But what does that gain you? Nothing in my experience. You want to be respected by your peers and co-workers? Share with them your knowledge not just lines of code (be it byte-code or interpreted scripts).

  • Unnoticed... (Score:4, Interesting)

    by Colven ( 515018 ) on Wednesday July 28, 2004 @10:48PM (#9827791)
    I , for one, hope to hear echoes of the major points of that article regarding improper programming atmospheres and mismanagement (ill-understanding) of programmers needs. I'm of the opinion that this issue is still a much avoided or unrecognized problem in the work place (please do correct me if I'm wrong about that.) That was probably the best manner in which I've ever heard that topic addressed... although the "langauges of choice" and so on seems to have gotten the most attention.
  • by BlueStraggler ( 765543 ) on Wednesday July 28, 2004 @11:09PM (#9827931)
    "It was really interesting until he pointed out that great hackers work differently than I do, at which point it became clear that he is a moron."
  • by PetoskeyGuy ( 648788 ) on Wednesday July 28, 2004 @11:10PM (#9827939)
    Just like /. is unbiased.
  • Great Engineers (Score:5, Insightful)

    by Keel ( 11611 ) on Wednesday July 28, 2004 @11:10PM (#9827940)
    I know there have been flame wars about using the word "hacker" for years, and I certainly don't want to start another one. I don't care if people use the term as a pejorative or a badge of honor. I don't care if it means a computer criminal or software developer. I don't care if it means white hat or black hat. That's a debate best left back in 1985.

    But having said that, I think it's time we retire the word "hacker". The reason I think this is because the use of this word, which is supposed to be so positive: the curious, problem-solving tinkerer, isn't really that positive anymore. I'm talking about hackers as craftsmen (another word the author uses in the article). Defining software development as a craft harkens back to a an age when the industry was young and still defining itself. An age when the industry was hidden behind equipment in a backoffice or university machine room populated by bright-but-eccentric pioneers. A time when the industry, and its pioneers, didn't know what its Best Practices were. Those days are over.

    Today, the industry has matured in many ways. Today, projects, and the organizations that manage them, don't want a tinkerer who will sit in the backoffice and figure stuff out. They want well-rounded individuals who can gather and interpret requirements, communicate with their team, and develop elegant, well-designed solutions using best practices. They want Software Engineers and Software Architects.

    There is still a camp out there that is resisting this change. They still believe in the craftsman lifestyle, and they still code with emacs (oops, another flame war! ;) But I don't think this view represents the majority of developers; it may not even represent the majority of open source developers. The hacker/craftsman camp is a small minority.

    The author makes the point that some developers are so much more productive than their peers because of how they use technology, but does he realize that those productive developers are not hackers/craftsmen pecking out PHP or perl in their emacs session? They are Software Engineers using latest-generation tools and languages, design patterns and best practices, object-oriented techniques and integration technologies like message queues, not to mention web services and remoting. And incidently, they're still employable.
    • Re:Great Engineers (Score:3, Interesting)

      by Salamander ( 33735 )

      They are Software Engineers using latest-generation tools and languages, design patterns and best practices, object-oriented techniques and integration technologies like message queues, not to mention web services and remoting. And incidently, they're still employable.

      Your attempt to put a very particular type of programmer with very particular set of habits and preferences and skills (ask a kernel/embedded programmer about "web services" or "remoting") above Graham's mere hackers is an exact mirror of G

  • by PsiPsiStar ( 95676 ) on Wednesday July 28, 2004 @11:17PM (#9827979)
    ... that he didn't talk about people who like to break into and control systems. I would love to see an article entitled "Paul Grahm on great crackers"

    Ba dum bum!
  • by mark-t ( 151149 ) <> on Thursday July 29, 2004 @12:24AM (#9828320) Journal

    Though, frankly, the fact that good hackers prefer Python to Java should tell you something about the relative merits of those languages.

    Actually, the fact that good hackers prefer Python to Java only really tells you something about the relative unsuitability of Java to hacking. That a language is not easy to hack with is not a reflection of the strength of the language, it a reflection of how "safe" the language is.

  • I'm doomed! (Score:4, Funny)

    by bob_jenkins ( 144606 ) on Thursday July 29, 2004 @02:52AM (#9828932) Homepage Journal
    OMG, I write in C and Java, my OS is Windows ME, I'm willing to fix bugs in 20-year-old code, and it's taken me over two weeks so far to write a simple stream cipher + MAC! I must be lousy!

Money can't buy love, but it improves your bargaining position. -- Christopher Marlowe