近期学习的感悟

年初制定了几项学习计划,其中之一包括Flutter框架的学习。其实从去年开始就了解过这个框架,当时看到嵌套了很多层的代码之后,一开始我是拒绝的,但还是“硬着头皮”一点点的去学习。没人逼我,完全是自发的。
接下来我将从以下几方面来阐述我的学习过程和感悟,并且本篇不会过多的阐述技术方面的内容,纯粹是为了记录下自己的心路历程和具体的行动。

发心

阳明先生说过: 身之主宰便是心,心之所发便是意,意之本体便是知,意之所在便是物。
做一件事情之前目的一定要明确,没有清晰的目标是很难把一件事情做成的,因为做的过程中会遇到很多困难,如果没有当初做这件事情的发心,很容易中途就放弃。
我学习Flutter的发心就是为了解决复杂业务场景下只要写一次,Android和iOS都能使用。其实简单的业务场景下两端都开发其实没什么,但是当页面和业务逻辑多而杂的时候,两端真的很难保持统一,哪怕做到统一了也要投入很多精力。
初期在了解了Flutter的实现原理和操作体验后就下定决心将它引入到项目中去。这就是我的发心,自始至终都没有变,中途遇到了很多困难在要放弃的时候是它让我坚持了下来。

格物致知、知行合一

当然我不会像王老先生一样真的去格竹子,这里引用大学里面的一段话: 欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知,致知在格物。
这句话的本意是:
想要修养自己的身心,就先要端正自己的心态,想要端正自己的心态,就先要证实自己的诚意,想要证实自己的诚意,就先要丰富自己的知识,丰富知识就在于深入研究事物的原理
我这里引用是为了说明学习一门技术方法很重要。

IT行业相较于其他行业变化很快,新技术层出不穷,快速学习新技术并运用到工作上是我们必须要掌握的技能。所以这就要求我们必须要掌握好学习的方法。约翰Z.森梅兹所著的《软技能:代码之外的生存指南》中介绍了“十步学习法”,我觉得很有用,这里我用我自己的理解概括下这十步,详细的解释可以去看原著。

第1步:了解全局

你要知道你所学习的主题的全局,需要对自己即将要学习的知识有一个宏观上的了解,如:你能从中学到什么?它的优势在哪里?它能解决什么样的实际问题?不要在这一步花费太多时间,只需要了解就行了。

第2步:确定范围

你要知道你到底要学习什么,也就是要学到什么程度。必须学习Flutter,我的目标就是学习基础页面的搭建,学习如何集成到现有的项目中。范围一定要清晰,因为我不可能短时间内将Flutter所有核心的知识都学会,所以确定学习的重点和学习的范围很重要。
我们可以将一个大的主题分解成几个小的主题,如学习Flutter可以分解为:

Ⅰ.Dart语法
Ⅱ.环境搭建
Ⅲ.基础控件
Ⅳ.跟原生交互
Ⅴ.http请求、存储、插件
Ⅵ.bloc
Ⅶ.高级进阶,如:Flutter是如何高效运行的,widget的绘制原理等
Ⅷ.运行打包
这样分解下来,然后根据具体的小主题再去实施会变得简单和清晰的多。另外在《软技能:代码之外的生存指南》这本书中作者特别指出,你可能会受到诱惑,为了学习该主题下的不同子主题,你可能会扩张你的学习范围而不够聚焦,但是请务必抵制住这个诱惑,尽可能地保持专注。你一次只能学一样东西。

第3步:定义目标

也就是你人为的“成功”的含义,你想要获得什么决定了你的成功标准是什么。比如我的目标是使用Flutter重写现有项目的一个模块然后集成到现有的项目中。目标很清晰,也能够很好的量化。只要这个模块能够成功的运行,性能上不会有什么影响,那我的目标就达成了。

第4步:寻找资源

你需要尽可能多的去寻找各种资源,不要拘泥于一篇文章,一本书。比如github上的开源项目,不得不说很多开源的项目真是个学习的好榜样,可以通过这些项目能学到很多优秀的架构思想、编码方式、流行的技术。各大博客平台也是学习新技术的好去处,这里汇集了作者对某一问题深刻的研究过程,也有对关键知识点的总结。当然还有官方网站,这是最权威的,也是最新的。

第5步:创建学习计划、第6步:筛选资源

学习计划也就是自己的学习路径,你可以参考官网文档给我们列出来的目录,就比如Flutter官网,它会告诉你环境的搭建、IDE的选择、如何创建项目、一步步写一个Demo。当然这些是教我们如何入门。
第4步你可能准备了很多的资料,准备看很多本书,很多篇博客,很多开源项目,如果你有半年甚至一年的时间或许你可以这么做,但我还是不建议,我们需要筛选资源,你需要精简这些资源,找出一些有代表性的,比如博客,你可以看一些行业专家写出来的文章,开源项目找一些Star数量多的等。

第7步:开始学习,浅尝辄止

这一步的关键是浅尝辄止,在学习过程中容易有个误区,你会很容易就失去自控力,你会就一个知识点去深入的学习,当然不能说这种做法不好,我们初期学习最重要的是了解。就比如我们下载一款新游戏,我当时在玩三国志11的时候先把教学任务全部做完然后再去玩历史剧本,其实这正是第7步中要做的事情。你只需要知道基本的用法就可以了。

第8步:动手操作,边玩边学

这一步完全由你来决定,你可以对照着官网的教程去学习,也可以跟着视频教程一步步的去做,这一步最重要的就是亲自操作和体验,做的过程中你会有各种疑问,带着疑问去google,去stackoverflow。

第9步:全面掌握,学以致用

第8步你会遇到很多问题都没有解决,这一步你需要深入的去了解深层次的原理,知其然还要知其所以然,你可以查阅你在第4步收集到的所有资源,可以把这些资源当成是字典,有困难就去查询,你要知道你并不孤独,很多人都曾有过跟你一样的困惑。

第10步:乐为人师,融汇贯通

我个人认为这一步非常重要,这一步是检验你是否“真正”掌握一门技术的关键,你在教别人的同时你会经过大量的思考和验证,因为你害怕把错误的知识传输给其他人。乐为人师可以有多重途径,如果开设博客写一些心得体会。加入群聊,在里面不仅可以问问题,还可以解答别人的问题。
“十步学习法”并非一个神奇的公式,能够让把你瞬间变得聪明伶俐,但这种方法可以将你的学习过程更为结构化,而不是漫无目的地一头扎进浩瀚的知识海洋之中。
写在最后,时代的步伐很快,不仅IT行业,其他行业变化也非常之快,互联网加速了整个世界各行各业的发展,我们身处这个时代既是机会也是挑战,我们需要不断的用新知识去包装自己。年轻的时候我们有精力去学习各种技术,年纪大点的时候我们可以用我们前期积累的经验去做一些更有意义的事情。可能有些人会说IT行业经验的价值很低,其实不然,你的思考问题的方式,解决问题的方法,行业的沉淀都是你的价值,这些都是日积月累后的结果。