和《左耳听风》一起看世界

date
May 17, 2023
slug
coolshell-haoel
status
Published
tags
Code
Review
summary
芝兰生于深谷,不以无人而不芳 君子修身养德,不以穷困而改志
type
Post
Created Time
Oct 28, 2023 01:45 PM
Updated Time
Oct 28, 2023 01:45 PM
AI summary
Status
2020 年 9 月,我从前端岗转后端岗,当时,公司后端使用的语言是 Go 语言,我就开始慢慢了解和学习 Go 语言,机缘巧合之下,在极客时间上看到并学习了《左耳听风》的课程,也因此“结识”了”左耳朵耗子“——陈皓。
“左耳朵耗子“是一位在互联网圈深耕多年的老兵,很多像我一样的年轻开发者都亲切的称他为“耗子叔”,他的文章,不仅解决了我在工作中的许多问题,还启发我去思考一个好的技术人,应该是什么样的?
2022 年,我的职业生涯遇到了问题,考虑换工作,我在推特上给耗子叔发消息,想要听听他的看法,于是就有了下面这段,我和耗子叔之间,唯一的一次对话。
notion image
斯人已逝,生者如斯。耗子叔无疑给我留下了珍贵的精神遗产,现在,有时遇到问题,我依然会问自己:如果是耗子叔,他会怎么做?
下面 👇 的内容是关于这篇文章的一些记录,算是对我思考的一个“快照”(snapshot),给未来的自己看看。“我想这篇文章要么被未来的我打脸,要么打未来我的脸。但不管怎么样,我觉得对自己来说都很有意义。”

创业

为什么创业?

技术人通过技术创业,首先需要思考这两个问题:
  1. 这个技术是不是市场需要的?
  1. 这个技术在市面上有没有现成的?如果有,你凭什么能够成功?如果没有,为什么没有人做?
耗子叔在创业时,发现绝大多数好的技术人都被大公司垄断了,但中小公司在发展过程中,也需要发展技术,所以他们需要一些技术人员,能够帮助他们解决一些实实在在的技术问题,总的来看,他创业的方向其实是——一款标准化的产品,用于解决中小公司的技术问题。
饿了么的故事,从一定程序上能够说明,耗子叔的创业方向是正确的:首先,这个技术确实是市场需要的,其次,这件事,除了他,鲜有人能够做成。我还了解到,耗子叔还会给一些公司提供技术培训的工作,这样的业务,在现有的市场上,是稀缺资源。

创业方向的选择

结合我自身的工作经验,中小公司,确实普遍存在下面几种问题:
  1. 高并发能力不足:一个营销活动,服务器就撑不住了(有时候,会通过人工、临时性的手动调整资源,用于营销活动,等到营销活动结束后,在手动进行服务降级);
  1. 发布速度慢:开发周期长,多人同时开发,影响同一个单体,开发人员之间互相影响;
  1. 无法达到系统高可用;
为了解决上面这些问题,一些有条件的公司引入了云原生、分布式、微服务和 Kubernetes 技术,但即使引入这些技术,也未必能够解决问题,甚至会将解决问题的过程更加复杂化。抽象来看,上面的这些问题,需要解决四个方向的问题:流量治理、服务治理、资源治理和数据治理。其中,服务治理有很好的解决方案,比如 Java 的 Dubbo 或者 Spring Cloud,资源治理也有不错的解决方案,比如 Kubernetes,但流量治理和数据治理,目前是没有标准的解决方案的,而且因为各个公司的业务不同、不同阶段的核心诉求不同,也很难标准化。
耗子叔的公司,选择的创业方向是通过流量调度和数据处理(找到数据之间的联系),辅以 Spring Cloud 和 Kubernetes,搭建一套完整的基础设施。如果这套基础设施能够按照耗子叔在文章中预想的那样,找到数据和数据之间的相关性,推导出对应的公式,最终推动业务飞轮快速、稳定、准确的运转,势必会给互联网行业带来一场革命。

初创公司如何选择编程语言?

选择编程语言的几个参考维度:
  • 语言的特征:每种语言都有不同的特征、社区、支持和生态系统,初创公司应该根据自己的业务方向,找到领域中最适合的语言。
  • 技术门槛:技术门槛太高了,参与的人就很少,进而会导致整个社区不活跃,社区不活跃就很难长久的繁荣,甚至可能会凉,因此,建议选择技术门槛低的语言,如 Node.js、PHP、Java、Python、Go 等。
  • 是否有大公司在用:有大公司的背书,势必能够更好的推动各项标准化方案的实施,“大树底下好乘凉”。
  • 是否有杀手级应用:成功的案例能够证明这门语言是值得选的。
同时,初创公司应该从一开始就估算好业务规模,大概有多少人会使用这个软件?使用场景是怎样的?
  • 业务层代码,用什么语言写都可以,但如果要提高关键节点的性能,就要考虑 C、C++、Rust。
  • 从 0 到 1 的项目,用什么语言写都可以,从 1 到 10 的项目,需要兼顾开发速度、稳定性和性能,因此需要选择一些工业化的语言,比如 Go、Java、Ruby、Python 等,从 10 到 100 的项目,推荐选择 Java,因为目前为止,只有 Java 经受过超大型项目的考验。

创业的收获

  • 条件受限是好事;
  • 方法比努力更重要;
  • 关注你的重点;

创业和梦想

降低技术的门槛,让普通公司也能享受到高级技术的便利和优势,用技术改变生活。

技术

技术不是用来写 CURD 的

无论是逐渐成熟的低代码平台,还是最近流行的 AI 技术都能够说明这个问题 —— 一部分简单的 CURD 类工作会被慢慢取代。虽然当下很多技术公司的程序员,做的都还是 CURD 类的工作,但长期来看,技术人员如果不进行自我提升,那么,终将有一天,会自食苦果。
要理解,真正的技术是要拿来做创新的,你要去颠覆点什么,要去创造点儿什么”。

基础知识的意义

  1. 技术的底层原理都是相通的。知其然而不知其所以然,那些缺失的知识,必然会在某一天惩罚你,迫使你不得不去了解,“与其被动挨打,不如主动出击”。
  1. 基础知识的多少,直接决定了你的不可替代性。线上遇到了一个问题,A 各种瞎搞,这里试一下,那里试一下,几个小时过去了,问题还没有解决,也不知道怎么回事儿,B 自信沉稳的打开终端,风轻云淡的敲了几行命令,立刻断言是哪里出了问题,应该如何修复,几分钟后,问题果然修复了,试问,如果你是老板,你会选择谁?

如何选择技术?

选择主流的技术,未来的技术。“不要去追逐风口,那些只刮了一两天的风,要小心,因为你没翅膀,飞上去以后,风停了你就会摔得很惨。那些刮了十几二十年的风,你还没站上去,要赶快站上去。”
当下,最流行的莫过于 AI 技术了,无论是人才市场还是资本市场,都在角逐这一方向,我也觉得这是未来最有可能的方向,但同时也非常警惕。我的身边,有很多人都在尝试用 Chat-GPT 做一些事情,自娱自乐也好,产品化之后用于盈利也好,要说完全不好奇,不太可能,但我至今为止也没有在上面投入太多精力,原因很简单,因为我有更重要的事情要做,有时间,我宁愿多花点儿时间,研究一些现在就已经很成熟的东西,研究一些更低层的东西。

如何进行技术积累?

耗子叔曾经在读者群里推荐了 ARTS 的任务,即每个人每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Share 一个传递价值观的东西!能够坚持下来的人,想必都能够直观的感觉到成长的力量。
其次,写作是也一种深度思考,在写作的过程中,你会去认真地思考、总结、归纳你所学到的知识。我写个人博客的初衷,也是因为此。
业精于,荒于嬉,行成于思,毁于随。

成长

找工作的目的是什么?

如果找工作的目的是为了找碗饭吃,不让自己饿死的话,那 996 这些我觉得都顺其自然就好,因为这是让你不饿死的一条路。”
“如果你找工作的目的是为了实现自我价值,那假使现在的公司不能帮你达到这样的目标,你就应该勇敢寻找能够帮你达到目标的公司。这是互相成就的一个事,我跟我的团队的员工也是这样说的:你成就我,我成就你,这是双向的事情。”

选择大公司还是小公司?

大公司的优缺点

选择大公司的好处:
  1. 组织管理。“大公司组织的运作方式、体系化的管理方式,怎么调动那么多人来完成一个事;或者一些思维方式,为什么他要做这个而不是做那个。这是大公司跟小公司不一样的地方,因为大公司有资源,可以去试错,试过很多很多错误。每一个东西都值得思考。”
  1. 怎么挣钱,大公司怎么挣钱的。
  1. 大公司里面的一些高手是怎么工作的。“大公司里有这个世界上最好的人。比如这个世界上最好的运营、最好的产品经理、最好技术人员,都在阿里、亚马逊、谷歌这样的一些公司。所以你要去找大公司里面那些聪明的人,跟他学,就像你打羽毛球下象棋一样,你必须要找高手学。”
选择大公司的缺点:
  1. 一个萝卜一个坑,你就只能干你那一小个环节,你就是他的零件。”

在小公司如何成长?

跟那些聪明人在一块。因为并不是所有聪明人都会在大公司里,越是聪明的人,可能越不喜欢待在大公司。因为他待在大公司收益其实很小,他必须得没有约束,不需要去搞什么办公室政治。“
”你的朋友圈会比公司更重要。你到大公司,也是要看你的朋友圈,这是一个非常非常重要的观点,你跟什么样的人在一起,决定了你怎么样成长;你跟什么样的人在一起,你就会被影响成什么样的人。所以有的小公司也不一定不能成长,关键是你有没有跟对人?他的格局够不够?“

如何进行时间管理?

在公司里,时间管理是很困难的,你不仅要管理自己的时间,还是管理别人的时间。同事有问题来找你,你管不管?上级找你开会,你去不去?有时候,我忙碌了一天,却发现自己前一天罗列的任务清单,一项都没有完成。
时间管理是一门学问,有时候,我不得不为了完成重要的任务而推脱责任,这时候,沟通就显得尤为重要了。
我在外企里面学到的一个方法叫 Never Say No。他说和用户沟通的时候,你永远不要说不,这事我做不到你要说 Yes,但永远是有条件的 Yes。比如这种情况下我能做到,那种情况下我做不到。你给我更多的时间,我能做得到,你给我那么短的时间我做不到。或者说在那么短的时间内我只能交付你半成品,你要不要?

如何进行高效的学习?

以学编程语言为例。你学一门编程语言,总是要把它抽象成一棵知识树。
我在学习观的笔记里也记录了一些学习的方法,有兴趣的,可以去看看。总的来说,无非两点,第一,套框架,二,模块化。

学了就忘怎么办?

我觉得你学了就忘,是因为你在用记忆去学,而不是基于问题去学。任何一个技术,都是在解决一个实际的问题。你一定要明白,你学这个技术,它到底解决什么样的问题,它是为什么而生的。当你明白了这个“为什么”以后,你才能够记住那些原理。
“为什么”是件很重要的事情。大家可以看我的 CoolShell 上的一篇博客《如何做一个有质量的技术分享》,你必须要告诉用户为什么,到底要解决什么样的问题。
你遇到一些实际的问题,在解决这些实际问题的时候,也会去真正地理解这个技术。总之,带着问题去学。

好书推荐

  • 重来》- [美] 贾森·弗里德 / [丹] 戴维·海涅迈尔·汉森
 

© 孙东辉 2022 - 2025