专栏名称: 程序人生
十年漫漫程序人生,打过各种杂,也做过让我骄傲的软件;管理过数十人的团队,还带领一班兄弟姐妹创过业,目前在硅谷一家创业公司担任 VP。关注程序人生,了解程序猿,学做程序猿,做好程序猿,让我们的程序人生精彩满满。
目录
相关文章推荐
码农翻身  ·  年薪154W!真心建议大家冲一冲新兴领域,工 ... ·  19 小时前  
码农翻身  ·  Bill Gates 和 Linus ... ·  昨天  
OSC开源社区  ·  2024年AI编程工具的进化 ·  2 天前  
程序员的那些事  ·  马斯克狂吹的 Grok 3 ... ·  2 天前  
程序员的那些事  ·  感谢 ... ·  6 天前  
51好读  ›  专栏  ›  程序人生

两万字长文:聊聊程序人生

程序人生  · 公众号  · 程序员  · 2021-02-09 11:55

正文

上周日(2/7)北京时间晚 10 点钟,我在 Clubhouse 上聊了一下程序人生以及大家感兴趣的技术话题。以下是我聊的主要内容的一个复盘,主要把大家的问题及回复的部分收录进来,没有包含之前聊了半小时的程序人生的历史。其中的问题以及一些探讨我做了精简,也补充了一些在语音聊天时无法附上的图片。文章很长,大约 2w 字,阅读需要谨慎。有同学私信问我开头放的小宝弹的钢琴曲很美,可不可以分享,我把音乐放在这里,大家愿意边听边阅读最好不过。:)

以下是聊的主要话题,大家可以有选择地跳到相应的问题去:

  • Q1:我想独立完成一个产品,技术上该怎么提升?

  • Q2:你是怎么找到好玩的项目的?

  • Q3:公众号技术文章如何拿捏风格?

  • Q4:如何记日记?

  • Q5:看过的或者学过的技术,如何在需要的时候找回来?

  • Q6:在工作中如何使用 Notion?

  • Q7:程序人生未来写什么?

  • Q8:未来开个育儿经的房间?

  • Q9:如何看待 clubhouse?

  • Q10:该问题已失效

  • Q11:如何看待递爪?

  • Q12:微信上也可以语聊,为啥用 clubhouse?

  • Q13:如何看待产品破圈后调性下降?

  • Q14:如何让自己尝试的技术能够深度使用?

  • Q15:大公司很难引入新技术,元芳,你怎么看?

  • Q16:如何避免搬砖?

  • Q17: 如何定义搬砖? 如何形成反搬砖的文化?

  • Q18:如何处理有限的资源和产品质量之间的冲突?

  • Q19: 团队做大,人才密度是肯定下降的,不能要求人人都有主人翁的心, 能不能用精细的流程来避免搬砖?

  • Q20: feed pars er 那样的 改动就不能做自动化吧? 如何更好地 做流 程自动化?

以下正文。


Q1 : 我想独立完成一个产品,技术上该怎么提升?

A:首先你要看你对自己的一个定位,刚才最后你提到你希望你自己能独立完成一款类似于像视频通话这样的产品 —— 如果定位是这样子的话,你可能所需要的学的东西会稍微杂一点。如果说你单纯的把自己定位成一个前端工程师,后端工程师,或者 ML 工程师,那就去学习各自的技术栈。但围绕着如何一个开发者如何能做出一款自己的产品这个角度来去定位的话,你得需要掌握 1)一个跟用户界面开发相关的语言和它相关的技术栈。2)掌握一门后端开发的语言和这门开发语言背后的 web 的开发栈。

然后你在掌握了就是前端的和后端的基本的技术之后,当你做产品的过程中一定会遇到很多的问题。所以我们要带着问题去学习。当你去为了一个目标 —— 一个可能你现在很难够到的目标 —— 构想一个产品,然后去实现这个产品时,这个过程中你会发现你缺很多其他的知识。比如数据采集,数据分析等等。这些知识我怎么样去弥补?在开发的过程中,我用什么样的架构?假设我没有接触过前端的开发,那前端开发这个领域里面究竟有什么样的流派,然后他们都各自使用什么样的架构?什么样的架构是大家公认比较好的?这个架构我自己是不是认同?带着这些问题,你会有很多需要去深挖的东西。甚至你可能需要去看一些大咖们写的书,比如 clean architecture。然后看 clean architecture 的思想怎么样跟做一个具体的产品去映射。这个实现的过程就像一个旅途,你需要很多人的帮助 —— 这些人可能是 YouTube 或者 B 站的 up 主,可能是 medium,hackermoon 甚至程序人生的博主,通过吸收和消化这些你为了解决具体问题而寻找的助力,这些东西就内化成你自己的东西。

这个过程是一个相互缠绕的学习过程,它不是说我先去把相关的知识,相关的书籍读一遍再开始,而是边做边学,边做边探索,然后总结,内化。就像一个一个飞轮一样不停的不停的在往前滚,然后在这个过程中你会不断的去会探索到新的领域。当到达某个程度的时候,你会面临某个技术是自己做还是找供应商。我在「供应链管理」一文中说过,现代软件越来越复杂,一个人乃至一个团队不可能解决所有的问题,造所有的轮子。比如 ClubHouse,它实时语音用了声网的技术,而 pubsub 用了 pubnub 的技术。当你在产品中遇到 pubsub 这样的技术问题时,你会有几条路:1) 自己构建 2) 找开源实现,比如 nats.io 3)上云服务,如:pubnub,pusher,aws SNS 等。去用第三方的 SDK 构建你的产品是一个很好的思路,你可以学习到那些优秀的 SDK 是如何构建它们的接口的。很多软件用起来舒服的第一个要素就是它的接口定义地很好,接口的抽象把细节隔离地很好,然后又能把该提供的能力都提供给你。比如我们每天都在用的 Git。Git 就是一个非常优秀的软件,它提供了high level的 API 给大家使用,然后也提供了非常 low level 的深入到 blob 级别的 API 给你充分的自由。

Q2 怎么找到好玩 的项目的?

A:这是个好问题。这涉及到一个信息来源的问题。我平时会逛一些各种各样的软件网站,比如说我会订阅很多种语言的邮件列表,然后每周这些邮件列表发送时,不是说所有的文章我都会去看,我只是会扫一下他们的标题,看看有什么感兴趣的东西,然后我在深入了解。我一周会逛个两三次 hacker news 和 github trending。在 github trending 上我会过滤一下我所关注的语言,看看有什么有意思的新的项目出来。这就是我很多新的想法,新的东西的一个很重要的来源。比如说像 Erlang/Elixir。这个技术我最早接触还是在途客圈时代。我读了「七周七语言」那本书。我的朋友和同事驰远他说他的同学 Falood 在做 Erlang,我当时肃然起敬。当时无缘招募 Falood,但人生就是非常奇特的,后来 Falood 就加入了 Tubi。那是我第一次接触 Erlang,后来大概是 2015 年我在 hack news 里面看到了 Erlang 的创始人 Joe Armstrong 写的他自己是用Alexa的一些心得(老爷子很不幸地在两年前去世了)。当时他的那篇文章把我带入了 Elixir。我觉得这是一篇很有意思的语言,集合了函数式编程,强大的并发处理能力,以及宏编程这几种能力。后来我就发现 Elixir 语言在当你把 Macro 和并发能力结合起来的时候你会你会有一些意想不到的收获。比如说我之前写的文章介绍我在 Tubi 如何做 policy engine,见「policy engine 的前世今生」。通过使用宏,我把数据从数据库中读取出来,生成几十万个上百万个函数,然后完全用语言本身的 pattern matching 能力把参数 dispatch 给合适的函数,从而达到微秒级别的访问速度。如果让我换另外一个语言的话,这件事情可能就就很难去做,或者说得用另外一种方式去做。所以这是这是为什么我会去探索 Erlang/Elixir。我后来在 ArcBlock 期间开始探索 rust,我尝试用Rust 去解决一些深层次的技术难题,(通过 Rust 和 Elixir 的 FFI)进一步提升 Elixir 的能力。我过去写的多东西也是受到了 hacker news 和 github trending 上面很多项目的影响,比如 noise protocol。所以我觉得大家也可以去围绕着自己的核心的技术能力去订阅一些不同的邮件列表,尤其是你自己语言的相关的邮件列表,看看这个世界上其他人都在做些什么都有一些什么有趣的项目 —— 也许某个项目就可以在你下一个无论是个人的还是公司的项目里面去使用到。

另外偶尔可以去看一看各个开发者聚集的地方,大家都在讨论些什么。Reddit 是一个不错的源泉。我时不时回去 r/rust 看看。当然,还可以通过订阅程序人生获取一些不同的信息的来源。

Q3 公众号技术文章如何拿捏风格?

A:谢谢,对,我觉得这是一个很好的问题,我在写文章的时候,我会刻意注意自己的文章,不要太过于干涩,所以会引入一些小小的引入一些段子,然后用一些网络用语,因为我是觉得大家一天到晚面对机器,面对技术本身,如果读到的东西又是非常非常干涩的话,可能会有点吃不消,所以我会在文章中稍微加一些俏皮的东西。这一点我在像其他领域的人学习。

比如说你怎么样把法律这件事情能解释地娓娓道来,那罗翔老师就给我们展示了一个极其生动的例子 —— 他生动的制造了一个法外狂徒张三。

当然我没有罗翔老师的那种能力了,但是我也想文字本身生动,再加上能再带一点点优美,那么是对这个文章本身干货的一个最好的补充,所以我在朝这个方向去努力,但确实这件事情本身是非常困难的,、段子这些东西偶尔说个一两次,可能也就罢了,说多了大家也会觉得很无聊,那么我可以夹杂一些我的思考,思想在里面,甚至在夹杂我的思考思想的过程中,我可以放一些名人名言,我会掺杂一些我在电影中的,对某个电影中产生的共鸣,读书读到的优美文字。如果把这些东西和我要写的东西结合起来,可能会产生非常不错的效果。

当然要达到这一步的话,你平日里面可能需要有有比较多的阅读,有比较多的积淀。比如说你没有看过了不起的盖茨比的话,你可能也没办法去把文中的某个场景去跟这个盖茨比里的场景去连接起来。我自己写公众号,也写了有七年多的时间了,也慢慢累积了一些我个人的套路,素材,行文方式,以及表达方式。

另外一个方面,就是如何避免把技术写成流水账。这块我觉得是是一个表达方式的问题,其实是你怎么样把你的思想以一种就是更好的方式组织起来,这个可能是一个写作能力的方面的问题 —— 我们如何提高自己的平日的写作能力,把一些对事件本身的描述避免流水账。

比如说我要做的这个东西,首先它的核心部分是什么,我肯定是要把核心部分的探索放在最重要的位置,围绕他服务的文字要最多。然后另外当你传递一种思想的时候,你可能想好你的听众是谁,你怎么样去一步步阐述:首先为什么你要这么做,然后你做了些什么,最后才是你怎么样一步步做到这儿的。当人们因为为什么你做这件事情,或者为什么要来讲这么一个主题,产生共鸣的时候,后面的阅读就会比较比较自发,比较舒服。但如果说我们上来就在陈述这个事情本身,从第一步到第十步是怎么做的,看完了文章之后,大家还没有解决掉一个关于 why 的疑惑的话,可能就读起来会比较觉得干并且吃力。

Q4 如何记日记?

A:首先我现在还保持着日记的习惯,但我的日记不一定是真的日记,更像是一个一天有趣的事情的一个简单缩略。我现在写日记的方式略有不同:我在notion里面建了一个template,或者说,一个Marco,然后 macro里面放了一个九宫格,每周点击一次,自动生成这周的日记模板。

你可以想象一下它是一个页面里面我,画了一个九宫格,然后周一周二周三周四,周五周六周日,然后最后两个格子我把它合并成一个,然后做一个总结,大概是这样一个日记的形式。

这个形式也就意味着我每天记载的内容就是一小块,我一般一天日记会非常简短,可能每天我就花个5分钟左右的时间去写。写什么呢?我会记录这一天我过了之后有哪些事情值得我回忆。哪怕就写几个字一两句话可能就足够了,因为半年之后,我翻开你的日记,我看到这个东西就会就把自己可能埋藏在记忆深处的这个东西和写的内内容连接起来了。

因为我们的大脑的运作是,很多事情久了它就不会停留在大脑皮层,而是被放到深度记忆区,你需要的就是一个指针,通过这个指针,把深度记忆区里面的记忆唤醒。我的日记大部分起的作用就是这样。因为很多时候我们只要把一天中最记录最重要的东西记录下来,对我来说那就就够了。

我记得在看朗读者时,当时许渊冲老先生跟董卿聊的时候他说过一句话,我记忆特别深刻:他说 —— 生命不在于你活了多少日子,而是你记住了多少日子 ,所以我们要做的事情就是让你过的每一天都值得回忆。我当时听了这个就特别有感触,某种程度上我记日记的目的可能就是恰恰为了这个目标而记录。所以我并不是每一天都会记日记,我可能一周里面会空空出来好多天,因为那些天并没有发生特别多让人值得怀念的东西,但是有时候可能一周我的日记都是填满的,因为这周发生了太多的事情,无论是喜怒哀乐,无论是公司层面遇到的挫折,还是我很不爽的某些事情,还是我很开心,自己的很有成就的事情,我都会把他们写下来。

Q5 看过的或者学过的技术,如何在需要的时候找回来?

A:我的方法就是我在开始看某个东西时,如果我可能觉得未来我在某个场景下会去使用它,我会在我的笔记的对应的主题下面,如果说没有那个主题的话,开个主题,然后把链接放进去,然后把它的一段介绍贴进去,比如说我在 Github 上 Star 了很多很有意思的做搜索的项目,比如说现在在 Rust 上面比较火的一个叫 meilisearch,一个叫 Sonic,这些东西我现在并不需要,所以我现在可能不见得会用到他们,但是我会放在搜索的主题下面,下次我要深入了解探索这个方向的时候,那么可能会深入探索。

这是我自己的一个方法,它跟前一个话题其实有点相关,现在我们面临的信息是越来越多,这些信息你怎么把它连接起来,我相信每个人都可以有自己独特的方式,我的方式就是我把它记到 Notion里,因为是我自己的笔记本,我知道我自己记录的方式,所以很容易超找到。

不光是 Github repo,还有我在 Youtube 和 B 站上看过的视频,我都会放在专门的页面里面,做成 database。在看的时候我会 Cmd + Ctrl + Shift + 4 截屏,然后将其粘在页面里。

除了收集之外,还要主动去思考,通过思考,也很容易把你学过的东西,Star 过的项目串起来。

因为我曾经在文章《 探索 Notion 的实现 》中也讨论过,如果自己要做一个 notion 的话,应该怎么样去做,还有什么问题需要我去去解决。我觉得平时大家有很多这种思考是非常必要的,我之前也跟我的小伙伴 1: 的时候,提到如果多少年之后成为一个什么样的人,比如架构师,那么其实你需要做的就是你平时对你所用的东西,你感兴趣的东西,保持一份好奇心:你看到一个一个产品,就要去想这个产品背后的逻辑是什么,它的功能是怎么样实现的。如果我自己要实现的话, 这一块功能,那块功能我该用什么样的工具实现,我是自己实现,还是我拿第三方工具,我有哪些工具可以使用。这样你就可以把平日里看到的东西和你的思路串联起来。

你可以顺便多想一些,比如:如果真得要实现的话,实现到一个什么样的程度,大概花多少钱?这些东西我觉得可以反复可以在自己的脑海里面去探索,你不一定去做,因为很多时候我们遇到的东西太多了,真正值得你去深入下面去做的,一年可能也就是两三个,因为你的时间精力毕竟有限。大部分的时候你即便不做,你可以去想,因为想本身想的过程就本身已经足够好了,因为你在思考的时候你会你会遇到问题,这个问题即便你不是去写代码解决,你也可以通过去搜索,你可以去看看别人是别人的解决方案是什么,甚至你可以对这个产品本身做 reverse engineering,去验证你的想法和人家做的是不是一样。我记得当大家在吐槽 notion 总是很慢的时候,当时我看了他的 API,我就觉得当 notion 发展到某个程度的时候,他的慢是不可避免的,因为它大量的这种和服务器端的通讯过于低效,它又无节制的允许你分享内容,允许你分享给非常多的人。我们知道 clubhouse一个房间的上限是 5000 人,这些都是产品上的考量,而 notion 几乎我现在还没有试出来一篇文章分享的上限。

这些东西其实都是你在思考,你在使用 reverse engineering 的时候,你会发现这是一个问题,他没有解决好。那我该怎么样解决呢?我的方法是不是好,如果好为什么好,如果不好的话,还有什么更好的解决办法等等。这个循环往复的过程会让你的进步会很快,很多人说我在大公司里面或者在公司里面,我作为一个程序员就是一颗螺丝钉,每天能接触的事情就那么一点,那是因为很多时候有一个更广阔的世界我们可能还没有去发现。

Q6 :在工作中是怎么使用 Notion 的呢?

A:我自己个人有一个 notion 的账号,在工作中有一些临时的记录,比如说开会 action item 的 follow up 等等,这些东西我会我用 notion 去记录,包括每天工作中有一些想法,这些我会用 notion 去记录。我在 notion 里面专门有一个区域是「工作」,我会把工作和生活区隔开。我们公司有部分团队也在尝试,在 notion 里管理项目,管理大家的交流,其实是一个不错的选择。

Q7 程序人生未来写什么?

A:一开篇的时候我讲,到了 16 年 17 年的时候,我把公众号的主题切换到主要就只写技术和产品相关的东西,产品的话大概就占个10%, 20%的比例,那么未来我还是会继续以这样一个方向去写,因为写到现在,说实话我已经不太在乎有多少粉丝,我有没有可能写出 1 万加的文章。现在真的就很淡了,反而是我把写作作为一个我技术的出口 —— 一个平日里面我获取的那么多内容的这么一个出口。我记得村上春树描述过他为什么去做写作,大概意思他说 一件事情必须要兼具入口和出口 ,人活的久了就会会主动或者被动的接受很多的东西,得出很多感慨,这些东西都是入口,如果你像一个黑洞一样,你不断的去吞噬一些东西,你就会在泥沼里面陷得越来越深,如果你只有入口没有出口的话,总有一天你的大脑就会炸掉,所以我们才有跟别人去倾诉,对吧,如果不能向亲近的人倾诉,就向陌生人倾诉,这是出口,写作对我来讲大概就是这么一个出口。它对他对我的读者的好处是可能某些文章某些句子能帮助读者们去点亮思维,能给他们带来更多的想法,对我来讲是一个复盘,一个出口。所以我会还是会继续写这种比较深度的技术文章,我会把我的口水文的比例会减得非常得低。

对于我来讲,现在更首要的是写一篇文章,我要对得起我自己付出的时间,通过写作,我把对自己所掌握知识,有一个夯实的过程。就像柳传志说的「撒一层土,夯实,再撒一层」。

对于我在这个过程中用的工具,比如说文字,我以前是就在 vscode 里写 Markdown,用一个 github repo 来保存。当要发布的时候,我把 Markdown 构建成一个个 html 页面,然后用浏览器把页面打开,整个拷下来粘到公众号的编辑器里面。现在我用 notion,因为平时碎片的东西就往 notion 里面塞,比较方便,尤其是截图我一截,往里一粘就可以了。绘图的话,我主要现在用两个工具,一个是 plantuml。这个工具是你可以通过一些预设的语法来做各种各样的 uml 图。我在我之前写的一篇 《 那些年,我追过的绘图工具 》里面介绍过。最近我使用的一个比较多的绘图的工具叫 excalidraw。这是一个开源的项目,我觉得是一个非常好的 visio 或者lucidchart 这样的画复杂的流程图的一个开源的替代品,它用起来真的非常的简单,他把你的能力就限制在几种图形,和几个线条下面,让你可以聚焦在你自己所要表达的东西本身。它提供了很方便的快捷键,用熟了可以让你非常高效的把你的脑海中想要做的东西绘制出来。这个工具我未来会打算写上一篇,因为我觉得它真的是一个非常不错的工具,值得大家无论是工作还是学习去使用。我现在工作中的很多图也是用它来它来画。

另外一个就是大家可能一直忽略的效率工具是 makefile,它开箱即用,可以帮你自动化很多工作。

Q8 未来开个育儿经的房间?

A:我觉得很多时候优秀都是在人前展示出来的状态,背后还是有很多的心酸和和痛苦的。不过这也许是个好提议,我可以考虑一下。但其实说到育儿,绝大多数的时间是我老婆花心思在上面的,我就是一个当果树上已经长好了果实,摘果子的那个人。很多时候我在朋友圈里面秀的状态是我老婆在背后默默无闻做出来的功劳。

Q9 :怎么看 clubhouse?

A:这几天带给我一个最大的感受,这很像是一个在咖啡厅里朋友们,之间一起就是随便聊聊什么话题,大家其实都是在不经意的做思维的输出的时候去影响到其他人。最近因为我自己也发了一篇关于我对 clubhouse 认知的文章,很多看了文章的朋友就会给我在微信里面转一篇品玩写的十万加文章,问我怎么看。

我觉得这个东西其实就是每个人有不同的看法,我们大家和而不同。我一般会回一句话 —— 一句我在很早之前好像在卡耐基大全里看到的一句话 —— 两个人从监狱的铁窗里望出去,一个看到了地上的泥土,而另一个看到了天上的星星。

很多时候大家活在一个不同的维度,不同的世界,看到的东西自然不同。我不觉得 clubhouse 是一个大家为了长粉高谈阔论或者是干什么的这样一个地方,反而我觉得他非常贴近我们的生活,就像我们现在这样的一种闲聊,也许聊一些有用的话题,也许聊一些没用的话题,那愿意听的就可以在上面旁听,听一耳朵;不愿意听的就可以静悄悄的离开,谁也不会对谁造成打扰,我觉得这是其实一个蛮好的状态。当然任何一个社交网络都会在它发展的过程中加入各种各样的噪音,这种状态能维持多久,它多大程度上能在用户不断破圈的过程中去做好用户的区隔。我觉得与其建一个像新浪微博那样的嘈杂的广场,倒不如建成一个又在一个就像在 minecraft 上面建成的一个又一个的小的市集。我觉得如果 clubhouse 能把这个区隔做好的话,未来前途还是还是很大的。

我觉得 clubhouse 爆红的一个很大的因素,也是因为在疫情下面大家憋得太久,很多本来原来能通过线下跟朋友之间喝咖啡喝酒聊聊天能解决的东西,现在突然大家都没有了出口,或者说出口一下子以指数级去降低,那么自然我们需要找到其他的出口,其他的出口,不是 clubhouse 也会是旁的什么。目前我觉得 clubhosue 是一个非常不错的,非常有意思的这样一个出口,也许未来国内会有相应的产品,很安稳的生长在 qiang 之内,那么也许我就会用那样的产品,最终一个产品它能帮助大家促进交流,产生共鸣,帮助大家去去得到不一样的思维,能看到不一样的东西,我觉得本身这就是一个很好的产品。

Q11 :如何看待递爪?

A:我不是递爪的用户,但是我大概看了一下递爪的产品形式,我觉得跟 clubhouse 的产品形式和想要维护的一个社区的氛围还是有很多的不同。

比如说在递爪里面进入和退出是一个相对成本比较大的事情,而club house就很轻松,看到一个有趣的主题,你点一下就进去,并且你立刻收听到内容,你想说你举个手可能很快就能得到得到回应。你哪怕是作为一个嘉宾,你退出之后不聊了,也是一个很很自然事情,你不需要有任何社交负担心理压力的。在递爪上至少从我看别人文章的介绍上面,我并没有看到这种东西。

其实我们需要的是一个 clubhouse 这样和线下交流非常类似,负担很小的这么一个东西,也许接下来会出现类似的产品,

Q12 微信上也可以语聊,为啥用 clubhouse?

A:但是聊的体验和聊的体验就非常的不一样,首先如果你用视频聊的话,有人数的上限,你用语音聊的话,大家还得去抢麦抢话筒,那不是一个非常实时的聊天的方式。我觉得存在就有它的合理性,我们暂且可以去看他下一步会,走到什么样的这个程度,会有什么样的发展。

其实我觉得作为程序员,我们自己也可以去去想未来这样的东西它怎么样去发展,在用户端它在怎么样去发展,它对企业能带来什么样的好处。两层意思:通过类似 clubhosue 的软件企业和用户的交流能带来什么样的好处,以及在企业内部是不是能够成为一种新交流方式。比如说他是不是是可以成为一个在企业端的 zoom 的替代品,我在我的文章里面也有提到,因为大部分 zoom 的会议,当人一多之后,大家都是把摄像头关掉,其实就是一个语音的东西,是不是我们可以产生一个更好的形式,一个更轻便的形式在企业端去使用,尤其现在大家远程工作越来越多,未来即便疫情结束了,可能很多的团队还会继续使用远程工作这种习惯,但是远程工作和在同一个办公室,里面工作最大的不同就在于人和人之间的距离。在办公室里面工作我需要我要找到你,我跟你聊两句,这是一个很自然的事情,但是远程工作的时候,我无论是在slack里面聊,还是 zoom 会议,都太有侵入性。

用语言的话,用聊天本身的话,我觉得非常自然的可以拉近大家远程办公之间的距离,比如说大家可以建一个这样的群,平时就挂着,大家都不说话,a跟b想想讨论什么话题的,时候投一嗓子,如果b说 ok我现在有,时间我们聊聊,大家就两个人就拉一个单独,的房间就私聊,非常像我们平时在办公室里面办公对吧,两人需要讨论的什么问题,一合计就跑到一个小会议室里面,就开始弄。当然目前 clubhouse 的产品形态,并不是为这种方式服务的。

另外,我是觉得我们在在批判一个东西的时候,先去看它的合理性,先去想我还能做些什么,应该为他感到开心,为有这样的一个东西出现感到开心,就像一个小孩子一样,永远保持那种好奇心和想象力。我正好昨天晚上 —— 我们家是这样,周一到周日晚上的时间我都会安排跟我孩子做一些事情,周五的时候我们会看纪录片,周六的时候晚上会看看电影 —— 昨天晚上正好我们看了小王子这部片子,我非常推荐,大家如果没看过的话,就看一下。它是一个法国的动画片,2015年出的, b 站上面就有,大家可以去看。通过看小王子,我最大的感触就是:大家在不断长大的过程中,实际上是个不断丢失的过程。小孩子知道他们在寻找一些什么,他们把时间花在那些洋娃娃身上,等到我们变成大人了,我们对于一件事情的好奇心变低了,对于各种各样的星星,我们就把它们封存起来,进而把它们碾碎。我们永远是一个批判的态度,在看待事物的时候,先说他有什么不好,而不是先去看这个东西,五彩缤纷,非常美丽,很有意思。

我真得觉得我们需要把我们自己的真诚童心,藏起来的这部分要把它重新放出来。之后,你会发现生活会变得美丽很多。在看电影的时候,我对其中有几句话印象特别深刻,比如:

  • 一个人只有用心去看,才能看到真实,因为最重要的东西是用眼睛是看不到的

  • 所有大人都曾经是小孩,虽然只有少数人记得

  • 你的玫瑰花,你在你的玫瑰花上耗费的时间,使你的玫瑰花变得如此重要

扯远了。

Q13 如何看待产品破圈后调性下降?

A:我觉得一个产品它必然最终是不断破圈的,但是就是圈和圈之间可以有足够的防火墙把他们隔离开。一个圈子如果说无论是从推荐系统的角度,还是在产品运营的层层面去做好,足够的区隔,是不同圈子的人,他们想发生关系的时候可以发生,关系,不想发生关系的时候,我就静静的呆在自己那个圈子里面,那就是比较理想的状态,因为我们的社会本来就是这样,三六九等是自然而然形成的,社会的圈子你很少会跟一个不在你圈子里的人发生很深度的对话。所以无论是知乎上发生的,微博上发生的,可能是跟破圈之后,就是防火墙做的不够不够好,或者说可能是我们自己变了,我们自己变得挑剔,那些真正我们口中所谓的下沉的人是他们在上面玩的很欢,让他们觉得这个东西很好,只不过是他们可能没有那么多的话语权,他们没有把他们的声音表达出来,最终导致感觉好像是一个产品破圈之后,这个产品的调性就没了,我承认是肯定会存在这种这个问题的,但是破圈对产品本身是好事。当然对产品最早的使用者可能不一定是好事。

Q14 如何让自己尝试的技术能够更深度地使用?

A:这是一个非常典型的就是做技术的人会遇到的困惑,我也会有这种困惑,我的解决方法就是把它写下来,两两层写,一层是我把我尝试过的好玩的,东西我写成文章,这是一层写下来;第二个是我把我好尝试过的好玩的东西,真正把它应用到一个产品里面,就是第二层写。你刚才讲的困惑是更多是在第二层,那就是我尝试的东西在工作中用不到,怎么办?我不可能为了这样一个兴趣我去换工作?

我可以举一个特别典型的例子,当然很多人可能说是因为我的屁股坐的位置(VP)决定了我的这个例子可以成功,我们先不妨讲一下这个例子,还是跟 Elixir 在 Tubi 的使用有关。之前 Tubi 的整个技术栈用 NodeJS 和 PHP 来构建的,elixir 并不是其中一个选择。我在喜欢上 Elixir 之后,我很想把它用在产品中,我做了很多小的project,但是没有机会在 production 里面去使用它,你知道对于任何一家公司来讲,去在 production 去尝试一个新的技术都是非常有挑战的,挑战不仅来自于技术层面,更多的来自于大家对未知的恐惧:你怎么样去说服别人,这个东西一定是好的呢?你怎么样去说服别人,这个东西用在生产环境中就不会出错?当一切原本运行还算良好的东西,突然被这样一个东西去替换,自然是会有很多人会有反对的声音,即便我当时是一个 VP of engineering 的角色,我也不能轻易的做这样一个结论,说大家必须用 Elixir 来写后端,就是因为我觉得他很有前途,因为我觉得我很喜欢他对吧。无论你的职位再高,除非这个公司就是你自己一手打造的,你有绝对的权威,或者说你从 0 开始的,你直接拍脑门就拍了这么一个方案。不是这样的情况下怎么办?我觉得可以从一个很小的入口去,找它适用的场景,比如说从 Elixir 的角度来讲,我当时找的入口就是做的 policy engine,具体是怎么实现的,这就涉及深入的技术话题,大家可以去看我的相关的文章,但是当时我主要想尝试的就是它的性能能不能带来指数级的增长。往往一个新的尝试都是从一个 POC 开始,就所谓的 proof of concept,你去写一点东西去看一看它相对于已有的东西有一个什么样的提升,我们原来的 policy engine也是我自己优化过的,用的 NodeJS + Jason。Jason 是一个解析器,我之前用它处理复杂的policy的运算,每次响应是毫秒级的,那么我就在想那我在我如果用了 Elixir 有没有可能把它提升一个量级,后来的结果是大大出乎我的意料,就是它提升的不是一个量级,是两到三个量级,从毫秒级提升到了微秒级。所以这种提升就非常的可观,当你能把你的某一个服务,它的服务的一个非常频繁使用的功能提升 100 倍,1000 倍的时候,带来的收益是无与伦比的,那就意味着到用用户侧你的 API 的性能一下子变得特别的好,这个是后来我们用了新的 policy engine 之后,我们原来首页的加载速度从十秒变成了一两秒钟,这就是一个非常大的飞跃。所以如果说你想引入一个新的,技术技术能带来一个甚至几个量级的提升的时候,那么想要把它推广出去的障碍就会小很多了,所以这是一种方式,就是你怎么样把你所学的东西去应用到你的公司里面。

当先从一个小的点,做了一个很重要的替代。你要做 benchmark,benchmark 之后你把结果拿出来对比,这个数字永远是比任何描述都容易去打动人,因为一个比如说20 微秒,一个20毫秒,那么这个差距谁都能看得出来,这就是你最好的武器去让你把你想用的技术去应用过去,但是这样的机会往往是可遇不可求的,能找到这样的机会是最好的,它需要很多的思考和实践。

如果找不到这样在工作场景里应用的机会的话,退而求其次就是找自己的 pet project 里使用的机会。在应用的过程中,你如果能把它沉淀下来,输出成文字,哪怕输出成给自己私人访问的文字,也很好。这还是刚才谈到的指针的概念,就是你找一个指针,把指针指向这段知识。之后当你的知识进入到大脑的遗忘区的时候,你靠着指针还能把它拽回来。很多时候我还会回过头去看我自己公众号的文章,有些有些想法,有些东西我依稀记得我好像写过,我好像就是做过,但是我不记得我当时的这些方法,我用了哪些工具,这个时候我就可以在我的文章里面做一下搜索,就可以很快定位到我之前写的文章,从而又回忆起使用场景。

Q15 大公司很难引入新技术,元芳,你怎么看?

A:我觉得最终还是任何公司最终还是看 ,现在有一个投资,我们去决策要不要做这笔投资。那么要做到什么程度,完全看它能带来多少回报。如果这个回报仅仅是对开发者有意义的一组数字的话(比如 performance benchmark),可能还不足以打动除了技术技术层级之外的人,我们可以进一步的把这个东西转化成对用户体验的影响:它对用户的收益是什么,能带来什么样的 UA 的提升?再进一步,能不能把它转化成对收入的影响,这个就是非常厉害的武器了,比如说我们最近做的某些功能,影响了很多收入或者是节省开支方面的这个东西,如果技术最终只是报一个性能优化的报告,可能高层甚至都不会把它正眼去看,但是如果你说ok我做了某某东西,一年给公司省下来了五百万,这个东西绝对是能上到 BU 老大,甚至CEO 的法眼。因为平日里面不是有那么多机会,给你省这么多钱的。这就是这就是我觉得在公司里面,你做事情可以拥有的高光的时刻,这种高光的时刻是很难得的,我觉得有这样的机会就去抓住它,哪怕最后的结果是公司的安全团队和基础设施团队评估了半天之后,说对不起,这个东西我们因为 xyz 的原因,还是不能去去使用它,那也ok,至少你有了这么一个这样的体验,你拥有了新的影响力。

Q16 周围的人都在搬砖,自己不想,如何影响他们?

A:如果你是一个工程师,你想去影响团队的文化,想让这个团队有更多的对各种,知识各种东西的兴趣的话,我觉得可能凭一己之力会比较困难,尤其你不在一个管理的岗位上面。但是还是有很多方式的,比如说当你进入到一家公司,一个团队的时候,你能给团队带来一些什么呢?如果你自己是一个喜欢思考的人,但是周围的人都是搬砖的,我觉得你第一步可以做的事情是:你可以倡导在团队内部做一些分享的活动,很可能一开始做分享的人只有你,你可以把你自己学到的东西,把你思考的东西分享给大家,把这个东西形成一个团队的习惯,慢慢的这种方法就会去影响到一些人,就会帮助他们去做出改变。在这种缓慢的潜移默化下,团队文化可能会稍微去变一点。

我在 2005 年加入 Juniper 的时候,也是一个毛头小子,毕业才两年。我在团队中没有什么话语权,但是我这个人相对来讲喜欢分享,所以我会时不时地在我自己的团队里面,我我跟我老板 1:1 的时候会跟他提这种团队内部举行这种分享会,比如说在周会上面,我们可以花个20-30分钟,来讲一个有意思的技术话题。如果他愿意的话,我甚至可以帮着来从团队里面去收集技术话题,这个时候往往你在承担一部分 leadership 的角色,对吧。虽然干的是一个很不起眼的小事,但这个小事确实让你离 Leader 更进一步了,一旦你把这件事情做成一个很有规律性的东西,那么对你的团队人来说,它是一个有收益的事情,对你的老板来讲更是一个非常有收益的东西,因为这是团队的亮点。尤其这种亮点是日积月累之后,非常可观的亮点,比如说如果说我们一周分享一次的话,一年就是 52 次,52次,你把这个东西可视化了之后,再进一步为每一个分享打上标签,生成分类的按季度对比的柱状图。老板拿着这个东西跟上面的人去讲,这个就非常非常有说服力。

增进团队中的这种分享的氛围,是解决大家把工作当成搬砖的第一步,接下来就是我们在平时的工作中,怎么样让这个工作本身更多的把它从单纯的写代码的搬砖往更高的层级去拔,这就需要很多你对技术的领悟和技术的认识了,比如说在代码的 repo 中,里面有一些架构上面的问题,我们是不是可以专门就是开一个主题去研究架构的更迭,怎么样让让这个架构变得更好,变得更加清晰流畅。如果产品的 unit test 做的非常不完善,那么是不是可以开一个话题,大家去讨论一下怎么样把 unit test能做得更好,想办法用你的个人的能力和影响力去说服管理者,再通过管理者自上而下的把这些话题慢慢的去展开,去优化。我觉得这是一些在工作中避免,大家逐渐形成一个搬砖文化的一些我的想法。

Q17 如何定义搬砖? 如何形成反搬砖的文化?

A:搬砖与否,因为其实我觉得很多公司的,程序员都会有这样的感慨,就是我的工作好像就是在搬砖,我的工作好像就是在被动处理产品经理的想法,他们不管最终这个产品本身会给技术带来多少的技术债,都要求必须要在规定的时间,以规定的方式来完成,这就会让大家产生一种搬砖的无力感。我觉得这是很多公司在文化上面形成的一种氛围,很多时候需要靠时间来慢慢去把它改变。

我讲一下对于 Tubi 来讲,我们有一个很重要的工程师文化,就是我们希望我们招的工程师,或者说我们的工程师本身要有极大的热情,想成为一个非常牛逼的工程师。怎么叫牛逼的工程师,我觉得这可能也是我们每一个技术人应该去追寻的方向,

这是第一个对我们所做的事情,不光知其然,还知其所以然。

第二个就是你要对你所做的,领域产品有强烈的主人翁的意识,ownership,就说这个东西好像就像我的孩子一样,我不知道大家有多少有孩子,你对你的孩子付出的努力跟对,别人家的孩子付出的努力,那是完全不是一个概念的。







请到「今天看啥」查看全文