国内的软件工程师多成长于技术分科、领域霸权的环境中。在学校和单位中只能顺从分科界限和权威指示,难越雷池一步。从上中学开始,必须服从标准化作业和考试,否则,将被排斥于主流体系之外。到了博士阶段,演变为必须服从博导的领域划界。曾经有个软件开发项目与某大学合作,在讨论项目时,看到博导训斥博士生,因为他的想法超出了博导规定的界限,据说是涉及了另一个博导的领域。
对掌权的博导之类的人来说,默守划界的潜规则可以使自身利益最大化。对于学生来说,在国内学习越久,创造性被磨灭得越多。我们看到就思想的活跃性和对新观念的接受能力来说,本科生强于硕士生,硕士强于博士。一次,与一个博士讨论问题,他总是固守着引经据典的思维模式,要么他要求你说出观点的出处,要么他说某个观点已经有人提过。我们讨论问题是为了碰撞出思维火花解决问题,而不是对概念和表述方式进行争论。
在模式化学习环境中生长出的学生,只能够期望媳妇熬成婆,重复导师的生存方式。一旦进入社会,都有个痛苦的适应过程。好在大多数人都有对环境变化的适应能力,不过,要在社会中得到较好的发展,需要自学成材。社会环境与学校或研究环境不同,不受学派典范的约束,而是按时代需求发展。在社会中,软件工程师或软件研究者比在学术或研究环境中具有更多的属性,据不完全统计,至少具有十种属性,下面先介绍其中五种。代码工人处于生产和科研一线的软件工程师经常超强度工作,非常劳累。如同工业时代初期的织布工人,唧唧复唧唧,日复一日,干着重复的工作。在感觉上,搞软件与开机床砌砖头不同,似乎具有更高的技术含量。实际上,软件工程师的劳动强度并不比传统意义上的工人弱,而且还增加了脑力劳动的强度。
一般人受“劳心者治人,劳力者治于人”教条的影响,以为治人者总是高人一等。其实,每个人所具有的素质都能在社会中找到最能产生价值的位置,假如你不擅长做领导,将你勉强放在领导的位置上,是个十分痛苦的事情。人的快乐源于适合你的劳动,只要你在编程的劳动中感到快乐,这就是当前适合你的工作。当你在劳动中勤于思考,面对问题不低头,主动积极学习、提高能力,积累到一定程度,就会产生质变,社会将赋予你更适合的大任。例如:假如沿着技术路线发展,从一般的程序员,会发展成为系统工程师、软件架构师,直至闻名的软件大师。概念编者面向应用,软件被赋予名目繁多的概念。MIS、MRP、CRM、ERP等等概念让人目不暇接。将新应用赋予新的概念无可厚非,但仅仅靠对概念的一知半解,或者预谋用概念蒙蔽顾客获得一己私利,是对IT事业侵害的原罪。
在完整的软件制造流程中,概念创意是一个重要的环节,创造概念需要有深厚的技术素养和哲学洞察力。有些人只是在玩文字游戏,拼凑出表面新异的伪概念,没有实质的内容,也不能给客户带来真正的利益。在社会分工体系完善的环境中,概念创造者能够靠营销概念而生存。不要以为概念等同于文字或符号,有价值的、概念表征合适的增值机遇和愿景,是对时代资源的发现和融合。概念的文字表现仅仅是表面的形式,概念内容包括人的因素和技术物质条件。所以,概念创造不只是文字创造,而是在综合考虑时代需求、社会条件和创造价值系统的基础上,用合适的文字表达创造的成果。软件概念编者首先是对时代对软件的需求有深刻的感悟,然后贯通人才资源和物质条件,用合适的符号表现。理性标榜软件是让机器能够读懂并执行的语言,每个表达符号,变化算法必须确定,不像人际语言可以用模糊的方式表达。经过数码化练习的软件工程师,日积月累形成习惯,多以理性的方式从事工作,以及解决日常生活环境中碰到的问题。在当今以经济建设为主要活动的社会环境中,我们需要用理性的方式进行劳动和交流,软件工程师的理性方式刚好能够弥补中国传统文化的弱项。
提倡理性,并不是要求人们像机器一样对待工作和生活,而是要看到自身文化的不足,吸取先进的知识和经验。将软件工程处理问题的方式进行精炼、提升,用于其它的领域,会取得突破性的成果。笔者曾经借用软件工程的结构化方式进行项目的可行性研究,取得了很好的效果。将其写成《企业结构化技改项目可行性研究方法》论文发表后,很多人反映,得到了许多有益的启示。
强调理性并不是忽略或贬低感性,人们的工作和生活环境是多元化的,理性和感性一个都不能少。机器绝不会理解感性的诗情画意,软件工程师一方面应遵从机器逻辑编程,另一方面要增加艺术修养,进行灵感性创造。创新房士对软件进行深刻的思考,将软件思想、精神用于其它领域,或将其它领域的原理用于软件领域,是种创新的有效方法。我们知道,假如采用连续编程策略,软件的可靠性、扩展性和可维护性都很差。解决这种问题的有效方法是模块化编程,这种方法来源于机械装置的分部件制造,组装成机器的策略。推而广之,UML就是为了将模块化编程方法一般化,而发明的高效编程工具。
UML将软件处理的对象物件化,包括结构物件、行为物件、分组物件、注释物件,这种思维方式适用于创新和发明领域。创新和发明就是将知识显形化,把无形的知识转化成有形的物件。有人采用UML方法实体了体系化发明。例如,有个靠创新产品生存的公司,申请了十八项专利,自以为对知识产权保护得非常完善。用了UML方法发现,可以发明专利体系,至少包括六十项专利。了解技术创新理论的人会发现,这种理论方法与UML有许多相似之处。在我熟悉的朋友中,有些人将软件方法用于其它领域,取得了很好的业绩。和谐大使软件工程师都有两套表达体系,一套是专业表达体系,一套是日常表达体系。有些人将两种体系分别看待,有些人把两种体系融会贯通。无疑,对社会来说,后者更有价值。在软件公司的经营实践中,都知道只有将专业知识理解后,用客户熟悉的语言方式表达,才能与客户进行良好的沟通,从而提高取得订单的概率。在社会环境中,专业化细分是由于人类能力和工具条件的限制。在人类文明初期,由于知识积累不多,大部分知识分子都是博学家。在现代社会,知识量大大超出了人类个体的处理能力,只有通过专业分工的方式发挥个体的特长,推进人类知识的深化。不过,分化不能过度,在一定的阶段需要融合。所谓分久必和,和久必分,也适用于知识领域。
作为一种新生专业人员,软件工程师的社会价值体现于当今社会非凡需要的发挥和谐作用方面。社会中的大多数分化的专业都在认同并采用软件,软件也从信息孤岛状态进化到了全球融通势态,实际上,软件工程师就是社会的和谐大使。另一方面,就人的本能来说,有贪、嗔、痴固有的弱点,就是对物质的贪婪,在人群中好争强排序,对某些东西死抓不放。软件工程师面对的是机器,不能只单方强加个人意志,必须在一定技术条件下与机器和谐相处。这就会养成一种心态,以和谐的方式处事。
文化风标工作和生活方式会养成一种习惯,习惯的行为表现出一种文化倾向。软件工程师一方面要服从机器环境的标准、规定、约定、惯例,让工作成果能够运行,产生结果。另一方面生活于人际环境中,需要伸张个性,满足个人趣味。这样,我们在不同的场景中,可以看到两种软件工程师的形象,一种是严厉的人,一种是散漫的人。
李开复跳槽Google,尽管有多种说法和理解,但笔者认为最重要的因素是文化。传说中的Google公司环境极其自由,对软件工程师极具吸引力。用历史的眼光看,软件工程师的工作环境与编程技术发展有关。在用穿孔纸带编程的时代,软件工程师职业只是少数人的选择。记得给我们上软件课的教师曾在课堂上诅咒过软件,谈到他学软件的经历,声称不是人干的活,编程时稍有疏忽,纸带就过不去,就要从头来,感觉非常痛苦。现在有许多编程工具,让编程成为一种实现思想主张的快乐事情。
当越来越多的人参与到软件编程活动来后,会形成一种以软件为载体的社会文化。以往的文化以文字和艺术作品为载体,作家和艺术家是文化的设计者或主导者。未来的文化会以软件为载体,软件工程师自然会成为社会文化的风标。目前,博客已经成为一种社会文化现象,这种文化结构的设计者就是软件工程师。政治工具有的企业引进信息化系统,并不是为了提高工作效率,或者为了达到其他的技术或经济目的,而是为了某种政治目的。这时,软件工程师实际充当了企业政治工具的作用。
有个从乡镇企业发展起来的企业集团,进行了换代接班。新上任的企业领导所做的第一件事就是引进企业信息治理系统,非凡重视用软件对每一个干部进行评测。参与评测的软件工程师开始认为这个企业的新领导重视科学技术,干得非凡卖劲,认真做出评测告交给新老总。哪知此人并不关心评测内容,只是按自己的想法圈出了想要和不要的干部。这时,软件工程师们感到自己被别人当工具使用,非常生气。但情绪反应过后,冷静地想,你不做,他花钱总能找到人做。找业务不轻易,还是按客户要求做了吧。
说到充当工具,总是让人感觉不爽。实际上,“工具”是个中性词,可以遮人耳目达到个人目的,也可以韬光养晦成就事业。在一个传统势力强大的企业推行改革,往往会碰到非常顽固的阻力,用一般的方法难以见效。这时,可以考虑使用信息技术工具,以科技的名义推行改革。在改革成功的勋章中,软件工程师功不可没。经济异客按传统的思维,进行经济活动总是以实体要素为主,像软件这样的虚质要素,只能作为辅助工具。有人反其道而行之,以软要素为主进行经营,结出了奇异的果实。虽然按一般人习惯的思维模式,可能将其归类到软件、咨询、票据行业。但是,在熟悉了这种新经济模式的内容后,你会感到用已经有的行业无法将其归类,它完全是一种行业创新。
按照历史的轨迹看,这个新行业的发明人首先是作为软件工程师的角色在社会中产生作用,面对日趋激烈的市场竞争环境,他一直想用与众不同的方法进行经营,这对小公司来说,是一种有效的竞争方法。经过了顽强的试错过程,他找到了一种自己感爱好的将软件思维与经济思维相结合的发展道路。
用软、硬框架将企业进行分类,他认为在经营软要素的企业中,银行和电信是最成功的企业,他们的共性是经营密码。银行经营的货币、支票、信用卡等都是密码的载体;电信设施中跑的是密码,卖的充值卡也是密码。密码的本质是数码,这与软件工程师的工作内容是一致的。也就是说以软件工程师的能力可能经营银行和电信这样的超级企业,一般人想到这个层次,自己就被吓住了,因为银行、电信这样的企业个人是不可能涉足的,也就不会再做进一步的思考。有位软件工程师不是这样,他继续按照突破的模式进行思考,找到了沃尔玛的弱点。他认为沃尔玛是大工业时代的产物,在未来的信息社会中沃尔玛所满足的社会物流需求,将会被营销密码流所替代。他的理想就是实现密码流超级企业,成为新时代的沃尔码。
尽管我们不一定同意他的观点,但是面对他所做出的成绩,我们无法否认。国内某大型企业集团采用他所发明的经营模式,取得了极低投入极高产出的效果;目前,香港一家大型企业集团非常看好这种创新的商业模式,为发展这种经营模式进行了投资。
现在许多软件工程师都在考虑今后的发展问题,突破固有的技术框架约束,将软件与经济相结合进行创新,是一种可以选择的发展方向。在未来的密码流经济中,软件工程师应是一股中坚力量。因为这种经济与以往的经济都不同,我们暂且称从事这种经济活动的人为经济异客。财富英雄比尔-盖茨创造财富的故事,让人们将软件工程师与财富英雄相关联。国内以丁磊为代表的财富英雄的创富案例,也强化了人们的这种熟悉。问题是人们在思考财富英雄时,往往把他们的成功归结为偶然的因素。比尔-盖茨的成功是因为有其父亲的帮助,丁磊的成功是因为抓住了投资人为网络经济烧钱的机遇,而后又抓住了网游发展的机遇。因为没有好父亲,没有机遇,所以就以此为借口不做努力。而有好父亲又有机遇的人,又会找到其它为自己开脱的理由。
问题出在我们对成功的理解上,一般人认为成功是达到一种数字目标,倾向于将社会某阶段的英雄人物的业绩作为目标。要知道,某一领域的英雄一定是前无古人后无来者,假如人人都成为了英雄,就没有了英雄。英雄是时势所为,世界上不存在制造英雄的方法。在信息产业,比尔-盖茨是公认的英雄人物,之所以能保持长久的英名,是因为一直在努力。所以,我们不要图英雄的虚名,而要学习英雄的精神。
对人人都有用的经验是改变对成功的观念,努力就是成功。每个人由于基础条件的不同,用同样的努力,不一定都能看到春暖花开的场景,但是只要努力了就会有改变,就会接近人生圆满的目标。以笔者个人的经验讲,天天努力学习、思考,不时有聪明的灵光闪现,让人感受创造的愉悦,这也是一种幸福。社会先锋在现代社会环境中,数码所起的作用将越来越大,我们将在一个数码为主导的社会环境中生存。社会以融弃规律发展,也就是说新的事物会融合旧事物的合理因素,抛弃旧事物的无理因素而发展。例如信息社会融弃工业社会,是将工业社会合理基础保留下来,用信息技术创新构造工业社会的物质基础。
在这样一个新的社会环境中,软件工程师是一个紧跟时代变化的前沿群体,肩负融弃旧要素,建立新结构的时代使命。从专业化的代码操作,到跨行业应用,再到引领社会发展方向,软件工程师正逐渐成为社会的主导力量。
当然,在此所说的软件工程师与现在通常所说的软件工程师概念不同,在信息社会中,智质虚存主导体质实存,人类的主流从事智力活动,生产生活和生产资料的体力活动将由人类建立的机器设施基础来完成。
在人类社会发展的各个阶段,存在不同成份的社会先锋。农业社会以农民为先锋,工业社会工人阶级是先锋,在日趋成型的信息社会,软件工程师将成为社会先锋。工人阶级比农民阶级更具有先锋性,是因为工人没有生产资料,以出卖体力为主创造价值。现在,软件工程师依靠无形的智力创造价值,智力的力量可以突破时空的约束,比身体更自由。所以软件工程师具有更大影响力,将成为引领社会发展的新先锋。
社会发展的车轮滚滚向前,我们需要与时俱进地适应社会发展。从社会发展的趋势看,社会存在越来越丰富多彩,个人的活动将日趋自由,智力劳动将成为人类主流的生产方式。现在社会由于多样性而出色,人生因为选择性而丰富。软件工程师们不要只看到编程一条路,活生生的事实证实,社会丰富多彩的需要昭示,软件工程师应肩负更大的社会职责。所以,软件工程师的人生舞台十分广阔。