思否有约丨@卡颂:我是一名魔术师,前端只是爱好

芒果果 2020-11-13 13:46:57
前端 一名 有约 魔术师 魔术


卡颂

访谈嘉宾:@卡颂
访谈编辑:芒果果

项目流产的原因有很多种,但涉及国家政变的你见过吗?

卡颂差点成为总统的御用项目中的一员,却突然被通知对方军方发动政变,总统内阁被推翻,项目取消了……

他的生活充满了戏剧性,自从孩提时代偶然看了一场街头魔术表演,用 100 元向大师“求得”秘籍后,他就彻底沉迷到了魔术的世界之中。

多年后,长大的卡颂说:“魔术和做技术的共同点就是,基本功很重要,要从头学,不要一下子翻到最后学最难的。”

Q:先向大家介绍一下自己吧。

我是卡颂,是一名魔术师、机械工程师、前端工程师。同时也对产品、运营、自媒体感兴趣,喜欢用兴趣驱动工作。

很多朋友认识我是因为我写的《React技术揭秘》。React 很有趣,你觉得呢?

Q:从什么时候开始学习 React 源码的?

今年年初疫情期间在家无聊的时候突然想探究下最流行的前端框架之一是如何运行的,就开始啃源码。

Q:疫情期间开始学习 React 源码,这个过程中有遇到什么自己难以解决的难题么?

一个字形容,难。

两个字形容,懵逼。

三个字形容,看不懂。

这里的难并不是”看不懂代码想表达什么“,而是“不懂这段代码究竟是干嘛的”。毕竟每段代码都是为了整个架构的运行服务的。

解决办法很朴素:我把React核心团队成员的推、油管、Gayhub都关注了,把他们关于React理念层面的探讨都看过一遍后。

有了整体理念层面的概念,再去看具体实现就轻松很多了。

Q:啃源码对一个程序员来说有什么帮助?

小时候大家都鄙视抄作业的同学。啃源码就像把学霸的作业摆在你面前,就看你看不看得懂,抄不抄的下来了。

抄了学霸的作业,下次遇到类似题型也能照猫画虎模仿学霸的解法,不是么?

Q:您是怎么开始对魔术感兴趣的?魔术和做技术有什么共通之处吗?

遥想那还是孩提时代,逛街时被街头魔术吸引。

待表演结束人群散去后,表演者掏出一本泛黄的《魔术大全》,和我吹嘘学完此书后就能掌握魔法的奥义。

心动的我花100大洋求得秘籍。

在他离开之前还不忘教诲我:魔术基本功很重要,要从头学,不要一下就翻到最后学最难的。

直到2年后,终于练到最后一页的我发现,上面写着“标价:19元”。

魔术和做技术的共同点就是:基本功很重要,要从头学,不要一下就翻到最后学最难的(认真脸)。

image

卡颂一直在尝试新鲜事物,他能从小数十年如一日的对魔术倾注热情也是因为这件事一直在给他带来不同的惊喜。就像他的职业之路一样,从国企员工到程序员,他的工资直接翻了 6 倍。

Q:什么时候开始接触编程的,契机是什么?

本科毕业后在国企从事“机械工程师”的工作,上班太无聊,又不能玩游戏。相信每个男生从小都有自己做一个游戏的理想,于是上班摸鱼学了编程,自己写了一个游戏引擎,开发了射击游戏自己玩。

既然编程这么好玩,当程序员天天能编程还有工资拿,为什么不呢?于是就转行了。

PS:第一份前端工作的工资是我之前在国企工资的6倍以上,真是万万没想到。

Q:工作中有哪个瞬间让你“怀疑人生”?

在上一份工作中,当时有个项目甲方是莱索托王国的总统。他的内阁打算倾举国之力建造一座水力发电站,于是找到我当时的公司。

公司及市政府以极高的规格接待了他们,项目洽谈的也很顺利。然而在此期间,莱索托军方发动政变,总统内阁被推翻了,总统也连夜逃往南非。

当公司通知我们这个项目取消时,我的内心是极度懵逼的。

从国企员工到程序员再到讲师,卡颂一直在寻找自己喜欢的东西。比如魔术,比如编程,再比如拍视频。

Q:从事技术工作和给学生讲课有哪些不同,这个转变大么?是怎么完成的?

两者有很大相似性 —— 都是尽快实现“最小可用品”。

日常开发我会注意在保持“扩展性”前提下不过度封装,实现功能的“最小可用品”。授课时也是如此。

就React源码课程来说,每一章只关注“源码运行流程”的一个功能点,屏蔽其他功能的影响。

举个例子,别的课程讲解“this.setState的完整流程”恐怕需要20分钟不止。而在我这里,这一节只花了2分钟,而且很好懂。

Q:您是什么时候开始自己做视频的呢?这个方式有什么不同?

我初中就开始在街头变魔术然后录视频了。如果说前端的视频教学,这半年做的比较多。

视频相比文字信息密度更大,更容易形成个人风格。就像公众号的slogan:再小的个体,也有自己的品牌。

Q:有什么个人的特别的工作习惯么?

将长期目标想象成游戏里的技能树,不断拆解,最终落实到每日TODO。

拖延症的根源在于目标与现实的巨大鸿沟使人心生畏惧。每天给 TODO 打勾可以及时提供正反馈,就像打游戏升级一样。

Q:如果可以重新选择是否还会选择这个职业 ?

我选择职业的标准是:有趣、认可个人努力、重视创意、高回报。

严格的说,这已经是我重新选择后的职业了。如果再做选择,并不是因为程序员不好,而是因为我发现了更有趣的职业,比如 UP主 ?

Q:对编程初学者和怀抱梦想的年轻人有什么建议?

警惕落入负循环的陷阱:

加班 —> 没有时间学习 —> 水平无法提高 —> 无法得到更好的offer —> 加班

Q:如何看待国内社区的环境和氛围?

可能很多同学诟病社区充斥着面试题文章,但这是行业进入成熟期的必然结果。我相信十年前通讯行业的社区也是同样的氛围。

我相信还有很多行业卷得比互联网行业更严重(比如土木),但这些行业在网上的声量没有互联网行业高。所以大家觉得互联网行业最内卷。

从这个角度看,国内技术社区的氛围可以描述为 —— 热火朝天。


小编有话说:

卡颂不能接受自己的生活变得“无趣”,所以他从小开始钻研魔术,在疫情期间自己研究源码。为了让自己的工作更有趣,也让通过他学习  React 源码的人觉得更有趣,他又开始拍视频,现在在 b 站已经有了不少忠实粉丝。

卡颂每天都在打怪升级的路上,无论是破解一个新的魔术,还是攻克一个技术难题,又或者是找到了一个更好的授课方式。

他就是自己生活里的大魔术师,和这样的老师学习应该很快乐吧。

segmentfault 公众号

版权声明
本文为[芒果果]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000038158578

  1. [front end -- JavaScript] knowledge point (IV) -- memory leakage in the project (I)
  2. This mechanism in JS
  3. Vue 3.0 source code learning 1 --- rendering process of components
  4. Learning the realization of canvas and simple drawing
  5. gin里获取http请求过来的参数
  6. vue3的新特性
  7. Get the parameters from HTTP request in gin
  8. New features of vue3
  9. vue-cli 引入腾讯地图(最新 api,rocketmq原理面试
  10. Vue 学习笔记(3,免费Java高级工程师学习资源
  11. Vue 学习笔记(2,Java编程视频教程
  12. Vue cli introduces Tencent maps (the latest API, rocketmq)
  13. Vue learning notes (3, free Java senior engineer learning resources)
  14. Vue learning notes (2, Java programming video tutorial)
  15. 【Vue】—props属性
  16. 【Vue】—创建组件
  17. [Vue] - props attribute
  18. [Vue] - create component
  19. 浅谈vue响应式原理及发布订阅模式和观察者模式
  20. On Vue responsive principle, publish subscribe mode and observer mode
  21. 浅谈vue响应式原理及发布订阅模式和观察者模式
  22. On Vue responsive principle, publish subscribe mode and observer mode
  23. Xiaobai can understand it. It only takes 4 steps to solve the problem of Vue keep alive cache component
  24. Publish, subscribe and observer of design patterns
  25. Summary of common content added in ES6 + (II)
  26. No.8 Vue element admin learning (III) vuex learning and login method analysis
  27. Write a mini webpack project construction tool
  28. Shopping cart (front-end static page preparation)
  29. Introduction to the fluent platform
  30. Webpack5 cache
  31. The difference between drop-down box select option and datalist
  32. CSS review (III)
  33. Node.js学习笔记【七】
  34. Node.js learning notes [VII]
  35. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  36. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  37. 【JQuery框架,Java编程教程视频下载
  38. [jQuery framework, Java programming tutorial video download
  39. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  40. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  41. 【Vue,阿里P8大佬亲自教你
  42. 【Vue基础知识总结 5,字节跳动算法工程师面试经验
  43. [Vue, Ali P8 teaches you personally
  44. [Vue basic knowledge summary 5. Interview experience of byte beating Algorithm Engineer
  45. 【问题记录】- 谷歌浏览器 Html生成PDF
  46. [problem record] - PDF generated by Google browser HTML
  47. 【问题记录】- 谷歌浏览器 Html生成PDF
  48. [problem record] - PDF generated by Google browser HTML
  49. 【JavaScript】查漏补缺 —数组中reduce()方法
  50. [JavaScript] leak checking and defect filling - reduce() method in array
  51. 【重识 HTML (3),350道Java面试真题分享
  52. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  53. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  54. [re recognize HTML (3) and share 350 real Java interview questions
  55. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  56. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  57. 【重识 HTML ,nginx面试题阿里
  58. 【重识 HTML (4),ELK原来这么简单
  59. [re recognize HTML, nginx interview questions]
  60. [re recognize HTML (4). Elk is so simple