进入新团队准备工作

程序员是个相对跳槽率相对较高的职业,虽然不鼓励频繁换工作(伤简历,HR 对这点很敏感),但要在同一家公司呆五年以上确实很难,总有各式各样的原因催促我们寻找新的环境。一旦进入新环境,作为技术人员需要从多方面调整自己,以求尽快适应,在短时间内让自己进入最高效的工作状态。

以我的经历,融入新环境大致可以从两方面入手,人与事,一半一半。

事,工程项目的方方面面都相关。

进入团队的第一件事,是从心态上归零。像我这种从事 iOS 开发有些年头的工程师,一般在代码风格、结构、框架上都有自己的习惯,这些习惯先不说好坏,如果和新团队的工程文化存在冲突,必然会影响团队对自己的第一印象,降低融入感,甚至影响团队的整体效率。所以聪明的做法是,先忘记自己所学,在前期花大量的时间去了解新团队的工程风格,不论好坏对错,先融入再做调整和建议,循序渐进的突显自己的技术价值。切忌「英雄式」的登场方式,因为往往会硬着陆。

作为 iOS 工程师,可以从以下方面逐步了解现有团队的工程环境。

阅读现有代码,理解代码框架,快速上手。作为有经验的工程师,一般团队都预期你能快速上手参与到项目中,最多一个星期就要参与到实际的编码工作了。此时重中之重是让自己的代码悄无声息的融入到团队的代码中,让团队的其他人在 review 你代码时看不出是你所写,感觉不到你是新加入者。这并不简单,在代码框架上不同团队的风格迥异,有些 MVP,有些 MVVM,有些注重模块交互,有些采用分层式架构,如果写出破坏现有结构的代码,在团队老手眼里会显得十分突兀,被面对面培训教育就更尴尬了。对 review 其他成员的代码,在风格上也尽量保持统一,最大限度的隐藏自己的代码。程序员之间的好感与信任,没有比「在代码上英雄所见略同」来的更快了。

了解工程的基础设施。做 iOS 开发是脱离不了第三方库的,俗称轮子。每个工程师手头都有一些自己用得顺手,甚至是自己造的轮子。新加入的团队必定也有一套基础设施库了,大公司一般都有专门的造轮子团队,比如类似 SDWebImage 这中图片请求库,还有内存管理库,数据持久化库,网络库,甚至是细到 NSString 的处理(比如 base64,urlencode 等)都有规定的轮子。切忌在已有工程里随意添加自己常用的第三方库,这样只会让自己瞬间变成一个「入侵者」。

理清项目开发流程。每个团队的项目都有自己的迭代演进方式,从产品经理处获得需求,到 jira 上查看 task 列表,完成编码提交测试,通过系统查询 bug 反馈,修复测试,如此循环,持续集成,产品上线。整个流程一般都会有个内部系统来完成,在进入新团队的前期就可以找人全套了解一遍,切忌遇到点事就像无头苍蝇一样到处找人问。

寻找突破点。每一个被新招进的工程师肯定有其价值所在,成熟稳定的团队也必定有一些遗留的历史问题亟待解决,在取得团队信任之后,可以进一步在问题清单上寻找突破点,按优先级高低和与自己能力的契合度去攻克。每解决一个问题,团队的信任感和融入度就多一分。

如果是作为 team leader 或者架构师的角色参与新项目,做法上应更主动一些,再前期要在团队内部做大量的沟通,勇于表达自己的想法和承担责任,甚至是和团队成员就技术方案争论,这些技术上的碰撞和主动揽任务很重要,参与度越高对于项目的掌控程度也越高,成为技术方案的主心骨能对团队的凝聚力起到巨大的作用。另一方面,每一个新项目都是一次宝贵的自我成长机会,项目的复杂度越高,成长的空间越大。

人,与团队内外合作的方方面面都相关。

与人打交道的问题有时候比处理技术问题要难多了。有些团队成员构成简单,大家职责分工清晰,人际关系处理会简单。有些则团队构成复杂,要想在团队里脱颖而出,不能仅仅依靠出色的技术能力。

沟通是确立人际关系边界和施力点的最佳手段,也是技术人员最难点亮的技能点。

和团队里的每一个人沟通。正式的或者非正式的,会议里或者吃饭聊天,了解每个成员的个性和技术能力,在你需要帮助的时候,有些人会更乐于帮助,有些则更可靠。如果沟通邀请被拒,至少也能明白和谁的沟通成本会比较高。

主动和比你资深的人沟通。在职场上,一般人都会羞于去打扰在职位上或者技能上比自己更资深的人。但往往是这些资深人士能一语道破自己看不见的问题,期望自己的上级主动找自己聊天太过被动,而且很可能不会发生,主动发生邀请,询问自己近期的工作状态和需要改进之处,虽然有可能遭拒,可一旦成功,哪怕是十分钟的聊天,也能让自己迅速调整自己,杜绝任何细小的隐患。你的上级更准确的知道团队前进的方向。

与其他团队沟通。跳出当前的小团队,去外部获取更全面的信息。这些信息有两方面的好处,一是外部的反馈有时候是团队内部提升的着力点,比如运营团队更接近用户,更清楚如何提升产品的各方面指标。另一个好处是能保持对公司内部新机会的关注度,尤其是大公司,内部往往会启动新项目,成立新团队,越及时获取信息,自然越接近新机会。

沟通需要定期进行,最好是成为工作的习惯。团队内部,公司内部,甚至是用户的品味、市场对于产品的需要都处于变化之中。

技术人员往往会倾向于关注代码或者技术本身,而忽视人际方面的处理。依我看,职场的发展,人与事相辅相成,缺一不可。


Hosted by Coding Pages