工作四年:在行进中思考

广州天河

两周前刚刚辞去了我的首份工作,算是为我毕业后的首个四年打上句点。在家充电之余,为这段经历作个阶段性总结,一来纪念,二来激励,是这些经历塑造的我,要在反思中前行。

Process of transition

改变:这不是冲动的决定

我见过冲动的决定长什么样子,所以这并不是,事实上,这只是遵从长久以来内心的抉择。

在有限的人生中,你想做些什么,成就什么?想要做到这些,你必须有怎样的规划才有可能实现它?为了实现规划,你需要做出什么改变,来不断修正你的航线、补全你的拼图?过去的一切造就的是现在的你,但这些并不会一直引领你接近未来的自己。如果你的目标是环游世界,那么学着怎么开汽车可能就足够了,但如果你想探索宇宙,那就得学更多东西了。

过去的一年,最大的收获是思维方式的转变,是对事物有更透彻的思考,对目标有更清晰的规划,虽说还远远不够,但总算掌握了粗略的方法,希望接下来能不断的验证调整,使之成为有力的思考工具。

改变当然不是一件容易说到做到的事,它意味着熟悉的一切将不再,信任的团队、熟络的领导、熟悉的行业领域、舒服的工作节奏、熟练的技能,这些都要重头开始,慢慢积累。但就像一开始离开学校,踏入职场一样,从小事做起,保持好奇,保持耐心,总有熬出头的一天。

码农神器——机械键盘

进击的程序员:可以专心敲代码,也是一种幸福

编程的日子是简单纯粹的,从最开始的.NET开发程序员到Java开发程序员,去年还短暂的写了一段时间的Android程序。编程它是有魔力的,那就是创造的快乐。

大学里面学的大都是理论课程,计算机导论、组网原理、算法基础等等,然后再加上一两个课程设计,好一点的话可能还会有几个月的企业实习机会,然后一个程序员小白就诞生了。班里毕业后从事了软件行业的同学,基本上水平都差不多,好一些的话,可能还考了个软件设计师、系统分析师之类的职称。那时候哪懂什么行业领域,职业生涯规划也是个非常模糊的概念,甚至连软件技术如何为企业创造价值,都是毫无概念的。

工作的前两年,基本上的思维模式就是遇到问题——解决问题,属于被动式的工作模式。这无可厚非,当面对一个陌生事物的时候,最好的开始当然是观察和思考,在实践中不断学习总结以完善认知。我并没有在一开始的时候就给自己的技术发展方向做限定,而是广泛的涉猎所有可能会派上用场的知识。还记得实习的时候写的第一个周报,我把那个星期了解到的技术名词全写上去了,大约超过一百个,呵呵。这些技术知识,后来工作上真正用到的可能不到五分之一,但也正是这些东西拼凑成了我对软件技术最初的认知框架。广泛涉猎的好处是,它可以帮助你开拓思路、触类旁通。这些星星点点的知识积累得足够多了以后,脉络自然就会呈现出来,再经过梳理填充,慢慢的形成一个知识面,形成一种直觉意识还有趋势判断。当某天你站在主导的位置,面对未知的领域或事物做决策的时候,直觉和趋势判断会帮助你规避风险,选择更好的解决方案,而这些能力养成不是一朝一夕的。

软件开发简单来说就是做数据的CRUD(增加、读取、更新、删除)和展现?当然可以这么简单理解,但实际操作起来,却远远不只这些。一开始我负责一个系统其中一个小模块的编写,流程并不复杂,就是前面所说的CRUD操作。后来开始单独负责一个小系统的设计开发了,慢慢就发现事情的复杂度上去了,你需要更加全面的去考虑所有问题了。因为系统的需求很清晰,在我能把控的范围之内,系统开发测试和前期维护都由我全权负责,只要保证系统稳定可用就行。于是我就放开了折腾,自个设计、编码、上线,有问题,再调整设计、重构、再上线……几番来回,对软件系统也有了一个全局的认识,同时领悟到,要把复杂的事情流程化,把重复的事情自动化,例如把步骤冗杂的操作在程序中用流程来封装固化,把重复的操作做成脚本和工具来自动化等等,总之,“Don’t Repeat Yourself”。

第二年加入到大团队后,终于完整的参与了一遍软件研发的完整流程。从前期的需求分析,长达几周的需求研讨会,到概要设计、详细设计,再到长达半年之久的现场驻点开发,最后上线移交运营维护。整整一年的项目,跟着团队一起奋斗,经历种种,开工饭、驻点开发、进度滞后、熬夜加班、里程碑、试运行、紧急故障、客户发飙、紧急修复、稳定运行、项目获奖、庆功宴……团队的力量是惊人的,它的每一次成功或失败都激励着你,让你竭尽全力朝着目标往前赶。

研发工程师是一个很好的职业起点,它教会你注重细节,理解原理,以及万事皆有因,锻炼你发现问题和解决问题的能力,让人惊叹设计的精妙和创造的乐趣。像手工艺人一样,耐心沉着,不断练习,提高自己的技艺,对自己的作品反复精雕细琢,这是作为程序员最可贵的工匠精神。

菜鸟架构师:有些坑,你要踩过才知道

到了工作的第三年,大数据的概念如日中天,只要是做技术的,聊起当下潮流,三句不离大数据。那时候公司也已经开始着手往大数据布局,选取了项目试点之后,发现大数据方案确实可行,于是就开始组建团队,正式启动大数据项目。刚好,我在之前的试点项目里,一直负责大数据平台的对接工作,对系统的应用和原理最为熟悉,于是,很自然的成为了大数据团队早期的一员。

由于试点项目时,大数据平台只是一个快速原型,可运行,但是不具备可扩展性,如果真的把它当作一个战略性平台产品,必须对其重新设计,推倒重来。于是,出于领导对我的信任,我被赋予了系统架构师的职责,规划大数据应用服务平台的架构设计和实现。很显然,在独立搭建一个大系统方面,从我以往的经历里,可借鉴的东西不多,但也表明这个陌生的新领域会让我收获巨大,机会与挑战共存,让我既兴奋又焦虑。

还好,一直以来坚持的习惯还是帮助了我。一是对系统架构知识的广泛涉猎,以及自己业余时间折腾的系统框架,能够派上用场;二是对知识的记录和整理总结,在技术选型上能够提供参考;三是对平台原理的探索,让我对原平台系统的核心思路理解透彻。在这个基础上,我得以在短期内顺利的完成对原系统重构,实现了原有系统所有功能的同时,提高了性能,实现了扩展性、伸缩性和可维护性。

新平台经过一段时间的试运行和调整之后,已经渐趋稳定,接下来就是怎么把它做大做强了。在初期只有两个成员且需求清晰的时候,项目运转良好,但当需求渐渐多起来,人员也慢慢的加进来以后,问题开始涌现,我越来越感觉力不从心、孤立无援,最终无奈的选择了退出。

现在回想起来,还是唏嘘不已。当时在负责大数据平台的时候,我还兼顾着之前另外一个项目的维护工作,需要跟进相应的故障处理,版本发布和系统升级的工作,最要命的是它处于全面推广时期,所以还需要我提供在全国各地推广中,对工程人员进行系统部署时的远程支撑。由于系统优化不好,安装维护复杂,导致它很难部署,所以无形中增加了我不少工作量,一个星期里至少有三天时间用来处理相关事项,遇到问题井喷期,多点起火,根本就应接不暇,最严重的时候甚至试过腱鞘炎导致手腕半个月动弹不得。没有平衡好多个项目的关系,以及前期优化不足的系统上线后需要偿还的技术债务,让人疲于奔命,苦不堪言。

而大数据平台本身的团队管理和项目管理,也存在着很多问题。

  • 团队缺乏组织结构,没有建立梯队机制。我虽然负责系统架构工作,但属于无授权领导,又作为团队里工作资历最浅的一位,没有调动团队资源的权利,当时自身的管理意识也不强,管理能力不足,在团队管理上没法做出贡献。其他成员当时手头上也都有其他项目的事情要兼顾处理,参与度有限,所以团队名存实亡,一直处于无组织的状态。同时没有建立起人才梯队,团队缺少业务和技术权威,很多决策都要等部门技术总监来做,没有实现团队自组织,也就没能充分发挥成员自主性和创造力,导致执行效果不佳。

  • 团队目标不统一。团队没有清晰的短期目标,只有长期目标,而冗长的项目周期和频繁的需求变更让目标变得缺少说服力,团队成员迷失方向。

  • 团队文化不统一,缺乏使命感。团队成员对于新技术、新工具的看法不一,并没有建立开放心态、追求精品和持续改进的文化氛围。同时没有建立使命必达的使命感,项目进度容易拖沓不前,进一步打击团队信心。

  • 基础设施不一致。虽然在同一系统框架中协同编码,但成员间却没有形成共用类库的习惯,还是各自为阵,单打独斗。没有做好版本管理,没有把版本升级管理作为重要的初始需求,导致每次版本升级伤筋动骨,非常痛苦。

  • 缺乏沟通。没有形成沟通机制,团队信息传递不及时,成员之间信息不对称,导致团队节奏很难统一。

以上问题的存在,导致团队内耗巨大,效率低下,它们足以影响一个产品的成败。而当时我还深陷在技术人员的思维惯性里,没有想到要去主动推动管理方式的变革,而选择了被动退出,只能说这就是菜鸟进阶路上要交的学费吧。

《纪念碑谷》

产品小白:责任大过一切

产品思维是我迄今为止最受用的思维工具。

15年初,我硬着头皮承担起了一个产品的产品经理职务,嗯,感谢领导如此大胆的信任。硬件产品、移动APP、项目管理、团队建设、用户沟通……这些,都!没!接!触!过!当时我的内心是奔溃的,然后百度了一下“产品经理”,发现很多技能包要补充,瞬间觉得人生充实了。其实现在回过头看,从产品小白一步步到入门级产品经理的过程,本身就是一个产品诞生的过程。

从专注产品研发开始着手,团队从最开始的3号人扩展到10号人,最开始的几个版本是硬扛过去的。最困难的时候,没有交互设计师,没有UI设计师,没有测试人员,甚至研发人员也还没成长到独当一面,怎么办?我来做交互、做界面、做开发、做测试、写文档、做发布……把自己当块砖,哪里需要哪里搬!交互设计不专业?改!界面设计不专业?改!文档写得不专业?改!设计不够专业,都可以改,但我们没有任意理由不认真、不尽力去做好每一处细节。产品研发没有捷径可走,全都是细节。多一次沟通,多一点考虑,多一次检查,多一次测试,都会让缺陷少一些,让结果好一些。

从技术人员转型产品人员,开始的时候最大的不适应,可能是工作方式的转变。作为技术人员,重点关注的是自己的问题,每天都有大块大块的时间可以专注思考和解决问题。而作为产品人员,阻碍产品和团队前进的问题你都要去解决,于是每天的工作时间就是完全碎片化的。每天早上上班前,要把今天要达成的目标整理出来,发送给大家。上班后,到任务看板前主持团队晨会,鼓励大家说现状、抛问题。完会以后,到UI设计师的座位前,讨论交互设计的细节,如何调整改善;到研发主管的座位前,讨论研发进度和关键业务逻辑;到测试兄弟的座位前,讨论测试发现的产品体验缺陷、程序缺陷;到售前售后人员那,了解用户反馈和优化需求;还有到领导那,讨论最新的产品规划和需求;还要处理时不时的紧急故障、客户回访……往往一个早上下来,才发现一口水都没来得及喝。

团队管理是建立在沟通的基础上的,而沟通,最重要的是同理心。同理心,也就是感同身受、换位思考。你要了解对方的工作流程和方式,了解他们的立场和难处,才能彼此平等的接收信息和提出诉求,这才有利于达成彼此的目标。同时必须统一团队的文化、目标和工作方法,让信息传递透明高效,大家步调协调的往同一个方向走。

说实话,带产品比做开发,压力要大很多,因为责任重大。在别人想不到的地方多想一点,在不懂的地方多问一句,都可以避免做出错误的决策,导致团队成员徒增工作量或者做无用功。很多时候都是责任在推着走,但所幸在一个好团队里,大家互相理解帮助,才能够不断的成就彼此。

到后来,产品慢慢成熟以后,除了兼顾更多的产品之外,我也得以抽身专注于用户研究、需求分析和产品运营,同时尝试往更为高深莫测的产品战略规划方面去涉猎。总的来说,一切才刚刚开始。

乌鲁木齐雪景

差旅:商务旅游也是旅游啊

出差作为工作的一部分,是不可避免的,既然如此,那就享受它美好的一部分,然后忘记苦逼的那一部分吧。

四年来,去过全国大大小小的十几个城市,算是领略了各地的风土人情,可惜差旅一般都是行色匆匆,很少体会到那种生活在别处的新鲜感。短差一般是两三天,也有时一日游,一般是去做客户访谈和需求调研,也可能是重要会议或是合作厂商洽谈之类,目标明确,完事就走,由于时间赶,反而是相对最累的。如果去到县级地市的话,火车汽车来回几趟倒腾是少不了的,或者山路十八弯,够你一天折腾的。碰上天气不好,航班延误,能让你在机场等个通宵。车旅劳顿、水土不服、饮食差异、人身安全得不到保障,这些都是难免的,只能靠自己慢慢去克服。长差的话一般两三周,当然超过一个月的也有,一般都是现场驻点开发。这种情况还好一些,团队可以更加专注,也是培养团队感情的最好机会。同时,周末也可以组团到附近的旅游景点吃喝玩乐,好好过把旅游瘾。

周末骑行

健康:身体是革命的本钱

最近一段时间身体状况保持的还算是比较好,从去年开始,通勤改为骑车之后,每天都至少有十公里的骑行运动量,也保留着打篮球的习惯,所以毕业到现在身材没走样。

不过几年下来也并非没有病倒过。12年底由于肺炎,反复高烧不退,住院两个星期,后来被肺病反复折腾了一年多,X光、MR、支纤镜做了很多次,现在想起来,那段时间真是苦不堪言。另外比较深刻的一次是14年中,左手腕腱鞘炎,两三个星期都无法弯曲手腕和大拇指,不能着力,而且无时无刻不在痛,只能用专门的手套固定住手腕。还有去年年初腰椎也痛了一段时间,都是职业病,只能想办法避免。最简单的就是把显示器垫高到眼睛可以平视或者仰视,避免颈椎病,然后加个键盘托避免键盘手,多起身走走,不要一直坐着。对于职场人如何保持身体健康,大概就是量力而行吧,年轻的时候是要拼,但是不要过度透支身体健康。

亲朋好友:人不只为自己而活

“拳不能只有眼前路,没有身后身”——《一代宗师》

人也一样,不能只盯着你的眼前路,却忘了一路上支持你的亲人朋友。幸运的是,亲人一直都无条件的理解和支持我,让我没有后顾之忧。昔日一起共事的同事领导,也成为了一起奋斗的知心朋友,或者作为我的导师,给予我支持信任,在我迷惘失去方向的时候,可以有人为我指出问题所在,引导我往前走。这些都是最珍贵最难得的。

旅途风景

思者无域,行者无疆

保持好奇心,保持求知欲,不断开阔眼界,不断思考总结,在实践中在证明自己。思者无域,行者无疆,在思考中前行,才得以不断超越。


蔡子聪
2016-3-22