首页 > 代码库 > 软件工程师的鄙视链
软件工程师的鄙视链
最近这几年在世界各地突然吹起了一股全民写程序的风潮,连美国总统欧巴马都在写JavaScript了,但是身为一介靠写程序(以及在上班时间胡乱上网)来谋生的developer(所谓的developer就是「软件工程师」的比较潮的说法),想要提醒那些想学习写程序的人一件重要的事:慎选你的第一个程序语言。
在软件工程师(中国叫做「程序员」或「码农」)的圈子里,文人相轻的现象可是非常严重的,在程序设计的各个领域里都有着错综复杂的「鄙视链」。从程序语言、编辑器、平台到是写在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的心,那我必须提醒你一件最重要的事:先去交一个女朋友,再来学写程序;因为一旦你成为软件工程师之后,就交不到女朋友了。
本文转自:http://www.spasvo.com/news/html/20141223155042.html
软件工程师的鄙视链