From the JargonFile: http://catb.org/~esr/jargon/html/R/Real-Programmer.html
A particular sub-variety of hacker: one possessed of a flippant attitude toward complexity that is arrogant even when justified by experience. The archetypal `Real Programmer' likes to program on the bare metal and is very good at same, remembers the binary opcodes for every machine he has ever programmed, thinks that HLLs are sissy, and uses a debugger to edit his code because full-screen editors are for wimps. Real Programmers aren't satisfied with code that hasn't been bummed into a state of tenseness just short of rupture. Real Programmers never use comments or write documentation: "If it was hard to write", says the Real Programmer, "it should be hard to understand." Real Programmers can make machines do things that were never in their spec sheets; in fact, they are seldom really happy unless doing so. A Real Programmer's code can awe with its fiendish brilliance, even as its crockishness appalls. Real Programmers live on junk food and coffee, hang line-printer art on their walls, and terrify the crap out of other programmers - because someday, somebody else might have to try to understand their code in order to change it. Their successors generally consider it a GoodThing that there aren't many Real Programmers around any more.
Also see <http://www.multicians.org/thvv/realprogs.html>.
"Real programmers can write assembly code in any language. :-) " - LarryWall in <8571@jpl-devvax.JPL.NASA.GOV>
I think that RealProgrammers don't program at all, they think in high-level concepts and let their fingers do the programming. I remember that I was shocked a couple of years ago when I was working in an office with no lights, and it got dark; it was then that I discovered that I could touch type. I've been programming for about fifteen years and I finally realized that the reason I can listen to loud music whilst coding is because I don't pay any attention to syntax, it just flows out correctly, in any language I know. I think of higher level abstractions. -- BryanDollery
I will never remember VBS syntax, or whether a varible should be tested for null, empty, Nothing or "". And I doubt anyone ever will -- PatrickLynch?
I always assumed that the real programmer was a very dangerous figure: the kind of person who can write mountains of code which will all work, but is totally incomprehensible to anyone but the programmer himself. One of the reasons that XEmacs exists is because RMS didn't believe in encapsulation because he could understand all the code without it.
The more I program, the less a programmer I become. See ProgrammingIsLife.
RealProgrammers Don't Use Pascal. http://foldoc.org/Real+Programmers+Don%27t+Use+Pascal
I think I HaveThisPattern. At least, something gave me pause when I read it this time. I say I don't do all those things! But that 'flippant attitude toward complexity' seemed a little close to the mark. Despite my attempt to think out simple, elegant solutions to problems. Something in there still rang true for me. -- BillKelly
I had a sort of discussion with someone on an interview yesterday. The way we figured it is that a RealProgrammer started long enough ago that they had to start with AssemblyLanguage and have done a lot of things the hard way. We lamented the fact that there are mindless drones coming out of 6-month "Web Certification" courses with a smattering of VB perhaps and some HTML who think that they can design software. Whereas many of us who have been doing this for twenty years or so have had lots of Data Structures, AssemblyLanguage, punch cards, etc. -- SamGentile
The first programmers of the modern era used patch cords, not punch cards. (Previous to the modern era of computers, a programmer was a person who gave the instructions to the computer. The computer was a guy or gal with a pad of paper and a mechanical calculator. They used lots of these computers on the ManhattanProject?. Whole rooms full of computers worked in parallel. Hardware has changed, but what about software?) --BobBockholt
I think a real programmer should know how to communicate, along with how to think. Since problems programmers should solve these days are not usually simple for a single programmer - however proficient he is, - to solve in given time, we programmers should collaborate each other. In this regards, I imagine a real programmer as someone who knows how to communicate with others. It seems easy, but many programmers are not good at communication, especially at listening. So, when there is something to discuss, people usually end up with another meeting, which drags a project (and which many of you are familiar with). A real programmer should be able to listen what other programmers are really trying to say, as well as be able to deliver his own thought. A real programmer should also be familiar with abstractions and details at the same time. He should be able to choose the level of abstraction he'd work with, so he ought to know about paradigms, patters and specific languages. This does not necessarily mean he should know everything, but what it does mean is, he should know what levels of abstractions there are in the world, and be able to choose properly among them with given problems. -- JiwonSeo
The RealProgrammer bit at the top is a stereotype. Like a good horoscope, you'll find a bit of yourself in it. And, when you do, it brings both pride and shame. Pride because we like the title of RealProgrammer, and shame because, well, a part of us is in there and it's not a pretty picture.
I can say it here, for all to read: for years I've been ashamed I wasn't a real programmer because I like quiche.
For the record, a real programmer, in my book, should have a clue what is happening under the hood when he compiles source, runs a script, or draws text on the screen.
He should probably have written a little assembly, a toy compiler, and an interpreter, something graphics, a bit of text processing...Oh! Heck! Just read my resume and put diminuatives in front of my accomplishments! (kinda kidding)
Real programmers miss the blinking lights. (So what if you can't see a light blink at 2Ghz?!)
Maybe I'm just a sincere programmer?
I totally agree. A RealProgrammer is able to tell what exactly his code does. Let me elaborate. Any programmer can tell you what happens on her end of a library class or function she is using. A RealProgrammer, on the other hand, is usually able to explain what it is the library is doing; and if asked for details he will go down as far as the hardware level.
Another property which usually goes with being a RealProgrammer is the ability to write huge amounts of code without a concrete design in mind. Once a RealProgrammer has read the description of a problem, if she is able to solve it at all, she already has an abstract model of the complete solution in mind.
A RealProgrammer is often able to express himself in a very broad spectrum of FormalLanguages. If he ever comes across a language he doesn't know yet, it will pick up the basics in one or two days (although he will not completely master it any earlier than anyone else).
A RealProgrammer also typically has a lot of experience designing algorithms, finding and implementing solutions to unique problems, and just coding for fun. However, this can't be measured in years. Someone who has been programming for more than 15 years (like me) is not necessarily more of a RealProgrammer or more experienced than anyone else. The ability to pick up new concepts and adapt to changes is a key ability of a RealProgrammer.
Ah yes, and something no-one can be sure of is the relation of being a RealProgrammer to the ability to write code in BrainfuckLanguage. The matter is being investigated.
A RealProgrammer...
... LIKES to waste time...
... doesn't program in basic. No-one programs in basic after the age of 12. (Only Bill Gates)
... programs in hex on an altair, without using those sissy video terminals (or teletypes).
... doesn't use Pascal. (http://www.pbm.com/~lindahl/real.programmers.html)
... does "copy con program.zip" (well... some time ago :-)
... uses punch cards, and all that jazz
... just whistles the binary code into the modem
... doesn't visit this page. They're too busy coding. Such a "pissing" contest if I ever saw one. Did you miss the sarcasm?
More than one RealProgrammer; in such a group, the extrovert can be spotted by looking for the person gazing at someone else's shoes.
When I first heard the term in the 1970s, I was told it derived from a much older saying: Real Men Don't Eat Quiche. RealProgrammers programmed in nothing higher than Fortran (later: C). -- IanClark
...oh yes, and they shunned all these fancy control structures and used GOTO exclusively.
PL/I had a lovely construct for branching to a saved label. This supported those customers with the house-rule (sic!) No Subroutines!!
I've worked at places like that. Or at least some of the programmers thought that was a rule. -- RobertField
Re: just whistle the binary code into the modem
I actually used to do this on the job. I once worked at a place that had a DEC/VAX mini with a bank of about 8 modems for VT100-compatible terminals. If there were modem complaints such as dial-in problems, I had to first figure out which modem was connected to which phone number. Others didn't always keep the map up-to-date. Plus, it used busy-roll-over.
The test phone was a ways away from the modem bank for the VAX minicomputer, so I had to keep the modem trying to connect long enough until I got there to see which modem answered the call (via LED). The only easy way I found to do this was to manually whistle an acceptable modem tone into the phone in order to trick the modem into thinking I was a modem trying to connect. This would keep it trying long enough to allow me to run from the test phone to the modem bank. It had to be the right pitch and wavering to work most of the time. I got pretty good at it after a while. I learned to "speak modem" a bit.
A computer-room technician once saw me whistling modem sounds into the phone and running back and forth. I later told him why, and he told me I was nuts and mumbled something about whistling sweat nothings to my robotic girlfriends. -t
Did you work at TeleCheck? What tones did modems accept?
Wow. Like T-X from Terminator 3. That's what I call awesome. XD --DaNuke?
...a real guru can patch an executable by opening the binary inside a paint program and changing the colors of a few pixels.
No they can't, unless the paint program can open .raw files
You just have to use a Real Paint Program. Finding one is left as an exercise for the reader.
You mean writing one, surely. Real Programmers make their own tools.
A Real Programmer can prepend an image file header to the executable and strip it off when they're done. --Deschutron
A RealProgrammer uses a binary keyboard with only 2 keys: 1 and 0. The other free hand is attached to either another binary keyboard or a coffee mug. This is because a RealProgrammer doesn't sleep, he drinks coffee instead. Finally, a RealProgrammer takes the laptop into the bathroom so he doesn't interrupt coding.
No. A RealProgrammer uses a keyboard with only 1 key: 1. The keyboard delivers a '0' signal when not pressed. The RealProgrammer operates by directly entering codes delivered with particular timings, much like telegraph operators of old. A RealProgrammer drinks Mountain Dew, not coffee. The sugar is necessary for many brain functions.
A RealProgrammer has a normal keyboard in front of their screen. This is to calm management who find typing by the proper method - rubbing a 9-volt against two bare wires in perfect timing - to be bad pr for the customers who walk through. They modify their programs with a RealEditor.
Nowadays CeePlusPlus seems to be the chief bastion of the RealProgrammer mentality.
I've seen CeeLanguage programmers deter people from using CeePlusPlus on what seems to be the RealProgrammer mentality. But I'm sure there are still Assembly programmers who will do the same w/r/t C.
See YouKnowYouAreaRealProgrammerWhen, SpecializationIsForInsects, The StoryOfMel (a RealProgrammer), ProgrammingProfession, RealObjectOrientedProgrammers, AreBusinessAppsBoring