最近看了很多对中国软件业发展方面进行探讨的文章,罗列问题的确让人深思。不论如何大声疾呼,也不能立刻改变中国软件业相对落后的局面,不仅仅是缺少蓝领软件工人的问题,也有缺少各个方面的顶尖人才。就好像虽然没有兵的将领无法打赢战斗,没有了好的将领的士兵也是一群无头苍蝇。那么如何能够培养将领呢?本文抛砖引玉在此做出探讨。
首先提出的是开放的观点。这个观点似乎和培养软件的将领毫无关系。过去有句俗话:分分学生的命根。到了软件行业就是:源代码源代码程序员的命根。其实开放的含义,不仅仅是开放源代码这一个层次的东西。
不论我们制作一个软件产品还是一个技术标准,首先会确立一个技术规范。这个技术规范对于其他人认知你的产品和标准有重要的意义。你的产品结构是否合理,技术是否合理,是否有发展前途,大家都可以从你的技术规范中得到了解。从而决定认同或者反对你的观点。这个是基础规范的开放。
当我们的产品从雏形到产品生命周期结束,这个时候我们可以考虑另外几个方式的开放。最为极端的是源代码开放。如果我们抛开对思考方式和利益的争论单纯从软件开发的角度来说,全部的源代码开放是最为底层和最难为更多人应用的一种方式。很多人在做开发的时候考虑的都是如何尽快达到目的而不是如何达到目的。因此提供一个函数库成为80年代的优选。而现在有更多的方式可以让其他开发者选择,比如控件,组件和中间件。在很多人考虑如何钻研最底层的技术的同时我们可以发现随着软件开发和维护规模以及领域的不断扩张,让每个程序员都熟悉软件开发的每一个方面是不可能的。
更为现实的开放方式是提供一个可以为别人所用的控件或者组件。这样对于该软件开发者本身可以更好的思索如何将不同的功能模块独立和向外部扩展。对于那些由于该软件开放而受益的其他开发者来说可以更快的利用这些软件的功能达到自己需要的目的。这中间又会有一个互相推动的作用:原开发者可以从其它开发者的作品中找到新的灵感和收到新的要求;而其他开发者可以不断利用更新的产品来做出更好的自己的产品。
可以看出通过不同层次的开放,会形成一个良性的推动。让软件开发者本身不断进步,让其他开发者更快享受的开发的乐趣。有了开发的乐趣愿意投身软件开发的人自然会越来越多。
开放的同时,我们可以看到一个不断改进的过程。你开放了一定的开发规范,代码和功能甚至功能包。那么就会有其他开发者对你开放的内容进行不同视角的重新认定和建议。这些建议和认定可以不断对软件开发者本身提出更多的要求,开拓更多的思路。有很多建议和意见在开发者的思索和工作下会成为该软件的新的发展点。
对软件的不断改进,不仅仅是可以提供新的软件,还是对软件开发技术和软件项目管理技术的推动。
需要对软件进行不断改进,就需要不断充实新的功能和组合旧的功能。对软件的开发技术的要求就会越来越广阔越来越深入。对于一个软件开发者团队来说就是拥有了更多的软件开发知识和经验。形成一个宝贵的财富。同时随着软件规模的增大,必然引导软件开发团队采用先进的更适合自己的软件项目管理技术。而软件项目管理技术的成熟与否又是衡量软件开发团队是否成熟的一个重要特征。
之所以提出这两项,是由于我国目前软件行业开放程序和开放水平都比较落后,基本上停留在人员流动和源代码的水平上,无法从内部有效的普遍提高从业人员水平和开发水平。同时由于固步自封,造成软件产品缺乏不断改进的能力。