【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

看完左耳朵耗子的专栏,我给自己定了个 5 年技术规划

  • 2021-08-09
  • 本文字数:5065 字

    阅读完需:约 17 分钟

看完左耳朵耗子的专栏,我给自己定了个5年技术规划

大概 4 年前,知名技术专家左耳朵耗子在极客时间上开设了一个全年付费专栏。到现在,这个专栏已经有 5.7 万人订阅,结束语里有用户这么评价这个专栏:


我以前做了太多重复性工作,自己没有一点提升,一直感到迷茫,没有方向,荒废了很多年时间。看了你的文章,我有了改变,最近几个月我都在坚持看书,也有了比较清晰的目标,有时我想要是早五年看到这个专栏有多好。没有后悔药,这是我必须付出的代价,现在已经 30+了,我希望现在努力还不晚。


因为周六要和左耳朵耗子在视频号连麦,所以周末的时候,我又重新温习了他的专栏,并做了一些笔记。希望这些内容能够帮助到你。


1、程序员用自己的技术变现,其实是一件天经地义的事儿。写程序是一门“手艺活”,作为手艺人,程序员当然可以做到靠自己的手艺和技能养活自己。然而,现在很多手艺人程序员却说自己是“码农”,编码的农民工,在工作上被各种使唤,各种加班,累得像个牲口。在职业发展上各种迷茫和彷徨,完全看不到未来的希望,更别说可以成为一个手艺人用自己的技能变现了。


2、成为一个手艺人,动手能力是很重要的,因为在解决任何一个具体问题的时候,有没有动手能力就成为了关键。这也是我一直在写代码的原因,代码里全是细节,细节是魔鬼,只有了解了细节,你才能提出更好或是更靠谱、可以落地的解决方案,而不是一些笼统和模糊的东西。这太重要了。


3、会挣钱的人一定是会投资的人。我一直认为,最宝贵的财富并不是钱,而是你的时间,时间比钱更宝贵,因为钱你不用还在那里,而时间你不用就浪费掉了。你把你的时间投资在哪些地方,就意味着你未来会走什么样的路。所以,利用好你的时间,投到一些有意义的地方吧。


4、在学习新技术的过程一定要多问自己两个问题。第一,这个技术解决什么问题?为什么别的同类技术做不到?第二,为什么是这样解决的?有没有更好的方式?千万别一上来就陷入细节


5、只有那些在高速发展的公司,技术人员的价值才能被最大化地体现出来。比较好的成长路径是,先进入大公司学习大公司的技术和成功的经验方法,然后再找到高速成长的公司,这样你就可以实现自己更多的价值。当然,这里并不排除在大公司中找到高速发展的业务。


6、解决一个问题通常有很多种方法。带着开放的心态,不拘泥于一个平台、一种语言,往往能带来更多思考,也能得到更好的结果。而且,能在不同的方法和方案间做比较,比较它们的优缺点,那么你会知道在什么样的场景下用什么样的方案,你就会比一般人能够有更全面和更完整的思路。


7、什么是技术领导力?一句话总结就是遇到问题时,你能够提供有建设性的意见。


8、对于我们每个人来说,作品集会比简历更有参考意义。所以,在自己的简历中应该放上自己的一些项目经历,或是一些开源软件的贡献。


9、如果一个公司或者一个人能够抓住技术红利,那就会比其它公司或个人有更大的影响力。一旦未来行业需求引爆,那么这个公司或这个人的影响力就会形成一个比较大的护城河,并可以快速地从中获取经济利益。


10、Go 语言不会吞食底层到 C 和 C++ 那个级别的,也不会吞食到上层如 Java 业务层的项目。Go 语言能吞食的一定是 PaaS 上的项目,比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等,他们没有复杂的业务场景,也到不了特别底层(如操作系统)的软件项目或工具。而 C 和 C++ 会被打到更底层,Java 会被打到更上层的业务层。这是我的一个判断。


11、找到自己的长处,不断地在自己的长处上发展自我。知道自己几斤几两才能清楚自己适合干什么。不然,目标设置得过高自己达不到,反而让自己难受。在职场上,审视自己的最佳方式,就是隔三差五就出去面试一把,看看自己在市场上能够到什么样的级别。如果你超过了身边的大多数人,你不妨选择得激进一些冒险一些,否则,还是按部就班地来吧。


12、30-40 岁,这是人生发展的阶段。因为整个社会一定会把社会的重担交给这群人,30-40 岁的人年富力强,既有经验又有精力,还敢想敢干,所以这群人才是整个社会的中流砥柱。在这个阶段,你需要明确自己奋斗的方向,需要做有挑战的事儿,需要提升自己的技术领导力。


13、加班太严重完全没有时间学习,怎么办?我觉得,可能并不在于加班和工作强度大到没时间,关键看你对学习有多少的渴望程度,对要学的东西有多大的热情。这点是非常重要的,因为学习这事其实挺反人性的。反人性的事基本上都是要付出很多,而且还要坚持很久。所以,如果对学习没有渴望的话,或是不能从学习中找到快乐的话,那么其实是很难坚持的,无论你有没有时间。


14、别人愿意跟随你,愿意和你共事,有一部分原因是你能够给别人带来更多的可能性和机会,别人觉得和你在一起能够成长,能够进步,你能够带着大家到达更远的地方。帮助别人其实就是帮助自己,成就他人其实也是在成就自己,这就像一个好的足球队一样,球队中的人都互相给队友创造机会,整个团队成功了,球队的每个人也就成功了。作为一个好的 Leader,你一定要在团队中创造好这样的文化和风气。


15、我觉得今天大多数的会都开错了。在会上抛出问题,还是开放性的问题,然后公说公有理,婆说婆有理,任大家自由发挥,各种跑题跑偏,最后还没有任何的答案。开会,不是讨论问题,而是讨论方案,开会不是要有议题,而是要有议案。


16、学习是逆人性的事儿,但如果在学习过程中不断地有正反馈,就更利于我们坚持下去。要让自己有正反馈,那就需要把时间花在有价值的地方,比如,解决自己和他人的痛点,这样你会收获别人的赞扬和鼓励。


17、在参加工作的这 20 年时间里,我发现,很多程序员都把时间都浪费在了查错上。究其根本原因就是基础知识不完整,没有好好地把技术相关的用户文档读完就仓促上手做事情了。其实只要把基础打扎实,认真读一下文档,你会省出很多很多的时间。系统地学习一门技术是非常关键的,所以这个时间是值得投资的。


18、一个可以持久的兴趣,或是可以培养出来的兴趣,后面都有一个比较本质的东西,其实就是成就感,他是你坚持或者努力的最直接的正反馈。也就是说,兴趣只是开始,而能让人不断投入时间和精力的则是正反馈,是成就感。


19、与其花时间在 Git 协同工作流上,还不如把时间花在调整软件架构和自动化软件生产和运维流程上来,这才是真正简化协同工作流程的根本。


20、编程范式其实就是程序的指导思想,它也代表了这门语言的设计方向,我们并不能说哪种范式更为超前,只能说各有千秋。比如 C 语言就是过程式的编程语言,像 C 语言这样的过程式编程语言优点是底层灵活而且高效,特别适合开发运行较快且对系统资源利用率要求较高的程序,但我上面抛出的问题它在后来也没有试图去解决,因为编程范式的选择基本已经决定了它的“命运”。


21、亚马逊的 AWS 才会把 Design for Failure 作为其七大 Design Principle 的重点。这告诉我们,不要尝试着去避免故障,而是要把处理故障的代码当成正常的功能做在架构里写在代码里。因为我们要干的事儿就是想尽一切手段来降低 MTTR——故障的修复时间。


22、隔离设计对应的单词是 Bulkheads,中文翻译为隔板。但其实,这个术语是用在造船上的,也就是船舱里防漏水的隔板。一般的船无论大小都会有这个东西,大一点的船都会把船舱隔成若干个空间。这样,如果船舱漏水,只会进到一个小空间里,不会让整个船舱都进水而导致整艘船都沉了。


23、通讯一般来说分同步和异步两种。同步通讯就像打电话,需要实时响应,而异步通讯就像发邮件,不需要马上回复。各有千秋,我们很难说谁比谁好。但是在面对超高吐吞量的场景下,异步处理就比同步处理有比较大的优势了,这就好像一个人不可能同时接打很多电话,但是他可以同时接收很多的电子邮件一样。


24、所谓幂等性设计,就是说,一次和多次请求某一个资源应该具有同样的副作用。用数学的语言来表达就是:f(x) = f(f(x))。


25、ACID 的玩法就是,大家在买同一本书的过程中,每个用户的购买请求都需要把库存锁住,等减完库存后,把锁释放出来,后续的人才能进行购买。于是,在 ACID 的玩法下,我们在同一时间不可能有多个用户下单,我们的订单流程需要有排队的情况,这样一来,我们就不可能做出性能比较高的系统来。BASE 的玩法是,大家都可以同时下单,这个时候不需要去真正地分配库存,然后系统异步地处理订单,而且是批量的处理。因为下单的时候没有真正去扣减库存,所以,有可能会有超卖的情况。而后台的系统会异步地处理订单时,发现库存没有了,于是才会告诉用户你没有购买成功。


26、熔断机制这个词对你来说肯定不陌生,它的灵感来源于我们电闸上的“保险丝”,当电压有问题时(比如短路),自动跳闸,此时电路就会断开,我们的电器就会受到保护。不然,会导致电器被烧坏,如果人没在家或是人在熟睡中,还会导致火灾。所以,在电路世界通常都会有这样的自我保护装置。


27、所谓的降级设计(Degradation),本质是为了解决资源不足和访问量过大的问题。当资源和访问量出现矛盾的时候,在有限的资源下,为了能够扛住大量的请求,我们就需要对系统进行降级操作。也就是说,暂时牺牲掉一些东西,以保障整个系统的平稳运行。


28、技术能力的瓶颈,以及技术太多学不过来,只不过是你为自己的能力不足或是懒惰找的借口罢了。技术的东西都是死的,这些死的知识只要努力就是可以学会的。只不过聪明的人花得时间少,笨点的人花得时间多点罢了。这其中的时间差距主要是由学习方法的不同,基础知识储备的不同决定的。只要你方法得当,多花点时间在基础知识上,会让你未来学习应用知识的时间大大缩短。以绝大多数人努力的程度,和为自己不努力找借口的程度为参考,只要你坚持正常的学习就可以超过大多数人了。


29、要应付并通过面试并不难,但是,千万不要应付你的人生,你学技术不是用来面试的,它至少来说是你谋生的技能,要尊重自己的谋生技能,说不定,哪天你还要用这些技能造福社会、改变世界的。


30、学习不是努力读更多的书,盲目追求阅读的速度和数量,这会让人产生低层次的勤奋和成长的感觉,这只是在使蛮力。要思辨,要践行,要总结和归纳,否则,你只是在机械地重复某件事,而不会有质的成长的。


31、把你看到和学习到的信息,归整好,排列好,关联好,总之把信息碎片给结构化掉,然后在结构化的信息中,找到规律,找到相通之处,找到共同之处,进行简化、归纳和总结,最终形成一种套路,一种模式,一种通用方法。


32、坚持也不是要苦苦地坚持,有循环有成就感的坚持才是真正可以持续的。所以,一方面你要把你的坚持形成成果晒出来,让别人来给你点赞,另一方面,你还要把坚持变成一种习惯,就像吃饭喝水一样,你感觉不到太多的成本付出。只有做到这两点,你才能够真正坚持。


33、把你新学的知识点关联到已知的事物上来。比如,你在学习 Go 语言,你就把一些知识关联到自己已经学过的语言上比如 C 和 Java。通过类比,你会学得更扎实,也会思考得更多。


34、对于技术人员来说,其实,Talk 和 Code 是同样重要的, Talk 是人对人说的话,而 Code 也不仅仅只是人对机器说的话,也更是另外一种人对人说的话(因为 Code 需要易读和易维护,就需要让人读懂)。可见,无论是 Code 还是 Talk 其实都是要和人交流的,Code 是间接交流,Talk 则是直接交流。


35、每个人都应该为自己的事业、为自己的理想去活一次,追逐自己的事业和理想并不容易,需要有很大付出,也只有你内心的那个理想才值得这么大的付出……


36、挣钱是一件大家都想做的事,但你得解决一个很核心的问题,那就是为什么别人愿意给你钱?对于挣钱这件事的看法,我从大学毕业到现在都没怎么变过,那就是我更多关注怎么提高自己的能力,让自己值那个价钱,让别人愿意付钱。另外,我发现越是有能力的人,就越不计较一些短期得失,越计较短期得失的人往往都是很平庸的人。


37、从客观规律上来说,某件事的进步一定会和现状有一些摩擦。有的人害怕摩擦而选择忍耐,我则不是,我觉得与别人的摩擦并不可怕,因为大家的目标都是基本一致的,只是做事的标准和方式不一样,这是可以沟通和相互理解的。


38、我选择了一个正确的专业(计算机科学),待在了一个正确的年代(信息化革命),这样的“狗屎运”几百年不遇,如果我还患得患失,那我岂不辜负了活在这样一个刺激的时代?!我只需要在这个时代中做有价值的事就好了


作为专栏的编辑之一,4 年过去了,我再看这些内容,仍然是收获满满。左耳朵耗子技术强,价值观很正,在总结这些内容的过程中,我惊讶的发现,我的一些思维方式、工作方式早已在潜移默化中被他影响了。这周六,我在连麦左耳朵耗子,和他聊聊专栏完结后这 3 年时间里,他的一些新认知、新思考。感兴趣的话,记得预约。



2021-08-09 09:2812885
用户头像

发布了 219 篇内容, 共 134.9 次阅读, 收获喜欢 190 次。

关注

评论 7 条评论

发布
用户头像
RIP 耗子哥,这篇文章曾改变了我
2023-05-15 16:06 · 上海
回复
用户头像
受教/抱拳/抱拳/抱拳
2023-03-06 14:49 · 广东
回复
用户头像
idempotency 其实字面是比较晦涩难懂的 ;-)

所谓幂等性设计,就是说,一次和多次请求某一个资源应该具有同样的副作用。用数学的语言来表达就是:f(x) = f(f(x))。

2022-02-11 20:21
回复
用户头像
Java的中间件,框架这些如果被golang替代,Java的生态也就没有优势了,又是下一个php,哦.PHP也还活着
2021-08-19 10:44
回复
用户头像
很赞,感觉有新的收获
2021-08-16 22:21
回复
用户头像
该评论已删除
2021-08-13 17:47
回复
每一点都太对了!👍
2021-08-13 17:47
回复
用户头像
“我选择了一个正确的专业(计算机科学),待在了一个正确的年代(信息化革命),这样的“狗*运”几百年不遇,如果我还患得患失,那我岂不辜负了活在这样一个刺激的时代?!我只需要在这个时代中做有价值的事就好了!”

第一次认识到这一点,有幸选中了一个正确的专业,又待在一个正确的年代。学会满足,学会自信,做自己该做的事就对了。
2021-08-10 19:14
回复
没有更多了
发现更多内容

微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

AI乔治

Java 架构 微服务 ,docker

黄金圈法则:成功者必备的深度思考方法

程序员陆通

黄金圈法则 厉害 牛逼

java安全编码指南之:ThreadPool的使用

程序那些事

java安全编码 java编码指南 java安全编码指南 java代码规范

iOS底层原理之—dyld与objc的关联

iOSer

ios开发 iOS Developer dyld objc

APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!

程序员小航

Java bug Header携带签名 工作笔记 问题排查

架构师第一期作业(第5周)

Cheer

作业

go-zero 如何应对海量定时/延迟任务?

万俊峰Kevin

定时任务 时间轮 microservice 延迟任务 Go 语言

深度详解企业CRM系统,体验软件快速开发平台

Marilyn

敏捷开发 快速开发 CRM

架构师训练营第五周学习总结

邓昀垚

极客大学架构师训练营

目标2025:通信产业在能源变局中拥抱智能未来

脑极体

PLSQL 过程语言-结构化查询语言

Flychen

速度(Velocity)不背这个锅

BY林子

敏捷开发 估算与计划

spring-boot-route(二十)Spring Task实现简单定时任务

Java旅途

Java Spring Boot Spring Task

MySQL-技术专题-联合索引最左前缀匹配原则

洛神灬殇

MySQL-技术专题-聚集索引和慢查询

洛神灬殇

金九银十期间成功斩获58万架构师Offer!六面字节跳动面经和面试题分享

Java架构追梦

Java 学习 架构 面试 JVM

sync-player:使用websocket实现异地同步播放视频

GoEasy消息推送

websocket 数据同步 实时通信

在算力“沃土”上,种植互联网下一个奇迹十年

脑极体

手把手带你玩转 openEuler | openEuler 的使用

openEuler

操作系统 openEuler

最新版MySQL在MacOS上的安装与使用

王磊

MySQL

十八、深入Python函数

刘润森

Python

详解GaussDB(DWS) explain分布式执行计划

华为云开发者联盟

数据库 计划 数据

Java Reference核心原理分析

AI乔治

Java 架构 JVM 性能调优

关注你自己,如同篮球巨星一样,让身体最佳化,持续投入最爱的事情。

叶小鍵

健康 科普 王立铭 肥胖

LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(四)

陈泽云

人工智能 大数据 数据结构 操作系统 数据存储

Servlet-技术专题-Servlet3异步原理与实践

洛神灬殇

据说99.99%的人都会答错的类加载的问题

AI乔治

Java 架构 JVM 类加载 性能调优

计算机网络基础知识总结

cxuan

计算机网络 计算机

帆软授权失效处理

Flychen

云原生在京东丨基于 Tekton 打造下一代云原生 CI 平台

京东科技开发者

ci 云原生 Tekton

忘记MySQL密码怎么办?一招教你搞定!

王磊

MySQL

看完左耳朵耗子的专栏,我给自己定了个5年技术规划_技术管理_小盖_InfoQ精选文章