文章目录

  • 前情提要
  • 为开始刨祖坟模式做准备
  • CGI inc发家史
  • 什么是外包公司
  • CGI group inc
  • 看看CGI公司外包的网站
  • 你以为CGI做的网站这就算差了?
    • 听说你想自己改成好记的密码,想多了吧
    • 信息填写一次过,听说你想写到一半保存?我是随便的人吗?
    • 冻结?如果你攻击我怎么办?
  • 反思
    • 团队文化

16350027 计应 黄俊

前情提要

其实说回为什么要写这一篇博客,其实很重要的一个原因是因为我这学期在申请签证的时候遇到了挑战到了我作为一个软件工程本科生认知的一件事情。

首先点草这个网站和负责开发维护这个网站的外包公司-- CGI Group Inc. 从google的结果来看是负责承接政府项目的一个加拿大专业外包公司。

CGI集团 是一家总部位于加拿大蒙特利尔的跨国公司,业务涉及IT咨询和外包服务及其相关产业。2012年以27亿加元的价格收购英国IT服务公司Logica,因此成为世界第五大独立IT服务供应商。

以上是这家公司在wikipedia上面的介绍,可以看到其实还是挺厉害的,那到底这个公司做了什么让我这么生气,并且这件事的发生是偶然呢还是必然呢,接下来就由我进行实地的考察来得到结果(也就是去看看其他cgi外包的网站的交互逻辑是不是也像签证网站一样)。并且给大家一条条地解释cgi设计的交互逻辑不合理的地方都在哪些地方。

为开始刨祖坟模式做准备

首先感谢一下电政的曾广韬同学告诉我应该用什么方法去判断一个网站或者一个spa(single page application)是用什么库写的:vue,react? 他告诉我的方法就是装几个dev developer,如果开启了这些developer之后,遇到了使用特定的这些库的网站,chrome拓展的图标就会变亮,显示你可以调试它。

比如说上面这个可能是我们这一代人最知道的用vue实现的网站了:bilibili。可以看到右边的vue图标变亮了。

所以在我们已经有了判断网站是用什么库来编写的方法之后就可以进一步去判断一个网站的架构并且能够说从一个更大的范围内去横向比较其他应用相同工具的网站去评价这个网站的设计和开发的水平到底由多高,其他我比较关注的还是交互的问题,也就是软件工程的一个源动力,到底coding目标是什么,正确性肯定是第一的,但是随之而后的究竟应该是满足coder自己还是用户。

CGI inc发家史

作为一个给自己定位为为政府和商业组织服务的it咨询公司,说白了就是一个专业的外包公司。根据google到的结果,目前的市值排名全球第五,主要的商业活动还是在加拿大境内,不过最近的几年在市值不断提升之后也开始为了继续提高市场占有率从加拿大开始转向欧洲以及亚洲市场,从相关的新闻可以发现。

加拿大IT咨询公司CGI向瑞典同行Acando发出4.57亿美元收购提议

环球邮报6月1日报道,加拿大CGI集团宣布以28亿美元收购英国IT服务公司Logica PLC,CGI集团业务将从加、美市场走向国际化。

近日,美国CGI公司一行来到北京市邮政分公司,洽谈未来十年与北京邮政的合作方向和思路。

可以看到这个CGI公司的战略走的还是传统的外企在中国发展的模式,并购小公司,因为小公司已经有足够的基础设施可以进一步减低从零开始的成本,并且从本土招人,只派送部分没有实权的高管(因为不够了解国情和政策,真正有权力的还是本土的领导,比如很多外企车企就偏向于挖政府的墙角,找国企的领导做经理,相当于是买了个人脉,但是与之相对应的就是能力和眼光非常不行)。

说到这其实已经能够解释为什么CGI这种体量的公司能够做出如此低劣的网站了,但是为了读者更好的阅读体验,我觉得还是有必要去补充一些背景知识。

什么是外包公司

虽然我自己是一个软件工程的同学,但是说来惭愧,我并没有接过外包,但是我认识的同学有啊。我们同学之间说的外包无非就是帮别人写代码,别人来提需要你来完成,不过因为专业差异,往往这些需求就是存在一些问题的,所以外包也是一项比较累的活,当然收益还是不错的。

但是专业的外包公司又是怎么样的呢。因为我本身没有类似的经历也没有认识的人在类似的公司工作。所以只能从网上的一些言论发表的平台来从中窥知一二。
知乎上关于外包公司的回答

我之前也看过相关的回复,但是是说企业把自己的管理系统外包出去,因为是走一个竞标的流程,所以最后决定到底谁能够接下这个单子还是取决于谁要求的金额最低。但是实际上最让我觉得惊讶的一点是在那个回答里面,答主回答的自己的公司派自己过去是去专业陪跑的,因为虽然明面上的竞标,但是在制度之外的是想要参与这个竞标你得需要发布方的同意,什么意思呢,能出价的都是有关部门看上的企业,换句话说这么一来完全无视了竞标本身的公平公正公开的初衷,反而助长了两者的私下相关联系,谁又能想得到其中又涉及到了多少不为人所知的交易呢。

再者,究竟在外包公司和在正常的互联网企业甚至一般企业的it部分有什么区别呢?

可以预见的是,外包公司相比正常的互联网企业的目标是不一样的。首先第一点就是外包公司希望能够招收到有经验的程序员,最好是能够直接上手连公司的工具链都不需要花时间去熟悉(为了达到效果可以想象整个外包公司的工作流也是会采取比较简单而且全部都是常用工具)而不是像一般的互联网公司,知道coder的能力和潜力才是最重要的,并且能够有持续性才是保持竞争力的最重要的办法,出于这种原因才有了互联网公司有着成熟的实习生管理流程以及special offer制度。花钱去投资有潜力的年轻人而不是直接招收能干活的即战力,在企业文化上能够更有归属感并且从长期来看也是收益更高的一种选择。

对于个体来讲,互联网企业、外包公司、传统企业的it部分作为三种选择,其实每个选择的优劣都十分明显:

  • 互联网公司:如果能去大厂当然是首选,优秀的工作流,完整的工具链,技术之上的企业文化。并且因为是大厂,收到的社会关注自然是少不了的,所以在福利和待遇方面相对来说更加有保障。同样因为大厂的体量和互联网公司的性质,未来晋升空间相对来说也比较透明。不得不说如果自身足够优秀,相对于去大厂公司其他选择真是有点不值一提了。
  • 外包公司:外包公司的工作性质一般就两种:承接外包项目、被外派到其他公司充当零时工完成项目。显而易见两者都属于没什么归属感的工作。但是同样的也有一点优势,相对于其他互联网公司有其他方面的业务(比如运营宣传销售),外包公司完全就是一个coder至上的公司,你技术足够强那么你就有足够话语权,带来的结果就是虽然归属感不过强,但是工资是和工作量绑定在一起的,相对来说同样工作量下工资是更高的。但是相对的同样因为是coder至上的公司,除了完成项目,其实自身的发展是和工资没有什么关系的,能够享受的公司红利相对互联网公司差太多了。
  • 传统企业的开发部门:大家提到类似的工作第一印象就是养老工作,的确,最显然的例子就是需要编程水平的公务员工作,作为刚毕业的计算机相关工作的同学,选择了类似的工作往往就意味着自己的开发水平不会再有大的提高,毕竟对大多数人来说,压力和ddl才是第一生产力。在传统企业的it部门工作可能接触能多的工作还是维护和脚本和信息管理之类的活比较多。当然也会移动联通之类的需要技术支持的公司,不过因为是垄断行业,可以想象干的都是一些什么样的开发工作。

CGI group inc

现在才是真正开始追踪CGI公司的章节。
首先先看来看看CGI加拿大总部所完成的项目–美国联邦政府医疗网站,不得不说CGI公司真是有点东西的,能够接手到这么有牌面的网站,其中可能涉及到的工作量是对于所有美国的医疗记录进行开发信息系统。可能某种程度上说明CGI公司还是比较被大家认可的。历史上CGI接手过的还有欧洲和加拿大一些银行的信息系统的开发,但是从体量上来说还是这一个医疗网站更加有挑战性,所以接下来的分析还是主要从这个网站来入手。虽然这篇文章想关注的地方是交互设计方面的东西,但是我还是想从更全面的技术方面去解读CGI这一个公司,希望给大家一个更加大体上对于这个公司技术方面的理解而不是全看我是怎么说的。

在能够接触的关于CGI在这个项目上的工作,最吸引我的注意的还是这一个华盛顿邮报的报道.
华盛顿邮报关于CGI在接手联邦医疗网站出现重大失误的报道

从这篇报告可以总结出来的信息就是在这篇文章发布的时候(2013年),在大众的眼里CGI还是一个默默无闻的公司,体量排名29,在美国并没有多少名气,主要的工作还是在加拿大.

在接下这一单大项目之前CGI已经接手过几个加拿大特定医疗组织的项目的信息管理和宣传项目.而且其中不乏很失败的项目

Its performance on Ontario, Canada’s health-care medical registry for diabetes sufferers was so poor that officials ditched the $46.2 million contract after three years of missed deadlines, the Washington Examiner reported.

以上的报道意思是通过华盛顿的相关人士透露,CGI在渥太华的一个糖尿病组织项目上超过ddl3年并且多花了4千多万美元才完成了这个项目.

那么究竟CGI是如何最终获得这个项目的承包呢? 政府的报告中指出还是因为CGI之前和美国政府在环境保护项目的合作中体现出了自己的组织性,并且及时优秀地完成了应该完成的工作.所以功大于过,CGI最后获得了这个项目.

目前为止各位读者可能还都觉得这个公司挺正常的,没有什么突出的地方,接下来就给大家介绍这个公司究竟在这个项目上犯了什么过错.

虽然还是有人(Donald Berwick, who administered the federal Centers for Medicare and Medicaid Services in 2010 and 2011)觉得这个项目之所以出错时因为一开始政府的投资就不足,但是显而易见的,这个网站根本就没有像保证的一样被很好地搭建起来.

就专业IT人员告诉华尔街时报的一样,相比起就究竟CGI在这个项目里面到底是哪一个部分做错了,还不如说

the whole thing was “built on a sloppy software foundation,” potentially due to the haste with which code was written.

也就是整个项目的架构就是很随意经不起考量的,可能的原因还是因为因为能够用于开发的时间太短. 他提到很重要的一点就是CGI在开发中遇到了很严重的问题就是如何把一些联系很紧密的网站组建同时分发给不同的下属承包商来开发.

综上所述,造成整个网站在正式部署之后迟许了十几个星期无法正常工作甚至无法正常注册的原因是两方面的,一方面是CGI的能力不足,一方面是政府的规划有问题.

所以在故障发生的时候CGI公司内部是怎么样的,据不愿透露个人信息的内部员工透露,因为开发的时候来自领导和时间的压力,很多人选择跳槽并且有不少人因为压力太大而生病,最严重的时候甚至在开发项目的时候临时招收的coder比正式员工还要更多,在如此短的时间要一起合作并且开发这样有难度的项目,可以想象最后成品的质量会如何.

但是在这次故障发生之后CGI的情况又如何呢, 从股价上来看在CGI并购了Logica这一个英国外包公司之后股价呈现非常积极的上升趋势(一周上涨4%),这次故障的发生似乎并没有让市场对于他们有什么负面影响.

但是从侧面来说我们还是能够大体上知道这样体量的外包公司的技术和经验似乎并没有我们所想象的好,这也为我之后访问美签网站收到的让我一个软件工程本科生遭受心灵打击的体验埋下了伏笔.

看看CGI公司外包的网站


以上是上文提到的出现极大故障的联邦网站,单纯从前端来看就是正常的水平,并没有使用常见的库,而是全部是自己写的,甚至连jquery都没有用.

https://www.healthcare.gov/search/?q=123

但是在我看来存在交互逻辑存在的问题马上出现了,作为一个承载了非常多业务的医疗保险网站,比如可以从图上可以看到了细分到了不同疾病和不同使用方式的业务. 但是直接从主页访问你不能直接通过一个层次化的导航栏一步步去找到你想要的服务(比如 幼儿保险->幼儿发烧->就医),整个网站的逻辑并不是这样的,而是并没支持这种层次化查找的方式,而是采用了一个先给你看教程,如果你不看教程就只能直接在搜索框中搜索可能想要查找的信息

但是搜索出来结果是怎么样的,很奇怪的是出现了完全没有关系的几个链接,是不是感觉没有帮助。在看完了教程之后我总算知道应该怎么做了。

你可以直接点击glossary然后在里面按照字母顺序自己慢慢找自己可能觉得属于的领域然后在里面试试运气。

综上所述,至少在我看来这种交互并不是一个对于新用户很友好的一个方式,可以改进的方法有很多,但是他们采用了一个最简单丝毫不考虑用户体验的方式是我觉得很不应该的(直接用字母顺序查找的方式)。

你以为CGI做的网站这就算差了?

接下来才是整篇文章的核心所在,用事实来告诉你一个网站的交互能够做的有多差。

说到这一个网站,如果申请过美国签证的大家应该都会有印象,就是用来预约签证时间并且缴费的网站,就这么一个网站,结合每年去美国旅游的人数(200万),可以想象每天访问量差不多能够到2-3万这个量级,所以并发量算不上多也算不上少,对于正常的网站(新闻门户,银行,12306)的并发量来说少的可怜。而且设计的操作也不复杂,预约就是两阶段的占位功能即可。

就这么一个网站,相比正常接收过比较系统编程教育的大家也都是能够完成的,但是也同样的就是这么一个网站,能够做的交互如此之差,得到的经验真的值得大家去反思。

以下一一来介绍究竟交互存在哪一些问题。

听说你想自己改成好记的密码,想多了吧


如果忘记了密码那么恭喜你,只能通过邮件发给你一个随机的密码,并且无法修改。

信息填写一次过,听说你想写到一半保存?我是随便的人吗?

哎,说到这个我真的是体验了一把如果软件行业也出现垄断会怎么样。

约签证的过程是先让你填好所有的信息,其中还涉及一个叫做DS-160的表,说到这个表则更是传奇。

如果你想要人填一个东西,你想把约签证和填写资料可以理解,不就是懒吗,想把验证的过程分开,就减少两端的交互,可以说自己是为了安全性搞个业务分离,但是能不能多写几行代码搞了远程验证你自己没点数吗? 垄断的软件业原来都是把自己当大爷,不把用户当人的吗?把用户体验放哪了,如果不考虑用户体验,是不是所有用户都用command line发消息好了。

不要觉得我这是说笑,在有这个网站能够在线约签之前,你想在大使馆预约签证,你可是要去特定的银行(中信银行)买电话卡,花着一分钟几块钱去预约一个时间。

在具体填写这个DS-160表的时候,更神奇的事出现了,你在申请写这个表的时候就会直接给你一个能够唯一对应你正在填写的这个表的id,通过这个id应该就可以在他们的数据库里面找到你提交的表单,但是问题是什么呢。也这是因为这一个id,正常的coder考虑的交互逻辑的时候是不是应该可以让用户没写完的时候选择保存,然后下次继续通过这个id来访问并且继续填写。

但是CGI不是这么想的,反而是没提交一个东西,不管是提交表单还是刷新页面,都要你输入一次验证码,兄弟你真的被害妄想症这么严重吗,你在开始的时候放一个不久够了吗,每一次刷新都要输入。而且最傻的是你填写这个表还有时间限制的,如果你没有在20分钟之内完成页面,就你直接把你踢掉,你的表id直接报废,还想签证,宠幸填过吧,如果你说20分钟完全不够填怎么办。简单那我就在19分钟的时候弹出一个小窗提示你是不是还想继续填,而且时间只有一分钟,take it or leave it。

说真的我用的时候真的问候了他们的coder十八代祖宗。有些读者看到这肯定想和我杠,什么你知不道这是因为并发问题才搞的,人家是为了安全,你知道如果个人信息被让人盗取了去申请签证被拉黑怎么办,如果有人估计攻击或者挂着耗资源怎么办。

我tm去你的吧,正常有良知上过学的coder不知道自己写的代码烂不应该自己找原因去优化吗,你能力不行优化不行不会上硬件,搞个分布式负载均衡能亏死你?老子签证就交了1160还有注册费1500rmb是过来找你气受的?为了给自己的能力不行代码不行就用这些伤害用户的方式来让自己完成kpi轻松愉快天天朝九晚五,你好意思叫你自己程序员吗。

说到底我都实在是不知道到底是这些外包coder是能力不够还是就是纯粹的坏了,能够把交互体验做的如此之差还能找到工作,这公司真的不是你爸开的吗?

冻结?如果你攻击我怎么办?

说到这一点我真的是体验了一把被人当傻子是一种什么样的体验?你想想这都什么年代了,你多刷新几次竟然还会有系统会自动判断你是在攻击,并且在你都下线两个小时突然发现自己账号和密码明明输对了但是怎么都登陆不进去了,我还特意试了很多次,反正就是提示你账号或者密码输入不正确。最后在网上一搜索才知道原来有很多人都跟我一样,就是因为多刷新了几次就被冻结了,我还打电话去问了之后才知道真的是被冻结了24-72小时,问客服有没有什么办法解冻,客服也说他们根本没有办法解冻,管理权根本不在他们那,发邮件去问全都是自动回复,这不就是被当成傻子的感觉,我追对我一点感觉的女生的时候都没有这种感觉。

这其实就是我之所以写一篇博客的最主要的原因,能够在冻结你之前什么都不告诉你什么行为会导致冻结,甚至在冻结你之后在你登陆的时候提示你是密码或者账号错了,是不是还希望我们能够自觉反思自己的错误啊。你们还是人吗?

反思

不得不说经过了这么痛苦并且印象深刻的体验确实让我学到了很多东西,首先是懂得了真是运行的网站可以做得多么反人类,其次外包公司的水平可以多差,最次是垄断软件真是傻子都能赚钱。

所以我总结了如果我自己以后还有机会从事开发的工作,并且从这一次的系统分析课程项目做起:永远把用户体验放在第一位,别人用得开心才是最重要的,做程序员最重要的是要有服务意识。其实真的如果用心,想做到这一个要求是很简单的,交互设计大家都在做,你自己去别的网站上面自己去用用不就知道什么是好的交互设计了吗。把别人当傻子的人其实自己才是傻子。

以上是我们小组的项目设计,是不是看起来很熟悉,知乎和bilibili都是这样啊,别的不说用起来就觉得这样设计就对了。有什么发挥的空间吗,交互设计可是一门实验学科啊。

交互设计最重要的一个原则就是你要预测到用户下一步的行为,其实说白就是你在设计的时候能够从用户去出发,为用户省事而不是为了coder省事。做到这一点难吗,需要你是个天才吗?需要的只是需要你能认真观察每一件小事。


我们在你填表的时候直接在视线最集中的地方告诉你填表的进展是不是会让你觉得更放松一点。做到这一点难吗,只需要你多从用户考虑问题就行了。

团队文化

还有一点就是确实是什么样的企业的文化早就了什么样的产品,举了可能差的很远的例子。 比如今年NBA的勇士队和凯尔特人队,凯尔特人队短时地只看见了短期的利益,不考虑长期利益和团队文化,把因为季后赛而受伤的小托马斯交易了,一点回旋的余地也没有。最直接的影响就是这赛季凯尔特人队的球员个个只想着自己天天担心自己总有一天也会因为受伤被扫地出门,真正比赛的时候脏活累活没人去干,就想着怎么打自己的得分会高一点,怎么样自己的命中率会好看,只想着投空位球,没有空位就甩锅。

kpi至上的外包公司不就是和凯尔特人一样吗,只要你能够在ddl之前做出正确性通过审核的产品,谁管你用户体验好不好,体验好的话我能有分成吗。就而就之这种畸形的企业文化导致的必然是大家coding的时候只想着自己怎么舒服怎么编程,怎么快能够赶上ddl就怎么编程,完全不考虑用户体验和效率,反正每年评级的时候也不看这个。

所以能够营造正确的企业文化也是我们小组想做到的,让大家能够开开心心地参与讨论,开开心心地完成工作才应该是我们应该做地。如果大家都唔那个主动地投入合作的工作,这种积极的氛围才是完成课程设计健康的源动力。

世界第五大外包公司(CGI group inc)能够做出来多烂的网站,通过系分的课程设计我对于人机交互和团队合作的几个总结相关推荐

  1. 国内IT软件外包公司汇总(2023 最新版)!

    大环境不行,面试太少了,很多本科生想进外包都没机会.非常时期,不需要在意那么多,外包作为过渡也是没问题的,很多外包其实比小公司还要好多了. 也不要太担心去外包会污染自己的简历,只要接触的项目还可以,写 ...

  2. 偷偷曝光下国内这些软件外包公司!(2023 最新版)

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 2.8 分钟. 来自:xiaojin21cen.blog.csdn.net/article/details/79479932 ...

  3. 偷偷爆料下国内比较大型的 IT 软件外包公司名单(2023 最新版!)

    点关注公众号,回复"1024"获取2TB学习资源! 根据网上的资料,整理出来的一份国内软件外包公司的名单. 找工作的同学都要看看,根据自身的情况,学历低的 .没有经验的,可以先到外 ...

  4. 目前工资最高的几家外包公司汇总!(2023最新版)

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  5. 拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论,描述的就是一个公司的外包工作人员,加班的时候因为吃了公司给员工准备的零食,被公司的HR当场批评!这个帖子一发出来,让现在测试行业日益新增的外包公司备受关注 ...

  6. 偷偷曝光下国内软件外包公司!(2023 最新版,很全!)

    点击关注公众号,Java干货及时送达 推荐阅读: 学习 Spring Cloud 微服务的正确姿势! 用上 ChatGPT 啦,强的离谱! 欢迎大家加入<ChatGPT 小密圈>知识星球, ...

  7. 国内IT软件外包公司汇总(2023 最新版)

    最近很多读者问我只有外包的 offer 能去吗? 大环境不行,面试太少了,很多本科生想进外包都没机会.非常时期,不需要在意那么多,外包作为过渡也是没问题的,很多外包其实比小公司还要好多了. 也不要太担 ...

  8. 实习与就业--软件外包公司(二)

    (接上一篇)这次来我院招聘实习生的海辉国际排在第5,属于实力雄厚的软件外包公司,下面是海辉国际的介绍: 公司概况 海辉软件(国际)集团公司成立于 1996 年,是一家一流的全球 IT 外包服务提供商, ...

  9. 最大的100家外包公司(zz.IS2120@BG57IV3)

    全球最大的外包企业 100家(2012) //z 2013-02-17 17:42:13 IS2120@BG57IV3.T2511347408.K[T139,L1791,R59,V1980]  RAN ...

最新文章

  1. 【Spark Summit EU 2016】使用Spark轻松获取高产量基因组
  2. python 参数传递
  3. Android启动过程深入解析【转】
  4. 原型的指向是否可以改变 原型最终指向了哪里 原型指向改变如何添加方法和访问
  5. quick 中实现单例
  6. db2 jdbc驱动参数_JDBC详细整理(一)
  7. Android 游戏引擎汇总
  8. Memcached 集群架构方面的问题
  9. Java之品优购课程讲义_day12(2)
  10. 题:斐波那契数列(Fibonacci数列)——一个数最少几步变成斐波那契数列的数
  11. 网站流量的统计中的IP、PV、UV
  12. android字体大小根据分辨率自动调整
  13. 3DText无法被物体遮挡 - 解决
  14. 美团技术团队当家运营:美美正式出道啦(含福利)
  15. 「Java工具类」汉语转拼音工具类HanyuPinyinHelper.java
  16. 深度学习中常见的打标签工具和数据集集合(转)
  17. GPS手机射频的一些测试项目
  18. view设置圆角 android,Android 设置圆角View
  19. 【邀请函】2022中国开源年会如约而至,XuperChain三道关等你闯!
  20. Typora提示测试版过期

热门文章

  1. 关于Chrome浏览器的一些使用技巧
  2. 懂得选择,学会放弃!
  3. 一文读懂阿里云挑战 AWS 的底气 | 2018•大复盘
  4. Intellij idea Ultimate版本学生免费注册使用步骤以及Github学生包
  5. Android开发艺术探索——第十四章:JNI和NDK编程
  6. Raspberry Pi 4b点亮树莓派桌面(官方烧录工具)
  7. java中的四种代码块
  8. 【C/C++】【NOI】雇佣兵代码及分析理解
  9. 品达物流TMS项目_第11章 TMS司机端、快递员端开发
  10. 听说火狐要换Logo,网友们掀起了一场“战争”