中国软件业真的到了该反思的时候了

中国五千年文化造就了我们诸多的性格,其中之一就是好大喜功,这尤其反映在中国的软件产业。不错,我们确实拥有数量巨大的网民,拥有无与伦比的庞大市场与用户需求,但这并不足以让我们的步入世界领先行列。在巨大的市场优势面前常常让我们有些迷离,有些飘飘然,有些盲目地民族自豪感,喊出诸如“赶英超美”的口号。然而,客观地讲,我们现在却是差距巨大。

也许你觉得我这话有些崇洋媚外,但静下心来仔细分析我们自己设计的软件,我们注重了软件质量了吗?我们在如履薄冰地进行每一次设计了吗?我们的每一个系统都在编写高质量的代码了吗?也许每个项目的第一个版本我们做到了,但随着软件生命周期的延续,与软件需求的不断变更,我们真的越来越难以拍着胸口说,我做到了!这就是当今中国软件之殇:没有高质量的软件设计,哪来高质量的软件系统?

所以,作为中国软件业中的一员,你应该仔细反思了。下面这篇文章,一个真实的故事,也许可以给你许多的感悟:

2012年,我接到一个任务,对公司一个运行了十年之久的软件系统开展课题研究,使其能够由现有的省集中的运营模式,改为全国集中的运营模式。将原有的,每个省一台服务器的运营模式,改为将所有业务都集中于一台服务器进行运营,毫无疑问,这是一个性能问题,通过加入缓存、分布式处理、数据库分区、读写分离等技术,从而解决大并发访问与大数据量处理,问题就解决了。起初,我也是这样认为的,但我真正深入到这个软件系统的程序代码中时却发现,问题不是想象中那么简单。

虽然之前也有所耳闻,但我真正深入到代码中时,还是感到十分的震惊。整个项目中,一个类数百个方法,一个方法数千行代码的地方,比比皆是。当你游走于数百个方法,或者数千行代码中时,即使像我这样工作了十多年的老手,要读懂也是相当困难,更别说那些刚毕业的新同学。此时,我意识到,如果不改变现有的代码结构,这个系统真的无法承载任何的技术改造。

我造访了参与这个系统多年的老员工,那些“元老”们。他们告诉我,这个系统其实在最开初设计上还是很不错的。然而,经历是十年的维护,各种功能需求,加加减减,不断更新,版本升级上百次,问题就变得越来越大。随着人员的流动,一些代码变成了盲区,谁都不明白它的意思,同时谁都不敢去对它有任何修改,除非迫不得已。每个新员工加入,都不敢轻易修改原有任何代码,而是在原有代码的基础上不断添加代码。这样,随着功能的不断变更,新添的代码就想肿瘤一样不断膨胀,最后由数百行代码扩展成数千行代码,由数十个方法扩展成数百个方法,代码质量不断降低。

慢慢地,程序员越来越看不懂代码了,但他们又要完成自己手头的工作,因此开发工作变成了一种冒险。那么公司怎么能保证每次上线的新程序是正确的呢?那就是测试,投入巨大人力与时间的测试。由于程序越来越复杂,每次修改的测试成本都变得巨大。而这时,由于开发人员觉得,测试人员总数能测出问题来,所以自己只负责开发就可以了,所有的验证工作统统交给测试人员。毫无疑问,这个项目已经陷入了一阵难于自拔的恶性循环之中。维持现状已然疲于奔命,何谈任何技术改造?

然而,我认为这不是一个个案,而是一种普遍现象。大家想想,哪个软件公司没有运营数年的遗留系统?哪个系统不是遭遇频繁变更?在这些系统经历了数十次变更以后,谁还敢拍着胸脯说,我们的设计依然很清晰,我们的代码依然很优质,恐怕不能。

“就这样吧,好死不如赖活着!”也许大多数人都会这样想,然而却不包括我。我从业数十年就一直是一个救火队员,去拯救那些无法再运行下去的软件系统。我很少开发新的系统,总是在半途去接手一个老系统。这些系统起初代码都十分凌乱,维护十分困难。但是在我接手之日起,事情开始变得好转。我总是在不断改造它们,优化它们的代码,使它们慢慢变得易于阅读、容易维护、容易变更。慢慢地,我们的维护工作变得越来越轻松,我们开始喝着咖啡,听着音乐,享受编程生活。我采用的方法就叫“重构”。

重构不是高端大气上档次的华丽名词,也不是病入膏肓才拿出来唬人的终极杀招。它不是将原有系统改得面目全非,更不是拿着代码一阵瞎改的鲁莽之举。而是一种科学而稳健的持续改善。经过多年的工作实践,我深深的感到,这种方法是解决中国软件之殇的最有效方法,因为:

  1. 假如你在维护遗留系统,这个遗留系统本身的设计并不好,代码质量存在问题,那么你可以采用这种方法,持续而稳健地改造,最后将软件的维护纳入到一个良性的循环中来;
  2. 假如你是一个设计者,你在设计一个新系统,但你的设计能力不足够优秀,不知道怎样适应今后的变更,那么没有关系,思考今天的设计。因为有了重构,我们不用担心日后的变更。这样每个人都可以编写出高质量的程序代码;
  3. 假如你是一个遗留系统的维护者,你发现原有的程序不能适应新的需求,那么没有关系,通过重构先改造原有系统,以适应新的需求,再添加新的需求。这样做,你会发现你很容易设计出高质量的代码,使得新功能的加入不会降低原系统的质量。

当所有软件企业都做到了这些,那么中国软件的质量就开始提高,中国软件业才真正能够腾飞。

本文作者:范钢,系统架构师,参与过国内数十个大型软件研发项目。《大话重构》一书的作者。

中国软件业真的到了该反思的时候了,布布扣,bubuko.com

时间: 2024-10-24 22:28:48

中国软件业真的到了该反思的时候了的相关文章

[转] 转发:中国科技创新的问题与反思

“科学技术是第一生产力”,这是1988年邓小平在同捷克斯洛伐克总统胡萨克谈话时提出的论断.此后,中国陆续退出了“科教兴国”.“建设创新型国家”等战略.可以说,当前中国比历史上任何一个时期都重视“科技创新”.可是,人们百思不得其解的是,尽管中国科技创新投入逐年大幅提高,其科技创新仍然与人们预期有较大差距.一个典型的证明是,中国本土培养和工作的自然科学家,至今尚未在诺贝尔奖上有所斩获.联想起中国曾经引以为豪的“四大发明”等古代科技,不免让人心生感叹. 中国科研为何难现高水平创新? 否认中国科研全方位

中国邮政进军移动支付 跟风大于理智

后来居上,并不适合互联网行业.但总有一些企业不信邪--尤其是国企,总是考虑自身在垄断方面的优势,想逆市而为.据已经确认的消息,中国邮政将投资1亿元在重庆建立电子支付服务基地,发力手机及互联网支付.在互联网金融浪潮兴起,移动及互联网支付大有取代传统支付的当下,中国邮政即使底蕴深厚,就一定能和其他已经进入的国企及互联网巨头一争高下?大张旗鼓地造势,真的能够像它所预期的那样占有一席之地? 开局:钥匙之争大不易 中国邮政已落后于人 互联网有个奇特现象,那就是原本互联网行业细分领域的先驱者,却给其他企业打

围棋人机大战:为什么AlphaGo不首先挑战中国棋手?(无责任猜测,不幸猜中不胜荣幸)

人机围棋大战 最近李世石出名了,阿尔法狗出名了,谷歌上头条了! 李世石虽然连输三盘,但第四盘扳回一局,第五局明天开战.期间国内各大棋手纷纷表示"不服",要求挑战谷歌的这只狗狗,那么问题来了: 谷歌为什么 要选择挑战韩国棋手李世石,而不挑战中国棋手呢?要知道如果挑战中国围棋高手,如果此战在中国发生的话,那么这个话题的热度绝对不是现在的10倍! 为什么人工智能应用在围棋上是很牛B的? 这个问题的答案相信很多朋友已经知道了.很多年前的深蓝大战人类已经让世界为之瞩目,而围棋因为下子的可能性太多

一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题

千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi embeded,都还暂时不能用,但相信会很快,等了一年,也不在乎多等点时间了,而且中国版的一些服务已经可以先进行一些测试和技术储备了.今天就来说说Power BI帐号注册的相关问题,以及多人协作环境的搭建. 苦逼这篇文章应该在2016年末发出来的,杯具搞到半夜,Win10系统死掉了...无法保存,当时那个

从奶农倒奶看中国经济发展

 "2014年12月10日 青海 据经济参考报消息,作为我国西部重要乳品生产地区的青海,2014年以来在大通.湟中等奶牛养殖主产区,牛奶价格比矿泉水还便宜,养殖户损失惨重,出现卖牛倒奶现象. 2015年1月1日 河北 新京报记者实地走访了河北行唐县三个养牛小区及一家收购鲜奶的企业发现,部分奶农平均每天倒掉的鲜奶近200斤,有的奶农甚至直接把鲜奶以0.5元/斤价格卖给养猪农户. 2015年1月6日 山东 据<证券日报>报道,2015年元旦刚过,山东潍坊爆出企业拒收奶而导致奶农大面积

项目管理系列分享(五)——我们能从中国现代音乐的发展学到什么?

在<从毛泽东到莫扎特>的视频中,在70年代末,Isaac STERN第一次访问中国,那时候中国才刚刚开放.对学生来说,西方音乐是个新事物.当10年后,Isaac STERN再次访问中国,中国音乐学生西方古典音乐的水平已经达到了一个非常高的水准. 上周,我去了一个成都四川音乐学院管弦乐团的音乐会. 四川音乐学院交响乐团北京现代音乐节 这个音乐会改变了我对古典音乐的看法.一个好的音乐会,不一定要强调"古典". 所有我在欧洲.美国.日本和香港参加的古典音乐会,我从来没有接触过这样

大家都应该看看这个贴子,会让你心明眼亮。 注意到这些变化了吗?中国正在发生的100个变化,越往后读越震惊!

1.阿里巴巴.淘宝.京东正在沦为传统企业 2.传统互联网不断扩大贫富差距 3.移动互联网开始消灭贫富差距 4.中国互联网从“尾随”美国变为“反超”美国 5.互联网倒逼中国政府深化改革 6.最贵的东西:以前是地段,现在是流量,未来是粉丝 7.“无生意可做.无工可打”正在成为事实 8.你再也雇佣不到优秀的人才,除非你跟他合伙 9.自由职业正在大量兴起 10.人的个性被不断释放,兴趣正在成为谋生手段 11.中国这轮变革带来的机会远比上一轮改革开放多 12.你获得的回报正在跟你创造的价值成正比 13.有

程序员出路之转36岁程序员的困惑

早上看到的这篇文章,包括内容和评论都仔细的看过了,感慨颇多. 要时刻考虑自己未来的出路,尤其是在自己还能选择的时候,否则到自己被迫选择的时候就会很被动. 下面是文章和评论的转载. 今天特郁闷,经理找我谈话,我被炒了.以前自信的感觉完全不在,取而代之的是职业生涯的困惑,不知道向何处去. 想当初,为了学习更 多知识的我到了一家软件公司,后来一直没有离开软件行业.而我的好哥们毕业后直接进入税务局,银行,以为他们只是浪费青春,学不到什么知识,可是他们却顺 势识时务.会搞关系,擅长腐败而成功转型,都成副处

程序员的十层楼

第1层 菜鸟 第1层楼属于地板层,迈进这层楼的门槛是很低的.基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,均可入门迈进这层. 在这层上,中国有着绝对的优势,除了从计算机专业毕业的众多人数外,还有大量的通信.自动化.数学等相关专业的人士进入这一行,此外还有众多的其他专业转行的人士,人数绝对比西方多出甚多.并且还有一个优势就是我们这层人员的平均智商比西方肯定高. 没有多少人愿意一辈子做菜鸟,因为做"菜鸟&q