职场&认知洞察 丨 作者 / findyi

这是findyi公众号的第83篇原创文章

这两天在我的读者群里做了一个职业小调研,发现关注我公众号的70%以上都是程序员。

毕竟程序员吸引程序员,这也算猿粪吧,哈哈。

这个小调研也引发大家对程序员行业的激烈探讨,一个读者丢出了一张图,是大刘老师发的一段话:

不得不佩服大刘老师的洞察力和敏锐,不干这一行居然对我们这么了解!

突然瑟瑟发抖....

前文其实也写过一篇给码农后浪的六点建议,也提到程序员不是老中医,极容易被淘汰替代。

没办法,这的确是残酷的现实。

事实上,我们不用去抱怨也不用去郁闷。

我们更应该思考:如何尽可能的延长我们的程序员生涯。

另外一个事实是:优秀的程序员,从来不担心因为年龄大而被淘汰。

我身边有好几个45+还奋斗在架构一线的老哥,干的生龙活虎。

年龄增长的同时,竞争力和薪资依然同步增长!

今天我想跟大家聊聊优秀程序员必须掌握的那些知识。


 1 程序员必读书单除了工作实践,我们要精进技术,一定要多读技术书籍。为了给大家推荐这份书单,我先后问了10多个技术大牛,要求他们只推一本觉得最牛逼的。这些大佬包括阿里P9、百度T9、58技术总监、前58技术委员会主席等等。结合我自己过去看过的技术书,挑出10本:《代码大全》

虽然这本书有点年头了,且厚到可以垫显示器。

但是这绝对是一本经典的书。

《程序员修练之道》

这本书也是相当经典,我觉得就是程序员的指路明灯。《代码整洁之道》

细节之处的高效,整洁成就卓越代码。《计算机的构造和解释》 经典中的经典,必读。《算法导论》

美国的本科生教材,这本书应该也是中国计算机学生的教材。《设计模式》 这本书是面向对象设计的经典书籍,掌握设计模式是让你的代码做到「高内聚、低耦合」的第一步。

《重构:改善既有代码的设计》

代码坏味道和相应代码的最佳实践。

《人月神话》

软件开发这个行业能不能堆人数?怎么做好项目管理?如何敏捷迭代?

看完这本书,都会有答案,它适合任何软件开发行业的从业人员阅读。

《深入理解计算机系统》

这本书以程序员的视角全面讲解了计算机系统,深入浅出地介绍了处理器、编译器、操作系统和网络环境。

《C程序设计语言》

无论是做不做C/C++,这本书都值得推荐!

C语言是除了汇编之外,最能让你洞察计算机体系知识、计算机系统运行原理的语言。


 2 一些硬核技能程序员行业新技术发展迅猛,可以说是日新月异。也正是这个原因,中年危机成为我们必须面对和攻克的问题。思考一个问题:那些能工作到45、50、甚至60的程序员们,究竟具备了哪些过人的能力?就我过去的经历和观察来说,我认为:他们掌握了一些硬核技能。这些硬核技能帮助他们克服了年龄带来的劣势。1.算法能力很多程序员朋友觉得:如果我不从事算法相关工作。算法可能对我没有价值。虽然大多数程序员可能在工作中用不到算法,但这一点都不妨碍算法的重要性。培养算法能力,就是训练了我们的编码能力、解构能力和超强的逻辑能力。我一直认为编程的本质其实类似解数学题,那么算法就是最难的数学题。码皇MIT教授Erik Demaine的建议更为直接:

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能力

调试能力某种程度上比编码能力更重要。在工作中,编码只占据了我们一部分时间,查找和解决BUG会占用更多时间。查找BUG产生的根源不是一件简单的事情。需要整体的分析和经验的沉淀,同时还需要对各种调试工具熟练应用。团队的架构师除了架构设计,最重要的工作就是去解决那些其他人解决不了的BUG。4.底层系统知识处理复杂任务或解决复杂BUG时,具备深厚的底层系统知识非常重要。比如数据结构、网络协议、操作系统相关知识,等等。程序的很多问题都是源于对计算机工作原理的误解。即使是使用高级语言开发的程序也一样。另外,一些更偏应用层的架构或框架,基础一定是更底层的系统。

了解了底层原理,我们才能看穿眼花缭乱的技术背后的东西,不被层出不穷的新技术所累。

比如Docker技术兴起,改变了CI/CD的方式,推动了云原生技术的发展。

那么Docker到底是什么东西呢,其底层无外乎:CGroups进行资源限制、Namespace对进程视图修改、rootfs为容器进程提供隔离后执行环境的文件系统。

了解了Docker的底层原理,才能在实际工作中更好的驾驭Docker。

以上四点,作为程序员,需要深耕取得突破。

大家可能会注意到,我并没有推荐任何一门语言作为基础能力。

对于真正的程序员大牛,语言只是工具,并不是本质。

这些大牛可以很轻松的熟练使用多种语言来实现业务目标。


 3 领略代码之美你如何看待编码这件事?是把它当作一份简单重复的工作,还是像打造艺术品一样精雕细琢?这个问题的答案恐怕决定了你是否能成为一名优秀的程序员。代码世界充满了美轮美奂的风景,充满了领略美丽之后的喜悦。如果不具备找到代码之美的能力,恐怕并不适合这个行业。下面说说有哪些代码之美:

一.优美的代码

可读性高的代码才有可能是优美的代码。

相信大家都有过这样的经历:接手一个项目要修复bug或者开发新功能,发现代码可读性非常差。

哪怕是在有说明文档的情况下,都不太敢提交代码,唯恐引入新的bug或者直接导致系统崩溃

《重构》里有这么一段话:“任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。“

那么如何写出可读性高的代码呢?

有如下建议:

1.不要写过长函数

可读性差的代码有很多特征,其中最典型的就是存在大量过长的函数。

2.过于复杂的类

3.过于复杂的依赖关系

4.注释要简单明了

二.优美的架构

并不是架构师,才会跟架构打交道。

一旦我们开始编码,架构就是必备技能了。

我尤其建议:在写任何功能之前,先想清楚代码架构。

设计优美的架构要做到如下几点:

1.稳定性原则

架构尽可能的简单,清晰,不过度设计。

2.高内聚低耦合

鉴于这个展开讲完全可以写一篇文章,下次专门写下。

3.隔离

稳定业务和易变业务要分离处理,核心业务和非核心业务要分离处理。

应用和数据要分离,服务和实现细节分离,前台和后台分离。

三.重构之美,不断打磨你的艺术品

无论我们怎么努力,也很难一下子就写出可读性很强的代码。

这就像写文章一样,我们的大部分精力都放在表达思想上面,文从字顺有的时候就不太顾得上。

写代码,第一要务是能运行,能实现软件系统的功能。

《代码整洁之道》的作者写道:“我没指望你能够一次过写出整洁、漂亮的程序。如果说我们从过去几十年里面学到什么东西的话,那就是编程是一种技艺甚于科学的东西。要编写整洁代码,必须先写肮脏的代码,然后再清理它。”

很多人写出了可以运行的、“肮脏”的代码,或者说接手了一个可读性比较差的系统,往往不愿意去重构它们。

他们的理由看上去是十分充分的,那就是容易引入新bug。

事实上,不断重构才能让你的代码始终具备「可维护性」。

同时重构的过程,是一个飞速提升代码能力的过程。

多年前,我曾接受一个几十万行代码的工程。

一个类就有2万行,一个函数几千行.....

我花了半年时间,在保证上线迭代的同时,把这个工程彻底重构。

这个过程的确收益良多。


最后的话成为优秀程序员的路并不好走,你可能要经历孤独、自我怀疑、放弃、痛苦、绝望。但,这世间所有好走的路,都不值得去走。只有那些难走的路,征服它才会收获巨大。跨越泥泞小路,才能抵达理想彼岸。祝我的程序员读者朋友们,都能成为优秀程序员。祝大家都能开心Coding每一天。


其他原创文章可以戳:马斯克推崇的第一性原理,究竟有多重要?韭菜的自我修养-认知篇腾讯碾压小公司全纪实:血腥的3Q大战


欢迎加入免费星球,获取最前沿认知和精英理念

扫码领取资料


【您的在看,我的莫大鼓励】

mopso算法代码程序_程序员如何跨越35岁危机?这篇给点干货建议!相关推荐

  1. 程序员如何跨越35岁危机?这篇给点干货建议!

    职场&认知洞察 丨 作者 / findyi 这是findyi公众号的第83篇原创文章 这两天在我的读者群里做了一个职业小调研,发现关注我公众号的70%以上都是程序员. 毕竟程序员吸引程序员,这 ...

  2. 女程序员也有35岁危机焦虑吗?

    作者 | 郭雪  信通院云大所 责编 | 张红月 出品 | CSDN(ID:CSDNnews) [CSDN 编者按]在程序员界,我们鲜少会去关注女性的职场处境及工作危机,本文从女性是否适合做开发谈起, ...

  3. 女程序员也有 35 岁危机焦虑吗?

    作者 | 郭雪  信通院云大所 出品 | CSDN(ID:CSDNnews) [CSDN 编者按]在程序员界,我们鲜少会去关注女性的职场处境及工作危机,本文从女性是否适合做开发谈起,到35岁女性职场现 ...

  4. 程序员到了35 岁就要被裁员?

    有下面两种说法: 一种是"程序员到了35 岁就要被裁员了". 还有一种是"程序员是4D工种:dirty,difficult, dangerous, dreamless&q ...

  5. 从Hadoop到云原生,谈如何消除程序员35岁危机

    作者:小智 来源:智领云科技 前 言 35岁这个"职场枯荣线",确实真实存在. 不知从何时起,很多企业将入职门槛限定在35岁以下,"35岁"已然成为职场中年的魔 ...

  6. 程序员 35 岁危机很慌?看 CSDN 创始人蒋涛 12 分钟道破真相!

    责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 猛戳小程序进入 B 站观看程序员男神.CSDN 创始人蒋涛述说程序员 35 岁的真相! 程序员 35 岁后是不是就不能编程了?这个问题多 ...

  7. 聊聊程序员35岁危机

    聊聊程序员35岁危机 hello,这里是潇晨,今天来聊一个老生常谈的话题程序员的35岁危机,分为以下几个部分,以及结合自己的经历,提供一些解决方案,非常正能量,不是鸡汤,不制造焦虑,不瞎逼逼,希望大家 ...

  8. 程序员到了35岁就会失业吗?三位程序员UP主这样说……

    Q: 你自己也是 up ,然后会接触很多程序员群体,你觉得你在跟这些程序员沟通下来,他们会有一些关于年龄方面的焦虑嘛? A: 很多人都有,而且很多人都是,还没入行就开始焦虑了,就开始问我" ...

  9. 关于程序员35岁危机:与其迷茫担心被优化,不如深耕技术

    为大家总结了35岁程序员都有哪些选择,具体如下: 一.大厂高P,技术or管理路线 走技术路线的, 至少都是P8往上了,早已成为一个领域的专家,基本都是架构路线或算法路线,能指导着几十号上百号兄弟,在自 ...

  10. [No000011B]为什么有些程序员悄无声息渡过35岁中年危机?

    今天分享是一些已经渡过中年危机的前辈们,看看从他们身上,是如何优雅的过渡的.如果想一直在程序这条路上走下去,建议读完.文章略长. 人物一:陈睿,前百度研发经理,携程定制旅游CTO 从程序员到架构师到管 ...

最新文章

  1. 安利Mastodon:属于未来的社交网络
  2. Rails字符集问题
  3. 如何直接从GitHub安装npm软件包?
  4. 有关弹窗页面的注意问题
  5. 后台CS代码中创建四种常用的SL动画效果
  6. 1.11实例:保存图书信息
  7. MySQL之条件表达式
  8. c语言用switch编写运输运费,求助。。关于用switch编写简易计算器
  9. Visual Studio 2017 ASP.NET Core开发
  10. lstm 输入数据维度_理解Pytorch中LSTM的输入输出参数含义
  11. webRTC之gtest安装使用(十五)
  12. NOIp 2014 #3 寻找道路 Label:图论
  13. spring整合SpringMVC Controller 和 Struts2 Action控制层Bean的默认作用域
  14. 贪吃蛇 c语言 不死模式,c语言贪吃蛇游戏完整代码,c语言贪吃蛇教程
  15. kux播放器android,kux格式转换工具
  16. 注塑机结构及辅助设备详解
  17. Linux学习笔记11
  18. 手机射频中的常见术语
  19. 正则表达式清除空格和html标签中的nbsp;空格
  20. 获取当天时间相关时间(凌晨、第二天凌晨)

热门文章

  1. 谷歌招聘新职员的五大标准
  2. 【路由和交换之H3C自导自演】
  3. Dom4j完整教程,操作XML教程
  4. web项目docker化的两种方法
  5. 通过共享文件夹来进行前后端独立开发
  6. 重定向telnet方法
  7. grub2使用详解(官方手册)
  8. 数据包的分类和调度-Linux TC的另一种解释
  9. 一个apk调用另一个apk的某个activity
  10. Linux 和 Android 系统性能分析