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

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

image

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

什么引发了焦虑

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

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

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

程序员的成长课

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

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

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

image

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

  • 技术
  • 管理
  • 转行

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

技术

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

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

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

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

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

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

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

image

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

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

image

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

本书的回答是,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. 业余时间做做看,或者找兼职、实习机会做做看

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

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

image

跳槽

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

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

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

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

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

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

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

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

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

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

image

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
  C++是在C语言的基础上发展而来的,但C++又可视为是一门全新的语言,C++独有的面向对象特性使其极具生命力,获得了众多软件厂商和开发人员的青睐。 《程序员成长堂:C++标准教程(附光盘)》内容共分4篇11章。其中,第1篇是C++概述篇,主要内容包括:C++的起源和特点、C++源程序的构成、C与C++的比较、C++代码规范、排版风格、命名规范以及代码设计风格等;第2篇是C++基本语言篇,主要内容包括:C++基本数据类型、表达式、运算符、操作符、C++语句以及C++标准模板库等;第3篇是C++面向对象编程篇,主要内容包括:类和对象、继承、多态、运算符重载等;第4篇是C++编程实践篇,通过教学管理系统的开发实例,讲解如何使用C++进行实际开发。 全书配合了大量实例及代码说明,随书光盘中含有视频讲解,非常适合入门读者阅读,以迅速掌握C++开发技术。对于已有相关编程经验的读者,《程序员成长堂:C++标准教程(附光盘)》也可作为学习和开发的参考用书。 第一篇 C++概述 第1章 由C迁移到C++ 2 第2章 C++代码规范 11 第二篇 C++基本语言 第3章 C++数据类型 40 第4章 表达式 96 第5章 C++语句 106 第6章 标准模板库STL 130 第三篇 C++面向对象编程 第7章 类 148 第8章 类的初始化、赋值和析构 169 第9章 模板 190 第10章 面向对象程序设计 213 第四篇 C++编程实践 第11章 教学管理系统的C++实现 260 附录A Visual C++菜单中文注释 299 附录B Visual C++操作技巧小代码 302

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云水木石

但行好事,莫问前程

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

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

打赏作者

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

抵扣说明:

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

余额充值