咱们朝九晚五上班下班,便是为了有朝一日去探究国际的 —— 国际探究编辑部

跟着大环境的下行,互联网职业也受到必定的冲击,哀鸿遍野。

笔者也没有逃过,培育起来的人马陆续被优化,留下一丢光杆司令,我也回到的业务一线,心里很不是味道。留下来的人,也不知道这艘船什么时分会淹没… 为了活命而拼命挣扎(内卷)

负面情绪和焦虑不断侵扰,以至于置疑,当初选的这条路是不是正确的。

捡起买了多年,可是一向没看的《人月神话》, 开篇就讲了程序员这个职业的趣味和苦恼,颇有共鸣,所以拿出来给大家共享

不论曩昔多少年,不论你的程序载体是纸带、仍是 JavaScript,不论程序跑在高对比(high contract)的终端、仍是 iPhone,程序员的高兴和烦恼并没有变化。

尽管国内软件职业看起来不是那么健康。我信任许多人真实酷爱的是编程,而不仅仅是一份作业,便是那种朴实的酷爱。你有没有:

  • 为了修正一个 Bug,茶饭不思
  • 为了一个 idea,能够凌晨爬起来,决战到天亮
  • 咱们享用没有人打扰的午后
  • 梦想着参加到一个巨大的开源项目
  • 有强烈的共享欲,希望咱们的著作能够协助到更多人, 希望能得到用户的反馈,即使是一个点赞


咱们的高兴

《人月神话》:

首先,这种高兴是一种创立事物的朴实高兴。好像小孩在玩泥巴时感到高兴相同,成年人喜欢创立事物,特别是自己进行设计。我想这种高兴是天主发明国际的折射,一种呈现在每片共同的、簇新的树叶和雪花上的喜悦。

其次,这种高兴来自于开发对别人有用的东西。内心深处,咱们希望咱们的劳作成果能够被别人使用,并能对他们有所协助。从这一角度而言,这同小孩用粘士为“爸爸的办公室”捏制铅笔盒没有任何本质的差异。

第三,高兴来自于整个进程体现出的一股强大的魅力——将相互啮合的零部件组装在一同,看到它们以精妙的方法运转着,并收到了预期的作用。比起弹球游戏机或主动电唱机所具有的迷人魅力,程序化的计算机毫不逊色。

第四,这种高兴是持续学习的高兴,它来自于这项作业的非重复特性。人们所面临的问题总有这样那样的不同,因此解决问题的人能够从中学习新的事物,有时是实践上的,有时是理论上的,或许兼而有之。

最终,这种高兴还来自于在易于驾御的介质上作业。程序员,就像诗人相同,简直仅仅在单纯的思考中作业。程序员凭空地运用自己的幻想,来建造自己的“城堡”。很少有发明介质如此灵敏,如此易于精粹和重建,如此简单实现概念上的设想(不过咱们将会看到,简单驾御的特性也有它自己的问题)。

可是程序毕竞同诗篇不同,它是实实在在的东西;它能够移动和运转,能独立发生可见的输出;它能打印成果,制作图形,发出声音,移动支架。神话和传说中的戏法在咱们的年代已变成实际。在键盘上键入正确的咒语,屏幕会活动、变幻,显示出史无前例的也不或许存在的事物。


编程便是一种朴实发明的高兴,而且它的成本很低,咱们只需要一台电脑,一个趁手的编辑器,一段不被人打扰的整块时刻,然后进入心流状态,脑海中的主意转换成屏幕上闪耀的字符。 这是多巴胺带给咱们的高兴。

程序员的快乐与苦恼



咱们也有「机械崇拜」,软件不亚于传统的机械的杂乱结构。 它远比外界幻想的要杂乱和严苛,而咱们享用将无数零部件有机组合起来,点击——成功运转的快感。

咱们享用杂乱的问题,被笼统、拆解成一个个简单的问题, 仔细描绘分层的弧线以及每个模块轮廓,慎重设计它的每个锯齿和接口。

咱们崇尚有序,赞赏清晰的边界, 为的便是咱们发明的国际能够稳定开展。


咱们认为懒散是咱们的长处,咱们也崇拜主动化,享用咱们数据经过咱们建造的管道在不同模块、体系或许机器中传递和加工;享用程序像多米诺骨牌相同,主动构建、测验、发布、布置、分发到每个用户的手中,优雅地跑起来。

由于懒,咱们时常寻求发明出能够取代自己的工具,让咱们能腾出时刻在新的国际探究。比方能够制造出咱们的 Moss,帮咱们办理让每个程序的生命周期,让它们优雅地死去又重生。


咱们是一群乐于共享和学习的集体,有昌盛的技能社区、各种技能大会、技能群…

不论是共享仍是编程自身,其实都是希望咱们的著作能被其别人用到,能发生价值:

  • 咱们都有开源梦,多少人梦想着能参加那些广为人知开源项目。很少有哪个职业,有这么一群人, 能够自我安排,用爱发电、完全透明地做出一个个巨大的著作。
  • 咱们总会怀揣着乐观的设想,基于这种设想,咱们会趋向打造更完美的著作,幻想未来各种高并发、极端的场景,咱们的程序能够游刃有余。
  • 咱们总是不满足于现有的东西,乐于不断地改进,造出更多的轮子,甚至不惜代价推翻重来
  • 咱们更会沮丧,自己投入大量精力的项目,无人问津,甚至胎死腹中。

看着它们,从简单到繁杂,这是一种迭代的高兴。




咱们的苦恼

《人月神话》 可是这个进程并不全都是高兴的。咱们只要事先了解一些编程固有的苦恼,这样,当它们真的呈现时,才能愈加安然地面临。

首先,苦恼来自寻求完美。由于计算机是以这样的方法来变戏法的: 假如咒语中的一个字符、一个停顿,没有与正确的方法共同,戏法就不会呈现(实际中,很少有人类活动会要求如此完美,所以人类对它本来就不习气)。实际上,我认为,学习编程最困难的部分,是将干事的方法向寻求完美的方向调整”。


其次, 苦恼来自由别人来设定目标、供给资源和供给信息。编程人员很少能操控作业环境和作业目标。用办理的术语来说,个人的威望和他所承当的职责是不般配的。不过,好像在所有的领域中,对要完结的作业,很少能供给与职责相共同的正式威望。而实际情况中,实际(相关于方法)的威望来自于每次使命的完结。

关于体系编程人员而言,对其别人的依靠是一件十分痛苦的作业。他依靠其别人的程序,而这些程序往往设计得并不合理、实现低劣、发布不完整(没有源代码或测验用例)或许文档记载得很糟。所以,体系编程人员不得不花费时刻去研讨和修正,而它们在理想情况下本应该是可拿的、完整的。


下一个苦恼 —— 概念性设计是有趣的,但寻觅琐碎的bug却是一项重复性的活动。伴跟着发明性活动的,往往是枯燥烦闷的时刻和艰苦的劳作。程序编制作业也不例外。


另外,人们发现调试和查错往往是线性收敛的,或许更糟糕的是,具有二次方的杂乱度。成果,测验一拖再拖,寻觅最终一个错误比第一个错误将花费更多的时刻。


最终一个苦恼,有时也是一种无奈 —— 当投入了大量辛苦的劳作,产品在行将完结或许总算完结的时分,却己显得陈腐过时。或许是同事和竞争对手己在追逐新的、更好的构思;也许替代方案不仅仅是在构思,而且己经在安排了。


前阵子读到了 @doodlewind 的 全职开源,出海创业:我的 2022,说的是他 all in 去做 AFFiNE 。我眼里只要仰慕啊,能够找到 all in 的作业…



这些年 OKR 也很火,咱们公司也跟风了一年; 后面又回到了 KPI,轰轰烈烈搞全员KPI, 抓着每个人, 要定自己的全年KPI; 再后来裁人,KPI 就不再提起了…

这三个阶段的演变很有意思,第一个阶段,希望经过 OKR 上下打通,将目标捆在一同,让团队自己驱动自己。实际上施行起来很难,让团队和个人自我驱动起来并不是一件简单的作业,尽管用的是 OKR,但内核仍是 KPI,或许说 OKR 变成了领导的 OKR。

后面就变成了 KPI, 限制团队要承当多少销售额,交付多少项目;

再后来 KPI 都没有了,换成要求每个人设定自己作业日历,不能空转,哪里项目缺资源,就调配到哪里,完全沦为了人矿…


能让咱们 all in 的作业,首先得是咱们认同的作业,其次咱们能在这件作业上深度参加和发挥价值,并获得预期的回报。这才能实现「自我驱动」

关于大部分人来说,很少有这种作业时机,唯一值得 all in的,恐怕就只要自己了。



所以程序员的苦恼许多,尽管编程是一个发明性的作业,可是咱们的作业是由其别人来设定目标和供给资源的。

也便是说咱们只不过是困在敏捷循环里面的一颗螺丝钉,每天在早会上机械复读着:昨天干了什么,今日要干什么。

企业总会主意设法量化咱们的作业,最好是像流水线相同透明、可猜测。


培训机构四个月就能将高中生打造成能够上岗敲代码的程序员。咱们这个职业已经不存在咱们幻想中高门槛。

程序员或许便是新年代的蓝领工人,假如咱们的作业是重复的、可预见的,那本质上就没什么差异了。



寻求完美是好事,也是坏事。严苛的编译器会进步开发的门槛,但同样能够降低咱们犯错的概率。

计算机简直不会犯错的,仅仅咱们不懂它,而人经常会犯错。相比严苛的计算机,人愈加可怕:

  • 敷衍领导或产品拍脑袋的需求
  • 接手屎山代码
  • 浪费时刻的会议
  • 狼性文化




还有一个苦恼是技能的开展实在太快了,时髦的项目生命周期太短,而程序员又是一群喜新厌旧的集体。

比方在前端,或许两三年前的项目就能够被定义为”老古董”了,上下文切换到这种项目会比较痛苦。不幸的是,这些老古董或许会由于某些程序员的成见,呈现破窗效应,渐渐沦为屎山。

咱们尽管苦恼于项目的糜烂,而大多数情况咱们也是推手。


咱们还有许多苦恼:

  • 35 岁危机,持续做技能仍是转办理
  • 面试的八股文
  • 内卷
  • 被 AI 取代


关于读者来说,是高兴多一些呢?仍是苦恼多一些呢?