程序员|为什么10月24日是码农的节日?程序员的鄙视链,依据的是什么?

程序员|为什么10月24日是码农的节日?程序员的鄙视链,依据的是什么?

文章图片

程序员|为什么10月24日是码农的节日?程序员的鄙视链,依据的是什么?

文章图片

程序员|为什么10月24日是码农的节日?程序员的鄙视链,依据的是什么?

文章图片


这个周日 , 10月24日 , 是一个特殊的日子——程序员节 , 码农们的节日 。 为啥是10月24日呢?因为1024这个数字 , 正好是2的10次方 , 也是二进制世界里最重要的数字 , 1M=1024K , 1G=1024M 。 所以 , 就把这一天定为程序员节 。

在程序员当中也是有鄙视链的 。 先是工种的鄙视链:搞算法的看不上搞架构的 , 搞架构的看不上搞工程的 , 搞工程的看不上搞前端的 。 更严重的是语种的鄙视链:用汇编语言的看不上用C语言的 , 用C语言的看不上用C++的 , 用C++的看不上用JAVA的 , 然后所有人都鄙视用PHP的 。 这个鄙视链的逻辑是:使用靠近底层语言的程序员 , 看不起使用更高层语言的程序员 , 因为越是底层语言越难学 。

当然 , 前面说的这些只是江湖传闻 , 咱们听个乐 , 不用太当真 。 不过在全世界的程序员群体当中 , 确实存在一个独特的荣誉体系 , 不是看证书 , 也不是看title , 更不是像影视作品里演的那样 , 看你有多大的能耐黑入别人的系统 , 而是看你对开源项目的贡献 。
举了个例子:如果你对开源操作系统Linux的内核贡献了1%的代码 , 那么你在全球码农眼中就是顶级大牛 , 可以横着走 , 连微软首席程序员都得仰视你 。 还有 , 现在最大的开源软件社区GitHub , 任何人都可以在上面发布自己的开源项目 , 也可以参与别人的开源项目 。 很多公司招程序员 , 除了看你的简历 , 就是看你的GitHub页面 , 看你对哪些开源项目作出过贡献 。 反过来 , 程序员也会通过开源项目来评价一家公司 。 如果一个软件公司在开源项目上投入得不够 , 那么这家公司就不会赢得程序员的尊敬 。

你看 , 对开源项目的贡献 , 是程序员这个群体非常独特的荣誉体系 。 在这个体系当中 , 不是谁占有的东西越多、地位就越高 , 而是谁作出的贡献越大、地位就越高 。 换句话说 , 他们比的不是获取 , 而是给予 。
那么 , 这样一个独特的荣誉体系 , 又是怎么来的呢?这就要说到《大教堂与集市》这本书 , 书名代表了两种不同的软件开发模式:大教堂模式 , 是自上而下的开发 , 先做顶层设计、开发内核 , 再往下层层分解;集市模式 , 是自下而上的开发 , 把初始软件的源代码公布出来 , 让更多的志愿者参与进来 , 对初始软件进行反馈和修改 , 不断迭代 , 让软件自己生长出来 。 这就是开源项目 。

比如最成功的开源项目Linux操作系统 , 持续更新了30年 , 全球几万程序员参与了开发 。 除此之外 , 还有很多互联网基础设施 , 都是由开源软件构成的 。 发展到今天 , 开源项目和共创思想 , 已经成为一种互联网文化基因 , 并且形成了前面说的程序员荣誉体系 。
不过在软件开发项目里 , 有一个悖论性的难题 , 就是当项目延迟了 , 你越往里增派人手 , 项目会延迟得更厉害 。 因为随着人手越来越多 , 沟通成本会指数级增长 。 实际上 , 项目的复杂程度和沟通成本 , 与开发人员数目的平方成正比 。 这就是“复杂性定律” , 也被称为“布鲁克斯法则”(Brooks's Law) 。

但在一个开源项目里 , 同时参与开发的程序员动不动几百上千人 , 按照“布鲁克斯法则” , Linux根本不可能完成 。 这怎么解释?