前言:本文中笔者所指的开发人员,主要指从事企业软件开发的人士。鉴于对开发人员的理解往往隐含了特定的背景,特此声明。
Kaneboy谈到,“这倒能够引出一个很常见的现象,就是开发人员通常都比较重视开发语言、框架和相关的技术(比如ASP.NET、ADO.NET)而轻视产品(比如SharePoint Server、BizTalk Servr),大概是觉得学习和研究产品相关的东西没太多技术含量,或者觉得那些东西应该是IT Pro去弄的吧”。
开发人员不了解产品,是非常普遍的现象。对于大部分人而言,恐怕轻视都谈不上,而是压根没有意识到他们的存在。毕业之后我在一家几百口人的管理软件公司,工作主要职责之一就是跟踪微软的技术,研究如何基于微软平台开发下一代的产品。从VB、VC到C#,从Windows DNA到.Net,我自认为已经把微软的技术体系了解得很全面了。可是后来到了微软,接触到Windows Server,SharePoint,LCS,BizTalk,MBS,乃至于更加稀少的MIIS。再看看IBM、Oracle这些公司的产品线,才恍然意识到平台厂商的手,已经伸得很长很长,将越来越多的功能产品化。而这些功能,在以前更多是应用开发人员负责实现的范围。
一个简单的例子是关于文档管理。在第一家公司的时候,曾经有客户提出文档管理的需求,同时要求版本控制和安全控制。在当时我们所能考虑的,只是如何开发实现。到微软之后,某一天开始接触SharePoint,猛然发现Windows Server 2003自带的WSS(Windows SharePoint Service)已经提供了不错的文档管理功能。如果管理的是Office文档,结合Windows Rights Management Services,还能实现更高安全性的控制。当然我并不是孤独的,两年多的时间里我接触过不下10家的软件公司,在作文档管理的时候,是对WSS一无所知的。尽管大概有半数“熟悉”Windows Server 2003。
如果说Windows Server 2003推出时间不长,认识度不高的话,相比之下SQL Server普及很多。在开发业务系统的时候常常需要在两个SQL数据库间同步,比如从在线处理数据库复制数据到报表数据库。尽管IT Pro们很有可能知道SQL自带了复制技术(Replication)直接支持此功能,但系统设计的时候通常是开发人员唱主角。而开发人员知道SQL Replication的,恐怕不到1%。于是我们不难在设计说明书中,看到一个又一个数据同步模块。这种模块往往还是技术的高风险点,要花费众多资源进行前期开发和后期维护。
虽然今天还能够想出众多例子,说明大家花了无数时间,去从头造轮子,其实一些功能早已在微软的产品中有稳定的实现。但说来这主要不是开发人员的问题。毕竟,对于绝大部分人微软技术开发者来讲,是没有多少机会实际接触到SharePoint和BizTalk这样的产品,缺少感性的认识,其他也很难谈起。
即便如此,我还是觉得从开发人员(架构师)的角度,可以考虑去学习一些平台厂商产品方面的知识。微软体系的如Windows Server、SQL Server、Office System。这些的功能已经远远超出了大部分人所了解的程度。了解主流厂商的产品,可以在设计的时候,有更多的选择。考虑是完全自行开发,利用现有产品的功能,还是基于现有产品进行二次开发。哪怕由于环境的限制或者业务的权衡,不能利用已有的产品。看看行业领导厂商的解决方法,对于拓宽自己的思路也很有帮助。
同时,形势也在逐渐发生改变。Windows Server、SharePoint Portal Server、BizTalk等产品的市场份额正在提高。另外,由于这些产品自身的特性,以及软件销售策略和企业IT运作流程的影响,它们往往在跨国企业的普及程度比较高。及时的掌握一些产品知识,可能会对技术人员的职业发展,带来一定的竞争能力。