前言
本人水平有限,此文针对于自认为技术实力对标阿里P7,百度T5或者以下的读者,如果是大佬不小心点进来了,可以自行点x略过。文内并不会出现每一家公司的面试过程细节,主要目的在于帮助大家怎么在像我一样菜的情况下在这寒冬拿下offer或者说有复习准备方向。
程序员职业发展路径有哪些选择?
我们再说说第二个话题,程序员职业发展路径有哪些选择?
程序员一般的发展方向主要是几类:技术专家、架构师、技术管理、管理、产品。
接下来通过例子和大家分享以下四种不同的发展路径及适合走这四类路径的人群的三个关键词。
第一类,程序员-高级开发-技术专家路线
我们通过例子来说明。有一位 Z 先生,他2012年从湖北工业大学毕业,而后去了搜狗担任工程师,做了两年后,跳到了另一家公司叫小麦公社,是当时一家风头正劲的创业公司,担任 B 端高级开发,后来去到了因果树担任 B 端的技术资深开发,在今年2月份入职了杭州阿里巴巴,同样是负责 B 端商家后台部门,担任技术专家,他职业规划最大的亮点是找到自己想要专注的领域并且一直坚持至今。
第二类,程序员-高级开发-架构师
再看个例子,H 先生,他2011年北航毕业,而后选择创业做 SAAS 平台当时担任前端负责人,两年后选择加入搜狗成为一名高级前端工程师,后来去到了音悦台担任架构师,目前在一家创业公司担任前端架构师,他职业规划的最大亮点是在前端领域各个方向都深入见解,而后负责多条产品线的架构设计。
那以上两种技术路线有什么不同呢,应该如何选择呢?
技术专家,是偏理论研究的,对某个或某些相关的专业领域深入了解,能直接或通过提供思路间接解决这些领域的各种问题。
架构师,是偏工程实践的,与技术专家的区别在于它需要一专多能,提供方案解决问题已经不是它最重要的价值,它的价值体现在选择性价比最高的方案;
举个例子,其实你可以把技术专家和架构师的区别类比成科学院院士和工程院院士,你要搞一个语言识别,那是理论,你要做一个 Siri,那是工程。而你,更擅长和向往做语言识别技术还是 Siri 呢?
有些同学可能会说,我的最终目标仅仅是成为一个优秀的程序员,那我想知道你能做到以下 3 点吗?
- 写的程序不需要格式化,也是非常标准的,我见过很多程序员写的代码,连空格的使用都没有标准,从上到下给人的感觉就是一片混乱的字符的组合,好的程序应该像诗词,在格式的约束下追求飘逸。
- 写的程序没有无用的代码,其他人来评审时找不到无用的代码,也无法在保持同样阅读性的情况下进一步精练。
- 在可读性与效率中保持平衡,通常情况下我们优先考虑可读性,但是对于频繁执行的部分,可以牺牲可读性保证效率,但需要书写足够多的注释,注释不要说代码的用