专访李运华:程序员如何在技术上提升自己

转载 2015年11月18日 14:12:34

http://www.csdn.net/article/2014-10-20/2822190

 

第二是“坚持”。《异类》一书中提到一个10000小时理论,我觉得非常有道理,意思就是说如果你想成为顶尖人才的话,一定要积累10000小时以上的训练和经验。特别是在软件开发这个领域,技术又多,技术更新又快,如果没有坚持去积累和提升的话,是很难达到一定高度的。操作系统、数据库、网络、编程语言、设计方法等都要掌握,每个技术点又有很多更细的分类。以编程语言来说,C、C++、Java、PHP、Python等主流的都有10来种,每个语言继续深入的话又有很多内容,例如Java可以列出来的有JVM、IO、NIO、网络编程、反射。。。。。。等等。所以这么多的东东,短时间内快速入门还可以,但如果说21天就精通XXX,那是不可能的,必须经过长时间的积累。其实我现在都不敢说我精通什么,只能说相对周围其他人会精通一些。

第三就是“方法”。掌握正确的方法,能够让我们事半功倍,更快的提升,一些常见的方法我就不啰嗦了,这里特别分享独家秘方:

一个秘方是“写博客”,注意这里不是“看博客”,也不是“转载博客”而是“亲自写博客”。哪样东西你觉得你比较懂了,那么你就写成博客。当你真正去写的时候,你会发现,其实还有很多不懂或者不清楚的地方,这样就会促使你又去学习研究;当你的博客发表后,其他人除了能够从你的博客中学到东西外,也能够帮你发现一些问题或者错误,这样你就更进一步的掌握了;

另外一个秘方就是“链式学习”。形象点说,就是你抓住了一个链条的一个链,然后慢慢慢慢把所有的链都拉出来。举一个很简单的例子:socket sever编程。很多人在编程的时候,都是去搜索引擎搜索一下“socket server样例”,然后对照样例很快就写完功能了。然后呢。。。。。。很多人没有然后了,完成任务就不管了。其实这样做就错过了一次提升自己的好机会。

“链式学习”则不一样,它是这样做的:我通过搜索引擎搜索到样例完成工作后,我会问自己很多问题:样例中的api每个参数都是什么含义,有哪些注意事项,还有其它API么?为了解决这些问题,我就可能去找本书看,某个编程语言的socket编程;看完以后我知道socket编程的全貌和一些注意事项,而这些是通过搜索引擎搜索的样例中没有的;知道socket编程的全貌后,我又会问自己:操作系统是怎么做的呢? 那我又会去看《UNIX网络编程》,看完后我就对操作系统层面的又掌握更多了;看完《UNIX网络编程》后,我又知道socket是和tcp/ip相关的,那我又会去看《TCP/IP协议详解》。。。。。。

这样去做就是一条学习链: socket server编程 -> socket 编程 -> UNIX网络编程 -> TCP/IP协议,后面还可以继续不断拓展下去。如此不断的拓展和深入,一个很小的契机就能初始你学到很多东西,而这些东西在以后的工作中某些时刻就派上用场了。

我之前在华为是在Windosw平台上用MFC开发,后来到了UC转为Linux平台开发,用这种方法,大约用了2年就熟练掌握了Linux平台相关的开发技术,包括Linux、MySQL、C++、Java、PHP等

第三个秘方就是“闭环学习”。“链式学习”适合于一组相关联的知识或者技能的学习,而“闭环学习”更适合业务、相互配合的知识和技能的学习。由于软件开发是需要多个团队分工合作的,所以绝大部分人都只负责整个系统或者全流程中的一环,这样导致很多人以为只需要将自己负责部分精通就可以了。其实这样不利于个人的发展,一个原因是自己负责的一般都比较窄,可学习和提升的空间可能不多,另外一个原因是很难设计整体上优秀的方案。

而“闭环学习”则不一样,它是这样做的:了解整个功能或者业务的全流程实现,涉及了哪些模块和系统,每个模块和系统主要负责什么功能,涉及到什么技术,性能怎样,有什么注意点。举一个我做个的HTTP的业务样例:从用户点击一个url开始,经过了 浏览器 -> 网络 -> CDN -> Nginx -> PHP -> MySQL -> PHP -> Nginx -> 网络 -> 浏览器,最后呈现在用户面前。我开发的时候只是用PHP开发,但并不只局限于PHP本身,闭环学习就要求全流程中的每个环节都要去了解和熟悉,这样你就可以学到了“浏览器、Nginx、CDN、MySQL”等很多知识。

有的朋友可能会问:这样做有什么用呢?其实用处非常大,一个是当出现问题的时候,有了闭环学习掌握的知识和技能,你就知道哪些地方可能有问题,应该如何处理;另外一个用处是,当你考虑设计方案的时候,就不局限于PHP本身了,也许某个功能Nginx或者CDN或者前端能做的更好,用PHP实现反而很蹩脚。

 

我看过的书比较多,但我特别向大家推荐如下几本:

《羊皮卷》:目前市面上的《羊皮卷》大部分都是心灵鸡汤式的文章的组合,但有一本其中有一篇《选择的力量》,我看了后醍醐灌顶,真的是就像佛家禅宗说的突然“悟道”一样,看了后深受启发,从此后很多为人处世方式都因此而改变了;

《异类》:一本从不同视角讲述成功人士到底是如何成功的,会告诉你很多不为人知的故事,能够让你免受心灵鸡汤之害,也能够明白成功既要靠自己努力,也要靠机遇;

《随机漫步的傻瓜》:这本书看起来是讲投资的,但其实讲述了一个关于“运气和命运”的问题,让你能够以不同的视角来评价和判断所谓的“成功”

 

 

 

CSDN:你因个人时间不多问题,一直专注在CSDN博客,你一天的时间是安排的呢?

李运华:我工作日的一天大约是这样的:早上7:00起床, 7:20送小孩上学,8:00去地铁,9:10分到公司,晚上20:00下班,21:10分回到家,回家后陪小孩玩到大约10:30,然后自己洗澡准备睡觉,大约23:30分上床睡觉;双休日也差不多,就是把上班的时间改为陪小孩了。

平时一般是早上或者晚上浏览一下CSDN,了解一些技术趋势,学习一些技术。

 

 

第四是“乐于分享”。如果单纯从个人完成工作的能力来看,可能确实也有很多程序员不爱分享但确实很厉害。但我认为真正优秀的程序员一定是除了自己优秀外,还能让其他人也变得优秀,或者能够贡献优秀的开源项目以降低别人的重复工作。分享的途径有很多种,可以给公司人员做培训,可以写博客,可以贡献开源项目等。

 

 

李运华:前面我提到了“要坚持”,“要持续学习”,大家自然想到的问题就是“时间从哪里来”?毕竟大家都比较辛苦,加班也比较多,有的还需要带孩子,到哪里去找时间学习呢?

我的方法就是“挤”,那么问题又来了,如何挤? 比如说大家看我的工作日作息时间,早上7:00起床到晚上10:30,基本上就没有什么时间了,10:30以后还要自己休闲一下,打打魔兽玩玩CS,恩,真的很难有时间了,那怎么办?

关键就在于一个“挤”字,其实就是“利用时间碎片”,10分钟就可以了,以我最近为例谈谈我现在怎么挤时间的,大家可能就明白了。

  • 7:40 ~ 8:00:送完小孩后到出门去地铁中间有20分钟,看《失控》一章
  • 08:20 ~ 09:00:地铁上带一本书,大约可以看完一章,容易看的书可以看两章
  • 09:30 ~09:50:看技术类的PDF,比如说最近看JQuery,大约可以看一章,不用担心,每天20分钟完全不会影响工作
  • 20:20 ~ 21:00:和早上地铁一样
  • 睡觉前15分钟:看15分钟书,前段时间这样花了大约2个月看完《三国演义》

这样累积下来,我一天大约可以看2个小时书,今年上半年看了大约23本书。

通过这种方法,我既没有“头悬梁锥刺股”,也没有放弃自己的爱好“打魔兽玩CS”,工作也没有受到影响,同时知识和技能又提升了很多。也许开始1个月两个月你还感受不到这样做带来的明显好处,但坚持半年一年你就会发现有很大不同,坚持5年10年,也许你就会发现人生境界和成就都会不一样了。\

 

李运华:虽然说是leader,但管理投入和技术投入大约是3/7,所以大部分还是在做技术工作。技术团队管理方面谈不上很有经验,简单谈一些我的体会吧。我是一个基层的小头头,因此以下分享都是针对基层的leader说的,总监和CEO没当过,不敢妄加评论 :)

首先,基层leader不能完全放弃技术,变成一个项目管理者或者任务管道。对于技术人员来讲,多少都有点技术情结了,如果一个leader不懂技术或者不管技术,就开开会,转发邮件,安排一下任务,慢慢就会与其他成员脱离,技术水平就会逐渐下降,这样其实就是威信不断下降。当一个leader都无法和组员探讨技术问题、解决技术问题的时候,这个leader其实就是一个摆设了,我相信很多时候组员都会从心里鄙视这样的leader的。

其次,基层leader的最重要任务是帮助组员提升。基层leader受限于环境和资源的约束,很难做到帮组员实现宏伟的梦想,或者提供一个很大的平台给组员施展。这种情况下以什么来激励组员呢?我觉得最好的方式就是帮助组员不断提升,包括技术上的提升、做事能力的提升、沟通技巧的提升等,这些是能够做到也比较容易做到的。如果真的遇到各方面能力都比自己强的人,赶紧向上推荐,让他有更大的空间发展。

第三,基层leader要身先士卒。有一个管理的说法说的很好:10个人时你要冲在最前面,1000个人时你要走在中间,10000个人的时候你要走在最后面。基层leader就是要冲在最前面的那个,遇到难的设计问题,你要带领团队攻坚;遇到线上质量事故,你要能够带领团队快速解决;出了重大问题,你要能够用于承担责任;这样才能通过实际的行动言传身教,帮助团队成员提升,也能在这个过程中树立威信。

相关文章推荐

专访李运华:程序员如何在技术上提升自己

原文链接:  http://www.csdn.net/article/2014-10-20/2822190

【杂文】总结专访李运华一文

首先列出原文链接《专访李运华:程序员如何在技术上提升自己》

走出迷茫,在技术上持续精进

感觉这篇文章写的很好,分享出来,原链接http://gitbook.cn/m/mazi/article/59434736475c5d0392016cb9?readArticle=yes。 作...

关键问题可能不是出在技术上

作者:马克·兰姆(Mark Ramm) 简单的项目(比如工资管理系统)也会翻船,而且这不是个别情况。 为什以?难道是因为我们用错了技术了吗?因为错选了Ruby而不是Jave,错选了Python而不...

迅雷大全别出心裁在技术上耍宝

我今天把迅雷大全升级到1.1.8.109版本,更新完后,突然发现桌面上多了一个名为“看视频”的图标。它和以前见过的许多桌面快捷方式图标完全不同:基本上所有软件的桌面快捷方式都是静态图标,而这位迅雷大全...
  • dj0379
  • dj0379
  • 2013-03-05 04:56
  • 2655

颠覆平庸:在技术上持续精进

版权声明:本文为foruok原创文章,转载请通过订阅号“程序视界”联系foruok获取授权。 转自:http://blog.csdn.net/foruok/article/details/75332...

程序员的口头禅:技术上无法实现

「技术上无法实现」这句口头禅,我在过去多年的程序员职业生涯中经常听见,甚至我自己就曾说过很多次。最近当我再次听到有人说出这句话时,就不禁思考起来,为什么程序员爱说这句话呢?为什么曾经我也时不时说这句话...

程序员最容易犯的几个技术上的错误

本文是从 Top technical mistakes of programers 这篇文章翻译而来。 请在评论里分享你的想法和经验,因为我们都需要从这些错误中吸取教训。 为...
  • cczja
  • cczja
  • 2011-09-29 00:34
  • 175

阿里李运华:异地多活有哪些Impossible Mission?

《碟中谍》系列电影中,汤姆克鲁斯主演的亨特特工,无论什么情况,什么环境下都能够有惊无险的完成那些看似不可能的任务。对于技术人员来说,如果也能像汤姆克鲁斯那样,不管什么mission impossibl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)