这是一个焦虑的时代,前有《人到中年,职场半坡》刷屏,后有中兴员工跳楼刷爆朋友圈。登录知乎、CSDN,关于程序员的出路问题的讨论,总能得到众多的关注。

整个社会弥漫着一股焦虑的味道,其实不只中年人,年轻人一样焦虑,只不过换了个名词:迷茫,有道是“谁的青春不迷茫”。如果再聚焦到IT这个领域,程序员这个群体更容易焦虑。

什么引发了焦虑

IT是一个新兴但高速发展的行业。先是互联网浪潮,紧接着又是移动互联网呼啸而来,现在是AI冒出颠覆一切的势头。在我们可以看到的将来,IT业依然会走在快车道上。

  • 新兴意味着没有那么多的职场楷模给新人指明方向,也没有一套公认的稳定可复制的发展路线。程序员朋友往身后左右一看,都是年轻人,就会感觉到恐慌,认为这个职业没有未来,要不为什么身边没有年长的程序员。大龄程序员都去哪儿了?答案是:第一代程序员正在变老的路上。直到上世纪九十年代末,中国才批量输出IT相关专业毕业生。这批人现在正好处在40岁左右的年龄。十年前,我们讨论程序员30岁以后怎么办。今天这个年龄有所放宽,变成35或40岁。会不会十年后,讨论的话题变成50岁的程序员?

  • 高速发展意味着变革与竞争,大量新人因为行业红利涌入,你无时不刻要跟一群优秀的热血青年同场竞技。虽然身处IT行业,我们会抱怨加班多、技术变化快等等,但我们往身后看看,一堆小鲜肉正排队进场呢。

程序员的成长课

尽管我们会吐槽IT行业的一切,但一个不可否认的事实就是,IT行业依然是投入产出比最高的行业之一,要不然也不会有那么多的人争相涌入。不仅是计算机专业相关的毕业生,还有很多其他专业的学生也跨界进入IT行业。比如我身边的程序员的专业那才叫五花八门、琳琅满目,像数学、化学、电力之类的专业,还都算理工科,可以理解。而教育学、林业、畜牧业是什么鬼,一样的来和我们抢饭碗。

一方面IT业快速发展,另一方面进入的门槛也非常低。通常情况下,只需要懂一门编程语言就可以开工干活。同时编程还是一门实践性非常强的工作,开始不会没关系,做着做着就会了,只要有人肯给你机会。

进入门槛低意味着人的可替代性高,所以抵抗焦虑的唯一方法是让自身不断成长,降低可替代性。程序员在成长的路上该如何选择、遇到瓶颈该怎么办、程序员的成长路线是怎样的?这个时候可以读一读这一本《程序员的成长课》。不同于市面上其它职业规划的书籍,这本书是专门面向程序员这个群体,更有针对性。

程序员的成长路线无外乎三种:

  • 技术
  • 管理
  • 转行

这三个方向并非平行无交叉,有可能你在技术的道路上一路向前,某一天,你突然就拐到了管理,甚至是转行,本书主要围绕着这三个方向进行探讨。另外本书还结合程序员最重要的需求,增加了一部分跳槽的专题,具有极高的实用价值。

技术

武侠小说经常有这样的情节,男主机缘巧合获得一门武林秘籍,然后呆在深山勤学苦练,学成下山,纵横江湖,快意恩仇。程序员的技术精进之路也是这样吗?

No No,上述的情设有一个很大的BUG,男主开外挂可以不吃不喝,程序员可以吗?

另外计算机技术博大精深,并不是学一门绝学就可以无敌于天下的。虽然在外界眼里,程序员=修电脑的。但走进门来,里面琳琅满目,让人眼花缭乱。同为程序员,你要是和Android框架工程师聊VUE、React,他可能会一脸懵,同样的,你要是和前端程序员讨论泛型、持久化,他也可能一脸茫然。

同时,计算机技术也在快速发展,比如我学的第一门编程语言FORTRAN,PC时代的当红辣子鸡PB、Delphi,现在的程序员估计闻所未闻。

努力只有在方向正确时才有价值。IT从业者该如何选择技术方向,本书给出了如下考虑因素:

  1. 就业机会
  2. 自我感觉的难易程度
  3. 兴趣
  4. 薪水高低
  5. 技术在将来的发展前景
  6. 你接触的人的推荐
  7. 相近性
  8. 互补性
  9. 团队的技术图谱

选择技术方向只是外功,大抵相当于武侠小说里的招式,要让招式发挥最大功效,还要勤练内功,这就是书中讲到的技术成长三阶段模型

到了融合创新阶段,你遇到问题,不再从下而上去思考(即从技术实现细节来考虑问题好不好实现、拿技术去裁剪问题或重定义问题),而是从实现细节跳脱出来,站到更高的层面,自顶向下去思考、去分析,先运用框架、逻辑去分析真正的问题是什么、问题的目的、问题的现状、如何去解决。搞明白这些之后,你才会沉降到技术层面去考虑实现的选择,而且实现时,你也不会拘泥于某种技术,而是什么技术合适就用什么技术(你的目的不是“用 Java 或 Redis 解决问题”,而是“解决问题”)。简单说,就是你走出了被技术束缚和塑造的过程(前两个阶段),可以反过来回到问题本源来思考了。

做了一段时间的技术,也取得了一些小成绩,这时迷惘了,怎么办?别急,看看技术精进之路该怎么走:

在这一部分,还探讨了一个大家关心的话题:软件开发到底是不是吃青春饭的

本书的回答是,No。决定程序员是否具有优势的,是应用流程方面的能力,即逻辑能力、思维能力、想象力、架构设计、解决问题的框架、快速学习、自我管理、创新与创造等。

这些能力,都需要时间的沉淀和项目的历练,这也是我们的技术能力三阶段模型最后一个阶段应该拥有的能力。你只有经历了初级阶段、中级阶段,走过了5~8年甚至更久的时间,才能在实践和反思中培养出这些能力。而到这时,你往往已经是大龄程序员了。

管理

很多人对管理存在很大的误解,常见的误解是:

  • 性格内向、不会说话,无法做管理
  • 做管理很轻松,动动嘴皮就行了
  • 做管理没什么技术含量,靠压榨其他人的劳动取得成绩

真是这样吗?回答这个问题之前,我们首先需要理解管理这个角色。

管理者通过他人完成工作,这是管理者的定义。

管理者有两大任务:

  • 完成工作目标
  • 培养下属

理解了这个角色之后,上面的误解就可以逐一消除。

  • 内向者也可以成为很好的管理者。肯尼迪、奥巴马、丘吉尔,都是内向者,但他们都是很棒的领导者和管理者。据统计,约40%的领导者实际上属于内向型性格。在软件领域,更是有大批内向的管理者,比例甚至超过40%。管理者不是天生的,是可以培养的,管理和沟通,都是技能,技能都是可以习得的。只要你掌握一定的方法,通过练习,一定能胜任管理岗位的工作。
  • 一个管理者,要想把工作做好,并没有那么轻松,甚至非常困难。从表现上看,优秀管理者应当做到这几点:

    • 下属可以各尽所能,都能得到成长,个人目标可以在实现团队目标的过程中得以实现。
    • 下属信任你,愿意跟着你干。
    • 实现团队目标。
    • 上司信赖你,愿意把团队交给你管,愿意把复杂的事情交给你的团队去做。

    这4点中没有一点是轻轻松松就可以做到的。你看到某个管理者轻松,他要么没做到这几点,要么是把自己的努力、用心、辛苦包裹了起来,故意表现出举重若轻的样子。

  • 技术管理,着眼点还是在“管理”二字,因此除技术方面的积累和见识外,更重要的,还是要习得管理者所需的各项能力:

    • 共情(同理心)
    • 委派任务
    • 沟通
    • 反馈
    • 激励
    • 目标统合
    • 向上管理
    • 时间管理
    • 绩效评估
    • 知人善用
    • 规划
    • 计划
    • 组织
    • 协调
    • 管理
    • 选择
    • 责任
    • 辅导
    • 讲授
    • 演讲
    • 复盘
    • 承压
    • 勇于挑战

    看到这里,你还会觉得管理者都是吃白饭的么?

当你追寻自己的内心,决心要向技术管理转型时,怎样才能从开发岗位走到管理岗位?书中罗列了四种路径:

  • 技而优则管。
  • 从打杂到管理。
  • 从大公司跳入小公司。
  • 获取PMP证书,切换到有需要的环境。

经过了一段时间的努力,你终于转向了管理,恭喜恭喜!然而,别高兴太早,前面还有很多坑需要趟过去。刚转型的技术管理新人将面临严峻的挑战:

  1. 角色转变
  2. 被动管理
  3. 弄不清职责
  4. 委派任务
  5. 目标管理
  6. 资源管理
  7. 压力管理
  8. 冲突管理
  9. 绩效变差
  10. 担心失去技术竞争力
  11. 有效的反馈机制
  12. 别人的议论
  13. 和下属进行一对一沟通
  14. 怕犯错
  15. 时间管理(领导者时间被拆分为5份)
  16. 激励他人
  17. 向上管理
  18. 提升领导力和管理能力

看到这里的同学,可能会有畏难情绪,觉得还是做技术简单一些。别慌,本书针对以上挑战逐一给出了应对策略,照着做,你也可以一一化解这些难题,成为优秀的技术管理者。

转行

“伤不起的程序猿!重庆IT男改行卖水果后焕发青春”

“温州90后辞职做“旅游大V”:免费周游列国,年收入百万”

看到这样的新闻报道,你的内心是不是也会起一点波澜?是什么限制了你的行动?

程序员转行通常会遇到5个难点:

  1. 路径依赖导致的隐藏假设。简单说,这是人的天性,长时间做某件事情,就会对它产生依赖、认同。一旦我们习惯了某件事,就会被它植入相应的隐藏假设——你必须做这个,进而在我们必须做出选择时影响我们的选择。

  2. 薪水落差。干过几年开发工作的朋友,想转行,薪水都会经历一个断崖式下坠,这是多数人不能承受的,也是人的天性(损失厌恶)——得到了就不想再失去。

  3. 缺乏技能。程序员的技能树围绕着软件开发构建,需求分析、设计、编码、调试、配置环境……一旦你想要转战他方,就会发现,好像自己这么多年就只会开发软件了,别的什么都不会,技能严重缺乏,然后你可能就会缩回去,算了,还是先做开发吧。

  4. 他人的期待。我们给身边的每一个人、给我们可能看到的每一个人都编制了一个“人设”,认为他们就该按照我们设定的角色去发展,如果他超出了我们预想的“人设”,我们就会诧异、不解、愤怒,进而否定、打压。父母、伴侣、朋友对我们的期望,尤其会给我们带来巨大的压力,父母会不希望你放弃稳定又高薪的工作,伴侣会担忧你的选择不能保障优裕的家庭生活……

  5. 对不确定性的抗拒。开发者的工作,有相当一部分时间在与计算机等设备打交道,按一定的规则输入,得到预期中的输出,这样的方式,有很强的一致性、确定性、稳定性。但转型充满了不确定性,你可能会选错方向,也可能最初的方向正确但做上一段时间发现不喜欢,还可能做了几年也没什么起色,所以开发者在不能确定转型100%会成功时,往往很难迈出第一步。

看到这里,也不要灰心,跨行业转型比较困难,我们可以选择在行业或职能上有一个维度相关,就会相对容易一些。比如你只是不想做开发了,还想做和软件相关的事情,就可以考虑如下方向:

  • 项目经理

  • 产品经理

  • 需求分析人员

  • 文档开发人员

  • 测试人员

  • 软件售前人员

  • 软件售后人员

  • 讲师

  • 技术作家

  • 运维人员

  • DBA

  • 配置管理人员

  • 文档开发人员

  • 面向开发者的猎头

  • 版本工程师(Software Build Engineer)

  • 质量管理人员

  • 软件实施人员

在转行之前,最好先确认一下哪个职业更适合自己,如果只凭头脑一时发热而做出选择,大概率的会悔恨终生。比如你心血来潮去转行做旅行师,却发现自己根本忍受不了车舟劳顿,那么别人笔下的旅行对你来说就是噩梦。

当你不想再做开发,或者被家人劝退,或者被辞退、不得不寻找转型方向、却又没有明确的方向时,可以使用本节提供的职业定位方法——人事物模型,从喜欢的人、事、物中找到适合你的职业。

  1. 罗列你感兴趣的或印象深刻的人、事、物

  2. 分析它们可以关联到的职业,形成清单

  3. 对清单中的职业做信息搜集分析,筛选出你感兴趣的职业

  4. 选择某个职业,学习相关知识、技能

  5. 业余时间做做看,或者找兼职、实习机会做做看

当你有经济压力或者担心转型失败后很难再找到类似当下的工作时,可以考虑双职业策略。

所谓双职业策略是指:保持当前工作,业余时间丰富目标职业所需知识、技能,尝试用新技能变现,当新技能带来的收益超过生存线或者新技能可以帮助你找到新的工作时,再切换到目标职业。

跳槽

跳槽也是程序员成长之路的必修课,这不能简单归结为现代人忠诚度不高,造成跳槽的原因有很多:

  • 领导差劲,微管理、不尊重人、厚此薄彼
  • 技术氛围太差
  • 团队里没有牛人
  • 产品没前途
  • 技术太 Low
  • 薪水太低
  • 薪水倒挂
  • 福利太差
  • 不被尊重
  • 没有发展空间

非常遗憾的是,我在一个不再跳槽的年龄读到了这份指南,不禁浮想联翩,要是在二十年前读到这本书,现在。。。

本书花了三个章节分析了跳槽这一问题,分别是《跳槽8问》、《简历优化指南》和《如何在跳槽时获得想要的薪水
》,不论是马上就要跳槽,还是暂无跳槽打算的程序员,都值得花时间仔细阅读。

其实跳槽也是和职业规划相关联的,总结起来,要想越跳越好,有两个要点:

  • 明确职业目标或者个人未来愿景,指导跳槽。
  • 如果目标不确定,就要周期性(每次跳槽时)地回顾,慢慢发现自己的目标。

总结

人生的道路上总是充满着选择,这给每个人都带来了机遇,同时也带来了选择困难症。我特别认同本书中谈到的成就感来源:

每个人的成就感来源都不一样,假如你像我一样,成就感在于自己动手解决具体的技术问题,那么开发工作就更适合你;假如“领导和管理别人、通过别人完成工作、看到别人成长”让你更有成就感,那么管理工作适合你。

人最重要的是找到自己的成就感来源,追寻自己的内心,无问西东。

要说本文的缺点,就是不像其它的励志类书籍,看的让人热血沸腾,而是充满理性,一条一条的从各个维度进行分析,同时辅以各种实操方法。读了之后,让人再也没有偷懒的理由了!

每周读书#2 - 《程序员的成长课》相关推荐

  1. 《程序员的成长课》读书笔记心得体会2700字

    <程序员的成长课>读书笔记心得体会2700字: 这是一个焦虑的时代,前有<人到中年,职场半坡>刷屏,后有互联网寒冬刷爆朋友圈.登录各大社交平台,关于程序员的未来的出路问题讨论, ...

  2. 我打算写一个《程序员的成长课》

    已经2019年了,新年新气象.在新的一年里,我想做件有意义的事儿.具体是什么事呢?这里先留个悬念. 我是一个爱思考的人,我也工作好几年了,这段时间内心突然有个想法:程序员的个人成长有规律可循吗? 没有 ...

  3. 想看程序员的成长课这本书

    <程序员的成长课>安晓辉.周鹏 著 安晓辉是谁? 他的简书ID是foruok 有空去看看吧. -- end --

  4. 开篇词 | 程序员的成长课

    大家好,我是安晓辉,做过开发工程师.研发经理.技术总监等岗位,现在自由职业,专注写作和开发者生涯咨询.出版过<程序员的成长课>.<Qt Quick 核心编程>.<你好哇, ...

  5. 《程序员的成长课》:少走5年弯路

    作为一名普通的程序员: 你想买一套房子,不想再租住在远离公司的偏僻地带每天通勤 4 个小时上下班 你想买一部车子,可以周末开着去山里转转,看看红叶听听鸟鸣 你想买衣服时去窗明几净微笑服务的商场而不是 ...

  6. 《程序员的成长课》读后感

    这是一个焦虑的时代,前有<人到中年,职场半坡>刷屏,后有互联网寒冬刷爆朋友圈.登录各大社交平台,关于程序员的未来的出路问题讨论,总能得到众多的关注.整个社会弥漫着一股焦虑的味道,其实不只中 ...

  7. 聊聊程序员的成长与价值提升

    一. 回顾我的职场体会 我的职场生涯开始于十年前,一直在中小企业发展,未曾有幸到沿海那些高速发展的互联网公司工作,也就错过了互联网的大时代. 但这不影响我的正常工作生活,事实上无论你身在何处,或在哪家 ...

  8. 聊聊程序员的成长与如何实现价值提升

    一. 回顾我的职场体会 我的职场生涯开始于十年前,一直在中小企业发展,未曾有幸到沿海那些高速发展的互联网公司工作,也就错过了互联网的大时代. 但这不影响我的正常工作生活,事实上无论你身在何处,或在哪家 ...

  9. 专访《程序员的三门课》李伟山:从程序员到技术总监的修炼秘籍!

    嘉宾介绍:李伟山 现任某人工智能公司技术总监,江湖人称"山哥",在分布式系统架构设计.高并发系统设计.系统稳定性保障等方面积累了丰富的实践经验,擅于利用数据分析解决实际问题,对新技 ...

最新文章

  1. 使用nexus3配置golang私有仓库(go私服)
  2. Git之深入解析48个经典操作场景的分析和处理,专治不会合并代码
  3. linux命令行快捷键
  4. linux中如何统计目录中的文件,[Linux目录文件]在Linux中统计目录内文件
  5. linux脚本 sed,Linux脚本利器sed
  6. Unity3D UGUI不规则图片点击事件处理
  7. zoj2901【DP·二进制优化】
  8. Python开胃菜(1):搭建开发环境
  9. Matlab图像的二维傅里叶变换频谱图特点研究
  10. 抖音 快手 皮皮虾 短视频一次解析
  11. GRE隧道配置实验(静态路由)
  12. 【虚幻引擎UE】UE5 简单实现范围计算并绘制圆圈
  13. Computer:计算机测试理论(开发/测试/上线)之DEV、SIT、UAT、PRD四套环境(测试环境/开发环境/生产环境)详细介绍之详细攻略
  14. 第1章 KRKR游戏系统汉化说明
  15. MPC、LMPC、LEMPC、NMPC、 NEMPC
  16. 高云FPGA芯片GW2A固化方法
  17. 揭秘得物客服IM全链路通信过程
  18. 用Python抽取一注从未开出过的双色球号码
  19. android 阅读器
  20. 电脑硬件故障维修教程

热门文章

  1. VBA按列名称或是按表格标题给EXCEL表格做排序
  2. 功能测试的测试点全集
  3. 2015私人阅读十五佳
  4. APP接入友盟统计,不上报数据问题
  5. baidumaptrace.php,GitHub - SignalLine/BaiduMapTrace: 百度地图运动轨迹纠偏、去噪、绑路之百度鹰眼sdk服务...
  6. python使用opencv换照片底色
  7. 三菱FX3U/FX1N底层源码,PLSR源码, 总体功能和指令可能支持在RUN中下载程序,支持注释的写入和读取,支持脉冲输出与定位指令(包括PLSY /PWM/PLSR/PLSV/DRVI /DRV
  8. 自然语言处理NLP面试问题
  9. 基于无人机倾斜摄影模型提取高精度地形DEM数据
  10. 跨境电商的痛点有哪些?