全栈工程师成长记

编程重新定义人生

Beyond Coding —— 我在新生大学全栈工程师训练营收获成长

开宗明义,参加新生大学全栈工程师训练营(我习惯简称为全栈班)是目前为止我所有人生重大决策中最正确的一次选择——两个月的高强度训练,大量关于编程和非编程的概念、知识、价值观使我获得了前所未有的高速成长,而我的人生旅程新篇章也由此开启。


全栈班如何使我 Beyond Coding ?

新生大学全栈工程师训练营由李笑来老师发起、郑伊廷(Xdite)老师主讲,但课程内容可不止 Ruby on Rails 快速进阶这么简单,这里面包含了Xdite 老师所擅长的三个知识领域: Ruby on Rails + 敏捷项目管理 + Growth Hack 。

这是一次成长蜕变之旅,也是我对《新生——七年就是一辈子》一次的践行——持续主动的升级自己的操作系统。我从《Beyond Feeling》的书名引申出“ Beyond Coding ”这个概念,并将这个概念总结为全栈班的一个核心理念——教与学都围绕着它进行,它可以很好的解释我在编程的世界里从零基础到可以和团队合作完成真实项目的过程和原理。

在我看来,Beyond Coding 就是跳出常见的编程学习方法和思维——大多数是低效甚至无效的,然后用全新的角度去理解编程的意义、用正确的方法学习编程以及更多与之相关的东西。这些会持续提升思考能力和个人进步空间的东西是无法粗暴的用金钱直接买到的——第一是必须要有很厉害的老师用正确的方法传授给你,第二是你必须主动进入到接收的频率才能捕获 。

1. 编程只占 20%

开学第一天,笑来老师就告诉大家一个一开始无法理解到最后慢慢领悟的结论:编程只占 20% 。

原因在于,编程对于新手而言是一道看上去非常高的门槛(实际上并不高)以至于无法看到门后的世界,事实却是一旦跨过这个门槛之后,编程本身就不再那么重要,而编程之外的 80% ——产品要实现什么价值,它的商业模式如何……?快速的把代码写好,然后花更多的时间去思考更多的这类问题。

2. 最小必要知识

很多人一想到全栈工程师,就觉得这人应该是十八般武艺样样精通的高手,但那其实是多年之后的成长结果。2/8 定律对于全栈的意义即 20% 的核心知识覆盖了 80% 的应用范畴,在最开始的阶段,你需要的只是运用最少必要知识让产品可以运行得起来就 ok 了——重要的是“用”,把学到的东西用起来,然后再去不断精进。

3. 编程的学习方法

a. 拼图理论

编程学习其实是有套路可循的,不要高估编程的难度然后把自己吓跑,也不要用线性增长的思维去想象成长的路径——否则遇到多几个挫折就觉得自己不进步了。记住类比影响思维,这一点很重要,错误的类比会使自己始终不得要领。

学习编程的方法就像拼图,是一个将不同的知识点逐渐拼凑完整的过程,所以最高效的方法就是先把外面的框拼好——对于 Rails 学习来说 Rails101 就是画框,好让自己知道应该在什么样的范围之内进行活动。

b. 肌肉记忆

在全栈班开始之前的课前作业里,Xdite 老师要求我们把 Rails101 重复练习至少3次,如果能重复到5次会更好。起初我无法理解这其中的用意,我只知道不要试着去问为什么,先照着老师说的去做就好了。

在之后的课程里我才逐渐明白,原来人能学会新的知识不是靠思考,而是记忆。学习编程的过程中要放下自己的傲慢,反复跟着练习去做。千万不要在一开始就试图去理解,因为你无法用未知解释未知,并且,现实生活中没有多少能跟编程概念互相匹配的经验。经过不断重复的练习,把最基本的东西练成肌肉记忆,进而大脑才有精力去捕捉到肌肉记忆之外的更多细节,这时很多关键点已经不言自明,而如果还有不明白的,再去找解答也变得容易理解。

c. 正向回馈

没有多少人会喜欢挫折感,因此新手学编程需要不断的做出能够动得起来的程序,这会比较容易获得成就感——还可以抵消因为遇到无数个 Bug 而产生的挫折感。在全栈班里,不论是个人项目还是团队合作,每个阶段做出的项目都可以获得极大的成就感——且持续增强。

如今回想两个月前第一次做的 First-App ,那个页面简单得不忍直视,但当时的心情却是超激动的,因为它已经可以新增、删除文章了,并且是写在数据库里的!看着终端机里不断滚动的 log ,一种我是天才的感觉油然而生。很难想象,如果没有一步一步的成果激励,我如何能够快速成长——到现在已经有能力在团队里合作功能更复杂的真实项目。

4. 编程之外

a. 敏捷项目管理

经历了课程前 3 个星期的个人独立开发项目之后,我们在之后的时间里进行产品小组合作开发。在敏捷项目管理上面,包括但不仅限于使用 User Story 快速筛选功能实现的优先级;After Action Review 发现问题、提出改进建议并执行以改善结果;每天进行 Startup meeting 快速总结前一天的进展并分配当天任务;用 Github 管理代码以及 merge 功能分支;用 Tower(或其他项目管理工具)分配、管理任务进度。

b. Growth Hack

项目管理在于提高工作效率、确保产品如期交付,但对业绩增长却不是直接正相关。因此根据项目进度 Xdite 老师指导我们该引入 Growth Hack 来改善产品,包括使用 Landing Page 提高转化率,用 Onboarding 提高留存率,用 NPS 提高转介率等。

c. 持续成长

比你优秀的人比你还努力是什么样的体验?Xdite 老师在 Rails 开发、敏捷专案管理、Growth Hack 等方面的技术水平和教学能力都已经非常优秀,但她从来不曾停下自己的进步。每周她都会从网上买来10~30本某个领域的书,并用自己的中文速读能力去快速吸收,然后每周(甚至只隔个两三天)就兴奋的跟大家分享她学到的新知识,这种拼劲的的确确让我们感到震撼。

此外,班上来自各行各业的同学们也都非常的积极向上,在这里没人愿意有一丝怠慢——因为不进步就是在浪费自己的生命,这些的良好心态和行事风格对于个人的持续成长也是非常有帮助的。


我为什么选择全栈班?

在此之前我知道自己的很多想法可以通过编程实现或者实现的过程里少不了编程的那一部分,但却不知道如何开始。就在 6 月 29 日我还有一个可以通过编程解决的问题想得特别强烈,无巧不成书,第二天早上就看到了学习学习再学习公众号的全栈班招生公告,看完推送我就坐不住了,到现在我都还能想起当时的感受——我内心告诉自己,这个课一定要上!

1. 选择比努力更重要

2004 年前后我曾有过一段自学编程的经历,由于当时遇到了无法突破的瓶颈身边又无人指导,最后只好放弃。10 多年来的经历让我对自己个人成长多了一些领悟:如果想要在一个领域从零做起并逐步做到优秀,有一个经验很好的前辈指导一定是获得进步的最佳方式——比如我很少看到有几个运动员是自学成才的。

在这样的前提下,选择比努力重要的原因是,找名师指导对我而言是比较靠谱的做法。因为如果我自己捣鼓的话,也许能成功,但也有可能第一步“努力”的方向就直接搞错了——这种大块时间被浪费的事情要尽量避免。

2. 相信的力量

比较了解笑来老师的人都知道,他要经过长期思考并践行之后才会把总结到的概念分享给大家,他坚信先做到了再说。因此当笑来说“一年可以成为全栈工程师”,我就惊叹自己之前对编程难度的错误高估。而 Xdite 老师以知名 Rails 教练的身份补充说不用一年,两个月就可以了!有这么高的学习效率,为什么我要浪费自己宝贵的生命去做无用功的“努力”?为什么要做那些用战术上的勤奋掩盖战略上的懒惰的事情?既然我想要学编程,既然我想升级自己的操作系统,那我只需坚定的相信自己的选择,相信自己有能力比昨天更进一步,然后笃定的去践行就好了。


迈出这一步

我曾经错误的把“学习”和“上课”联系在一起,错误的以为从离开学校之后就是”脱离苦海“——终于不再需要”学习“了。后来我才逐渐明白,离开学校,才是“学习”的真正开始——象牙塔之外的世界有太多需要持续精进的地方。

两个月的全栈班课程,带我迈入了一个广阔的编程世界。随着课程的结束,属于我的探索之旅却由此正式开始,我想对这个世界说一声:嘿,我来了~