程序员的鄙视链

最近这几年在世界各地突然吹起了一股全民写程序的风潮,连即将卸任的美国总统奥巴马都在写 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。

没有证照的工程师鄙视考了一堆证照的工程师。

上班穿休闲服的工程师鄙视上班穿西装的工程师,上班穿西装的工程师鄙视上班穿系服的工程师。

------------

本文分享自微信公众号 - 巴法(bemfa_com)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏飞总聊IT

寻觅Azure上的Athena和BigQuery(一):落寞的ADLA

AWS Athena和Google BigQuery都是亚马逊和谷歌各自云上的优秀产品,有着相当高的用户口碑。它们都属于无服务器交互式查询类型的服务,能够直接对...

8320
来自专栏.NET技术与企业级解决方案

C#3.0新增功能08 Lambda 表达式

Lambda 表达式是作为对象处理的代码块(表达式或语句块)。 它可作为参数传递给方法,也可通过方法调用返回。 Lambda 表达式广泛用于:

12340
来自专栏FreeBuf

我们是如何发现针对欧洲政府的攻击

寻找新型以及危险的网络威胁是PT ESC安全中心的主要工作之一,2019年中旬,PT ESC的分析人员发现了一起针对克罗地亚政府的网络攻击。在这篇文章中,我们将...

12140
来自专栏.NET技术与企业级解决方案

C#3.0新增功能09 LINQ 基础02 LINQ 查询简介

查询 是一种从数据源检索数据的表达式。 查询通常用专门的查询语言来表示。 随着时间的推移,人们已经为各种数据源开发了不同的语言;例如,用于关系数据库的 SQL ...

7430
来自专栏.NET技术与企业级解决方案

C#2.0新增功能06 协变和逆变

在 C# 中,协变和逆变能够实现数组类型、委托类型和泛型类型参数的隐式引用转换。 协变保留分配兼容性,逆变则与之相反。

8010
来自专栏.NET技术与企业级解决方案

C#3.0新增功能01 自动实现的属性

在 C# 3.0 及更高版本,当属性访问器中不需要任何其他逻辑时,自动实现的属性会使属性声明更加简洁。 它们还允许客户端代码创建对象。 当你声明以下示例中所示的...

11020
来自专栏.NET技术与企业级解决方案

C#3.0新增功能09 LINQ 基础01 语言集成查询

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSens...

7310
来自专栏搜狗测试

linux下搭建gtest和gmock测试框架

Google mock(以下简称gmock)和Google Test(以下简称gtest)是google的开源项目,他能够在测试中起到“打桩”的作用。举个例子,...

34030
来自专栏.NET技术与企业级解决方案

C#3.0新增功能03 隐式类型本地变量

从 Visual C# 3.0 开始,在方法范围内声明的变量可以具有隐式“类型”var。 隐式类型本地变量为强类型,就像用户已经自行声明该类型,但编译器决定类型...

10320
来自专栏.NET技术与企业级解决方案

C#2.0新增功能03 匿名方法

  在 2.0 之前的 C# 版本中,声明委托的唯一方式是使用命名方法。 C# 2.0 引入匿名方法,在 C# 3.0 及更高版本中,Lambda 表达式取代匿...

5910

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励