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!