To the outside world, programmers, computer scientists, software engineers, and developers may all seem alike, but that's far from the case for the people who create software for a living. Any single programmer's ability and knowledge can range very widely, as well as their tools (OS, language, and yes, preferred editor), and that diversity spawns many sub-cultures in software - like programmers who actively use Stack Overflow and this site, versus many more who don't.

I'm curious to hear from others what software sub-cultures they've encountered, belonged to, admired, disliked, or even created. For starters, I've encountered:

  • Microsoft-driven companies and developers: their entire stack is from Redmond, WA. E-mail is Outlook is e-mail. The web is IE and IIS. They have large binders of their MS Developer Network subscription full of multiple versions of VB, .net, Visual Studio, etc. Avoids working with a shell/command-line. Don't see what the fuss with open-source and such is all about. MS-centric companies tend to be 9-5 and quite corporate (driven by business managers, not software people). Nowadays (given the wide availability of non-MS tools), this is the antithesis of hacker culture.
  • Old-school CS people: they often know Lisp and Unix extremely well; sometimes, they may have written a semi-popular Lisp themselves, or a system utility. Few, if any, "software engineering" things are new to them, nor are they impressed by such. Know the references, history, and higher-level implications of programming languages like Lisp, C, Prolog, and Smalltalk. Can be bitter about AI outcomes of the 80's and 90's. Tend to be Emacs users. Can type out multi-line shell commands without blinking an eye. Their advice can by cryptic, but contains gold once understood.
  • New-school web developers: played with computers and video games growing up, but often only really started programming in the late '90s or early '00's. Comfortable with 1 to 1.5 scripting/dynamic languages; think C and languages outside of Ruby/Perl/Python are unnecessary/magical. May have considered HTML as programming initially. Tend to get a Mac and be fanatical/irrational about it. Use frameworks more than build them. Often overly-enthusiastic about NoSQL and/or Ruby On Rails.
  • New-school CS: lots of training in statistics, Bayesian models and inference; don't say "AI," say "machine learning." More Java than Lisp, but could also be expert Haskell programmers. Seeing major real-world successes by experts in their field (Google, finance/quants) often makes them (over) confident. But big data, and the distributed processing of such, really are changing the world.

The examples above are by no means complete, correct, orthogonal, or objective. :) Just what I've seen personally, and provided to spark some discussion and outline of the broader question. Feel free to disagree!

  • 1
    'Lil' vague, but sounds interesting.
    – Rook
    Sep 21, 2010 at 17:15
  • 6
    I think the answers show one thing: the question is trying to draw clear dividing lines where there really is none. We're dealing with about 5 orthogonal concepts, each a continuum, and trying to divide that hyperplane into easily identifiable discrete groups. IMO, it's a hopeless endeavor. Sep 21, 2010 at 20:53
  • 3
    @Jerry Coffin - yes, agree. Not to mention that some answers are bordering offensive towards some "cultures", IMHO. However, these answers are nice in a way that they show what today's (programmers? or at least this community) thinks about other communities, which form even a part of this one (in a small percentage).
    – Rook
    Sep 21, 2010 at 21:46
  • @JerryCoffin Well sir, there's people who want to use that word "orthogonal" and those that don't just because it's been popular on stack in recent decades... Jul 23, 2014 at 4:54

10 Answers 10


I'd consider myself part of the Real-Time Systems group. There are some 'Old School' characteristics but with less focus on CS, more on hardware.

The archetype:

  • Has expert knowledge of 'C'
    • Has an original copy of K&R
    • Writes in other languages as if they were just an alternate syntax for 'C'
  • Can predict the assembler output from their code.
  • Can read a circuit diagram
  • Doesn't know how to write code without doing 'premature optimization'.
  • Is quite comfortable with the command line.
  • Fascinating, thank you. I've met some real-time systems people, but haven't worked at such a place so didn't attempt to characterize the culture. I think many of us programmers would call you guys "hard-core." :)
    – limist
    Sep 21, 2010 at 19:35
  • 1
    I think it's like any other discipline - there are the hard-core "rock stars", and there are the plain old rocks. (I hope I'm somewhere inbetween )
    – AShelly
    Sep 21, 2010 at 21:04
  • 2
    I'm in this group, too. Most of my colleagues have come "up" to this place from an electronics engineering background, but I came "down" to it from being a database / apps developer. I'm very comfortable in this group now, though, and sometimes my different background can bring a different useful perspective.
    – Vicky
    Sep 22, 2010 at 8:49
  • 1
    Also, it may be my perception, but it feels like women are even rarer in this group than in some of the other groups.
    – Vicky
    Sep 22, 2010 at 8:49
  • 1
    Wow - this describes me almost perfectly, except I not only read circuit diagrams, I design the circuits too. Worked on my first embedded system (in PL/M-86) in the late 1970's.
    – tcrosley
    Sep 30, 2010 at 22:18

Don't forget the mainframe programmers. They are a sub culture too.

  • 1
    I'd enjoy hearing more about mainframe coder culture; I've met very few who even spend much time with mainframes, let alone code them regularly.
    – limist
    Sep 30, 2010 at 21:40
  • 1
    These are the people with respectable haircuts and are indistinguishable from other people wearing business suits. They like COBOL. To them, there is no system other than a system/360.
    – oosterwal
    Feb 26, 2011 at 23:30

I represent the lonely contingent of Delphi Devs under 30. Our caucus is small, but our hearts are big.

  • Some of my coworkers are < 30. Sep 21, 2010 at 20:34
  • 2
    Well, tell'em to start a stack exchange and we can talk about the new features we'll ask old Johnny Borland to implement after ya'll are dead ;-) Sep 21, 2010 at 20:36

I guess that there exists several cultures which somehow live alongside rather then fight and are somehow transcendent:

  • Hacker/Open Source culture: sharing code, uses real name or not. Concentrated probably on small tools that solve one problem. Allows in-program hacks. Languages: C, Lisp, C++, Python. Probably overlaps with yours Old-school CS people.
  • Academia: concentration on algorithms and doing things in the right way. The real name is must (it appears on paper anyway). Languages: Java, Haskell, (F#?)
  • Corportate: concentration on solutions (probably of everything). If open source that giving the name is not necessary. Languages: Java, C#, VB.net, Ruby.
  • "High School": it goods if it work but it doesn't have to. Concentration on names like "SuperProgram 1.0 for Windows XP". (sorry - I haven't found good name but I mean the programmers who started mastering CS and are not good at it - at least yet). Languages: PHP, VB, Ruby
  • New School Web Developers: As above.

Please note that:

  • it is possible to mix the cultures in organizations and in single person. In fact it often does.
  • The languages are EXAMPLES and it is for example quite large group of "hackers" working on C#. It is more of game of associations the real study so please don't be offended (yes - I do know that there are great programms written in PHP with good engeneering practice etc. but it tend to be first language for many people who don't know what for example XSS is)
  • I didn't want to offend anyone by name High School. I meant that it is often first step into programming via this culture (and hopefully not last)
  • Edit: Academia does not mean that person is in academia as well as being in academia does not mean that someone belongs to academia (despite being briliant scientist/researcher etc.). It denotes that he preferes the tools which gives clear, obviously correct solution even if it lacks performance/takes longer time/... Similary Corporate culture is not equivlent to corporations.

I think I'm currently mostly Open Source with slight influence of Academia (passive).

  • I was just thinking about the heavy overlap of the modern CS/academia subculture, and Haskell programmers. After playing around a bit with Haskell, I can see why it appeals to those with training in formal sciences (CS, mathematics), and indeed, I find Haskell helps see programming from a higher level.
    – limist
    Sep 21, 2010 at 19:51
  • Only Java and Haskell in Academia? What about Fortran, C, C++, R, MATLAB, *sh+awk (yes, I know such people), Mathematica, Python, LabVIEW? Also Haskell should be probably replaced with "any functional language".
    – mbq
    Sep 21, 2010 at 20:00
  • Those are example. BIASED examples. As I noted languages are NOT culture-specific. Also please note that academia culture is not limited to academia and not everyone in academia have to embrace academia culture. While I agree that Fotran/C/C++/R/Matlab/... are used in academia they do not form strong association with it in my mind. *sh+awk is definitly non-academia (as culture - user may work in academia and be briliant scientist - that's totally different thing0. Sep 21, 2010 at 20:11
  • 1
    I think you are going towards computer science academics.
    – mbq
    Sep 21, 2010 at 20:41

I'm kind of in the Alt.NET/old-school CS camp. I work with Microsoft tech (C#, etc.), but I'm aware that there's a whole world around me, other languages, algorithms, frameworks, "stuff under the hood", etc. Not perfect, obviously, but it's a work in progress.

  • 1
    The Alt.NET crowd are very definitely a programming subculture, and absolutely distinct from limist's description of the Microsoft-driven culture (which sounds more like what that culture was like a decade ago than what it is now, to me). Oct 1, 2010 at 0:37

I don't entirely agree with this statement about MS subculture: "Don't see what the fuss with open-source and such is all about - besides, who needs to know another language? Generally, I've found such places to be 9-5 and quite corporate (driven by business managers, not software people). The anti-thesis of the hacker culture.". I've worked at two .Net shops by now and the environment was actually very hacker-like. We've employed many open-source projects in our work. In my option, it all depends on the kind of people that one works with. If they're true developers, they will constantly look for ways to improve, branch out. What technologies they use is irrelevant.

Don't forget about the Agile Methodology subculture that incorporates developers from different backgrounds.

  • Yes, the Agile folks are a sub-culture onto themselves. Good point re. the developer vs. the tool, and of course your experience could well be very different from mine. From my limited sampling, I just found that the tools shaped the makers quite a bit.
    – limist
    Sep 21, 2010 at 19:44
  • I've worked in an MS shop (and I might even be a fanboy) but the mentality I've experienced is "look to MS first, if it's free then use it. Otherwise, look for anything and everything available to fill the need." Sep 30, 2010 at 22:48

I think there would be some middle ground between Old School CS and New School Web Developers.

I would traditionally consider myself a "Web Developer." PHP and Java and first class citizens to me, along with proper, symantic, valid HTML / CSS. Throw in SQL and you have a robust, well rounded skill set.

Move New School to Script Kiddies and rebrand the Web Developer.

Script Kiddies - People with little, if any, "under the hood" knowledge about the language. Tends to google for tutorials before blindly copy / pasting code into place. Typically doesn't fully understand the syntax of more then one language.


Academics that make research using computers, not research about computers.

- are writing software that can consume unlimited quantities of CPU time, memory and disc space so they care (or at least try to care) of performance, either by using stuff like -O3, time, profilers, memcheck, and spend hours more or less randomly changing the code to gather some speedup or mindlessly applying some mythical tricks to their scrips.
- use real numbers and know that it is tricky enough so a separate science named "numerics" can exist.
- often use some very specific programming languages/libraries/programs and are very fanatic about it; flame wars are common, mostly about performance.
- call their programs "codes" to highlight that they have so obfuscated user interface so only their creators know how to use it.
- usually work on Linux or at least use PuTTY to ssh to some Linux workstation/cluster.

  • 1
    Yeah, I'm in this club too. This list is a good start for a description of the typical high energy physicist (i mean, studies quarks, not had too much coffee) or astronomer working with the current large instruments.
    – DarenW
    Oct 1, 2010 at 23:53
  • 1
    And, as this subculture cares very much about practical, repeatable, and extreme efficiency, they often care little for most of the things going on in the computer science world, unless it has to do with parallel processing, clever caching schemes, HPC and such.
    – DarenW
    Oct 1, 2010 at 23:56
  • @DarenW: What do you mean they care little about the computer science world? Do you mean like they don't care about good software practice and the like? Because I would disagree. Caring about performance do not need you to throw out good software engineering principles.
    – n1ckp
    Oct 9, 2010 at 12:58

I'm probably a combination of Old-school CS people and New-school web developers: I learned programming by writing websites with PHP, Javascript and SQL, and am now attending university where everything is done in command-prompts and Emacs under UNIX.


Count me down as the 'old-school' guy. I never did LISP well, though. Emacs? Nah, vi and set -o vi in my shell for me thank you.

Not the answer you're looking for? Browse other questions tagged or ask your own question.