一个程序员的程序开发Roadmap【转】
在校的日子不知道珍惜,整日混混沌沌。书到用时方恨少,真到了工作岗位,发现自己会得很有限。即使现在已经可以熟练的掌握本职工作,但是人难道不需要发展吗?
做一个程序员,或者更冠冕堂皇的说,工程师,你有很多知识需要学。要想进一步发展,你需要更多的知识。
基本的技术基础。
技术基础包括很多,有基础理论:那些你必须知道的,但是还真不一定能用得到的东西,比如数据结构,操作系统,编译原理等。
程序语言:最起码你要回你现在正在用得。
系统知识:这个包括很多,比如,大多数程序我们都不会是完全从头开始,肯定要建立在一定的基础上,最起码是操作系统,你需要首先了解该操作系统的知识。当然,包括使用和变成。如果还有其他你需要用得,你当然也要去了解。比如,你要做WEB,最起码你要了解web服务器,阿帕奇或者IIS或者其他什么东西。然后你可能不会是用CGI,你可能需要用J2EE或者ASP.NET。所以你需要了解所有的这些你需要用到的工具。
业务知识:这些还不够,业务知识也是必不可少,财务系统和工程制图软件绝对需要不同的业务知识。这些你必须多少有个了解,如果你连这个都不知道,很难保证你会做出好的软件。
很多?对,是不少,但是做到这些尼还只是一个合格的程序员而已。再往上走,你可能需要两方面的知识:
设计知识。
没有设计,或者是设计不良的软件简直是可怕,我现在就在遭受如此痛苦。但是也许你并不理解,不要紧,只要你经历过程序员阶段,你肯定会有体会。当你希望摆脱程序员的境界,有更好的发展是,你一定是积累了很多的开发经验了。
其实设计是什么?就是人们犯过无数错误后,想要避免再犯类似错误。我们已经伤痕累累,于是我们很有感触。我们抽象,提炼,总结,并且将这些规律应用到我们的系统中去。
其实设计就如同开发,也需要有它的基础知识(如何做好设计?)、设计语言(你的设计如何表达?)、系统知识(那么多工具如何使用?)、业务知识(不同领域的系统设计起来肯定有不同!)。
在这个阶段,你重复着开发所经历的一切。
测试知识。
测试我了解不多,而且感觉应该和上两者差不多,不赘述了,有待以后补充。
设计、编码、测试,你有没有发现问题?这些过程都是分离的?成功的软件是这样吗?当然需要有个东西将其串联起来。
技术管理知识。
成功的项目是将设计、编码、测试结合在一起的过程,需要技术管理来串联。技术管理是将整个技术开发生命周期作为管理的对象,在这个周期内调配各种资源,使之达到最佳的调和状态。
技术管理接近管理,但依然和技术有着千丝万缕的关系,属于过渡期。技术管理当然也需要相应的基础知识、管理工具、业务知识。相对来说,技术管理不再需要特别明显的语言,因为管理就是人与人的交流,当然是用我们的自然语言。同时,管理的业务知识也并不再属于传统的业务知识范畴,而有自己的特殊性了。
技术管理的特色在于,对技术要求高,但是对于管理专业的知识要求一般,适合有技术背景,又有管理经验的人来从事。
管理知识。
请注意,这里说的是管理,而没有技术两个字了。
什么是管理?
管理就是如何协调多个人在一起出色完成组织目标的技术。
其实管理也是技术。
很多人误将管理与公司高层结合在一起。其实管理也有它的技术层面。比如公司的财务,他们就是管理公司财务的人员,他们也有自己的专业知识,他们需要用自己的专业知识来替公司打理财务,以保证公司财务运行的畅通无阻。这些人其实也属于技术人员,也是利用专业知识来混口饭吃,只不过由于财务本身的特性,使得一般我们把这些人与一般的技术人员区分开。
管理也有自己的技术一面,很多咨询公司不就是利用自己的专业知识,来为公司的管理出谋划策吗?管理也有它的设计,因为管理的经验也可以继承、抽象、并且加以应用避免错误的重犯。这一切与我们的技术开发有异曲同工之妙。
如此一来不难理解,对一个技术人员来说,想要进入管理层,绝对是一件比较困难的事情。因为这就相当于跨专业,而一个人如果能够同时精通两个专业,本身就是一件很了不起的事情。更何况开发和管理本身又是一个非常庞大的专业,同时兼顾很难。
人生知识。
修身,齐家,治国,平天下。
这是我们老祖宗留下的名句。
但是语言苍白,它很容易让我们造成误解,似乎只有先修身,后齐家,再治国,最后才能平天下?
其实事情原本就不是割裂开来的,而是相互交错。更何况修身乃人生大事,穷其一生未必能尽,又如何能够先做好呢?
人生下来便在成长,直到曲终人散,能否悟道,全在缘分和自身努力。如果说悟道乃修身之正果,能否悟道还未必,怎可先修身完毕?
若认为悟道便为成佛,人生成佛方式很多。从艺可成为艺佛,从商亦可成为商佛。成佛之道众,但其境难,径亦难。
我突然想起流星。
流星突然在夜空划过,很亮,很美。流星短暂,但是美丽。
流星虽然在浩瀚的夜空中,只是短暂的一闪。但这一闪属于流星,别人无法剥夺,亦无法掩盖。画出怎样一道痕迹,产生怎样的光和热,属于流星,这也是他唯一可以把握的东西。