掘金 AMA:听知乎专栏《V8 引擎》、LibrarySniffer 作者 -- justjavac 和你聊 V8 & 技术学习之法

栏目: IOS · Android · 发布时间: 8年前

内容简介:第八期沸点,掘金团队请来了知乎专栏《V8 引擎》、LibrarySniffer 作者 --justjavac 做了为期三天的我们在此精选了一些来自用户的提问及 justjavac 的回答。非常想系统学习一下 V8 引擎,但是老是看文章,总感觉少点什么,学的不深入,请教一下 justjavac 大大 V8 学习经验,怎么系统有效的去学习? 需要什么前置知识的

第八期沸点,掘金团队请来了知乎专栏《V8 引擎》、LibrarySniffer 作者 --justjavac 做了为期三天的 Ask Me Anything (AMA) 活动(已结束)。

我们在此精选了一些来自用户的提问及 justjavac 的回答。

关于 justjavac

掘金 AMA:听知乎专栏《V8 引擎》、LibrarySniffer 作者 -- justjavac 和你聊 V8 & 技术学习之法

社区小伙伴提问

如何系统学习一下 V8 引擎? ─ @YibuMe

非常想系统学习一下 V8 引擎,但是老是看文章,总感觉少点什么,学的不深入,请教一下 justjavac 大大 V8 学习经验,怎么系统有效的去学习? 需要什么前置知识的

我学的也不系统,九牛一毛而已。V8 确实太复杂了,而且里面的奇技淫巧太多了,如果仅仅是想知道 es 规范是如何被引擎实现的,那不如是看 jsc。但毕竟 V8 是 js 引擎界的一匹黑马,吸引着很多人来研究。

  1. 官博 v8project.blogspot.com/
  2. youbute 视频,我整理了一个 V8 相关的播放列表 www.youtube.com/playlist?li…
  3. twitter
  4. Google I/O 或 Developer 的 V8 介绍
  5. 博客:
  1. 源码

你对 V8 的贡献及如何看待他人对你的评价? ─ @doodlewind

  1. 请问您是否是 V8 的贡献 / 维护者?如果是,应如何参与(非源码解析、文档翻译与新闻搬运等)non-trivial 的社区开发?
  2. 请问您如何看待尤雨溪老师对您「首席 markdown 程序员」的评价?
  3. 请问您是否认为您的技术产出与社区的知名度相匹配?

看了所有的问题,你的最有意思,第一个回答你吧。

  1. 我不是 V8 的贡献 / 维护者,我只是一个 V8 的业余爱好者,喜欢把自己的空闲时间拿出来研究一下 V8/Chrome/Node,也喜欢把自己的心得写成文章分析给大家,只是做了一些 trivial 工作。 参与一个大型项目,可以从提 bug 和修 bug 做起,这也是很多人参与开源项目的入手点,因为大部分 further 都是核心开发人员在维护,不过也得看运气,我曾经给 Babel 提交过些 bug,随后贺老修复了 bug 并提交了 pr,但是官方迟迟没有合并,最后核心团队直接在 bebel 7 的重构代码里面修复了。 注意开源礼节,比如仔细阅读 CODE_OF_CONDUCT.md 和CONTRIBUTING.md。
  1. 尤大的一句调侃,其实我们在微信里面,不乏有比这更过分的调侃。而这个称号也是我最初自嘲时发明的,这一点很多人都知道,根本原因是我在 github 的一篇 markdown 获得了国内的 star 数最高榜。之前有人嘲笑「首席 webpack 配置工程师」时,我回了一句,我还是「首席 markdown 程序员」呢,后来就一发不可收拾,被人做成了表情包。
  1. 第三个问题很难评定。"但行好事,莫问前程"吧。关于"技术产出",你大概指的是狭隘的 github 上的开源项目吧,那我的产出确实不多。关于"社区的知名度",我没有觉得我的知名度有多么高,如果你有这种错觉,可能是咱俩的社区圈子重合度太高了。我混的社区不多,知名度大多有早期红利在里面吧,如果简单的评价下:
  • 掘金社区:我的产出 > 知名度,我是掘金的早期用户,到底多早呢,比掘金还早。看到我这次的 AMA 照片了吗,这是我多年前来掘金是照的,那时候还叫稀土,公司都还没有成立,而掘金上线后,文章都是由联合编辑来发表,我是早期的联合编辑之一。我在掘金有什么知名度吗,没有。
  • iteye:我混的第一个社区,当时也只是做做笔记而已。10 年时间写了 600 多篇文章,总访问量近 500 万次,我觉得我的文章应该帮助了不少人。至于社区知名度,我不知道那是啥。只知道我朋友被异乡好居诬陷时,我写了篇文章,然后给 iteye 创始人范凯发了条信息,问他能不能帮忙转发一下,他回复我:"没问题。你这个 id 我看这特别眼熟"

我在知乎回答了 500 个问题,在 sf 回答 1000 个问题,我私以为我对社区的贡献不小,即使在社区获得了某些所谓的知名度,不也是很合理吗。

为什么不建议做外包? ─ @®E·L·A·N©

刚看了评论 为什么不建议做外包?是因为对于技术要求比较低吗?

这么跟你说吧,有很多 5 年以上经验的开发者,其实呢,他们只有半年经验,然后重复了 5 年。在我的招聘要求中,不招 2 种人:一种是培训机构的,另一种是一直做外包的。

是因为他们对技术要求底吗?是的,而且一年做几十个项目,大多也都是同一个技术用 N 年。为什么呢,稳定,成本低。有 code review 吗?没有。有重构吗?没有。有 UT 吗?没有。。。

对比一下产品和外包的开发流程。当最终开发完上线后,意味着项目(外包)结束了,可以验收交付了。而产品呢,当最终上线后,才是刚刚开始。不停的反馈、迭代、打磨、……把一个十几人用的软件做到几万人,几十万,几百万,每个阶段都是不同的技术,不同的架构。

做完一个能交付的软件 vs 持续不断的打磨一个软件

®E·L·A·N©:

1.虽然外包公司很大一部分像您说得那样,可是并不是做外包的公司依然没有像样子的code review,项目虽然是迭代了,可是每次的迭代都是草草上线,并不会给你太多的时间去怎么优化代码 怎么codereview的 而且 来北京后 我发现很大一部分公司都这样 不过只是我从面试上来推测得出的。所有的公司产品都是业务导向的。具体代码层面那一块就看技术领导的技术能力 方向 责任了。

万事没有绝对,只是“半年经验,然后重复了 5 年”在外包型公司的比重很高而已。即使做产品,也不一定会持续优化代码,大部分公司还只是注重最终结果,也就是最终的产品质量,而不管代码质量和开发流程。

即使我带过的团队,做过的产品,也一样。我觉得产品 v1.0, v2.0 没有必要做 review,也没有必要重构,这个阶段的产品,目标是“能用”,能够快速投入市场。如果被市场认可了,再持续迭代优化,达到第二个目标“好用”。在这个过程中 codebase 也越来越大,越来越复杂,也慢慢开始注重代码的质量和开发的流程。

外包也分很多种,也不能一棒子打死。有些是长期型的服务外包,项目周期是几年甚至不定期。但是大多数外包公司的项目都是中短期的,项目周期是1-3个月,甚至更短,包括但不限于公司官网建设、企业 app、小程序、商城、等等。还有一些是做某个行业的项目,比如餐饮业。就是接各种餐饮业的项目,具体开发流程就不用细说了,基本都是套模板再加一些定制化开发。和流水线上的操作工没有啥区别。

诱人的地方就是面试简单,容易进,这也成为了很多应届毕业生的选择。薪资方面,通常每个项目做完都会有或多或少的项目奖金。我有一个高中同学,比我晚毕业一年,当时我工资只有 3k 的时候他就已经7-8k了(这个对比可能有些不公平,他在北京,我在天津),后来我的工资达到 20K+ 时,他也终于突破 10K 了。后来整个外包行业不景气,他们公司的业务也不行了。好在他自学了 iOS 编程,跳槽去了一家手游公司。

如何阅读有些枯燥的技术书籍? ─ @人民币玩家

阅读一些逐渐深入的书籍,如何有效处理长篇大论枯燥难寻。

停下来,思考一下,玩会游戏,然后继续。给自己定个目标,一次读 20-30 分钟,硬着头皮读,然后思考 10 分钟。我用这种方式,花了3个月的时间并行读完了爱因斯坦的《相对论》和 Harari 的《人类简史》,然后整理了 200 多页的笔记和草稿。

也有一部分原因是生活和工作压力太多了,让很多人有了焦虑感。当读书读不进去时,就增增加了自己的挫败感,最终形成的恶性循环。尤其是随着年龄的增加,接受新事物新观念新知识也变得越来越难。

我上大学时,从图书馆借了 2 本 Martin Fowler 的《重构》,一本英文原版,一本中文翻译版。两本书对照着看,大概用了不到一个月的时间吧,就把英文版读完了。

工作后,就只能利用每天的早起时间读书了。再后来我和老婆定了一个家庭读书日,每月选出一个周末,这天一起看书 4 个小时以上。如果再加上选书、布置环境、营造氛围什么的,基本上得耗费一天的时间。

阅读是一种习惯,坚持下来就行

再补充一句,其实仪式感也很重要,突然就觉得读书变得很神圣了

再再补充一句,找个女朋友,一起学习更有动力

如何平衡工作和学习?─ @希望明天遇到你

我进入编程完全因为兴趣,相对别人而言,很没有天赋,但是一直在坚持,现在的公司属于成长期,无法锻炼技术,想从新捋一遍前端技术,又没有时间,请问大神你有什么好的建议吗

“公司属于成长期”我是不是可以理解为公司的开发流程各种不规范,没有提升的空间了。

我经过了好几家成长期的小公司,也在大公司带过百人以上的团队。其实规范不规范完全不在于公司的规模。而且从不规范到规范的过程也是一种成长。

而你说的"又没有时间",这就完全是借口了。只要你有时间刷微博朋友圈,就有时间学习。只要你有时间刷掘金,就有时间学习。只要你有时间打游戏,就有时间学习。每天两个小时,挤挤就出来了。

你可能还年轻吧,我像你这个岁数时,有的是时间。如今有了家庭,有了孩子,时间突然就少了很多,但是晚上依然有时间打打游戏,刷刷知乎,我一般都是早上 5 点半起床读读书,写写代码,写写文章。

如果老板告诉你把 xxxx 学完,给你涨薪2W,我猜你马上就有时间学习了。说白了,还是动力不够。

从头学一遍前端技术,这个没有必要,你可以重新学,但是没有必要从头学。还是基于你目前学习的技术,继续学习相关的技术吧。或者之前没有深入学习的知识点,现在再进行深入学习。

前端只是一小部分而已。先做一名合格的程序员,然后才是合格的前端程序员。有很多技能是不限于语言和平台的。

如何均衡 React 和 Node 技术栈?─ @佳得乐配枸杞

jjc老师好 我的技术栈是Node.js 和 React各一半。 如果接下来继续将时间分给两个技术栈一家一半, 感觉哪边都没法做出点名堂。 希望能获得您的一些建议,谢谢。

并不需要放弃一半,只是把其中的主要精力投入到一家,而次要精力投入到另一家而已。有侧重点的学。即使那些所谓的全栈工程师,也都有侧重点,比如狼叔,号称Nodejs全栈,但是他的技术栈的侧重点则在后端。

什么是全栈,就是不要给自己设限,从一个技术点辐射出其他相关的技术点,然后不断精进,这就是全栈。那些个既会react,又会vue,还会nodejs,还会MySQL,还会 python 的,……是全栈吗,不是,那是打杂的。所有技术都学个皮毛,那学的再多又有什么用呢。

如果你定位为后端 nodejs,那么就学习 js 语法,nodejs,平台,类库,框架;然后是内存管理、http协议,缓存策略;然后负载均衡,高并发,高可用;再慢慢一层一层的深入,技术是一个由点到网的过程,学的越多,就会发现自己欠缺的越多。

前期可以追求广度,都多多几门框架或者技术。但是后期一定要追求深度,把一个技术栈和相关的周边技术学精学透,不要永远停留在"会用"的水平。

本期 AMA 社区小伙伴提了许多实用问题,感谢 justjavac 认真地为掘金小伙伴解答了不少疑问。浏览更多的问答,可以到 justjavac 的 AMA 进行阅读和讨论。


以上所述就是小编给大家介绍的《掘金 AMA:听知乎专栏《V8 引擎》、LibrarySniffer 作者 -- justjavac 和你聊 V8 & 技术学习之法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Domain-Driven Design

Domain-Driven Design

Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99

"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具