波斯猫

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


  CSDN:请和大家介绍下你和目前所从事的工作。

  李运华:大家好,我是来自UC的软件工程师,已经在软件领域摸爬滚打10年了,先后经历了电信行业和互联网行业。毕业后首先是去了华为,做核心网的系统开发,做过软件工程师、系统分析师;后来换到现在所在的UC,先后做过技术研究、基础平台开发、社区系统,现在在九游游戏中心担任项目leader。虽然说是leader,但其实管理和开发的时间是3/7比例,所以至今其实还是个“码农”。

  非常爱好技术,“精通”后端开发技术(C++、Java、Linux、MySQL等),目前正在学习前端,力争成为FSE;虽然很爱好技术,但并不局限于只在技术上提升自己,管理技能、综合技能等都在持续学习和提升。业务时间喜欢看书,经济学、社会学、心理学都有广泛的涉猎。

  个人的梦想是能够带领或者加入一个团队,创造一个伟大的产品,大家也可以看到我的个人技能提升基本上都是朝着这个目标的。

  CSDN:有着10余年软件行业经验的你,是如何一步步走上这软件开发之路的?

  李运华:我来自农村,高三的时候才见过电脑,当时就体验过一两次,我还记得是dos的系统,虽然很难用,但当时就觉得很神奇,加上我高中毕业的时候正好是计算机行业最火的时候,于是就选择了计算机专业。

  但是上大学后前三年并没有投入太多时间,基本上是玩(打游戏、踢球)去了,到了大四找工作的时候,也不知道是什么原因,感觉突然觉醒了,觉得自己想做软件开发,于是开始买了一些书看,看了《深入浅出MFC》后觉得很神奇,很有意思,于是后来找工作时就坚定了找软件开发的念头。现在回想起来感觉当时真是一根筋,测试、产品、运维等都不想做,只想做开发,即使面试不过也没有动摇:)

  后来机缘巧合进入了华为,从此开始了软件工程师之路,一直到现在,都是从事软件开发相关的工作。

  CSDN:你做过软件开发工程师、系统分析师、系统设计师等,能够回顾一下自己的职场晋升之路,有什么心得和体会可分享?

  李运华:毕业后加入华为,先是做了大约2年多的软件开发工程师,后来加入系统组做了系统分析师(华为俗称SE,其实就是系统分析和设计),做了大约2年多后离开华为加入UC,一直从事软件开发的工作,先后做过技术研究(MySQL、Memcached等)、软件设计和开发,项目leader工作,一路从高级工程师逐步提升到资深工程师,并担任了项目leader。

回顾我的提升之路,我觉得有几点可以跟大家分享的:

  第一是“兴趣”。这也是我认为最重要的一点,一件事情做10年甚至做一辈子,如果没有兴趣的话,我觉得是很痛苦的。兴趣是本能的驱动力,有了兴趣,遇到问题会一直想着怎样去解决,而不是觉得“很难做”;有了兴趣,碰到一个新的东东会觉得很兴奋,而不会觉得是一种负担;有了兴趣,接触到一个东西后就像更加深入的去了解,而不是用过了就不管了。所以我认为如果想在一个行业(不限于软件行业)长期发展并有所提升的话,一定要问问自己是否有足够的兴趣。

  我当时之所以换工作,也是因为我对当时的工作内容不感兴趣,因为我更喜欢亲手做出一个产品,而不是找一群人开会讨论然后写个文档就完事了。

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

  第三就是“方法”。掌握正确的方法,能够让我们事半功倍,更快的提升。

  CSDN:你对代码有着怎样的情感?对丰富的编程语言是否有什么特别的喜好吗?

  李运华:我喜欢写代码,在写代码的过程就是一个创造的过程,我特别享受这种创造的过程,夸张点说:我就是我的软件的造物主,在代码里面我就是“神”,我可以设计我的作品,实现我的作品,改进我的作品。

  对于目前丰富的编程语言,我没有什么特别的爱好,对我来说,编程语言就是一个工具,用来实现业务目标或者自己的想法。每种编程语言都有特点和适用场景,哪种语言更适合我的需求我就用哪种,不会执着于用1门语言来包打天下。我先后用过C、C++、Java、PHP、Python、Ruby,现在在学前端编程的JavaScript、Coffeescript,也   CSDN:你因个人时间不多问题,一直专注在CSDN博客,你一天的时间是安排的呢?

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

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

  CSDN:在你眼中,一个优秀的程序员应该具备哪些技能和修养?

  李运华:这个问题就像“1千个人眼中有1千个哈姆雷特”一样,每个人都有不同的看法。我认为一个优秀的程序员应该具备如下技能和修养:

  首先是“快速学习能力”。这里不是说一定要去快速去学习各种各样的新技术,而是说当有需要时,能够快速的学习。很多人开始学新的技术和技能时,一开始就一头扎进去写样例、写Demo、看源码,我认为这不是好的方法,而且比较耗费时间,收效也不明显。

  我给大家分享我的4W2H快速学习方法。我在学习新的技术的时候,都是按照这样的步骤去了解的:1)这个技术能解决什么问题(why)2)比较适合在哪些场景应用(where+when)3)这个技术跟我已经掌握的哪个知识或技能类似,有什么差别、有什么特点、有什么优点和缺点(what),4)了解前面的问题后,我才会开始去尝试写写Demo,或者更进一步去应用(Howtouse)5)觉得有兴趣或者其实现很牛逼的情况下,我就去研究一下原理机制,看看源码等(Howitimplements)

  其次是“良好的理解能力”。程序员需要将产品人员或者用户用自然语言表述的需求翻译成程序语言。自然语言有一个特点就是通俗但不严谨,而程序语言必须是非常严谨的。如果对产品人员或者用户提出的需求没有很好的理解,即使程序语言写的再漂亮,技巧再高,最后做出来也是一个不符合要求的产品。

  记得有一个关于“美女”的笑话:人听到“美女”后的反应是想到“天使面孔魔鬼身材童颜巨乳”,而猪听到“美女”后的反应是“乌克兰大白猪”,猫听到“美女”后的反应是“有着金色光滑皮毛的波斯猫”。如果程序员给了猫一个“天使面孔魔鬼身材童颜巨乳”的美女,猫一定会觉得很难看。

  第三是“持续不断的学习”。软件开发领域设计的知识和技能太多了。从广度上来说,有操作系统、数据库、编程语言、网络、设计等,编程语言又有几十种;从深度上来说,操作系统、数据库、编程语言等都是可以不断深入去学习的。无论你是从事对技能广度要求更高的业务开发,还是从事对技能深度要求更高开发专项系统,都需要不断的学习,这样才能不断的提升自己的能力。

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

  CSDN:对于初学者,你觉得他们怎样才能知道有没有掌握面向对象编程的思想?

  李运华:掌握面向对象编程的技能是很容易的,会用Java写个类,写个继承,写个接口,基本上就可以说自己掌握了面向对象编程的技能,如果再加上设计模式和设计原则,基本上就可以说熟练掌握了面向对象编程。

  但如果说真正掌握了面向对象编程的思想,我觉得一定是要看是否用面向对象的方式去分析和理解问题。举个很简单的例子:很多人都是用面向过程的方法去分析和理解问题,然后在实现的时候觉得这里可以封装为一个类,那里可以用一个接口,有的地方可以用继承,有的地方可以用抽象类等,这样其实就是用面向对象实现了面向过程。









































石家庄能够治好白癜风的医院
济南白癜风专科医院



转载请注明:http://www.logistics-info.com/bsmjg/9360.html


当前时间: