我的职场战争--一年来的开发组内战实录

一 战争准备阶段

  一年前,国内分社派我带着几名程序员来到日本,进入一个世界级大公司做项目,这里先期驻在了一个日本总社的社员X。没有人想到战争已经临近。

二 战争酝酿阶段
 日本人不会叫你闲着,头一个月就开始了下马威。我们开始做一个项目,X作为leader带领大家做项目A,我也参加了A项目,同时还承担另一个项目B的设计。结果,预计一个月的项目A,我们做了两个月,平均每人月加班180小时,结果失败了,被日本人彻底推翻了。我觉得大家尽力了,可是一点办法也没有,因为确实有很多客观原因。
  现在回头来看,失败是必然的:
 因为这几个程序员都只有一年不到的Java开发经验,不会数据库,而且没有技术天才,近乎什么都不会。而X可能是个硕士毕业,有近两年Java工作经验,也没有高明到指导新手的地步,而且估计没有领导项目经验。而我不会Java,还要担当两个项目A,B的数据库设计和SQL函数开发。
  这样的团队,居然去做一个短工期高强度严要求的项目,可笑吧。
  更可恶的是,北京公司根本没有把我和X的地位明确,我们这些人不清楚,日本现场方面也不知道,这下就注定了战争的不可避免。

三 战争的爆发
 日本方面对项目A十分不满,那么项目B开始后,自然就要想到要换Leader。一是因为我工作经验丰富且先接触到项目B,另一个是项目B的基本设计和数据库设计是我做的。很自然,日本方面就决定我做项目B的开发Leader。也就是说X的地位出现了问题。估计在他眼里,我抢了他的位置。

 导火索终于出现了,为了做好项目B,在无法换人的情况下,只能在项目管理和内部合作上想办法了,我就在内部会上总结了一些这方面的问题,准备和大家一起讨论如何解决问题和加强合作。很遗憾,这些问题显然都是X的问题,估计X认为我是开他的批判会,长达一年的职场战争就此爆发。

 

 

 

四 战争初期(项目B开始第一个月)

总社社员X的反应如此剧烈,以至于项目立刻进入了全面战争状态。这是谁都没有预料到的。

X采取了(不支持,不合作,不执行)的低强度高恶心度的总体战战略,我由于准备不足,完全处于束手无策状态。

在这一时期,我提出的几乎任何和X相关的建议(都是针对项目A中暴露出的问题)均惨遭失败。具体如下:

提案1 Java类设计和架构设计先行。
  目的:优化结构,加快开发速度,便于控制开发状态,利于以后的升级
  反应:X沉默无响应。组员表示无能力。
  结果:放弃。
提案2 Java讲座
  目的:提高编码水平,掌握目前开发水平,解决当前技术问题
  反应:X反对。原因:没有时间。
  结果:放弃。
提案3 每日例会
  目的:发现问题及时解决,项目进展及时掌握,鼓舞士气
  反应:X反对。原因:没有时间。
  结果:放弃。
提案4 代码Review
  目的:检查代码质量,发现技术问题,解决方法共享
  反应:X反对。原因:从未听说过,兼没有时间,所以没有必要。
  结果:放弃。
提案5 安装通用测试环境
  目的:了解开发状况,测试已有程序,提前进入结合测试
  反应:X反对。原因:等待日方提供测试服务器。
  结果:放弃。
提案7 引入技术攻关体制
  目的:通过专人负责,固定时间对应,来内部解决处理技术难点
  反应:X反对。原因:计划不好调整。
  结果:放弃。
提案8 引入Java开发规范
  目的:提高代码的可读性和规范性,避免将来被客户要求返工
  反应:X反对。原因:Eclipse已经足够,时间不足。
  结果:放弃。
还有向日方现场方面和总公司方面申请Java 技术支援等建议,也由于各种原因搁浅。
很显然,Java开发方面处于严重失控状态(从设计-开发到质量-测试都无人负责了)。

小组内部气氛十分险恶,开会时处于双峰对峙,流水无言状态。团队已经崩溃,人人精神紧张,体会到了度日如年的境界。

至于我是如何应对的,项目进展情况究竟如何。下一回分说。

 

 

 

五 帝国反击战(1)

  前文说到,由于项目A的失败,我们已经处于背水一战的地步。再失败就要拍屁股走人了。

 而小组的技术能力却令人惊讶的低。据日方现场的评价,来做项目的韩国team和中国team都有过几个,我们属于最差的。当然,日本人说的是最差的之一,我的理解是最差的。这必须要承认。举例来说,项目B开始开发一周了,还是两个组员没有配好开发环境,以至于每天要系统重启动3-5次,而且其他人包括X去帮忙,也找不出原因。
 
  在组员技术水平短期无法大幅提高的情况下,可行的办法就是管理和沟通上下功夫了,我是这么考虑的。可是没成想这个思路遭到了X的强烈反弹。内部出现严重对峙,几近崩溃了。很显然,技术已经不是最重要了,组织成了第一位了。

  摆在我面前的道路有3条(当然,还有别的选择,不过可执行性很小):
  1 搁置争议,埋头开发--各扫门前雪
    这个办法能够避免组织的进一步破坏,危险是技术问题无法解决,协作也失去了,重蹈项目A的失败之路。也就意味着项目B之后我们该收拾收拾走人了。
  2 引进一个Java高手--鲶鱼效应
    希望能解决技术问题的同时,将项目内部搅浑,避免崩溃。不过这需要客户同意,而且我们手头还要有这样的人。无论能不能进来还是进来后能不能起作用,都不是可控制的。
  3 明确我在项目中的领导地位--借势压人
    希望公司能明确我和X的主从关系,可避免一些内耗或出了问题时能责任分明。说句实话,不怕项目死最怕死的不明不白,还帮别人背黑锅。

  如果是你,你会选哪一条路呢?
估计就是个

 

 

 

六 帝国反击战(2)

  在短短两周之内,我和X就从淡如水的关系变成了浓如血的关系。现场的日本人都怕了,只要我们两个在一起说点什么,日本人系长就跑过来插花打岔,调节气氛,生怕两个人打起来。
  日本公司说什么话都十分暧昧,在这种时刻,我更加觉得自己的定位和公司定位的模糊,有些无所适从了。无所作为也是不行的,内部技术不足和组织崩溃,无论如何学鸵鸟假装不存在,怕是办不到。如果是X先告一状,到时候先入为主,我怎么说都有问题了。

 于是,我和手下联名向北京分公司和东京总公司反映现场情况,主旨写的是技术力量不足需要Java高手加盟,顺便把X的不合作表现反映了上去。这一下,各方面着急了。北京方面立刻来了电话,追问细节。当我提出要么明确我和X的地位要么替换X时,得到了一个意想不到的消息。。。。

 

 

 

7 帝国反击战(3)

  说实在,到日本这一趟,个人并没有想太多,赚点生活费罢了。可是,人在江湖,身不由己。

 北京公司来电话,苦口婆心,要求我们要和总公司打好交道:姿态要低一点,凡事让一点,出事儿忍一点。这是我对公司来电的总结。呵呵,说实在,我也很理解。外包公司就是这样,见到客户都是小心翼翼,忍气吞声的,胆子一个比一个小。和总公司也是这样小心,却是我没有想到的。

 也许这之中还有些门道吧。。。回想一下,自己也是有做事不周的地方,又没有什么历史恩怨,和X搞好关系也不是不可接受。于是,我提出:公司按月报销一定交际费用,用于团队内部喝喝酒聚一聚,加深了解。公司也爽快的答应了。另外,项目上没有Java高手的问题,我不得不和公司强调,这个问题不尽快解决,即便大家团结如兄弟,项目也是没结果的。。。
---------------------------------------
 第二天上午,我修改了基本设计。把数据库功能全部放在数据库端用procedure实现。这样,数据库的功能就为我一个人承担了。数据库设计-外部接口定义-功能实现,还有基本设计一肩挑,感觉自己是个超人。换句话说,我一个人要在3周内为4个界面Java开发者,一个C底层开发者提供一百多个函数。原因很简单,Java团队没有时间和能力来开发数据库功能了。
  第二天下午,我邀请X一起去居酒屋喝酒,X痛快接受。

 

 

8 暗流

  这顿饭还是比较比较顺利的。彼此交了交底,天南地北说了一番。最后,在比较融洽的气氛中,我对前一段的不愉快表示有责任,希望X谅解,并表示希望一起努力把项目B做好。X是如何表示的不是很清晰了,不过应该是很自然地结束了饭局。

  从这一天起,项目内恢复了平静。在各方的认同下,双leader制开始了。

  因为设计主要是我做的,和各个组员的接口也是我这里定义的,所以基本上项目处在我的管理之下。X埋头做自己部分开发,积极反对姿态也没有了。我松了一口气,这下子精力终于可以放在项目上了。

  周末,我请同组的一起去吃烤肉。无论如何,也应该放松一下了。

  回想起来,那时的确是太忙了,每天都要干到晚上10点,而且是背水一战,人人都是精神压力巨大。

  X的Java技术应该说还可以,而且原来考虑到他还要担当一部分管理和Java辅导职责,所以他负责的部分相对来说最简单。所以他比计划提前一天就完成了开发任务,应该说还在等我的procedure.

 而我,紧赶慢赶还是比计划迟了一天才做完所有的procedure,应该说万幸的是,除了X,其他人都还没有到达调试SQL的阶段。可是我无法高兴起来---因为就这前后2-3天,X已经向日本现场方面反映了3次,由于我没有及时提供procedure,影响了Java方面的开发进度。
 
 不过,我已经无法把注意放在这上面了。因为有两个Java组员的进展明显滞后,而且看不出有能完成的可能。一周后,日本方面终于认清了现实,从总公司调来一个Java高手,他将在一周后来现场替换了其中一位,该组员将于两周后离开日本。另一位组员则被调去做测试,他的程序由X接手。

 

 

 

9 心得

现在想起来,对于这些新人,心理压力的确是巨大的。
-来到一个陌生的工作环境
-语言不通完全没办法交流
-连续3个月,每天加班到晚上十点,周末还要加一天班
-项目A的彻底失败,也失去了对技术的信心
-两个leader的争执,导致没有人关怀和舒缓他们的焦虑。

这种种情形,叫他们完全失去了斗志。没有精力和劲头的队伍,打胜仗谈何容易啊!!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux8重启服务代码,linux(centos8):安装分布式事务服务seata(seata 1.3.0/centos 8.2)

一,什么是seata?Seata:Simpe Extensible Autonomous Transcaction Architecture,是阿里中间件,开源的分布式事务解决方案。前身是阿里的Fescar官方站:http://seata.io/zh-cn/官方代码地址:https://github.com/seata/seata官方文档站:http://seata.io/zh…

数组与矩阵的区别

数组中的元素可以是字符等 矩阵中的只能是数 这是二者最直观的区别。 因为矩阵是一个数学概念(线性代数里的),数组是个计算机上的概念。 《精通MATLAB6.5版》(张志涌编著,北京航空航天大学出版社)中说&…

android自定义view(自定义数字键盘)

序言:在上周的项目中,需要做一个密码锁的功能,然后密码下面还得有键盘,就类似支付宝支付的时候那样: 当然了,我们项目的需求简单点,纯数字的就可以了,然后上周就百度了自定义键盘&am…

linux环境部署ltmj,Linux系统安装与简单配置 图文.docx

合肥师范学院实验报告姓名:课程名称:Linux院(系:计算机学院 专业/年级:实於Lin^系缭公装与苗瑕肚卅1.占克If Jf VVVork51at>un ?- If -JpMHIWortsktKia^2.?JGJiIjxiS4CLM.lt 1H. iuFI?H?*vW ?tVirtujl Machine Wisa rdGimm Oprraimv加蓟aBMkonA …

矩阵的压缩存储

5.3 矩阵的压缩存储 矩阵是很多科学与工程计算问题中研究的数学对象,在此,我们讨论如何存储矩阵的元,从而使矩阵的各种运算能有效第进行。对于一个矩阵结构显然用一个二维数组来表示是非常恰当的,但在有些情况下,比如常…

网络工程师还要学linux吗,网络工程师要学什么

想成为一个优秀的网络工程师,要学什么,怎么学呢?今天小编带你了解一下网络工程师到底要学什么。上篇我们讲到了“网络工程师发展方向”,列举了许多技术方向,那么我们该如何根据自己的定位选择学习哪些技术。重点是哪些&#xff0…

利用FormData对象实现AJAX文件上传功能及后端实现

包括HTML基础设置、CSS界面优化、JS利用FormData对象和AJAX进行上传、后端接收文件并存储到指定路径以及删除文件操作。FE HTML 基础的设置&#xff1a; <form enctype"multipart/form-data"><input id"file" type"file" multiple"…

第 6 章 —— 装饰模式

6.6 装扮模式总结 装饰模式把每个要装饰的功能放在单独的类中&#xff0c;并让这个类包装它所要装饰的对象&#xff0c;因此&#xff0c;当需要执行特殊行为时&#xff0c;客户端代码就可以在运行时根据需要有选择地、按顺序地使用装饰功能包装对象了。 装扮模式是为已有功能动…

广义表及其存储方式简介

广义表&#xff08;Lists&#xff0c;又称列表&#xff09;是线性表的推广。线性表定义为n>0个元素a1,a2,a3,…,an的有限序列。线性表的元素仅限于原子项&#xff0c;原子是作为结构上不可分割的成分&#xff0c;它可以是一个数或一个结构&#xff0c;若放松对表元素的这种限…

Vue.js:路由

ylbtech-Vue.js&#xff1a;路由1.返回顶部 1、Vue.js 路由 本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用&#xff08;single page web application&#xff0c;SPA&#xff09;。 Vue.…

图片转excel:“保留数字格式”在什么场景下该勾

保留数字格式是什么意思呢&#xff1f;顾名思义&#xff0c;就是将转出来的数字保留为数字格式&#xff0c;而不是文本格式。我们知道&#xff0c;OCR程序将图片上的文字识别为电脑可编辑的文字后&#xff0c;如果导入到excel不加处理&#xff0c;则单个数字过长的文字就会被ex…

html概述和基本结构

html概述 HTML是 HyperText Mark-up Language 的首字母简写&#xff0c;意思是超文本标记语言&#xff0c;超文本指的是超链接&#xff0c;标记指的是标签&#xff0c;是一种用来制作网页的语言&#xff0c;这种语言由一个个的标签组成&#xff0c;用这种语言制作的文件保存的是…

linux添加三权,基于SELinux的三权分离技术的研究

目前&#xff0c;Linux操作系统已广泛应用于各种设备和产品中&#xff0c;如服务器、PC机、机顶盒及路由器等。随着Linux系统的不断发展和广泛应用&#xff0c;Linux系统的安全问题也引起越来越多的关注。在Linux操作系统中&#xff0c;存在一个超级用户即root用户。root也称为…

二叉树、树和有序树的区别

树&#xff1a;子树没有左右之分 二叉树、有序树:左右有序 二叉树与有序树&#xff1a;在只有一棵树的情况下&#xff0c;二叉树有左右之分、有序树无左右之分 另外&#xff1a;二叉树是有序的&#xff0c;可以为空或一个根节点以及两个分别称为左子树和右子树的互不相交的二叉…

高效程序员

软件开发人员的作战手册 - 让程序员活的久一点 1. 程序员的职业准则是&#xff1a;诚实&#xff08;如实的报告你的状态&#xff0c;风险和出现的问题&#xff09;&#xff0c;守信&#xff08;承诺完成的任务就要按时完成&#xff09;&#xff0c;尊重&#xff08;尊重给你的代…

PHP学习笔记1

1.什么是PHP&#xff1f; Hypertext Preprocessor(超文本预处理语言)。 是脚本语言。 是最流行的网站开发语言。 2.PHP能做什么&#xff1f; 可以生成动态页面内容。 可以创建、打开、读取、写入、关闭服务器上的文件。 可以手机表单数据。 可以发送和接收cookies。&#xf…

Redis在windows下的配置

原文:Redis在windows下的配置 Redis在windows下的配置&#xff08;在windows-64下安装redis&#xff0c;请参考微软redis的github&#xff1a;https://github.com/MSOpenTech/redis/releases&#xff09;下面是windows32的配置 下载地址http://files.cnblogs.com/files/cuiweny…

linux磁盘符变化autofs,Linux基础教程学习笔记之Autofs自动挂载

Linux基础教程学习笔记之Autofs自动挂载Autofs自动挂载&#xff1a;yum -y install autofsvim /etc/auto.master 在文件中添加下面行/home/guests /etc/auto.tianyunvim /etc/auto.tianyun 子挂载点监控ldapuser0 -rw,sync classroom:/home/guests/ldapuser0systemctl enable …

二叉树的递归遍历(先序,中序,后序)

#include "stdio.h" #include "malloc.h" #define M 100 typedef struct node { /* 采用二叉链表存储结构 */char data;struct node *lchild,*rchild; }BTnode; BTnode *create()/*利用先序遍历的过程创建二叉树*/ {BTnode *t;char ch;scanf("%c&quo…

DOM-动态操作心得

这个知识点都是之前看过的,就当是复习了 一、创建元素的三种方法 第一种: document.write() 识别标签但会覆盖之前内容第二种: 用元素自身的innerHTML方法 不识别标签但可以不覆盖之前内容 ul.innerHTML "<li></li>"; 第三种:利用DOM自身api创建元素 …