写在成为优秀开发人员之前

来源:互联网 发布:wind金融数据客户端 编辑:程序博客网 时间:2024/05/17 23:40

在决定进入软件开发行业之后,一切问题都是那么明显而又急迫地摆在面前。有些不知所措。

 

作为一名菜鸟,前期自然会异常艰难。这点,我有心理准备。学习方法上,心态上,都会是一场挑战。

 

软件开发应是一门艺术。技术精湛者,鬼斧神工,应付自如。而不懂进步,不追求进步,则只能永远停留在菜鸟级别。岁月除了带走青春年华之外,不会留给任何的馈赠。所以,你要知道自己想要的是什么,以及怎么为之去努力。

 

好了,扯了这么多。说说正经的。

1)兴趣

爱因斯坦说过:兴趣是最好的老师。有兴趣的开发人员和没有兴趣的开发人员,差别太大了。有兴趣的人,比较主动地去学习新东西,碰到新鲜玩意喜欢刨根问底,碰到开发过程中的困难,也显得比较有耐心……久而久之,两种人的差距就渐渐地显现出来。

 

每个人做事情都会有一个动机。兴趣就是在心理层面上对一件事情上产生的快感,通过事情的达成,产生成就感。于是,兴趣就会成为自己做事的动力。而在做事情的过程中也能更加促进兴趣的形成。两者相辅相成,相互促进。说着说着,扯到唯物辩证法上去了。

 

2)学习能力。走技术路线,最重要的还是自己肚子里的知识。人脉固然也相当重要。但在技术面前似乎要居其次。所以,如何高效率的学习,就是每一个追求技术的人首先应该思考的问题。

 

what->how->why 三部曲

所谓what,就是要先弄清楚这个东东是什么?有什么用?有什么语法?有什么功能特性?……

举例说明:例如在学习语言的时候,大部分人都能够掌握基本的语法和标准库,然后用它写一些小程序。

但是光会What还远远不够。仅仅停留在这个步骤,导致很多程序员只知其然,不知其所以然。这是大多数开发人员的现状。

 

所谓how就是搞清楚某个东西内部是如何运作的?实现机制如何?等一系列相关问题。结合c++学习过程中例子说明:在c++中,函数传参数的实现机制?虚函数是如何实现的?抛出异常的栈回退是怎么回事?……

在这个阶段,必须多想想类似问题。然后通过各种途径,把问题彻底搞清楚。自然而然,提高就会比较明显。而且碰到一些深层次的问题(比如性能优化),也就知道该如何去解决。

完成了这个阶段,离优秀开发人员的行列就近了一步。

 

所谓Why,就是搞清楚某个东西为什么要设计成这样?为什么不是另外一个样子?这样的设计有什么讲究?这也是一个不断发现问题,提出问题的过程。某个科学大牛就曾经说过:“提出问题有时候比解决问题更难”。一般来说,只有当你真正深刻理解了某个东西,才能够针对这个东西的设计问出一些问题。所以需要先把How的问题搞清楚,再来考虑Why的问题。

举例说明:对于c++语言,我为什么c++没有类似java的finally关键字?为什么c++没有考虑GC?……

对于java语言:为什么java没有类似于c++的类析构函数?为什么java要同时提供String和StringBuffer两个似乎冗余的类?……

如果能够自己问出诸如上述的“为什么”问题,并且能够通过各种途径找到解答,那你基本上就已经吃透了这个技术了,并且已经有可能自己去设计一个类似的玩意儿了。到那时,你已然走在通向高手的康庄大道上。

 

3)制定个人发展目标与计划

目标是行动的最好指南。这里就短期-中期-长远目标谈谈,对应不同的时间阶段。不管是那种目标,制定的都要难易适中。太简单的目标实现了也没有成就感,不能激发自己的潜力,而太难的目标很容易虎头蛇尾,半途而废或者超出时间。而且,设定的目标还要容易评估,否则到时候自己也不知道是否达到了目标。

 

短期目标的时间跨度可以是几个星期到一个季度之间。短期目标要制定的比较具体,便于自己评估目标是否达成。例如:在本月读完《Thinking in c++》,在本月熟悉Spring框架,在两个月内用Flex写一个五子棋游戏……

 

中期目标的时间跨度大约是几个季度到1-2年。中期目标比短期目标更抽象,且必须是短期目标的有机结合。比如,短期目标是一个月内读完《Thinking in c++》,那么中期目标就应该是“一年内熟练(不是精通)使用c++语言”。

 

长期目标也必须和中期目标沾边,它的层次当然更高,时间跨度在5年以上。而且长期目标一般不会涉及到具体的xx语言,xx平台等,倒是经常和职业岗位有一定关联。比如“5-7年内成为CTO”,“5年内成为公司产品的首席架构师”等。

 

当把这3中目标都设定好之后,就形成了个人发展计划。既然是计划,那就得在每个阶段结束的时候对自己总结一下,评估一下该目标的完成情况好不好,有什么收获,有什么经验教训。必要的话还需要对未开始的后续目标进行一下调整。定期回顾还有一个好处,就是能获得一种满足感,从而有利于你坚持完整个计划。

 

计划最重要的还是实施,不要做计划制定者,仅仅停留在计划制定时刻的幻想成功的虚幻喜悦当中,因为制定了计划而不执行,计划也没什么意义。最终只能成为笑柄。你要让计划成为推动你成长的证明。

 

4)思维方式

最后谈谈高逼格的东东。说道思维方式,感觉很抽象,但是细想,正是我们思维方式的不同才导致了不同的人生轨迹,职业发展道路。所以这是一个不能回避也不可回避的问题。程序开发就是面对一个问题落着一个问题,然后逐一解决的过程。解决问题能力水平的高低,直接决定了开发的效率以及成败。想法决定做法。程序员还是要站在一种机器的角度去看待自己写的代码,把自己设想长一台电脑,让程序在自己的脑海里跑起来。达到一定的境界。这个过程,本身就是一个相当漫长的过程。需要花费大量的心血,不断的进步才能获得。否则,只能是停留在初学者的水平而难以提高自己。

 

关于看书:程序员也需要不断地看书来充实自己的头脑,不断优化自己解决问题的能力,能够对于事情有着本质的把握,透过表面的现象看到事情的本质。这需要智慧,需要方法,而多看书,思考无疑是比须要做的。多看书,让自己的思维活跃起来,跳动起来,益处不可言说。

 

第一次写这篇博文,逻辑组织上还有欠缺的地方,这也是未来需要提高的地方。其中借鉴了一些前辈的博文,拿来作为自己学习的参考。

0 0
原创粉丝点击