IT职场人生系列之二十五:如何向高手学习

时间:2022-06-19 13:10:46

这是IT职场人生系列的第二十五篇(序言专栏目录),也是松结对编程的第十八篇(专栏目录)。

向高手学习是每个新手的心愿,但遇到的最大的问题是没有高手愿意教,这篇文章主要是解决这个问题。

向高手学习有以下诀窍:

善于观察

不需要高手说话,也可以从高手那里学到东西,那就是靠多观察。

1. 观察代码

不是所有高手都愿意或都有时间来指导新手,所以如果能拿到高手的代码,就要多学习借鉴。 先从比较好学的部分入手,比如命名方法,代码缩进这些;其次是函数、类的封装方法;再次是整个程序的架构方法。很多人抱怨没有师傅指导,但实际上他们曾经与很多很好的代码擦肩而过,而没有去学习。 一种方法是模仿高手编程的风格,看不懂的地方就去问。高手一般很乐于回答自己为何如此这般,因为他们也是多年积累下来的经验,引以为豪并乐于分享。但不要问高手低级或空泛的问题,比如“你觉得命名规范怎么样才好?”很多编程很久的人也说不出来,虽然他们做得很好。这些都是需要在模仿中学习的东西,而不是靠口口相传。

2. 观察高手的工作习惯和工作环境

可以观察的东西有很多,不限于代码本身。高手打字的方法,使用快捷键的方法,打开窗口的方法,使用的输入法,选中一段文字的方法,拷贝粘贴的方法,切换窗口的方法……任何区别一个高手与新手的方法都值得学习。 比如修改完Html代码后想看效果的最快的方法是:Alt+F+S+Tab(保存并切换到浏览器), Alt+D(定位到地址栏), Enter(回车刷新),看起来很长的按键组合,但可以在大约1~2秒左右完成。 这些格式这样的技巧虽然看似接升不了多少时间,但是一天下来,可能就有半个小时之多。加上自己操作体验的改进使得注意力可以集中在编程上面,实际可获得的时间会不止于此。

善于提问

1. 多思考,少提问

很多新手都很希望一下知道答案,绕过中间繁琐的求知过程,其实这样很不好。 两年前同时从头学习Html + JS + Jquery + asp.net + C# + LinQ + MVC……这些新东西的时候,觉得在网上搜索答案的过程很漫长和低效;但过了一段时间突然感觉到,很多新问题的答案似乎早在解决老问题的时候就见到过,一搜就能搜到;再往后就发现多数新问题甚至早就知道答案了。 所以,要把解决问题的过程当作积累的过程,而不是找单个问题的答案的过程,对日后的帮助极大。

2. 带着答案提问

高手一般不屑于解决低级问题,也不愿意从头解决问题(因为问题常常是“问题集”,某些是关键问题,某些是低级问题),而是喜欢解决关键问题。 所以每次提问高手的时候,最后都是解决了一半的问题,带着一些半截的答案找高手最好。高手也会觉得自己受到尊重,因为高手感觉自己在被“提问”,而不是替新手工作。

3. “主动”提问

之前提到过主动搜索,就是不要指望能直接搜索到答案,而是每次主动分析思考搜索出来的结果,或许改变搜索的关键词,或许改变搜索的网站,靠自己找到答案。 主动提问也是这个意思。被突然问起什么问题来的时候,高手并不知道很多前因后果,相反问问题的新手可能更理解这些。这时候也就不能指望高手直接给出答案,而是要分析和思考高手回答的内容,乃至反问的问题,靠自己找到答案。
这种思维方式又叫福尔摩斯思维方式。福尔摩斯总是不是第一个到现场的,也不是知道最多的,但他总能从别人都看到都听到的事情里边推断出新的线索。就在于他能多思考,主动提问。

善于互动

没有高手天生有义务帮助新手,因为他们也有自己的工作。另外从公司的角度看,高手工作能力更强,如果被纠缠在帮新手解决问题中,生产力会下降。因此要注意方式方法。

1. 把握时机

不要因自己需要而发问,而要因高手有空而发问。 如果感觉高手正在聚精会神地解决自己的问题,那么就先等等。如果他起身倒水喝茶或者和别人聊天讨论问题,就可以掺和进去。这样高手不会感觉被打搅,更容易帮助新手。

2. 建立互助关系

新手帮助高手看似很难,其实不然。 比如新手可以帮助高手写测试代码,或者借助高手的底层库帮高手编写一些“肤浅”的上层应用,等等。但这些都有两个收获:一则新手有机会接触到高手写的代码,二则遇到问题可以堂而皇之地邀高手一起解决了。 当然更完善的状态,是之前提到过的松结对编程和139团队中的师徒制度。
总结:好学生于好老师是并存且互为因果的,如果新手很多年都感觉没有人愿意帮助自己或没学到过东西,都应该反思自己是否少做了一些事情。