每周读书#2-《程序员的成长课》
这是⼀个焦虑的时代,前有《⼈到中年,职场半坡》刷屏,后有中兴员⼯跳楼刷爆朋友圈。登录知乎、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)
质量管理⼈员
软件实施⼈员
在转⾏之前,最好先确认⼀下哪个职业更适合⾃⼰,如果只凭头脑⼀时发热⽽做出选择,⼤概率的会悔恨终⽣。⽐如你⼼⾎来潮去转⾏做旅⾏师,却发现⾃⼰根本忍受不了车⾈劳顿,那么别⼈笔下的旅⾏对你来说就是噩梦。
当你不想再做开发,或者被家⼈劝退,或者被辞退、不得不寻转型⽅向、却⼜没有明确的⽅向时,可以使⽤本节提供的职业定位⽅法——⼈事物模型,从喜欢的⼈、事、物中到适合你的职业。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。