狮子羔羊(公共微信平台)

创作的冲动来源于对过去的尊重和对未来的向往。字里行间无意中表达出你的理念,你对生活,工作,爱情的诠释。

文章均为狮子羔羊原创,版权归狮子羔羊(CN) 及其笔名拥有者所有。为保护微信公众平台的【原创】特性,有意转载者请联系作者
个人资料
正文

美国梦之十: 罗德岛的一周

(2016-04-19 09:30:30) 下一个

罗德岛的工作是我在Kansas City 时经同事朋友S推荐,那个项目的CTO找我。鉴于以前在软件工厂的事情上与项目架构师理念相左有些不愉快,所以我在接受项目之前与CTO明确表示我不看好软件工厂的尝试。他们找到我的原因是原架构师以三个小时时差,不愿意长期出差为由要求换项目。后来发现情况并不是那样简单的。

 

周一到了罗德岛DMV总部,进了办公室就发现有些什不对劲的地方。从人事结构上在项目CTO与我之间多了个总架构师,此公是EDS的老员工,大概有六十出头了。Visual Studio长什么样子都没见过也不想见,更不用讲如何设计如何提高了。为了突显他的作用,他禁止架构组(其实就是我和我的朋友S再加一个新手)与开发人员沟通,开发组不允许我们进入开发环境改程序。另外一条规就是不允许我们直接向开发组或项目CTO发电邮,一切都要通过这位老人。

 

开始我以为他说说玩的,仗着我的技术水平和与开发人员的私交,我还是一如既往地与开发人员摸爬滚打,与他们讨论,与他们一道看程序。交谈中我了解到不允许架构组碰开发组的代码是因为那个新手在老人的指导下弄坏了系统影响了项目进程,不得以而为之。架构组和开发组的沟通合作近乎于零。

 

而禁止我们向CTO发电邮则是老人怕我和我的朋友架空他。可是要想向这位老人解释一个技术问题那可是难于上青天啊!

 

项目到了这个时期,任何从架构组来的改动建议都是不被开发组欢迎的。这一点我的朋友没有认识清楚,他从技术的角度上指出许多问题,有架构方面的,有执行性能方面的。这造成了他和开发组的关系紧张。而我与他之间一直由于互相欣赏对方的技术水平,一直是好朋友。在为他写的年终评定上我这样写道:S是我一道工作过的最有才华的程序开发人员。我会毫不犹豫地欢迎他来参加我的项目,也会毫不犹豫地推荐S到任何困难的项目中去。S对我也是尊敬有加。这也是他向CTO推荐我的原因。我们两个的紧密合作让一事无成的老人倍感不安。以前由于级别的差别他还能压住S,再加上S与开发组的关系不好,没有人挺他,S做得有些憋屈。我来以后,一来我的技术级别只比老人低半级,另外我与开发人员的关系良好。技术上又更高一层。在他看来我可能是潜在的威胁。

 

面对这样巨大的系统如果有人告诉你几十个小时甚至几百小时他就能大规模地改进系统设计和性能,你千万不要相信。因为那绝对不是真实的断言。说这个话的人要不是无知而无畏,要不就是无信而信口开河。可是HP(EDS)的上层就特别喜欢这样的建言,不停地找捷径,最后浪费的时间就是好好做都已经差不多了。当时由于系统执行性能不够需求指标,在不改进数据库设计和大面积地改进设计是不可能有显著的改观的。

 

这位老人是真的不懂还是装着不懂就不得而知了,反正他就是一味地逼迫我们拿出“可行”的方案来。在他来说“可行”在短期内解决,用另外一种说法就是变魔术。当我们告诉他他所想像的方案不存在时,他表示了极大的不满,在他看来,我们是有意与他过不去。当我们给他微软的文章以证明我们的规点时,他也不读,还说“你们不要给我事做,我不要读这些文章,你们是专家,给我我要的答案就好”

 

由于大楼里的空调系统出了问题,比深秋的外面还冷,第二天我就病了。为了不使病情继续严重和不影响他人我在酒店工作。那正好是老人喜欢的,我正好不能与开发人员沟通了。

 

周二的早晨我参加了一个由老人招集的架构小组的电话会议,连我一共四人参加,由老人主持。由于我早晨去药店买药的原因,我打进那个电话迟了五分钟。打进后听见老人在和我的朋友讨论系统性能问题,我觉得不便打岔,就静静地听他们讨论。听了一会儿我觉得我在他们讨论的问题上可以插上话了,说:“对不起噢,刚才打进来听你们讨论没有打岔就静静地听了一会儿,现在可不可以也让我有机会与你们分享一下我在这个问题上的看法?”出我预料之外的是老人生气地打断我的说话,斥责我道:“你听了多久了?听到了什么?你这样打进电话会议不报名的做法是很不专业的做法。以后打电话一定要先报名!”

 

那一刻,我整个人坐在那里,所有的思维都停止了,不知道如何应对。一是我从未有过偷听之心,二是在这之前我在HP参加过无数次电话会议,有我迟到的,更多的是别人迟到的,从未听过有这样的说法,头脑一片空白。停了近三十秒钟,我诚恳地说:“对不起,我刚才主要是不想打搅你们的讨论,绝无偷听之意。不过我以后一定注意,一定先自报姓名。”我这样低姿态了后,他仍然不依不饶地说:“这是一个人的品德的问题,我要求你认真对待。工作中一定要确保专业精神。”

 

我因为确实没有此意,不愿再就此纠缠,就连连称是,总希望能有机会让我讲技术问题。就这样一来一去致少有十分钟。最后终于让我讲技术问题了。

 

我侃侃而谈地说了我的见解。奇怪的是说完后老人就停止了讨论并要求我把我讲的内容成文发给他。我对这个系统了解之深,与开发人员的关系又好,我所了解到的事情是他们不知道的。什么方案可行什么方案不可行只有我知道。出于专业精神我并不介意与老人和小组里的其他人说。但是后来我发现老人根本什么都不懂,我说了也白说。他要我成文是他无法理解我所说的自然也记不住,但是我若成文了他就可以剪贴一下转卖他人,贪功己有了。我嘴上应着他,心里并不准备去做。心想:都跟你说了,还搞不定,还想转卖,过份了。

周二晚上我研究了整个原代码,整理出了一个程序质量报告,发给了CTO并所有架构组成员。从我而言雇我的是那个CTO,我给他发报告理所当然,我也不瞒着别人,做得光明正大。

 

谁曾想这触发了老人的神经。周三晨会上他大发其火,问我什么动机,为什么不先发给他看。周二让我成文的东西为什么还没有写出来。最后问我怎么理解那个报告。

 

我解释道:开始时CTO与我谈话时要求我有什么的发现随时与他联系,所以我刚刚整理出报告觉得有些问题就随即发给他了。因我觉得一是可能大家也有兴趣或者见解,二是我也没有什么可瞒着的,所以发给了大家。致于怎么理解吗,这是用微软工具扫描源程序而得,里面说的每一问题都有一个问题号,用这个问题号在微软的网站上查都能找到详细介绍并且还有解决方案。说着我就把微软在MSDN里相关的网站地址发了给众人。可是老人却说“不要给我网站,不要给我事情做,我要的答案,直接给我答案。”我耐心地说,你问我如何理解如何解决,我给你的网站页里全部都有。如果这不是你要的,我真的不知道你要的是什么了。可不可以你给我一个样子,我一定努力提供给你。会议不欢而散。

周四下午启程回家到达哥伦布家里已经是深夜了,在机场时收到一个会议要求,是这位老人发出的。他要求我周五下午讨论程序质量报告。

 

周五下午到了开会的时间,打进电话会议,发现其他两个成员没有在会议中,在我与老人的讨论中,我的上司(就是那位说项目失败不是他的责任的人)中途插话,与我在周二插话一样,不同的是老人未就插话一事说一句话,好像他忘了他两天前说的话。会议不欢而散。下面是我在会议后写的一篇博文,我将它翻译成中文:

 

标题:谁是谁不是企业架构师

 

以下是两个企业级应用程序架构师的职位之间的对话。我们姑且称之为A1和A2:

A1:是什么CA警告(Code Analysis Warnings) ?什么是消除他们的路线图?

A2:让我送你从MSDN的有关些警告链接。微软在提供原因,说明,如何解决它,等等方面做了很好的工作.

A1:不要给我事做,我不会做的。我是一个企业架构师,我只关心在高层次的企业应用架构。

A2:让我给你CA警告的一个例子,CA1704标识符应该正确拼写。描述为“一个外部可见标识符的名称包含未由Microsoft拼写检查库识别的一个或多个词语”

 

A1:这个类型的警告怎么解决?

A2:你改正识别的拼写,使他们确认为英语词典拼写。

 

A1:什么?那一定要是在正确的英文拼写吗?这仅仅是一个变量名,我可以想怎么命名就怎么命名!

A2:在现代化编程中,标识(类,属性,方法,局部变量)需要被命名为以帕斯卡尔或骆驼的命名标准并且符合英文的正确拼写。未能这样做将导致本准则分析警告。如果我们的程序员想你所想,我们将有更多的警告。

 

A1:如何解决这个问题呢?

A2:让我告诉你如何解决这些问题(打开Visual Studio中的项目)的例子...

 

A1:我不希望看到Visual Studio,我只是想知道如何解决这些问题的方法和过程

 

A2:这正是我打算告诉你作为一个程序员我是如何修改它的。

A1:我是一个企业架构师,不要告诉我这些细节的东西

A2:(不知道该说些什么)

M:A2,你知道这次会议之后做什么?你知道A1想要什么?

A2:我很困惑,根据我所知,我提供的是他所需要的,这只是他不明白我说的东西。如果你告诉我说内容给任何软件开发人员,他们会理思并能够按照我说的去做。 只是A1不了解企业应用的开发过程,我们是...

 

M:A2,因为你没有提供A1所要求的,而且也不会提供解决方案A1的要求。我会让别人代替你。

A2:我不知道A1知道他要什么或者他所要求的东西是否还存在...

 

然后,对话结束,我的脸上表现中万般的无奈......

 

这让我想起了一年前我读的标题为“微软.NET:为企业设计应用程序。”的书。在这本书的作者写了谁是“架构师”。以下摘录:

 

每一个架构师应该是一个天生的程序员。用一个比喻来说,我们可以说,架构师类继承程序员的类,并增加了一些新的方法(技能),同时覆盖(专业),和其他一些功能。成为一名架构师是在一些程序员的职业生涯的自然演变。架构师和程序员之间的基本区别是经验和教育。你在工作中获取好的经验;你读好的书籍,并采取正确的的教育。此外,架构师必须从比普通程序员在更高层次上关注系统的整体结构的能力......正如我们所看到的东西,除其他事项外,架构师是一个更有知识的,更有经验的程序员。我们不相信只会在UML和Visio发言然后把所有实现细节留给给程序员的架构师的价值。至少,我们从来没有发现很容易与这些人合作,我们看见这样的架构师绕着走。

根据ISO/ IEC,没有不同类型的架构师。架构师就是一名架构师。

 

在同一个项目组的多个架构师是可以的。有专管基础设施的,有专管应用编程的,即不同的架构师有略微不同的技能。但是,他们仍然只是架构师,在同一个团队工作在同一个系统的设计。架构师必须能写代码。他们制定出系统的设计,然后继续与开发人员密切合作,以确保设计的正确执施。

读到这里,我不禁想问,A1真的是一个合格的架构师吗?作为一个.NET项目的企业架构师,不知道如何操作的Visual Studio,不想要看Visual Studio,这样的架构师可以给项目带来什么价值?

 

就这样我结束了在HP这个项目的工作,星期一就去密西根我的梦想的工作去工作了。

[ 打印 ]
阅读 ()评论 (14)
评论
狮子羔羊 回复 悄悄话 回复 '问题1' 的评论 : 谢谢问题,是的,个性使然,环境造就。羔羊我幸运,总算全须全尾地走出来了。
将会写一写不同的系列,做一些不同的尝试。

再次感谢!
问题1 回复 悄悄话 读了博主新加坡系列和美国系列,本人和博主同专业,相似的生活历程和职业经历。博主之前的经历很多是个性使然,同时也有要解决身份问题的无奈。很高兴博主现在终于找到了属于自己的一片天地。

人各有志,但奉劝博主不要因为工作而牺牲健康,一天的工作时间尽量保持在8小时之内,否则得不偿失。

博主文笔精彩,希望继续!
狮子羔羊 回复 悄悄话 回复 'HBW' 的评论 : 谢HBW留下这样长篇的留言,羔羊我万分感激。HBW所言极是,项目不成功总是要找人顶罪的。走人不走人?主动走人,还是被动走人与我们自己的情况也有关系。具体情况会有很多不同类型的结局,这与我们在这个游戏中的角色有关。从我个人的经验上看有如下几个现象:

我刚来,做的是服务型工作,发现技术不对口,绿卡申请还没开始,工作市场好,对工作没有什么留恋的。主动走人。
仍然是服务型工作,正在申请绿卡,已经拿到EAD,不能失业。公司大面积地裁人。主动走人。
为本公司提供技术服务,公司前仼错误决定烧了许多钱,项目不成功找人顶罪,已经是公民了,没有身份问题,被动下课,拿失业救济。
又做回服务型工作,但是在大公司,大项目里做的。烧的是客户的钱。不三不四的人都往项目中挤,人浮于事,技术上无法施展才华,但是因为是公民不怕失业,就陪着它玩,同时别处另起炉灶。

总结一下就是这样的:
1.看看自己玩得起吗?
2.看看自己有本事玩吗?
3.看看自己有时间玩吗?

如果答案中有些否定的答案,那就努力工作,努力找工作,找到走人。

在这三个问题都是肯定的答复时,玩呗!在这种游戏中心理素质一定要好。我在HP的最后一年里我的态度是反正我在外面已经有工作了,多待一天就是多一天钱。坚持到被动走人就是胜利。所以虽然处境艰难并不为之难过。在HP拿到最后一笔钱后立即更新LinkedIn 以胜利者的姿态结束。
HBW 回复 悄悄话 面对模糊目标采取模糊处理 - 混而且要积极的混。这是从印度人学习到的职场心态。
HBW 回复 悄悄话 是不是能从更大的视野看待IT合同工作。钱主主动或被动的拿出一笔钱,计划完成某个项目。做了也许合理,也许不合理的评估。组织了能力不明的队伍。干活的过程就是一边烧钱,一边把问题搞清楚,最后才是解决问题。在这个动态模糊的过程中,结果是未知的。如果运气好,钱未烧干之前,搞清了问题,磨合了队伍,完成了任务,皆大欢喜。最糟的就是钱花光了,目标还不清晰,队伍还在磨合。结果业主,管理层和干活的都受到埋怨,散伙了事。最好的和最坏的中间状况就各种各样了。核心是资金,出问题就要找替罪羊来埋怨。干活的人地位低,最容易受到埋怨。所以被上面埋怨是IT合同工作的一部分。中国人在海外工作,遇到埋怨后的反应比较大。打个比喻就是“惊弓之鸟”。容易早早放弃走人。前面的发言中我也是这么想的。现在收回赶快抬腿走人的结论。这点印度人表现较好,能混。资金告罄之前尽量待在项目组。真没钱了感觉再好也要散伙的。如果有资金撑着磕磕绊绊的项目一干也是几年。放弃荣誉之心获取项目成就感的心理,对有能力抱负的工程师来说做一天混一天的态度就是煎熬。是随波逐流的混还是有理想的活一直是每个人的两难选择。如果不能选择命运,只好选择调节自我心态了。HP很大的项目,几十人的队伍搞了一年多,业主烧钱无数。后来发现项目目标要调整。可想而知管理层会受到多大的埋怨。还没等埋怨到下面,干活的队伍被解散,接着经理们就纷纷下课了。越是大的公司,大的项目越是目标不清晰。
jun100 回复 悄悄话 谢谢回复和指点。对客户期望那方面我正积极寻求pm管理层的建议和帮助沟通,还好到目前是得到支持的。对那个同事我已经放弃了,经过了太多次大小被坑抬摔,已经升到失控我无法对付了,连主管也被tricked狼狈不堪。如果解决不了只好像hbw的建议抬腿走路,离开是非之人之地。
狮子羔羊 回复 悄悄话 回复 'HBW' 的评论 : HBW所言极是,人生的道路在继续。我的原则不变。努力工作,与人为善。成功与否也不是自己一个人能决定的,但是不努力就一定不成功,不与人为就一定会寸步难行。谋事在人 成事在天。
谢谢HBW的鼓励,会继续写下去的。
狮子羔羊 回复 悄悄话 回复 'HBW' 的评论 : 现实是复杂的。我们要正确地决定什么时是妥协的时候,什么时候是反对的时候,什么时候是走人的时候。不要让自己受伤了。我是失败接着失败,大概是运气不好吧,所以我从来不赌博,运气太差了。
狮子羔羊 回复 悄悄话 回复 'jun100' 的评论 : 我失败过。也吸取了教训。正确的方法就是调整他们的期望值,如果有人说能做,以极积的态度请那人做一个POC,并力求参予其中。让事实说话。事后不说"I told you so, " or "I thought so".以权积的态度参与这个证明/学习过程。
HBW 回复 悄悄话 今天得空翻到你以前的博文“狮城岁月之八:淡马锡理工学院”。你真是经历了不凡的心路历程。看工作习惯你是个完美主义者,最符合做软件工作。但世界是现实主义者的天下。如何把内在的技术完美与现实的不合逻辑的人事功利结合起来,对于完美主义者来说的确太难了。真的能把这两方面都玩得转那也离精神分裂不远了。
HBW 回复 悄悄话 回复 '狮子羔羊' 的评论 : 你的经历成文之后就成为大家的经验。谢谢你的文章。生活一天又一天,工作在继续。不要放下笔。继续期待新作。
jun100 回复 悄悄话 can't agree more...

...面对这样巨大的系统如果有人告诉你几十个小时甚至几百小时他就能大规模地改进系统设计和性能,你千万不要相信。因为那绝对不是真实的断言。说这个话的人要不是无知而无畏,要不就是无信而信口开河。可是HP(EDS)的上层就特别喜欢这样的建言,不停地找捷...

把‘有人’和‘上层’换成同事和客户,就是我正面临的窘境。我那些无知无畏老而拼命的同事,拼的却是我的命
狮子羔羊 回复 悄悄话 回复 'HBW' 的评论 : HBW所言极是。道不同不相为谋。
一直记着欠先生这笔文债,终于了却了愿望,您久等了。谢谢,谢谢。
HBW 回复 悄悄话 是非之地往往有是非之人。工作中最重要的是人。抬腿赶快走人是关键。
登录后才可评论.