思特沃克学院学习方法总结
今年参加的ThoughtWorks暑期特训,我觉得对我自己而言,改变与收获最大的并不是说我学到了什么技术,做了什么项目,而是我在ThoughtWorks学到的学习方法,学到的分析问题的思路。
pipeline(管道图)
刚去参加培训的前一个礼拜,培训管理老师就通知我们每个人要准备一个铅笔与橡皮,我当时还纳闷,我们是来培训编程的,难道还要学习画图?结果我来了之后发现,我想的是对的,确实是来学习画图的!
我们所学习画的这种图是名叫Pipeline Tasking(管道思维图)
这里边每一个方块代表了代码中的一个模块,这里你可以理解为就是一个个函数,这些函数之间的关系就是上一个函数的输出就是下一个函数的输入,仅此而已,这些函数之间没有什么逻辑联系。然后在画这张图时,还需要在每一个方块的下边写出其对应的输入与输出都是什么,变量命名,变量类型,还有模块命名这些都要写清楚。这种方法讲究的就是我们对程序的拆分,我们刚拿到一个问题,就应该对问题进行分析,然后思考其输入输出,类型等等,然后再开始动手去编写代码,编代码时完全按照自己图上边画的来写,而且编写完一个模块写相应的测试代码,这样就能很好地避免当代吗写完之后,结果出现问题了,然后在一点点的去找bug这样的问题,对我们的效率也是一种极大的提升。而且我发现使用这种方法来编写代码时自己的思路很清楚,不会说出现了逻辑思考混乱的情况。
Pipeline的另外几种画法:
Webstorm快捷键的使用
在培训期间老师想了很多的方法,让我们去使用webstorm的快捷键,刚开始我就想按键怎么可能比鼠标点击快呢?结果由于事实证明我的理解是错误的!因为我们的学习环境是基于Ubuntu的,一切的操作基本都可以使用命令行来完成,所以当你将命令行掌握的非常熟练的话,你在ubuntu下的开发效率是远远高于Windows的。
在学习webstorm的快捷键时,老师让我们每天早上抽签,说出签对应的快捷键,说不出来抄50遍…还有就是在编写代码时不允许使用鼠标、触摸板等等一系列方式来促使我们去使用快捷键,现在我对webstorm的快捷键很熟练了,自己就能感觉的到,在开发时,效率明显提高了很多。
日总结
从我刚去参加这个培训开始,老师就要求我们每天要写日总结,并且tw也邀请了很多这方面的专家来给我们session,让我们学会去写日总结。
你可能会问为什么要写总结,我只能说我刚开始是被老师逼得,到最后写总结就是自己生活的一部分,只要是我觉得有必要的事情,我做完之后都会去写总结,怎么说呢。。就是生命不息总结不止!
但是写总结还是有一定难度的,大部分人的总结都是记流水账,今天干了什么,遇到了什么等等就结束了。但是真正的总结是,你今天听到了什么,学到了什么,看到了什么,然后你遇到了什么问题,它对你有什么启发,联想到具体的某一件事情上去。所以写总结并不是让你只停留在记账的水准,而是应该由心而发,写出自己的感触,自己悟到了什么!(当然,我距离写好日总结还是很远啊!加油)。
Github
Github是现在很流行的一个代码管理组织、多人开发软件,它可以很好的将我们的代码管理起来,而且也可以让其他人来看你的代码,并且对你的代码提出问题,讨论问题。并且它对多人合作开发是很有帮助的,在git上边建立我们的组织,将组员都加进来,然后建立我们的项目,每个人都fork&clone一份,然后每次完成了自己要完成的任务,就push到自己fork的目录,然后再发送pullRequest到组织,这样大家就都可以看见你提交的代码,对你的代码进行审阅,提问,讨论,如果没有什么问题了,就将其merge到组织里边的项目里。
还有它可以自己检测出来文件之间的冲突,当你pullRequest时,发现git提示你不能merge,那么恭喜你,有冲突了!这时先更新自己本地代码的master分支(从组织里边更新(使用pull)),然后再去查看那一些文件冲突,修改之后,再去提交!
如果你的git使用非常好的话,那么这对你们团队来说,都是很好地消息,因为我们有了一个git专家啊!
小步提交
在我们开发时,有时会因为各种问题导致我们需要去花费大量的时间与精力去修改代码,例如:编写过程中快捷键使用出错,导致代码格式乱掉。这样真的是在浪费时间,所以为了解决这样的问题,我们应该去采用类似于git这样的工具来管理我们的代码,当我们这一块功能实现之后,没有什么问题之后,就commit一次,先不用push,在本地提交一次就好,git将会记住你的每一次提交时的代码,如果你由于不小心导致代码出问题,又找不到错误,这时你就可以很轻松的回到你的上一次提交,然后重新来编写新的代码,这样有一个前提就是:小步提交。意思是你应该在完成了一个小功能时就应该提交一次,不要等到将这一块整体写完再提交,如果你没有小步提交,那么其实你使用commit并没有什么太大的意义,因为,我舍不得删掉我刚写的这么多代码,从头再来!
Trello
Trello是一个看板工具,在里边可以建立自己的小组,将组员邀请进来,然后建立几张面板,然后大家可以提问,讨论。这种工具其实是将问题可视化的一个工具,确实不错!
Trello适用于自己的学习、团队的开发、问题的讨论、调研之类的都可以使用trello。
5W1H分析法
我现在还记得老师给我们说的一句话:你刚进入公司,不是要干什么大事情去,而是先学会如何在公司中生存!例如:你刚进入公司,公司直接将你分配到了一个你从来没有接触过的一个知识领域,那么你将如何才能完成你的任务呢?
这时你就需要一种快速学习的方法,"5W1H分析法"就是这样一种能满足你需要的方法。
5W1H指的是:what(为什么) when(什么时候) where(什么地点) who(什么人)why(为什么) How(怎么做)
在拿到一个新的问题时,先问自己W,一边问一边自己解答,等到你觉得没什么需要问的时候,那么再问自己H,怎么去做!
这是一种快速学习的方法,对于现阶段(学习)的我来说,这种方法是很适合我的一种方法!
对应于5W1H的快速学习的方法,还有一种深入学习的方法,叫5W,5个why,不过这种方法不太适合你去问别人,因为,你一直问别人为什么,我害怕你挨打。。。
Session
这种方法也是一种学习方法,组内快速学习的方法。
就先这些吧,等什么时候想起其他的再补充吧!