Let's joke and kill it
Human are subjective based on senses, and prone to project resemble images to others alike. Such judgments of people before their inner and true values sometimes get very bad, not just limited to office cultures or seriously negative impacts on productivities, but also eventually the great loss of the entire peaceful society toward Utopia.
Let's close our eyes and think, whatever stereotypes or discriminations based on will eventually become pointless at some levels. Look at kid's fight and we would realize that. What's important is we need to put down these ridiculous idea and work together. My plan is to ease the stereotype threads by over-communication, and eventually to joke myself to get over it, hopefully others would join these trend. After reading at the following stereotypes and think again: why would we needs stereotype threads hurting ourselves?
The following article is not my work. The permission for the English translation from the original article author Vinta is here.
The condescending chain of software engineers
web surfer software developer (a more in term for the software engineer nowadays), here I'd like to give you an important advice for all beginner coders: Carefully choose your first programming language.
In the ecology of software engineers (they're called "coding monkeys" or "coding peasants" in China), It's a common culture that programmers condescend to others in the complicated chain in every field of the programming worlds. Topics varies from: programming languages, editors, frameworks, to "should the curly brackets be in the same or next line of if?". Among these topics, "what programming language do you use?" is the hottest one. Therefore, for a brand new beginners, you will be in the lowest level of the condescending chain, if you don't carefully choose your programming language.
How severe and crucial is the condescending chain of software engineers?
Round I: Programming languages
Engineers knowing functional programming condescend to engineers talking about software design pattern. Engineers talking about software design pattern condescend to engineers always murmuring "it's not OOP at all!". Engineers always murmuring "it's not OOP at all!" condescend to engineers complaining "Huh? OOP what? couldn't I just write the repetitive codes in a function?". Engineers complaining "Huh? OOP what? couldn't I just write the repetitive codes in a function?" condescend to engineers copying/pasting the same code everywhere. Engineers copying/pasting the same codes everywhere condescend to project managers.
Engineers writing static type-checking systems condescend to engineers writing dynamic type-checking systems.
Assembler programmers condescend to C programmers, C programmers condescend to C++ programmers, C++ programmers condescend to Java and C# programmers, and Java and C# programmers condescend to each other. And C# programmers condescend to Visual Basic programmers and programmers read C# as "C-pound". The programmers read C# as "C-pound" condescend to programmers who think HTML as a programming language.
Engineers using python 3 condescend to engineers still using python 2. Engineers still using python 2 condescend to engineers getting Unicode Encode Error.
iOS programmers condescend to Android programmers. Android programmers condescend to Windows Phone programmers.
Engineers with one year experience in Swift condescend to engineers with five year experience in Objective-C. Objective-C engineers condescend to engineers wrapping native apps by PhoneGap.
Engineers using debugger condescend to engineers using assert. Engineers using assert condescend to engineers only using print(); Engineers debugging by console.log() condescend to engineers debugging by alert().
Ruby on Rails engineers condescend to all other engineers. What? Are you talking about Ruby? No, Ruby is just a framework of Ruby on Rails, not any sort of programming languages!
Round II: Tools
Engineers using text editors condescend to engineers using IDE.
Vim coders condescend to Emacs coders. Emacs coders condescend to Vim coders, both Vim and Emacs coders condescend to coders using any other editors. Coders using Atom, Notepad++, Sublime Text condescend to coders using windows notepad.
Engineers using Android Studio or IntelliJ IDEA condescend to engineers using Eclipse. Engineers using Eclipse condescend to engineers using NetBeans.
Programmers using dark-background editors condescend to programmers using white-background editors.
Engineers indenting by space condescend to engineers indenting by tab. Engineers indenting by tab condescend to engineers indenting by mixing space and tab.
Engineers using Git or Mercurial condescend to engineers using Subversion. Engineers using Subversion condescend to engineers using Dropbox for version control. Engineers using Dropbox for version control condescend to engineers who have absolutely no idea about version control.
Engineers knowing Github condescend to engineers not knowing Github. Engineers who get private repo in Github condescend to those engineers switched to BitBucket for free private repo.
Engineers using Zsh condescend to engineers using Bash. Engineers using Bash condescend to engineers using Cygwin. Engineers using Cygwin condescend to engineers using Windows CMD commend line. Engineers using Windows CMD commend line condescend to engineers using GUI.
Engineers using IRC condescend to engineers using HipChat. Engineers using HipChat condescend to designers using Slack and project managers.
Engineers documenting by reStructuredText condescend to engineers documenting by Markdown. Engineers documenting by Markdown condescend to engineers documenting by HTML. Engineers documenting by HTML condescend to engineers who don't document at all. At last Engineers documenting by LaTeX condescend to all other engineers.
Engineers using Nginx condescend to engineers using Apache. Engineers using Apache condescend to engineers using IIS.
Engineers using Spark condescend to engineers using Hadoop. Engineers using Hadoop condescend to engineers using Hadoop for merely several GB of data. Engineers using Hadoop for processing 1 GB of data condescend to engineers using NoSQL. Engineers using NoSQL condescend to engineers using relational database. Engineers using relational database condescend to project manager using Excel.
Engineers using Docker for server deployment condescend to engineers using Ansible or Puppet for server deployment. Engineers using Ansible or Puppet for server deployment condescend to engineers using Fabric for server deployment. Engineers using Fabric for server deployment condescend to engineers manually deploy servers by SSH.
Round III: OS
Engineers using Mac OSX condescend to engineers using Linux. Engineers using Linux condescend to engineers using Windows.
Engineers using Debian despise engineers using Ubuntu. Engineers using Ubuntu despise engineers using non-LTS version of Ubuntu.
Round IV: Hardware
Engineers using MacBook Pro Retina condescend to engineers using MacBook Air. Engineers using MacBook Air condescend to engineers using ThinkPad. Then engineers using Raspberry Pi condescend to engineers using MacBook Pro Retina.
Engineers using Dvorak keyboards condescend to engineers using Mac keyboards. Engineers using Mac keyboards condescend to engineers using QWERTY keyboards. Engineers using QWERTY keyboards condescend to engineers not knowing QWERTY keyboards. Engineers not knowing QWERTY keyboards condescend to designers using graphics tablet.
Engineers sitting on Aeron chairs condescend to engineers sitting on ordinary office chairs. Engineers sitting on ordinary office chairs condescend to project managers sitting on the exactly the same ordinary office chairs. Then, standing & coding engineers condescend to engineers sitting on Aeron chairs.
Round V: Office
Hardware engineers condescend to software engineers.
Engineers developing OS condescend to engineers developing Web. Engineers developing Web condescend to engineers developing desktop applications.
Back-end engineers condescend to front-end engineers.
Engineers and designers condescend to each other.
Engineers believing Test-Driven Development condescend to engineers make up tests after writing codes. Engineers make up tests after writing codes condescend to engineers not writing tests at all. Engineers not writing tests condescend to project managers who fxxking change specs again.
Engineers without certifications condescend to engineers passed without many certifications.
Engineers wearing business casual condescend to engineers wearing suits and ties. Engineers wearing suits and ties condescend to engineers wearing college shirts.
Engineers laughing at this article condescend to those engineers saying "Programming languages are just tools, there's not meaningful to condescend to each others, every programming languages gets good and bad fitting situations."
If you are still not knocked out after reading these crucial condescending chains, I have to remind you the most important things here: Go to get a girl friend first then learn programing. Because once you become a software engineer you won't have a chance to get one.