这个题目来自于 D2 的一个辩论题,当时在看直播时我自己并没有得出结论,今天在洗澡时偶然想到一个角度来回答这个问题。
什么是「做业务」和「做技术」,这个定义在业界也比较明确,做业务是指工作结果直接面向最终用户,比如开发淘宝的程序员、开发微信的程序员们。做技术是指工作内容是为其他程序员服务的程序员,比如开发数据库、开发框架、开发工具的程序员们。
这两者之间我会这么选?我的结论是 「做技术更有前途」。理由是 做技术的程序员通常所处的成长环境更有优势。
首先并不是所有的公司都有专门做技术的程序员的,但所有公司都有业务要做,大部分公司只能供养起一支开发业务的工程师团队,如果还要供养一些不从事具体业务生产环节的技术型程序员,那么对公司来说是有更高的门槛的,因为这些门槛的存在,会让拥有技术型工程师的企业有更大的概率是一个各方面条件都比较好的企业。
具体来说,一个公司要配置技术型工程师,至少需要满足以下两个条件:
- 公司的业务体量比较大,比如阿里巴巴、腾讯、字节等这些公司,他们的业务每天要面对上亿的 DAU,对于稳定性、安全性、可靠性、可维护性等等,都有很大的要求。
- 老板比较重视技术、认可技术的价值。有些公司即使已经做的比较成功了,但老板会把成功的原因归结为商业本身的成功,这也分两种情况,一种公司确实是重业务型的,技术能力可有可无,还有一种是老板还没有意识到技术的价值,那么工程师的工作会越来越难进行,直到删库跑路。一个认同技术价值的公司,一定是技术占较高的比重的。
如果能在满足以上两个条件的公司工作,那么无论做业务还是做技术都不会太差,但我为什么依然认为做技术更有前途?
- 技术上的成功更容易得到同行的认可。如果有两种向同行自己的方式,你会选择那种?1)我是 facebook 的工程师。2)我是 React 的维护者。我相信大部分人会选择第二种,原因是工程师的水平对于业务是否成功来说并非决定性的,而技术产物的成功与否则直接取决于程序员的水平,开发一个成功的技术产物会让你在业界拥有很高的知名度,但我们却很少认识成功业务背后的开发者是谁。
- 技术型工程师所在的团队更有工程师文化。相比业务型团队而言,在技术型团队中工作,工程师拥有更大的话语权,所有更有机会去建设一些工程师喜欢的工作方式,然后通常在团队的工作质量、知识沉淀、技术探索等方面会更重视,更有助于个人的成长。
- 技术型工程师的产出价值会被成倍放大。对于业务开发而言,投入和产出基本是 1:1 的,开发淘宝网的代码只能服务于淘宝网,可能最多在天猫商城里面能复用一些。而技术型产出的是可以被用到任何业务开发中的,比如淘宝和微博可能使用了相同的数据库,技术型工作的投入产出比是 1:N 的。
综上,成为一个技术型工程师,有更大的概率能在职业生涯中不断提高自己的能力,也有更大的概率能够获得更多的职业发展机会。
文本转载自我的博客: https://zehao.me/程序员,做业务还是做技术更有前途?