程序员如何跨越35岁危机?这篇给点干货建议!
职场&认知洞察 丨 作者 / findyi
这是findyi公众号的第83篇原创文章
这两天在我的读者群里做了一个职业小调研,发现关注我公众号的70%以上都是程序员。
毕竟程序员吸引程序员,这也算猿粪吧,哈哈。
这个小调研也引发大家对程序员行业的激烈探讨,一个读者丢出了一张图,是大刘老师发的一段话:
不得不佩服大刘老师的洞察力和敏锐,不干这一行居然对我们这么了解!
突然瑟瑟发抖....
前文其实也写过一篇给码农后浪的六点建议,也提到程序员不是老中医,极容易被淘汰替代。
没办法,这的确是残酷的现实。
事实上,我们不用去抱怨也不用去郁闷。
我们更应该思考:如何尽可能的延长我们的程序员生涯。
另外一个事实是:优秀的程序员,从来不担心因为年龄大而被淘汰。
我身边有好几个45+还奋斗在架构一线的老哥,干的生龙活虎。
年龄增长的同时,竞争力和薪资依然同步增长!
今天我想跟大家聊聊优秀程序员必须掌握的那些知识。
虽然这本书有点年头了,且厚到可以垫显示器。
但是这绝对是一本经典的书。
《重构:改善既有代码的设计》
代码坏味道和相应代码的最佳实践。
软件开发这个行业能不能堆人数?怎么做好项目管理?如何敏捷迭代?
看完这本书,都会有答案,它适合任何软件开发行业的从业人员阅读。
《C程序设计语言》
无论是做不做C/C++,这本书都值得推荐!
C语言是除了汇编之外,最能让你洞察计算机体系知识、计算机系统运行原理的语言。
If you want to become a good programmer, you can spend 10 years programming, or spend 2 years programming and learning algorithms.
如果你想成为一个码农或是熟练工(Code Monkey),你大可以不学算法,因为算法对你确实没有用。
但如果你想成为一个优秀的开发者(Developer),扎实的算法必不可少,因为你会不断的掉进一些只能借助算法才能爬出去的坑里。
2.裸编程能力
什么是裸编程能力?
处理程序实际实现部分的子任务,实现函数或者算法之类的能力。
听起来很简单对吧?实际上很多程序员缺失这样的能力。
不知道大家有没有见过「复制粘贴工程师」,Review他们的代码甚至会发现一些网上的注释,又或者其他人的编写错误。
并不是所有程序员都具备利用必备的基本编程结构有效的实现某个产品或者某个模块。
不少工作多年的程序员甚至连一个简单算法排序都没有考虑,当然这并不影响普通工作的输出。
充当代码世界的搬运工,如同搬砖工人一般,完全可以在职业生涯初期求得苟存。
但在面临调优或者攻坚,这类型的程序员的表现甚至比刚毕业的优秀程序员还要糟糕。
当他们步入中年,当他们承担越来越复杂的任务之际,无力感会与日俱增。
3.Debug能力
了解了底层原理,我们才能看穿眼花缭乱的技术背后的东西,不被层出不穷的新技术所累。
比如Docker技术兴起,改变了CI/CD的方式,推动了云原生技术的发展。
那么Docker到底是什么东西呢,其底层无外乎:CGroups进行资源限制、Namespace对进程视图修改、rootfs为容器进程提供隔离后执行环境的文件系统。
了解了Docker的底层原理,才能在实际工作中更好的驾驭Docker。
以上四点,作为程序员,需要深耕取得突破。
大家可能会注意到,我并没有推荐任何一门语言作为基础能力。
对于真正的程序员大牛,语言只是工具,并不是本质。
这些大牛可以很轻松的熟练使用多种语言来实现业务目标。
一.优美的代码
可读性高的代码才有可能是优美的代码。
相信大家都有过这样的经历:接手一个项目要修复bug或者开发新功能,发现代码可读性非常差。
哪怕是在有说明文档的情况下,都不太敢提交代码,唯恐引入新的bug或者直接导致系统崩溃
《重构》里有这么一段话:“任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。“
那么如何写出可读性高的代码呢?
有如下建议:
1.不要写过长函数
可读性差的代码有很多特征,其中最典型的就是存在大量过长的函数。
2.过于复杂的类
3.过于复杂的依赖关系
4.注释要简单明了
二.优美的架构
并不是架构师,才会跟架构打交道。
一旦我们开始编码,架构就是必备技能了。
我尤其建议:在写任何功能之前,先想清楚代码架构。
设计优美的架构要做到如下几点:
1.稳定性原则
架构尽可能的简单,清晰,不过度设计。
2.高内聚低耦合
鉴于这个展开讲完全可以写一篇文章,下次专门写下。
3.隔离
稳定业务和易变业务要分离处理,核心业务和非核心业务要分离处理。
应用和数据要分离,服务和实现细节分离,前台和后台分离。
三.重构之美,不断打磨你的艺术品
无论我们怎么努力,也很难一下子就写出可读性很强的代码。
这就像写文章一样,我们的大部分精力都放在表达思想上面,文从字顺有的时候就不太顾得上。
写代码,第一要务是能运行,能实现软件系统的功能。
《代码整洁之道》的作者写道:“我没指望你能够一次过写出整洁、漂亮的程序。如果说我们从过去几十年里面学到什么东西的话,那就是编程是一种技艺甚于科学的东西。要编写整洁代码,必须先写肮脏的代码,然后再清理它。”
很多人写出了可以运行的、“肮脏”的代码,或者说接手了一个可读性比较差的系统,往往不愿意去重构它们。
他们的理由看上去是十分充分的,那就是容易引入新bug。
事实上,不断重构才能让你的代码始终具备「可维护性」。
同时重构的过程,是一个飞速提升代码能力的过程。
多年前,我曾接受一个几十万行代码的工程。
一个类就有2万行,一个函数几千行.....
我花了半年时间,在保证上线迭代的同时,把这个工程彻底重构。
这个过程的确收益良多。
【您的在看,我的莫大鼓励】