法国政府搞的一个软件项目,坑出新境界

首页 > 新酷 > 程序世界 > 本文
2018年05月16日 22:38 | 搜狐 暮云
来源36Kr/Cado 36kr.com/p/5130755.html 【编者按】很多软件项目开发时间大大超出了规划的时间,投入大量资金和人力,都没有实在的结果。如果你讨厌你的编程工作,请认真阅读......

原标题:法国政府搞的一个软件项目,坑出新境界

来源:36Kr/Cado

36kr.com/p/5130755.html

【编者按】:很多软件项目开发时间大大超出了规划的时间,投入大量资金和人力,都没有实在的结果。如果你讨厌你的编程工作,请认真阅读这篇 2008 年的文章吧。法国科技公司为政府做的项目,预期两三年,做了十二年还在做;6 百万行 C++ 代码,经理比工程师多,人员素质极低。

几年前,我在一家法国大型科技公司工作,为他们的一个软件项目做咨询师。在那段时间,我见识到了软件工程工作方面最匪夷所思的一切,完全超乎我的想象。项目人员工作极度不专业,而更严重的是,工作环境完全无视人的尊严。我一度觉得去那里上班就像坐牢。我只要举几个例子,读者自然就有分晓。

工作内容

为一个政府部门开发一款软件。

政府先付了几百万欧元的订金,软件开发耗时初定 2 到 3 年。公司雇了几个工程师,开始了项目。每隔三个月,团队人数就翻一番,以便让资金不断流入。

7 年后,项目还不成样子,连雏形都没有。每天公司都要交几千欧元的罚金。于是,管理层决定节流,把经验丰富的员工都辞退了,雇了些经验少,甚至完全没经验的新人。

10 年后,项目进度实在太滞后,中层管理人员决定雇佣有软件工程经验的人,把项目拉回正轨。公司的员工每三个月换一批,也就是法国离职交接期的时长。

12 年后,项目还没结束。公司每天给政府发的修改申请越来越多,以“补贴”每天缴纳的罚金。此时已经是 2008 年。

项目数据

600 万行代码 基于 C ++ 50,000+ 类 使用的 C ++ 已经过时,“锁死”在编译器版本中,编译器的版本只能一个操作系统上用。 基于 CORBA 项目使用的数据库软件背后的公司已经破产 图层用户界面有好几个,但实际上每一层都没人维护。 32 台计算机上构建,需要 48 小时 运行一个用户界面需要 40 到 50 个并行进程 没有动态库链接:可执行文件大小在数百兆字节范围内 启动时间约为 15 分钟 瘫痪频率:每 30 秒到 30 分钟一次

没有那个软件工程师会说 C++ 很简单。就其复杂程度而言,这或许是最难掌握的编程语言,就连创造 C++ 的几个工程师都坦白说,他们自己也没有完全掌握。

这种无底洞、大迷宫似的语言,还是有不少人扬言说自己已经掌握了,只要有机会,他们就敢用给你看。他们一猛子扎进这口深井,最后大多遍体鳞伤。看着一满篇天书,花不知多少小时,也找不到瘫痪原因。人都是很聪明的,人生短暂,投入一段时间没有回报,就会“弃暗投明”,改用其他语言,改做其他项目。

软件一大,不管是什么语言写的,维护起来都很难。6 百万行代码,就一个小团队维护,只要想想就能发疯。6 百万可不是小数字,就算一秒钟读一行,也要 70 天不眠不休才能看完。

我再举两个实例,读者就知道这个项目有多让人崩溃。

有一个开发者被分配了这样一个任务:找出在界面上点击右键,界面冻结的原因。他花了几天时间,仔仔细细检查,耗掉大半耐心之后,他发现,在界面上右击后,其实没有错误,只是内容菜单要 45 分钟后才弹出。每次用户在主窗体点击后,菜单是动态生成的,但是背后是巨量的静态内容,因此耗时长。有些用户反馈说“加载 CD”的命令完全没反应。这个问题花了几个星期才弄明白,但是最后,错误报告却被标记为“已解决”,因为数据确实有加载,只不过是花了整整 7 天,才加载完 700 兆的数据。嗯,不然怎么说耐心是美德呢…

版本控制,犹如脱缰野马

好几年过去了,团队里终于来了个人才,提出要用版本控制工具。第一次尝试,效果不如人意,于是团队决定换一个系统。又过了几年,每次更新的历史数据全没了。最后,他们选择使用一个瑞士的系统,图形用户界面简直不堪入目。有一个四人小组全职负责版本控制软件方面的维护问题,跟他们合作,我们常常面临以下的问题:

第一次测试需要与版本控制团队先预约时间,通常在一周后才授权。 未经中层管理人员授权,不允许编辑文件。必须事先告诉经理要编辑哪些文件,然后申请上级许可,再预约版本控制团队,在几天后才能编辑。 每次修改代码都会产生分支文件,也就意味着必须合并所有修改。有了这么多的文件,你可能觉得,不会出现两个人弄同一个文件上的重复劳动。但事实证明,大家都在弄同样的 100 个文件。 检入(check in)过程非常痛苦,这个过程中,你的代码经过自动化错误检测软件审查,最终由中间管理人员审查。不用说,bug 的出现速度永远比开发人员纠正速度快得多。如果你仔细看注册的错误数量,每次修正导致的新 bug 数量,是原来 bug 数量的两倍。 版本控制很简单。旧软件是版本1,目前的软件是版本2,未来的软件是版本 3. 没有人知道哪个版本已经交付给客户了。

从前的某一天,公司安排过正式交付。但是这个时间不是团队内的人定的。那天,客户受到了一张没有内容,只有安装指引的光盘。那时因为,没有人知道怎么把这个项目做出来。后来客户发现他们受到的光盘里,什么也没有,于是给公司发了封正式的投诉信。

公司居然把旧版本的软件发给了客户。客户之所以能发现,是因为他们看了“说明”栏,里面的内容跟上一年的版本大同小异。

“人件”

微薄薪水,只能雇庸碌之辈

团队里大部分人都是没有软件工程经验的人,软件里要不是大部分都是 bug,就奇了怪了。经理意识到,一个单纯的软件项目,支出的大头是薪水,真是天资聪颖。但是,这个大发现丝毫没有影响 TA 炒掉工程师,不论他们有没有经验,却把桌面上有“C++傻瓜入门”之类书的管理人员统统留下了。

我们的梦想团队

团队 55 人:20 个开发者,35 个管理人员

没错,管理人员数量比工程师还多。

管理人员最擅长的就是开会,讲的都是同一个 PPT,一遍又一遍,讲到吐为止。而开发者就在宽敞的共用办公空间里聊天解闷。

很多管理人员在软件工程上毫无经验。当时 SCO-Linux 争议炒得沸沸扬扬,不管整件事算不算闹剧,很多人都意识到,以后要用自由软件都要付费了。)不用说,整个软件到处都是 GNU C 库里的代码,一个巨型 GNU 兼容的非共享软件。但是,就这个项目的水准,估计也没人敢把代码放出去。

自由软件(free software),根据自由软件基金会对其的定义,是一类可以不受限制地自由使用、复制、研究、修改和分发的,尊重用户自由的软件。这方面的不受限制正是自由软件最重要的本质,与自由软件相对的是专有软件(proprietary software),或被称为私有软件、封闭软件(其定义与是否收取费用无关──自由软件不一定是免费软件。

整个团队,技术水平不如人意,了解互联网的人屈指可数,其中自认为了解互联网的,以为互联网只是为爱情动作片而生的。他们之间,如果有人说自己在网上看了点东西,听者就会露出会心一笑。

地狱之旅

本来在这里的工作,虽然不算优越,至少不会无聊。但是顶层的管理人员非要采用纳粹管理集中营的办法来管理员工。我随便举几个例子:

早九点后到岗是不允许的。有一天, 经理站在大门后,把 9 点整以后到的所有员工都当场炒鱿鱼,包括一些经理和销售人员。 抽烟的员工,因为跑出去抽烟,工作的时间就打了折扣。所以管理层决定让所有员工都不许吸烟。当然,没有用。 有时候,一连好几天咖啡机都被收起来。因为跑去喝咖啡的人自然没有坐在办公桌前的人、伏案写代码的人工作时间长。 每次有上级来视察,咖啡机就要关掉,以便给上级留下大家都在桌前认真写代码的印象。 那里的洗手间是我去过的洗手间里最恶心的。大概也是为了提高大家的效率:上厕所的时间少了,工作的时间自然就多了(工作质量自然也上去了)。

这样的工作,这样的管理,为什么大家还要来上班?最主要的原因就是当时法国深陷经济危机(某种程度上,现在也是),有工作,有薪水几乎成了特权,工作环境、内容自然就没那么在意了。

还有一个原因,对于在那里的大多数员工而言,这份合约算是他们与一家真实公司签下的一份实实在在的合约。没有对比,就没有伤害,他们可能都不知道这份工作的糟心程度。很多员工新入职场,觉得迟到就被炒鱿鱼,也没什么不合理的。但是,这样严苛的标准,晚一分钟都不行,只有变态的管理者才会付诸现实。

话又说回来,政府怎么会让这样的事情发生呢?但我们都心知肚明,政府里管这个项目预算的官员和软件公司的顶层管理人员拜过把子,关系够铁。在法国,这种程度的腐败也没什么新鲜的。很多人根本不知道,更别说有什么惩罚或者后果了。当然,也不限于法国,放眼欧美,这样的故事也不少。

所以,下次上班觉得难熬,要学会置身处地。想像一下自己在那里工作,会是什么光景。

  • 优秀web前端必经的三个成长阶段
    也许你现在还是刚接触web前端,也许你现在是个初级的web前端开发工程师,相信每个人心中都希望自己可以达到年薪50万!今天学码思web前端培训www.njxms.com.cn老师就为各位分享web前端...... 程序世界 2018-05-21 | 搜狐 暮云
  • 从R-CNN到YOLO,一文带你了解目标检测模型(附论文下载)
    大数据文摘作品 编译Yanruo、小鱼 这是一份详细介绍了目标检测的相关经典论文、学习笔记、和代码示例的清单,想要入坑目标检测的同学可以收藏了! 在大数据文摘后台回复“目标检测”可打包下载全部论文~...... 程序世界 2018-05-21 | 搜狐 暮云
  • 中国工控|电气图纸制图规范是怎样的
    技术文章来源提供 一、电气图定义 用电气图形符号、带注释的围框或简化外形表示电气系统或设备中组成部分之间相互关系及其连接关系的一种图。广义地说表明两个或两个以上变量之间关系的曲线,用以说明系统、成套...... 程序世界 2018-05-21 | 搜狐 暮云
  • SRGAN With WGAN:让超分辨率算法训练更稳定 | 附开源代码
    作者丨胡智豪 单位 | 棒谷网络科技图像工程师 经历丨实现过电商大规模以图搜图、超分辨率等项目 写在前面 此文挖坑了很久,项目本在 7 个月前已经结束,但一直没心思把代码整理出来,后来发现有相同思路的...... 程序世界 2018-05-21 | 搜狐 暮云
  • 一文了解“最好编程语言”PHP 必知的 16 个编程法则!
    PHP是最好的编程语言。对于PHP开发者来说,掌握一些编程法则是十分重要的。而在PHP中,以双下划线(__)开头的方法称为魔术方法,它们扮演着非常重要的角色。 常用的魔术方法包括 -__constr...... 程序世界 2018-05-21 | 搜狐 暮云
  • 从没想到监控可以这么做!阿里云RDS智能诊断系统首次公开
    阿里妹来自阿里云RDS团队的论文“TcpRT Instrument and Diagnostic Analysis System for Service Quality of Cloud Da...... 程序世界 2018-05-21 | 搜狐 暮云
  • 数据分析没你想象的难
    你还在为数据分析如何入门而苦恼吗? 该学哪些课程呢? 要不要学习Excel? 要不要学习SQL? 要不要学习Python? 要不要学习R? 一看代码就头大怎么办? 没有编程基础怎么办? …… 现在再也...... 程序世界 2018-05-21 | 搜狐 暮云
  • 新世纪Nerv战士 - 京东首页补完计划
    16版的京东首页,在性能、体验、灾备策略等各方面都做到了极致。站在如此高大的巨人肩上,除了满满的自信,我们心里更怕扑街。毫无疑问,我们在接到改版需求的那一刻,立马就敲定了新首页的技术选型妥妥的jQu...... 程序世界 2018-05-21 | 搜狐 暮云
  • unity3d开发语言发展好吗
    如果我问你身边玩游戏的人有多少?可能你会毫不犹豫地回答everyone!但是如果我问你身边做游戏开发的人有多少呢?整天喊着unity前景好、就业好、薪资高,但很多人听了都不信,就觉得这肯定都是一些培...... 程序世界 2018-05-21 | 搜狐 暮云
  • “成功者”孙宇晨?
    波场Tron(tokenTRX)创始人孙宇晨对“币圈贾跃亭”既敏感又反感。在沉寂一段时间后,波场套现上亿资金和孙宇晨跑路的流言四起,这位90后的总裁再一次回归大众视野,开始辟谣,表示自己没有套现、跑...... 程序世界 2018-05-21 | 搜狐 暮云
  • JDBC(通俗易懂)简单的操作(增、删、改、查)
    是时候再写点东西啦,保持一个好的习惯,那么这次就讲下JDBC的基本操作吧~JDBC还是相对简单的,关键在于入手的角度,那么就讲下常用的MVC模型视图控制器吧~下面我贴出了JAVA项目所写的类 上面的...... 程序世界 2018-05-21 | 搜狐 暮云
  • 你会是下一个程序员大牛吗?这7种能力你有几个?
    想知道自己能不能当程序员,简单来说 程序员的基本能力是Tasking和学习能力。 当好程序员的能力是用更好的方法来实现功能 在这里相信有许多想要学习前端的同学,关注小编文章最后面文字,可免费领取...... 程序世界 2018-05-21 | 搜狐 暮云
  • 西二旗也能有美好生活
    -- Illustrations by Polina Doroshenko 西二旗,这几年北京的网红地区。 说起这个网红地区的网红程序员们,大家往往心里都会有一些熟悉的标签,比如月薪五万啊、加班啊、脱...... 程序世界 2018-05-21 | 搜狐 暮云
  • 国外大神总结的10个Java编程技巧!
    这是一个国外大神20多年的经验总结出来的…… “任何可能出错的事情,最后都会出错。” 这就是人们为什么喜欢进行“防错性程序设计”的原因。偏执的习惯有时很有意义,有时则不够清晰也不够聪明,也许当你想到这...... 程序世界 2018-05-21 | 搜狐 暮云
  • 王小川:努力克服痛苦期,不要怕犯错
    高管介绍王小川,搜狗公司CEO。 人生的意义在于坚持、找到自身价值,不断追求进步,从优秀走向卓越;不怕犯错,去好奇和追寻世界运行的规律和本质;坦然面对成长中的成功与失败,让生命变得更有意义。 来源 ...... 程序世界 2018-05-21 | 搜狐 暮云
  • 520表白姿势,程序猿都是这样操作的......
    掐指一算 正式进入520 还没来得及准备的人 要么被打断腿,要么注孤生 不过目测已经有一大批直男 死在了口嗨撩妹的路上 “你长得好像我妈的一个亲戚” “是吗?谁?” “我妈的儿媳妇” 。。。 还在送掺...... 程序世界 2018-05-21 | 搜狐 暮云
  • 教育机器人走红 市场亟待正本清源
    政策层面的变化让一个行业的发展开始提速。 继今年1月16日,教育部举行新闻发布会推出新课标,将人工智能、物联网、大数据处理、算法、开源硬件项目设计等划入新课标后,浙江省今年将含编程在内的信息科学列入到...... 程序世界 2018-05-21 | 搜狐 暮云
  • 使用PostSharp实现AOP拦截
    摘要 本文首先介绍AOP(面向方面编程)的相关概念及理论,然后介绍如何使用PostSharp框架在.NET平台上实现AOP,最后对PostSharp的机制及AOP的优劣进行一个简单的分析。 AOP(A...... 程序世界 2018-05-21 | 搜狐 暮云