个人真实感悟

前言

这个话题很大,我只选与工作关系紧密的以下几个点,说说我自己的看法,如果有新的想法,我会补充进来的。

  1. 与人沟通
  2. 团队精神
  3. 团队氛围
  4. 代码规范
  5. 适当的文档
  6. 单元测试
  7. 做好向上向下管理
  8. 给刚入职场同学的建议

与人沟通

关于如何与他人更好的协作,我首先想到的,就是《高效能人士的七个习惯》里提到的“知彼解已”和第三种选择。

为了与他人协作,沟通是必不可少的,与人沟通,又是一门可以深入研究的学问,这里我只谈一下上面提到的两点,正好对应《高效能人士的七个习惯》里的两个习惯。

知彼解己

场景:工作中针对某一个问题发生争论的时候,我们如何沟通?如何轻松找到问题的解决方案从而加强彼此的协作?

与人沟通的时候,要做一个善于聆听的人,不能抢话,目视对方,恰当的时候要做出反应,这样会让对方感觉到你对他(她)的尊重,同时要努力站在对方的立场去思考他(她)所讲述的事情,要思考对方对某一个问题的态度背后的原因。只有在你理解了对方的前提下,才能有可能针对对方的疑惑作出恰当的解答,最终找到双方都认同的解决方案,这样才有可能让对话变得愉快,从而提高沟通和协作的效率。

第三种选择

第三种选择,是《高效能人士的七个习惯》时的第六个习惯“统合综效”里提到的。

第三种选择也好、知彼解已也好,其实都是双赢思维的一种体现。我们在沟通和作出选择的时候,不能钻牛角尖儿,不光要考虑自己,还要考虑别人。

有关《高效能人士的七个习惯》,我把定义摘抄下来了,传送门

团队精神

没有完美的个人,只有完美的团队。

一个人的力量是弱小的,往往个人无法完成的工作到了团队层面经过集思广益就能迅速找到突破口。

在职场,团队协作精神往往是评价一个人是否合格、是否与工作岗位匹配的一个重要指标。

在招聘的时候,团队精神也是优先考虑的一个因素。一个人能力再强,如果没有团队协作精神,不但不能给团队加分,有可能恰恰相反,会给团队造成非常大的伤害。

团队精神的重要性,毋容置疑,没有团队精神,就谈不上高效协作。

团队氛围

团队要有一个好的工作氛围,大家的协作才有可能高效。

作为管理者,需要在这方面努力下功夫,如果团队中都是偏内向的人,在招聘的时候,就要偏向招一个外向的人到团队中来。

平时的工作,也不能太死板,适时的让大家放松放松,定期团建都是非常有必要的。

代码规范

代码规范非常重要,要努力做到:做 code review 的时候,乍一看,就象是自己写的代码一样。

这样,在维护别人写的代码时,就可以做到相对比较轻松。

比较差的情况是,每个人的代码风格都不一样,让一个人去维护另外一个人写的代码时,看不懂,宁愿重新实现,甚至到项目的级别,宁愿推倒重来,这样,就谈不上高效协作了。

适当的文档

代码最终都是要给人维护的,所以,除了遵循公司统一的代码规范之外,适当的文档也是必不可少的。

不管将来是否是自己维护,都要养成写必要文档的习惯。

单元测试

做好单元测试,可以保证软件质量,可以减少测试工作量,可以让测试更加容易理解软件功能,从而更好的做好测试工作,可以让团队在软件迭代和升级的过程中,玩得更加开心。

做好向上向下管理

具体到个人,协作效率如何,从很大程度上还取决于你是否做好了向上和向下管理。

这里,只提一点,就是在工作中,恰当的沟通,能起到事半功倍的效果,比如,定期汇报工作进度,如果工作遇到困难,要让你的领导及时知道,永远不要让你的领导对你的工作进展是最后一个人知道的。

给刚入职场同学的建议

这是我之前的一篇博文中提到过的,现在摘抄至此,如果刚入职场的朋友能做到以下两点,必定会提高你与团队的协作效率。
点击查看原文

需要学习新技术来解决工作中的问题

  1. 这里提到的新技术,是对你来说,是新技术。
  2. 当预计到需要花很长时间时,就需要先跳过这个问题,如果不能跳过,请求团队成员帮助,或者换一种方式实现,否则,需要请示上级,或者说告之上级,让上级来决定下一步该如何做,一般来说,上级会根据项目进度和整个项目的计划,适当调整你的工作、或者让别的成员给予你帮助、或者做出别的安排–比如干脆让熟悉的人来做这个功能,给你安排别的任务等。
  3. 如果暂时跳过,则应该利用好业余时间来攻克技术难题或者学习新技术。
  4. 否则,你没有及时与上级沟通,时间花了,进度又落后了,那么,到了提交工作成果时,你无货可交,上级对你的初步印象只能是工作能力不足。
  5. 如果在你没有请示上级的情况下,花了时间去学习新技术导致进度落后,事后上级对进度落后原因进行跟踪了解,对你的印象可能会变成:沟通能力欠佳。
  6. 如果在这个过程中,进度落后了,你又没有加班加点的努力工作,那么上级对你的印象可能还会增加一条:工作不够努力、责任心欠佳。
  7. 如果这个过程中,你加班加点了,但是你一下班就把这事儿忘到了九霄云外,虽然加班但进度依然落后很多,上级也看到了你加班了,他(她)对你的印象可能是:学习能力不足。
  8. 所以,如果需要学习新技术,那么,一定要尽可能快的解决实际问题,先解决问题,然后等有时间了再去做进一步的扩展学习。

工作建议

  1. 利用好上班的工作时间(一般为 8 小时),在上班时间,不要做与工作无关的事情。
  2. 在理解相关代码与业务、完成工作任务之间需要掌握好度,不要因为学习相关代码和理解业务需求花太长时间而影响任务的进度,但是基本的了解是必须的。同时,还需要深入的了解,这个很重要,不过,时间上的安排需要自己掌握,初到一个公司,额外的付出肯定是需要的,只有肯多花时间才能更快的融入团队、才能更快的进入工作状态。
  3. 任务的进度,一定要保持在一个合理的范围,否则需要恰当的理由。
  4. 原则上,给出需求,你来实现,除非确实有特殊原因,否则上级一般是不关注过程的,除非上级比较闲。比较忙的上级,通常都只关注结果。
  5. 拿到需求,在动手之前,先要分析理解透彻,根据任务的不同,可能还需要做适当的设计、写文档、写测试用例、写单元测试,把疑问都搞清楚了,准备工作才算完成,然后再开始写代码,实现过程中如果遇到障碍,需要尽早沟通,如果不确定用哪种方案好,向上级反馈,指出供参考的方案(至少两种)的优劣,好让上级做出正确的决策。
  6. 进入一个新的环境,一定要先了解团队对于编码格式的要求,可能还会有别的要求,比如 sql 语句不允许写 like、不允许多表 inner join 之类。
  7. 一定要抽时间了解整个团队现有的工作成果,比如公共模块,很多通用功能在公共模块里可能都已经有了,不能自己造轮子。如果在公共模块里找不到你需要的功能,你又认为这应该是一个公共功能时,需要请示上级把该功能添加进去,如果上级忙,那么我认为直接添加进去也是可以的,这要根据团队的具体要求,有的团队的公共模块有专人维护,其它成员没有源代码修改权限。如果你因为上级忙而直接添加到公共模块了,至少要以恰当的方式让上级知道这事儿,可能是项目管理工具里的任务完成描述,可能是工作周报,也有可能是例会,还有可能是饭间时间。
  8. 请注意,上面一点,是“抽时间”而不是利用上班时间专门去做这件事,除非上级是这么安排的,即便有安排工作时间让你了解现有的工作成果,但我认为,一般来说这个时间是远远不够的。
  9. 工作上,不能仅仅满足完成任务,在完成任务之余,对技术也好、业务也好,如果能做到知其然且知其所以然,那么,我相信,你的成长将会很快,领导也会注意到这一点的,下次加薪、提拔,可能就有你的份儿了,一旦领导愿意对你委以重任,恭喜你,你已经获得领导认可了。
  10. 你承担团队的工作职责、业务职责越多,说明你对团队、对公司而言,越有价值,那么,通常,公司也愿意分享更多价值给你,最直接的,就是项目奖金、年底奖金、加薪,如果成为技术骨干、成为技术部带头人,还有可能获得公司期权、股份,等等。
  11. 所以,骚年,努力工作,利用好可利用的时间。付出才有收获,回报往往与努力程度成正比。