B类,  随想

优秀的程序员

魏文侯问扁鹊:“你兄弟三人,哪个软件开发水平最高?”扁鹊说:“大哥最好,二哥其次,我最差。” 文侯甚为不解。扁鹊解释道:“我大哥不等Bug出现就提前预防了,所以没啥存在感,裁员的时候最早就被优化了。二哥在Bug出现时就顺手解决了,所以名声传不出技术部门。我呢,每天像打地鼠一般到处救火,所以在公司没人不知道我。

什么是优秀?

优秀就是好。比别人强就是好

在百度工作的时候,我们都是代码熟练工。每天就是做无穷无尽的需求。我们的工作就是需求评审,方案设计,技术评审,代码实现,测试上线,回归验收。或者是写数据报表,架构优化,服务拆分。PM源源不断的产出需求,RD的代码写的又快又好,这就是好程序员。

那时的我,真是纯纯脑瘫啊。因为当你把自己认为是一个程序员的时候,你就已经输了

首先,正常人都不会想敲代码。原因很简单。敲代码这件事本身就很反人类。很枯燥。乏味。和社会接触的比较少。想敲代码的人是极少数的。即便在国外,这帮人也被称为nerd,是没人瞧得上的一帮人。进了这一行就像和尚进庙,关门念经;人会逐步丧失社交能力,不如同龄人能说会道、会来事。

其次,对于老板们来说,程序员就是一帮在复杂机器上执行难懂操作的人。老板不会关心你是怎么把代码敲出来的,老板只关心你能不能把事情做成。另外,老板们不喜欢不确定性,不希望某个人是不可替代的。老板就希望你变成螺丝钉,能够完全控制你。所以,整体的价值观导向就是这样——简单可依赖,就是希望你当好一只牛马。

第三,程序员很会造轮子。你掌握了很多平台的使用,代码的优化,但是这些并不是知识,只是门槛。如果你换了一个业务,一个语言,这些东西便通通没用了。就像java八股。能整理成文档、流程化的东西,都算不上是核心竞争力。敲代码,不是靠意志、理想或者信念就能解决问题的。需要找到正确的解决问题的方法。否则,付出的劳动便没有意义。也就是白白的盯着电脑,失去你的头发、视力和颈椎的健康。

所以,当你想更多更快的敲代码的时候,这说明你的精神已经不正常了,已经被洗脑了。程序员的生活在正常人的眼里就不是正常的。互联网公司把这样一帮不正常的人聚在一起,这种群体的精神病就变得难以发觉了。这就是职场驯化。

最后,就我认识的程序员来说,尽管大部分程序员都比较单纯善良。但是都具有以下一个或多个特质:

  1. 头发稀疏,秃
  2. 沉默寡言,像死人一样
  3. 抠门吝啬,喜欢穿参加活动发的衣服
  4. 单纯死板,情商较低
  5. 体型肥胖
  6. 心理变态
  7. 性别混乱。男的很娘,女的纯爷们。

真正的高富帅是没有人会当程序员的。就我个人而言。就算年薪百万,我也绝对不要变成油腻肥胖的秃头老汉。对我来说,刚工作这几年,敲代码,是探索世界的一部分。我一定不会永远从事这样一线的编程的工作。

综上所述,优秀的程序员本身就是一个悖论。当一个程序员足够优秀的时候,他必须超越程序员,进化成其他的形态。

即便你不愿意超越,程序员也会被自然淘汰。只有25-35之间的这帮人能保持旺盛的精力和活跃的思维。35岁到40岁的这些职场人士,如果职位做不到中层,人力成本是很贵的。把你优化掉,雇佣那些刚毕业的年轻人,对公司是更优的选择。他们更有体力,也更听话,执行力也更强。很多公司裁员时,第一考虑的就是中年的中低层职员。

所以,核心问题是,我们作为程序员如何进化?程序员进化后的下一个阶段是什么?

说实话,我也不知道。但是我可以说一下自己的理解。

第一,让自己创造更多的价值。代码是有价值的。但是代码的价值和平台是绑定的。除非你主动做一些有影响力的事情,否则编程大部分时候都是在拧螺丝。

不要成为代码熟练工。编程跟搬砖是一样的,都是学习实施的细节。一旦外部环境变了,原来的实施细节就没用了。

当代编程由于层层的抽象和封装,我们已经不必接触底层真正具有通用性的知识了。大部分时候,所谓编程就是在写某个抽象层的配置。

大部分的工作就是表设计、接口设计、内部逻辑的拆分。工作会逼着你成为CRUD程序员。而你的目标是脱离CRUD程序员。

第二,关注前沿技术和瓶颈。代码是有技术含量的,技术是可以造富的,我们需要朝着技术的风口。

成功的人生是螺旋向上,从会一件事到会多件事。

第三,转职。从初级码农到高级码农的道路上,都会经历一次转职业。要么是从架构、工程、数据等等等技术的细分领域中选择一项,成为技术大牛。要么是转管理。

管理:世界需要领袖。难点就是人际斗争、玩弄权术。可能会失去自己的生活。

高工:在数据/前端/架构/工程/领域,或者某种语言,有自己的特别深入的理解。在自己的方向上做到最强。让自己不可或缺。包括不限于写只有自己能懂的代码,做自己独特的设计。

不要什么技术都懂一点,但是哪一项都不精通。

如果你什么都会干,前端、后端、数据库、服务器管理都能上手,那么哪里缺人手,就会让你顶上去。但是,一旦遇到疑难问题,又指望不了你,因为你不是那个方面的专家,解决不了。

反过来,你精通某一项技术,其他都不懂,公司反而会觉得你更有价值。因为你可以把这个技术做得很深,克服技术难点,超过竞争对手,所以你的晋升会快得多。

但是,高工之路也是一条痛苦的道路。因为简单的事情都被人做了,一般的设计人们都理解了,剩下的技术点一定是非常晦涩难懂的。

你能在某件事上赢过别人,原因很可能不是你比他强,也不是你比他更热爱这个事业,而是你比他更抗打击。生活虐你千百遍,等到别人都放弃的时候,你还没有放弃。

第四,未来的大方向:程序员的自我革命。做项目需要的编程的工作量一定是越来越少的。不要自我感动,而是看自己真正的从头到尾完成了多少产品功能。把自己想象成一个创业者。

技术的方向

技术是无穷无尽的。当你的时间是有限的时候,什么样的技术是值得学习呢?

我觉得有这么几个原则:

  1. 效率高。省钱。比如golang。
    我面试字节的时候,字节的面试官给我科普过一些Golang的好处。包括以下几点:
    • 高效。节省服务器的资源
    • 语法简单,容易学
    • 支持真正的微服务。微服务不仅仅是代码模块的划分,更包含流量控制、服务切换等等。
    • 编译语言。很多bug在编译期间就能发现,不容易出问题。
  2. 社区资源丰富
    比如Java。没有人会因为选择Java被指责。当然Java现在已经是一片红海了。不推荐。
  3. 前景广。能做的事情多。比如python。

技术的终点

码农到底有没有出路,是不是青春饭,能不能永远做技术?

很遗憾的说,目前来看是不能的。按照互联网公司的调性,361的设计,不论是什么级别,每年总是会有10%的研发会被砍掉。你能保证自己总是在前90%吗?

凡是一万小时定律以内的,都不算核心技术。每门技术有它的门槛。每加一层抽象和概念,就能筛选掉一波人。如果你做的事情不难,那么你很容易被替代;如果你做的事情很难,那么它可能只是很复杂,也不一定足够的有价值。

一般来说,技术很难成为业务的瓶颈。目前互联网公司的壁垒是什么?很难说是技术上的优势,往往是已经建立起的垄断优势。

除非你领先别人一个时代,有很多天才的概念和创造,否则只能搬砖。

最后更新于 2024年4月8日 by qlili

0 0 votes
Article Rating
guest

10 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
10
0
Would love your thoughts, please comment.x
()
x