Category Archives: Refection

从R型到L型思维的学习方法

今天下午和同事们一起去踢了场球,惨败而归。现在正在看《程序员的思维修炼》一书,正好读到其中“促成R型到L型转换”一节,忽然想起来踢球这件事。书中这一节中讲了个故事:
作者(Andy Hunt)第一次去攀岩时,教练在确定每个人的装备都没有问题后,让这些新人们开始攀岩。于是这些人就在岩石上胡乱爬了一会。半小时后,教练出现,开始讲课。因为之前已经有半小时的经验,所有教练讲解的更有意义。首先让我们经历了多感官的,亲身实践的情境,帮助我们有了初步了解。然后他再进行一次传统的、充满针对性的授课。

上面故事中作者自由攀岩用的是R型思维,因为它完全利用直觉,感觉去做事,而回到传统的授课时,这是L型 思维,在教如何攀岩时,会讲到各种情况下如何处理,它包含分析,逻辑判断等等。在这R->L的思维方式转变中,可以看到L型思维和R型思维在解决问题时是相辅相成的。

回到开篇的话题,我的踢球生涯始于高中,开始是一群同学拿个球就开始乱踢一通。完全按照自己的直觉踢,很少思考过具体应该怎么踢,也没有人教过应该怎么踢。在学习踢球这件事情上,我采用的是完全R型方式处理,现在来看,效果并不好,因为我踢得挺臭的。最近踢球时,才开始思考,在球场上,应该如何处理球,而不是跟球着跑。已经有通过L型思维来提高的欲望了,无奈现在没时间去学了。

因为这些,想起了另外一个话题,最近在学习C++,目前在看《Essential C++》一书,边看书时也把书中的一些代码自己写一遍,总体来讲,那些自己输入过的代码的知识点,记得比较深刻。看来《程序员的思维修炼》书中介绍的R型到L型思维方式的不断转换应用,是提高学习效率的重要方法。也无怪乎徐宥总结出自己敲完书中所有代码和章亦春的“眼到,手到,心到的抄书大法”都那么有效。

抬头看路

转眼毕业就3年了,这3年来自己在不断地进步,只是进步的速度不尽如人意。最近经常在思考进步慢的原因,想来或许与自己不够专注,在各个方面挥洒自己的精力有关。简言之,即:总顾着把玩路上遇到的各种有趣的东西,而没有找到一条清晰的路。

这三年来,花了将近一年的时间学Oracle,一度准备去考OCA & OCP,这条路最终没有走下去。不过在研究Oracle时学到的知识仍然让我受益良多。在公司看那些读写分离的方案中,都透露着Oracle系统架构的设计思想。

一度对各种语言感兴趣,先后学了Python,Groovy等动态语言。无奈没有明确的目标和学习计划,工作中不使用这些语言,所以没有更深入去了解。甚至Javascript的许多东西也都记不太清。

这三年对Linux极度感兴趣,自己在家折腾了将近3年的Ubuntu,工作中也不断地熟悉着Linux的各种软件及排错办法。这段经历让我受益颇丰,慢慢明白,并接受了Unix哲学,并试图在自己的工作中实践这些哲学。今年决定买Mac时,很看重的一点就是Mac也是一种Unix。

《程序员修炼之道》上讲,程序员需要定期为自己的知识资产投资。基于自身的情况和书中的建议,设定今年的目标如下:

1. 学习Python,学会应用Python解决目前遇到的问题。

2.阅读完《程序员修炼之道》,《重构》等书,找时间重读《代码大全》

3.了解业界最新的构架方向,NoSQL,Hadoop等,多做实验。

4. 背完TOEFL单词

高效会议需要明确的七个问题

如何让会议高效?
工作中,总是要参加许多各式各样的会,而且经常陷入“会议拉锯战”中。如何让会议变得高效,许多人都想了解。之前几天,许多人推荐的“控制22分钟的会议时间”一文提供了很好的建议。昨天在看余世维 “如何沟通”的一个培训,其中也提到了开会的一些问题。余世维提出提高会议的方法,和之前看过的一篇文章有许多相似的地方,其中也有些不同。 下面是我边看视频,边整理出的如何高效开会的一些建议。
–  split –
高效会议需要明确的七个问题:
1.谁参加?
确认需要参加会议的人。分为必须参加及随意参加两种人,必须参加的人,必须发言。
2.谁主持?
余世维在培训中提到三种角色:
主席 – 主持会议
导言人 – 需要发言汇报情况的会议成员
观察员 – 最终决策及做总结的人(也即权力最大的那位)
我的观点:在一般的公司中其实有许多并不是很正式的会议,这些角色可以并不能非常明确的区分。其中最忌讳的是“观察员”和“主席”两个角色是同一人,因为观察员是收集信息,做最终决策的。
3.谁控制?
主席 – 控制会议的议程
导言人 – 控制会议的时间,每人的发言时间
观察员 – 控制整个会场,出现争论时需要拍板。
4.谁发言?
由下而上,由内而外。
即由最接近所讨论问题的人先发言,最后由决策者总结。
5.谁负责,谁追踪?
默认由发起会议者负责会议中讨论问题,并需要指定会议中出现的各个问题的追踪者。
6.谁在浪费时间?
所有与会人员必须提前阅读了会议要讨论的相关材料;
会议中发言必须与议题相关,不发散话题;
会议需要讨论的资料提前一,二天发送给相关与会人员,
7.谁结论?
会议结束时对于会议的议题一定要有一个结论,否则会议不能结束。“观察员”需要为事先会议准备最终的结论,当会议中没有人提出结论时,采用“观察员”的结论。

工作中,总是要参加许多各式各样的会,而且经常陷入“会议拉锯战”中。如何让会议变得高效,许多人都想了解。之前几天,许多人推荐的“控制22分钟的会议时间”一文提供了很好的建议。昨天在看余世维 “如何沟通”的一个培训,其中也提到了开会的一些问题。余世维提出提高会议的方法,和之前看过的一篇文章有许多相似的地方,其中也有些不同。 下面是我边看视频,边整理出的如何高效开会的一些建议。

– — –

高效会议需要明确的七个问题:

谁参加?

会议发起者确认需要参加会议的人员。可分为必须参加及随意参加两种人,其中必须参加的人,必须发言。

谁主持?

余世维在培训中提到三种角色:

主席 – 主持会议

导言人 – 需要发言汇报情况的会议成员

观察员 – 最终决策及做总结的人(也即权力最大的那位)

我的观点:在一般的公司中其实有许多并不是很正式的会议,这些角色可以并不能非常明确的区分。其中最忌讳的是“观察员”和“主席”两个角色是同一人,因为观察员是收集信息,做最终决策的。

谁控制?

主席 – 控制会议的议程

导言人 – 控制会议的时间,每人的发言时间

观察员 – 控制整个会场,出现争论时需要拍板。

谁发言?

由下而上,由内而外。

即由最接近所讨论问题的人先发言,最后由决策者总结。

谁负责,谁追踪?

默认由发起会议者负责会议中讨论的问题,并需要明确指定会议讨论的各个问题的追踪者。

谁在浪费时间?

所有与会人员必须提前阅读了会议要讨论的相关材料;

会议中发言必须与议题相关,不发散话题。

会议需要讨论的资料提前一,二天发送给与会人员。

谁结论?

会议结束时对于会议的议题一定要有一个结论,否则会议不能结束。“观察员”需要为事先会议准备最终的结论,当会议中没有人提出结论时,采用“观察员”的结论。

- – -  EOF – - -

自我反省

最近做的项目非常糟糕,自己做得很糟糕,几乎在任何可能出问题的地方都出问题了,许多的低级Bug。回顾这个项目的过程,一直在思考为什么会这么糟糕。大致想到了以下几个原因:

1.需求不明确时就开始编码,PRD写得太简单,产出的UC也非常简陋,许多的细节都没有认真考虑,导致在编码阶段出现许多待确认的点,影响进度及测试。主要原因是写UC不够认真,细致。

2.没有良好的整体设计,团队在设计上的协作非常糟糕,存在许多重复代码。项目不是自己主导,没有整体的设计,只有粗略的功能设计,接着就各自对着分配到的UC写代码。许多公共调用的第三方接口没有抽取出来,各自为政,导致存在许多重复代码。另外公司的AO,DAO,Manager开发模式也限制了一些开发人员的设计思路。代码质量非常差的另外一个重要原因是原来的代码质量就不高,这次新增功能,为了进度没有好好重构,修改Bug时几乎是恶梦。另外许多代码没有单元测试用例,导致自测非常麻烦,需要不断build,重启,浪费大量时间。

3.沟通不畅,测试,开发,PD沟通成本非常高,UC与TC存在信息不对称现象,导致在测试时一些功能点在TC上有,代码中却未做处理。另外在开发过程中,接口提供方沟通成本也非常高,没有清晰的文档,这是个非常头痛却又近乎无解的问题。

4. 发现自己许多的低级Bug来自于XML配置文件,vm文件,Java类三者之间的衔接问题。在不断复制的过程中,总会出现一些问题,但是又没有办法进行校验各个文件中的Key是否一致。

发现了这么多问题,如何提升?暂时想到的解决办法有下面这些:

1.要求PD提供的PRD文档能够尽量详细,自己在UC编写时更深入,细致地思考一下功能流程,避免功能遗漏,及时与PD沟通,虽然沟通成本仍然非常高。 学习XP中,设计一个CRC的表单,写UC的时候参照这个表单进行填写。现有的UC模板存在一定的缺陷。

2. 最近在认真阅读《重构》这本书,近期对原有代码进行一次重构,去除冗余代码,优化一下代码的结构。在以后做项目时,在前期做好设计工作,任务分配时不仅仅是按照功能来分,对于共同接口部分需要做好规划。

对于第4个问题,一直在想能不能通过自动化避免vm模板与Java代码衔接时出的许多低级错误,但是一直没有找到一个好的办法。或者先做一个简单的检验脚本避免这类问题。

最近仍然有一种很虚的感觉,对于公司的许多东西仍然有许多的不懂,心中不踏实,想要改变这种状态,但是却不知道从何处入手。

结构化思维导图

场景1:百淘时,参与了一个公益策划活动。在我们讨论了半天,仍然没有一个清晰的方案时,某同学忍不住站出来,在白板上清晰的写出了我们面临的问题和需要做的事情,逻辑清晰,切中要害。这事情给我印象极深,惊叹该同学思考问题能力之强的同时,也感觉到自己在思考问题上面的不足。

场景2:参加UCDchina书友会,大家轮流发言,然后总结自己对某问题的看法。轮到我时,却发现能讲出自己的观点,但是却无法提炼并总结自己的观点。而其它人讲述自己的观点时,都很有条理。再次感受到自己思考能力的不足。

这两个事情之后,自己一直在反思,希望找到他们思考问题的方法,当时就想到一个词:结构化思考。后来某天在公司内网上看到一个培训,名称就是《结构化思维与表达》,很想去参加,但是离开课时间太紧,估计报名也赶不上了。于是自己在网上找了些结构化思维相关的文档,自己学习。发现某同学博客中。有其参加阿里巴巴内部的结构化思维培训后写的文章,看过后非常有收获。于是通过用Xmind整理了一下他博客中关于结构化思维的内容,于是便有了下面这张图。关于结构化思维这个问题,认识仍然不深,希望最近能找到几本书来学习一下。

迭代式学习

最近在看一些书,其中有些书是重读,读的过程中有许多的感想和启发。现在慢慢意识到学习其实是一个迭代的过程,在不断迭代的过程中,对所学的东西的理解不断地加深,最终彻底掌握它。还记得上大学时在看设计模式的书时,书中讲的许多东西,隐隐觉得有理,但是又说不出个所以然。工作一段时间后再看设计模式相关的书,这时对于经常使用的几个模式已经能够理解其设计初衷了。最近再次重看设计模式相关的书时,慢慢发现书中讲的很多东西都能产生共鸣, 书中讲的一些东西都在工作中有碰到,而自己在某些时候正在不知不觉的运用这些模式来实现想要的功能。即使那些工作中并未用到的模式,看的时候也更能理解其后的设计初衷。这时慢慢能体会到从面对一个问题域,想出这些经典设计模式来解决这些问题的过程。正如YouXu常说的,各种看似精妙的设计并不是凭空想像出来的,而都是现实催生出来的。只是机械地学习最终的设计,而不是去了解这个设计衍生的过程,最终只是得到了“鱼”。

再说一说最近面试所想到的一些东西。面试过程中被问到一个问题,当时没答上来,而出来后再思考这个问题时,发现这个问题原来我是知道的,只是他从另外一个角度来问的。通过这个事件,发现了自己以前看书过程中存在着很大的盲点。平时看书的时候都是直线型的,虽然看的过程中也在思考,但是并没有思考得更深一些,因此导致换个角度来讲时,就无法反应过来。如何避免这种情况呢? 在 你的灯亮着吗 这本书中给出了极好的答案:对很个事物多问几个为什么。通过不断提问,可以促进思考,进而加深对所学知识的理解。这些说着虽然容易,但是真要坚持实践起来却非常难,因为如果这样子做,阅读的速度会收到极大的影响。其实隔段时间再重读一本书也能产生上述效果,即通过不断的从不同角度来想一个问题,以加深理解。这或许是所谓的“读书百遍,其义自现”的缘由吧。

懒惰是我的绝症

最近很少更新blog,主要原因是自己对文字的组织能力有欠缺,无法将想写的事情组织好。或许如李笑来老师所说的,这是由于自己写得少的缘故吧。我比较懒,不愿花时间来写下自己的想法,因为要写好一个东西是要花时间的。既然找到了原因,那就努力改进吧,希望自己也能慢慢写出一此让自己满意的文字来。

半个月前搬家了,现在自己单独住一个房间。这套房子里面还住着另外三个人,其中有一对情侣,对于他们,我都不熟悉,平时也不怎么交谈。虽然与人交流比较少,但是我仍然感觉很爽。一个人住并没有感觉到孤独,我能很好的组织自己的世界,并不需要外人帮我消灭时间。每天都在看书,听歌中度过,感觉很充实。每天都很有计划的完成自己设定的学习任务,慢慢地减少对体育等让我分心的事情的关注了。最近一段时间里面心态已经有了很大的转变,不再急于想要成功,而是想着把自己认为应该做的事情做好。我有自己的目标,有自己的方法,只要坚持自己的方法,成功不过是生活的附属物,而这个过程才是我要的生活。这些都要感谢李笑来老师的那些文章。

最近的阅读量非常大,在公司里并不忙,于是花了大量时间来阅读各种感兴趣的东西。最近接触到的最有价值的东西是关于如何思考,这是在刘未鹏博客中看到的。 对于我来说这不算是全新的领域,因为之前我也隐隐地体会到这方面的东西,只是从来没有深入去想过。比如我就对于以前课本上数学方面的课程中只给定理和结论,不给该定理产生的原因和推理,演进过程很有意见。最近正在读这些这方面的书,了解思唯的过程,了解思考问题的方式。最近两年在一些维护性的项目上面也一起在总结自己解决问题过程中的思考过程。在这个过程中对于数学和计算机底层也产生了很浓厚的兴趣,希望了解那些定理,算法后面的思考推理过程。 或许是天性使然,我对于某样事物背后的动作机制有着极大的兴趣,但是由于自己的懒惰,并没有对感兴趣的事物要个说法。 克服懒惰真的是很难的一件事情。

现实的困局

最近心情非常不好,很无奈。对目前的工作已经感到非常的厌烦,严重的心理疲劳。
我自己本来就是一个喜欢折腾的人,喜欢尝试一些新的东西,但是目前的工作和我想要的完全相悖。每天都在不断的浪费时间,不断做着没有多大价值的琐事。回过头看一下这两年的工作经历,发现我做的事情并没有多大价值。这些事情本身价值就不大,而我也没从中学到更多有价值的东西。这些工作经历写在简历上,发现没有一点说明价值。即使你技术确切不错,对技术的某些方面理解很深,但是你的工作经历并不能支撑你拥有这些能力的论剧。
前两周让两个朋友内推过,也和猎头联系过,但是,在看过我的简历之后都没有音讯。是简历没写好? 或许是,但是我的简历模板是一位资深猎头给的。 我发现我的优点在简历上都无法通过工作经历来提供证明,因为这两年的工作内容并没有多少亮点。我的那些优势都是通过工作之余自学的。发现工作了两年,要换一个合适的工作仍然很难,怎么办?
最近看到一个贴,里面有一句让我为之一震:你可能只是公司用来填坑的。 我发现原来我就是来为公司填坑的。联想到我们组这两年先后走了10多个人,我们组现在才8个人,很多人都是呆了1,2个月就走人的,甚至还有只呆了几天就走的。这些都证明我现在的职位不过是一个坑,而我是那个被填坑的人。以前转正时就和部门总监谈过写代码太少,当时他给的承诺是过一两年会调岗,几次年度考核也谈到这个问题,当时他们都承诺会改变。但是现在看来那不过是当时为了留人的一个谎言。我当时太天真了,虽然看出了工作内容并没多少价值,但是总没法下定决心走,以前随着时间的推移,情况会改变。现在发现是越陷越深,但是我仍然是那只温水中的青蛙,无法跳出去。