2022年初,入职新公司后,花了3天时间,学习GoFrame框架,提前完成了开发任务,在项目复盘会上成了同事口中的"大佬"。
我是如何做到的呢?如何快速学习一门新语言呢?
我认为核心就三点:
第一:多动手
第二:不依赖教程的多动手
第三:带着问题的多动手
咱们具体讲讲
我在初学Go的时候,之前学习编程语言的经验告诉我:
入门阶段先不要给自己提出很多问题,也不要对自己要求过高。
第一阶段就是多动手
手撕官方文档,把文档中的知识点都手敲几遍,可以有不懂不理解的,这很正常,但是一定要手敲。
而且要尽可能多的手敲,盲敲,不看教程的敲代码。
第二阶段不依赖文档
自己通过思维导图或者更简单的方式,比如列出todolist,集中1小时的时间强迫自己独立完成知识点的复现。
具体的操作方式是这样的:
第一步:只列出知识点,最多写出实现思路,不要写代码。
第二步:关闭教程和文档,自己去实践,手敲实现一个个知识点和小的需求。
期间如果碰到了问题,也不要去看当时学习的参考文档,而是通过查看报错,或者IDE的错误提示去尝试自己解决问题。
第三阶段带着问题去学习
当我们可以不依赖教程就能实现需求之后,这时候才建议大家带着问题去学习,去思考。
对于初学者来说,如果入门的第一阶段就带着问题去思考,很容易钻进牛角尖;更可能因为搞不清楚某个知识点而烦躁沮丧,如果因为这些原因“被劝退”可就太亏了。
总结
所以,学习一定要分阶段进行。
每个阶段做每个阶段的事情,每个阶段有每个阶段关注的重点。
不要胡子眼睛一把抓,贪多嚼不烂。
初识GoFrame
下面再分享一下学GoFrame从小白到“大佬”的故事。
我在学习Go语言的时候,和大多数同学一样,是使用的Gin + gorm完成的第一个入门项目开发的。
2022年初,换工作后,新公司用的 GoFrame 框架,开始接触时也是一脸懵啊,因为公司项目紧,也没有时间像上面介绍的那样,能有充足的时间分三个阶段去学习,只能一边查前辈们写的代码,一边实现新的需求。
当时很好奇,公司为什么选择GoFrame框架。
问过同事才知道,原来公司之前全是PHPer,经过充分的调研发现:PHP转Go最合适的框架就是GoFrame。
我在查文档的时候还看到了这么一条评论:
好吧,因为我之前做了几年PHP,也非常喜欢Laravel框架,听到这个说法,还是有些窃喜的,感觉对于PHPer来说,学习GoFrame的成本应该不高。
但是,我看公司前辈的代码很头大,学习笔记做的很辛苦,效率也并不高。
如果你也有遇到类似的问题,我强烈建议你这么做:
以官方文档为重点,而不是前辈的代码,带着项目中的问题有针对性的查文档。同时再花时间从头到尾系统的阅读官方文档。
以我的经历举例:
当时刚入职,公司给了我两天的时间熟悉项目需求、已有代码和架构设计,从第三天就开始参与需求评审做项目了。
前两天看前辈的代码可以说是一脸懵,类似的需求,每个人的实现方式都不一样,团队内并没有统一的代码规范。
我也和老大吐槽过,老大给我的建议是:希望我能输出规范的代码,形成规范,之后让大家按照我的标准写。
好吧,压力和责任更大了,于是:
我白天积极的和同事确定不清楚的需求,沟通之前的实现细节,为什么这么写等等。
晚上回到家带着疑问去刷官方文档,刷完对应的知识点后整理笔记,这些笔记不怕细碎,只要是对实现需求有帮助,能提高我工作效率的都会记录。
todolist
记录todolist是个非常好的习惯,和大家重点分享一下:
- 比如,能复用的代码,方便我快速查找的代码,没有理解透彻的代码等等,我都会记录到笔记,并且记录成todolist,最后统一花时间逐个解决。
- 细碎的知识点如果有不理解的,我也会先放放,不用因为一两个不懂的知识点影响整体的学习进度。
- 我又花了大概两个晚上下班后的时间,熬夜刷文档,从头到尾刷官方文档,比较深刻的理解了框架的设计思想和最佳实践。
- 最后花了1个晚上的时间,把细碎的知识点给串起来,这样就有了整体的认识。
就这样,我花了大概三天的时间,带着问题系统的刷了官方文档,保质保量的完成了项目需求,分享了我觉得比较优雅的实现方式(其实就是通过官方文档学的)。
并且在提测之后,0 BUG。
后来项目复盘时,同事还说我是"大佬",一看就是很有经验的。
其实当时的自己并没有 GoFrame 的经验,并且对项目理解的也不够深入。时间太紧张啦~
只是找对了方法,并且愿意花时间去实践,刻意练习,去执行,而已。
总结一下
不管你是想快速学Go,还是想学其他新的语言;
不管你是有充足的时间去学习,还是像我学习GoFrame时一样时间紧张。
关键的问题都是找到合适的方法,不断去实践,多动手敲代码。
碰到理解不了的问题也不要懊恼沮丧,可以先列todolist,放到后面解决。
可能在你花了更多的时间,比较系统的学习之后,之前困扰你的问题都不是问题了。
所以:找到合适的方法,每个阶段有每个阶段的学习重点。多动手,刻意练习,坚持实践。才是快速学习,从小白到"大佬"的王道。