在软件工程师(我国叫做「程序员」或「码农」)的圈子里,文人相轻的现象但是十分严峻的,在程序规划的各个范畴里都有着扑朔迷离的「轻视链」。从程序言语、编辑器、平台到 { 是写在 if 的同一行仍是下一行,不同阵营的人都习气轻视来轻视去。而其间「你用啥程序言语?」更是我们最热心的一条轻视链,所以关于刚踏入程序规划范畴的初学者来说,假如程序言语选得欠好,但是会一开始就落入轻视链的底层啊。
软件工程师的轻视链到底有多惨烈、多严酷呢?
程序言语篇
懂 Functional Programming 的工程师轻视老是把规划形式挂在嘴边的工程师,老是把规划形式挂在嘴边的工程师轻视会说「你这么写就不 OO 了啊」的工程师,会说「你这么写就不 OO 了啊」的工程师轻视会说「蛤?啥面向对象?不是把重复的 code 写成一个 function 就好了吗?」的工程师,会说「蛤?啥面向对象?不是把重复的 code 写成一个 function 就好了吗?」的工程师轻视把同一段 code 处处仿制贴上的工程师,把同一段 code 处处仿制贴上的工程师轻视 PM。
写静态言语的工程师轻视写动态言语的工程师。
写汇编言语的工程师轻视写 C 言语的工程师,C 言语工程师轻视 C++ 工程师,C++ 工程师轻视 Java 和 C# 工程师,Java 工程师和 C# 工程师则相互轻视,而 C# 工程师又轻视 Visual Basic 工程师和会把 C# 念成「C 井」的工程师,会把 C# 念成「C 井」的工程师则轻视以为 HTML 是一种程序言语的规划师。
用 Python 3 的工程师轻视还在用 Python 2 的工程师,用 Python 2 的工程师轻视遇到 UnicodeEncodeError 的工程师。
写 iOS 的工程师轻视写 Android 的工程师,写 Android 的工程师轻视写 Windows Phone 的工程师。
有 Swift 一年经历的工程师轻视有 Objective-C 五年经历的工程师,写 Objective-C 的工程师轻视用 PhoneGap 包装成 native app 的工程师。
用 React.js 的工程师轻视用 AngularJS 的工程师,用 AngularJS 的工程师轻视用 jQuery 的工程师,用 jQuery 的工程师轻视用 Vanilla JavaScript 的工程师,用 Vanilla JavaScript 的工程师轻视 IE 的用户。
会用 debugger 的工程师轻视用 assert 的工程师,用 assert 的工程师轻视只会 print() 的工程师;用 console.log() 来 debug 的工程师轻视用 alert() 来 debug 的工程师。
写 Ruby on Rails 的工程师轻视一切使用别的言语的工程师。
啥?你说 Ruby?Ruby 仅仅 Ruby on Rails 的一套结构,才不是啥程序言语呢!
一切的工程师都轻视 PHP 工程师。
东西篇
用 text editor 的工程师轻视用 IDE 的工程师。
用 Vim 的工程师轻视用 Emacs 的工程师,用 Emacs 的工程师轻视用 Vim 的工程师,无论是用 Vim 或 Emacs 的工程师都轻视一切用别的编辑器的工程师;用 Atom、Notepad++、Sublime Text 的工程师轻视用 Windows 记事本的工程师。
用 Android Studio 或 IntelliJ IDEA 的工程师轻视用 Eclipse 的工程师,用 Eclipse 的工程师轻视用 NetBeans 的工程师。
程序代码用 space 缩排的工程师轻视用 tab 缩排的工程师,用 tab 缩排的工程师轻视混用 space 和 tab 来缩排的工程师。
用 Git 或 Mercurial 的工程师轻视用 Subversion 的工程师,用 Subversion 的工程师轻视用 Dropbox 来做版别操控的工程师,用 Dropbox 来做版别操控的工程师轻视底子不知道啥叫做版别操控的工程师。
知道 GitHub 的工程师轻视不知道 GitHub 的工程师;在 GitHub 有 private repo 的工程师轻视为了免费的 private repo 而去用 BitBucket 的工程师。
用 Zsh 的工程师轻视用 Bash 的工程师,用 Bash 的工程师轻视用 Cygwin 的工程师,用 Cygwin 的工程师轻视用「指令提示字符」的工程师,用指令提示字符的工程师轻视用 GUI 接口的工程师。
用 IRC 的工程师轻视用 HipChat 的工程师,用 HipChat 的工程师轻视用 Slack 的规划师和 PM。
用 reStructuredText 写文件的工程师轻视用 Markdown 写文件的工程师,用 Markdown 写文件的工程师轻视用 HTML 写文件的工程师,用 HTML 写文件的工程师轻视不写文件的工程师,然后用 LaTeX 写文件的工程师轻视一切工程师。
用 Nginx 的工程师轻视用 Apache 的工程师,用 Apache 的工程师轻视用 IIS 的工程师。
用 Spark 的工程师轻视用 Hadoop 的工程师,用 Hadoop 的工程师轻视用 Hadoop 处理只要几 GB 数据的工程师,用 Hadoop 处理只要 1GB 数据的工程师轻视用 NoSQL 的工程师,用 NoSQL 的工程师轻视用联系数据库的工程师,用联系数据库的工程师轻视用 Excel 的 PM。
用 Docker 来布置 server 的工程师轻视用 Ansible 或 Puppet 来布置 server 的工程师,用 Ansible 或 Puppet 来布置 server 的工程师轻视用 Fabric 来布置 server 的工程师,用 Fabric 来布置 server 的工程师轻视手动 SSH 的工程师。
OS 篇
用 Mac OS X 的工程师轻视用 Linux 的工程师,用 Linux 的工程师轻视用 Windows 的工程师。
用 Debian 的工程师看不起用 Ubuntu 的工程师,用 Ubuntu 的工程师看不起用非 LTS 版别的 Ubuntu 的工程师。
硬件篇
用 MacBook Pro Retina 的工程师轻视用 MacBook Air 的工程师,用 MacBook Air 的工程师轻视用 ThinkPad 的工程师,然后用 Raspberry Pi 的工程师轻视用 MacBook Pro Retina 的工程师。
用 Dvorak 键盘的工程师轻视用 Mac 键盘的工程师,用 Mac 键盘的工程师轻视用 QWERTY 键盘的工程师,用 QWERTY 键盘的工程师轻视轻视不知道 QWERTY 键盘是啥的工程师,不知道 QWERTY 键盘是啥的工程师轻视用手写板的规划师。
坐 Aeron 椅子的工程师轻视坐一般办公椅的工程师,坐一般办公椅的工程师轻视跟他一样做一般办公椅的 PM,然后站着写程序的工程师轻视坐 Aeron 椅子的工程师。
职场篇
搞硬件的工程师轻视搞软件的工程师。
写 OS 的工程师轻视写 Web 的工程师,写 Web 的工程师轻视写 desktop application 的工程师。
后端工程师轻视前端工程师。
工程师跟规划师相互轻视。
信奉 Test-Driven Development 的工程师轻视先写 code 再补 tests 的工程师,先写 code 再补 tests 的工程师轻视不写 tests 的工程师,不写 tests 的工程师轻视又他妈乱改需要的 PM。
没有证照的工程师轻视考了成堆证照的工程师。
上班穿休闲服的工程师轻视上班穿西装的工程师,上班穿西装的工程师轻视上班穿系服的工程师。
———
假如你看了以上这些惨无人道的轻视链以后,依然没有击倒你想要学习 coding 的心,那我有必要提示你一件最主要的事:先去交一个女朋友,再来学写程序;由于一旦你变成软件工程师以后,就交不到女朋友了。(文章来自南京欣才PHP培训课程)