普通程序员如何到达专家水平

我们可以列一下成为专家的问题列表:

问题1:需要花费多长时间成为专家?
问题2:中间过程是怎么样的?
问题3:怎么判断是否达到了专家水平?要成为某个领域的专家,你觉得还应该具备哪些条件?

这些问题很重要。任何工程技术工作,不管是机械修理、软件开发还是其他,都需要面对和解决大量的细节问题。我们需要在一个点上做精做深,在时间、质量、成本三个方面做出比别人更高的价值。但做为程序员,只从这些问题去思考我们整个人生,人生可能无解。我们需要超越这些问题。正如楼主后面问到的:

任何行业的技术人员,恐怕都不能单靠研究一个点而成为该领域的技术专家,对程序员来说更是如此。对程序员来说,我们可能要把问题分解为两个:

1.为什么程序员在一个点上达到深入的程度,仍无法避免被淘汰的风险?
2.软件开发领域的技术专家应该是达到哪些水平?

一个技术是否会被淘汰,跟技术能够产生的价值成正比。相对于建筑、医疗教育、电力电气等传统行业技术人员,程序员在一个点上做精做深的价值最小。

土木工程的一个标准可以实行几十年,医生研究的人体几万年不变,这些行业的技术工种在自己专业领域做精做深,就较难被淘汰。而软件行业是快速变化的行业,程序员是在人的需求和底层软硬件平台之间开展工作,是人类社会和计算机世界之间的中介。

矛盾在于,程序员的职业生涯是一个长长的隧道,和所有技术人员一样会有近 40 年,而用户需求以及软硬件平台的生命周期却最长不过十几二十年。正是因为如此,才有了 “程序员三十五岁困惑” 这个现象。

因此,如果程序员只是在一两个技术点上深入研究,存在很大的职业风险,有比较大概率被淘汰的可能。比如,我们会经常看到这样的情况:

1.毕业后一直在某个大公司工作多年,技术上做出过很多成绩的人,当大公司一旦走下坡路或者转型,就可能遭遇职业生涯的转型瓶颈。因为他的工作可能只是在所处大公司的平台上展开,一旦离开了平台的环境和支撑,可能掌握的技术不能匹配市场的需求,或者难以适应新环境的要求。

2.在某个业务领域(比如金融,电子商务等)摸爬滚打多年,深入掌握领域内各种业务知识,能够不断迭代提升IT系统,持续支撑业务向前发展的人,有可能遭遇职业发展的瓶颈。虽然他深入了解了业务的需求,但可能并未去观察思考用户和需求的变化,一旦老的业务模式不行,可能难以适应变化。

3.深入研究了某一个大型重要且普遍使用软件的源码(比如MySQL),掌握了该软件方方面面的实现细节并能够深入改造的人,不一定能够稳定地干一辈子。 因为二十年前并没有MySQL。将自己的技术积累押宝在某一个流行软件上而不思其它,存在很大的职业风险。

因此,作为程序员的我们,一定要跳出传统行业技术工种的经验范围,重新思考如果要干一辈子软件开发,该怎么做。更进一步地,要成为软件研发的专家,又该怎么做

软件开发确实是一个快速变化的领域,但反过来也有其它领域不具备的优势。比如入门门槛低、试错成本低、能够构建技术-产品-反馈闭环做快速迭代等。可以说,软件研发虽然已有大几十年的历史,但对于众多其他技术门类来说仍属于新鲜物种。

一直以来,对于软件开发过程有很多隐喻。比如把软件开发理解为建筑工程(大教堂模式), 集市交易(开源集市模式),花园营造(动态生长模式)等。 但如果把软件开发这个行业放大到50年的长度来看,我认为软件开发行业和电影工业最像。程序员所处的项目开发或产品研发团队,则像一个电影摄制团队。而活成技术专家的程序员,很像那些一辈子都在不断推出叫好又叫座的新作品,一直引领行业方向的职业大导演

电影导演在社会需求(社会思潮与观众心理)和电影技术之间开展工作,是社会需求和电影技术的之间的中介。和程序员一样,这两者都在快速变化。一个电影导演的职业生涯可能长达50年,但人类社会每10年出现一代人,各有自己的审美、问题和评价标准。同样的,每个时期社会的主流思潮可能都不一样。 在技术上,电影的摄制技术、放映方式和渠道、宣传推广渠道和方法短短几十年内也经历了好几代的变迁。电影导演需要适应这些变化,并回应每一个时期的社会,每一代观众的问题和需求。

所以我们看到有才华的电影导演很多,但长期保持创造力的电影导演很少。 那些长期保持创造力的电影导演是如何工作的? 贾樟柯有一段回忆马丁斯科塞斯的话,我觉得很有道理:

“他工作的背景是整个电影历史,不但有当代电影,还有20年代的默片,你会觉得他工作的参照系统是全人类完整的电影经验”。

切换到软件开发的语境, 可以大概这样描绘达到专家水平的程序员:

1.一定是深入了解了该领域有史以来的问题、解决方案以及最终效果,能够基于整个领域的历史去开展工作,工作的参照系统是全人类在该领域完整的技术经验和思考沉淀

2.一定是在组织内或行业中做出了创造性的工作,或者是解决了普遍认为难以解决的问题,或者是提升了普遍认为难以提升的能力,为组织或行业带来更大价值

我认为在IT领域,技术专家一定是活成Rob Pike那个样子。

如何成为马丁斯科塞斯、Rob Pike这样的行业专家,我也在摸索当中。一个好的消息是软件开发不像电影工业, 金字塔尖并没有那么尖。电影的类型和风格往往是有限的,而程序员的细分领域却明显多更多。 事实上,在国内往往是像 Rob Pike、Ken Thompson 这样的人太少了而不是太多了。

作为一个从事基础软件研发的技术人员,我的摸索,是从把某些软件和框架“研究明白”开始。我想,或许通向技术专家的路是朴实的。可以尝试把路上遇到的每个山头都“研究明白”,再把“研究明白”的所有山头相连,或许该领域的山川丘壑就能够尽数纳入心胸。或许有这样一个逻辑:从代码形成的历史中获得知识,通过来自历史的知识形成对未来的判断,最终将知识和判断应用到创造性的工作上,来推动组织和行业的进步

作者:编程老油条
链接:https://www.zhihu.com/question/437260564/answer/1711985931
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种麦南山下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值