拨开软件架构迷雾 成为思路敏捷的IT人
信仁软件设计顾问中心(简称HSDC)软件架构师王克明历经导师启蒙与自我刻苦学习后,重新发现软件的架构优美与设计的乐趣,由基层技术工程师转型为思路敏锐的软件架构师,更创立顾问服务公司,将解决软件设计问题当成乐趣,套用Linus Torvalds在其传记标题所使用的形容词:「Just for Fun!」。
伟大的程序设计师知道要重复利用程序!
旧有系统(Legacy System)的整合一直是企业的痛楚,但主管对于如何启发软件工程师的思路,培养其架构规画的能力,常不得其门而入,才让IT系统逐渐陷入Frederick Brooks(着有《人月神话》一书)所谓的「焦油坑」。只是,当面对这样的挑战时,软件工程师根深柢固的线性思考却局限了省视问题的角度。
王克明举出一个公家机关的系统整合项目为例,此建案除了采购全新的流程软件,还须整合研发、原料、进销存、生产、维护等子系统,以完成产品质量的管控与资源分配。这是典型的异质系统整合问题,涵盖不同供货商的操作系统、数据库、应用服务器,以及系所单位,不仅新旧系统无法结合,上线运作更是遥遥无期。由于缺乏架构规画,许多软件工程师首先想到的解决方法,便是开发中介软件(Middleware)作为各子系统间的沟通接口,或者让每个系统都到数据库撷取信息,再重新组合,却造成数据库系统不堪负荷,这类治标不治本的方式等于是将灰尘扫到地毯下。如此一来,便让项目成为「焦油坑」。
彼得‧圣吉(Peter Senge)提到,这类问题衍生自忽略系统思考的重要性,因为「动态性复杂…会抵消个人或群体改善问题的所有努力,它会诱使我们舍本逐末、避重就轻、愈治愈糟、一再犯错,甚至兴奋而努力的制造共同的悲剧。」王克明提建议改良软件架构而非撰写中介软件,将每个核心组件「封装(Encapsulation)」,并以接口与其它系统沟通与交换数据,每个子系统间都可以抽换,因而解除彼此紧密相依的不可取代性,让系统整合能具备弹性,这也就是「作对的事」及「把事情作对」的最佳互补,他也称前者为大题小作,后者为小题大作。就软件设计为例,开放源码的关键人物之一Eric Raymond曾提出格言:「优秀程序设计师知道要写程序,伟大的程序设计师知道要改写(并重复利用)程序。」当软件工程师也具备结构化系统思考时,就能将职业生涯的危机化为转机,持续个人的价值,不会成为企业中随时可牺牲的资产。
王克明跨入这一行的起因,起源于对围棋的热衷,他眼中的围棋与软件一样,是最重视蹲马步的基本功,布局、中盘、官子、死活、定式与打名家的棋谱,是增进棋力的不二法门。但围棋对软件工程师的启示,在于仅用黑白两色棋,配合方形的棋格,便能产生千变万化的棋局,软件架构也应像是围棋一般,看似简洁易懂,却又变化无穷。至于从事软件设计,他的动机是用Java撰写一个奕棋软件,但在学习过程中,王克明原本自认为无所不通,直到遇到无法跨越的学习对象,也就是一位国内的对象导向大师,并成为他在软件设计的启蒙导师,导引他重新思考软件的本质与乐趣,后续更让他成为思路敏捷的软件顾问。王克明以自己为例,顾问的乐趣在于,「引导技术人员说出原本认为对的观念,但事实证明是错的」。他更眉飞色舞地说道:「想到软件业界处于混沌的乱世,我就更开心,因为,更有机会崭露头角了。」
除了围棋以外,他最大的休闲活动是读书,并期许自己要读遍天下所有书。他也建议IT人,追寻专业知识不是仰赖阅读坊间大量探讨「工法」的书,而是讲究「心法」,因为工法会跟随技术与工具逐渐推陈出新,但心法是根基于底层原理,而且历久不衰的。以生活中的例子形容,堆砖块的建筑工人如果执着于将砖头堆得更快且多(工法),将永远不如画蓝图(心法)的建筑师,对整体结构了然于心。
不值得做的事,就不值得做好!
传统企业中的阶层式组织,并没有提供员工自尊与自我实现等精神层次的需求与环境,主管将技术人员视为可随时替换的生产工具。因此,有些人在名片的职称上印着软件工程师,但却与操作员没什么两样,或者说,他们有着高度的工程技能,但缺乏工程管理的思维,所以工作瓶颈便一直停留在技术专家,犹如一个长不大的小孩。
软件工程师应秉持艺术创作的热情自我期许,在工作中找寻成就与自尊,而不是成为技术人员目光短浅、脑袋僵化、自以为是的通病,避免沦落为主管眼中生产工具。王克明中肯地建议道,软件工程师不应将理想寄托在企业上,认为藉由聘雇的制度可实现个人理想,相反地,应该是超越「纯工作」的心态,选择做最有兴趣的事,走自己的路。软件工程师应体认到,经营企业是在商言商的事,企业没有必要负责实现每位雇员的理想。
不过,他也不否认,许多时候还是为了满足薪资远大于成就,此时,只要应付即可,不必因为过于负责,而加班完成份外的工作。这并非异端邪说,从企业整体的角度思考,毫无目的加班只会造成资源内耗与成本支出。王克明以摘录自肯‧布兰查《一分钟激励》一书中的话形容:「Things not worth doing are not worth doing well.(不值得做的事,就不值得做好。)」。一般普罗大众会花最多的时间在工作上,虽然工作的职别符合专业与兴趣,但工作内容却非能由人们决定,而自己的兴趣及理想才是驱动人们努力工作的诱因。
公司的经营偏方:海盗式分赃经营哲学
在台湾开公司,约有95%的公司在第一年内会收掉,原因即在于还没获取利润,就已经先支出许多经营成本,包括人事薪资、办公室租金、文具开销等,这一点,王克明心知肚明。所以他效法中古时期海盗们「聚众成寇」,在海上四处打劫过往商船的经营哲学。他说道:「一开始没有钱买比较好的海盗船设备,所以先从弱小的商船开始下手。海盗们打劫到金银财宝后,就论功行赏,当然,其中一份是留给船长老大;另一份成为众海盗们的团队基金,可以扩充海盗船的设备、更加坚固壮大。」
对于由技术人员转为自行创业的营运建议,他认为小公司成立时,资金并不充裕,可以考虑采取「海盗分赃」经营策略,将参与项目的团队成员视参与的投入程度来「分赃」,并固定提拨一定比例的利润投入公司的营运用资金,「这样也能避免企业中常遇到的自肥!」,他乐趣地说道。文⊙张瑞隆
IT人物-王克明
信仁软件设计顾问中心 软件架构师
●学经历:机械化师文书官、系统工程师、Oracle DBA、IT部门副理、讲师、顾问。
公司档案-信仁软件设计顾问中心
●成立时间:2003年。
●营业项目:HSDC是由一群专业的软件设计师所组成的软件设计团队,提供的服务包括:软件设计人员的专业课程、为企业量身订做的设计课程、软件设计顾问服务、全方位软件资询服务。
>>学习软件设计的启蒙导师:Martin Fowler
王克明将Martin Fowler视为软件设计领域的偶像,更精读这位大师所出版的书籍,从《Analysis Pattern》、《Refactoring》、《Patterns of Enterprise Application Architecture》以及《UML Distilled》等,在软件层次从最抽象面至最底层的实做机制面,都能有最深刻的研究与发表。他甚至将Martin Fowler形容为「软件业界的达文西」。至今,Fowler的一句话:「Keeping Software Soft.(把软件做软)」,是影响他最深远的一句话,更是信仁软件设计顾问中心成立的宗旨之一。「在没听过Fowler之前,从不敢想象有这种天纵英才!」,王克明激动地表示。