最近这一年来由于公司的原因,连续不断的在不同的项目(技术)之间切换,当然这里说的不是编程语言,而是语言之外的东西;比如,之前写WINDOWS UI程序,然后需要写WINDOWS网络程序;或者之前是从事视频编解码器的工作,然后参加P2P项目的开发,考虑网络路由算法等。
由于有了一些年的开发经验,一般项目即使在刚开始接触的时候也还是可以理解,也不觉得有太多复杂的东西,但随着接触的深入,其实不是这么回事,除了知识不说,经验就是需要靠多实践和时间换来的。
软件开发需要至少涉及到两大部分知识:
首先是软件开发本身的技术,包括编程语言,数据库,网络,操作系统,以及各种API或第三方库,当然还有其他一些帮助开发的框架和工具,这些东西没有接触过还是需要一定的时间去了解。另一大部分是关于软件开发所涉及的领域知识;例如:如果你从事视频编解码器的编写,那么领域知识就是视频编解码器的工作原理,如果你参见P2P项目,那么P2P网络的算法就是领域知识;如果为企业客户做MIS,那么他们的流程就是领域知识。领域知识肯定需要学习,因为你不会都接触过。
因此下面这是我的一些总结:
1.一个月内能了解概念,可以工作,不会拖团队的后腿。
2.3-6各月内才能谈得上真正的理解。没有这么长时间的深入思考,对其理解也是非常肤浅的,即使你说你已经很了解了。
3.最好是自己能实现一些东西,并投入运行后观察问题,才能得出自己的见解,并才会可能成为专家。
这里可以说说经验是什么了。按照我的理解,经验就是将一些知识应用到实际中的一些遭遇。知识偏重理论,应用起来才能成为产品;经验来自我们一行行代码的编写,一段段程序的调试;当然还有很多BUG的修改和系统CRASH。
因此看来不要在一开始太骄傲自己了解多少,也应该要尊重有实际经验的人;正如有人说:了解越多才知道自己知道的越少。