算是完成了2019的一个计划:换工作.

文章将分为上下两章, 本章为上, 将主要记录下老工作的点滴. 在新岗位过了试用期后, 将会写一个下篇, 来粗略描述下新工作的感受.

源由

终于要和工作了4年之久的公司做道别, 即有种对新工作的向往, 又有点不舍. 以前从来没提过自己的工作, 这里借此机会记录一下.

老东家

新工作先不披露, 等下一篇文章再将体验分享给大家.

老东家是叫米九, 是一个做零售商仓储,货运,会计等综合后台管理软件. 从名字中不难看出, 受到了英国中情局MI6的影响, 而且创始的时候正好有九个人, 所以由此而得名.

公司的历史没有专门的文档, 基本是靠口口相传. 刚进公司的时候, 公司的前台刚好退休. 在欢送会上提到她在公司干了有十多年, 跟随公司换了3个办公室. 当时心里还是很惊讶的, 这个全北美不到200人的公司竟然也有了10年的历史. 但事实更老. 根据公司代码库中特殊的代号, 了解到公司的前身叫Open Road, 是被米九收购而来, 且其总部在英国伦敦. 这也就不难理解公司中有不少标准的伦敦腔了. Open Road具体成立时间未知, 但至少是上世纪九十年代的.

技术栈

这个是最不好意思提及的. 在21世纪, 我们仍然是用VB (21世纪初曾经火热过一阵), 虽然是脱胎换骨的VB.NET, AKA .NET, 但实在吸引不来人才. 毕竟.NET的市场占有率和Java比起来差距太大, 再加上微软的开源不友好, 学校一般很少教授windows系统的开发. 另一个常用语言是SQL. 公司的架构也很奇葩, 就是.NET只负责展示结果, 所有的数据运算都由后台的SQL来实现. 所以大量业务逻辑都是用SQL来完成, .NET能不做运算, 就尽量不做. 正因为此, 甚至有人在GlassDoor上的负面评价写我们公司的程序员其实就是一群数据库管理员. 这只是表象, 其实公司的SQL代码已经写到软件开发级别, 各种技巧是数据库管理员很少用到的, 迭代, 循环, 函数封装, 复杂程度不输编程.

说实在, 这样的架构其实挺适合小型软件的, 并且完全符合当前网页编程的架构. 而且考虑到公司创建久远, 当时单核CPU运行多线程的吃力, 也就不难理解这样的设计. 而且如果站到20年前, 这样的设计可能还是超前的, 有点云计算的雏形. 但如今SQL服务器发展缓慢, CPU核数突飞猛进, 就感觉用数据库做大数据处理的力不从心了.

近一两年, 公司也意识到这些问题, 开始转向网页开发, 打算转型为SaaS. 可能第一次接触开源社区, 先被Angular 1.6摆了一道, 底层架构还没起来, Angular 2就出来了. 还苟延残喘的继续开发了一阵子, 发现越来越多的不兼容. 于是一不做二不休, 直接加入了React的阵营. 然后就是更多的坑, 版本号的兼容性, 控件的管理, git branch的次序, 自动化的测试, 等等等等. 直到现在也没有完全的解决, 经常升级一个package, 就引发一堆bug; 或者同一个下拉菜单, 用两种不同的开源控件实现. 这也是必经的Grow Pain吧.

大事件

入职

对于我来说, 最大的事件就是加入这家公司. 当时是经过朋友推荐进来的, 也是第一份正式的工作.

第一感觉是, 环境很好, 办公桌挺大, 人都很友善. 当时办公室开发人员总过不过12-13人, 前台老奶奶也非常热情, 气氛很融洽. 公司当时也是刚经过了一个被收购, 由以前的9人换成一个新三人组的管理团队, 并且只有美国和加拿大两处有办公室, 总人数不到200人(估计150左右). 老的部长(9人之一)刚走, 新部长才上任不到半年. 一切对我都很新, 也是公司新的开始.

组长是乌克兰籍, 所以带着浓郁的俄罗斯英语. 刚开始非常不适应, 一段时间过后也就习惯了. 他给人的感觉不是特别在意技术细节, 喜欢研究新技术, 散养式管理. 平时我的工作都是组内前辈负责检查和指导. 由于在他手下只干了不到一年, 所以没有太多可以赘述的.

并购

大概加入公司半年后, 公司并购另一家做同类软件的公司, 那家公司服务的客户超级多, 而且办公室遍布世界各地, 甚至上海也有. 当时还想有朝一日能回国工作. 后来才发现上海没有开发人员.

自从这次并购之后, 在我在职期间, 公司大大小小并购了有4-5家同类公司. 这些公司的软件都是专精于零售业不同的领域, 一时间我们服务的客户增加到500+, 其中不乏世界知名品牌. 可以说一直在蓬勃发展, 并且目标是成为线下零售软件的一哥. 然而, 万物总有转折, 这个会在其后的大事件中讲解.

换组

由于组内的前辈升职, 而且我平时一直是他带, 所以自然就加入到他新成立的组.

当时组里就两个人, 由于以前的合作, 这次换组并没有感受到太大的不同. 但由于只有一个组员, 所以无形中自己就成了重点培养对象, 那段时间成长飞速. 而且组长思路敏捷, 工作细致认真, 对电脑方面的知识从硬件到软件, 样样精通. 从他身上不光学习了技术, 更多的是处理问题的思路.

直到辞职也再没换过组. 很庆幸自己能在这个组, 能遇到这样的组长, 是初入职场的导师, 也是不可多得的朋友.

搬办公室

如前所述, 公司不断并购, 客户量激增. 于是公司需要更多的开发来维持项目运行. 当时办公室人多到打印室都腾出来放办公桌, 就差让人坐过道了.

于是乎, 理所当然就租了间大的办公室, 本来想租一整层, 后来只租了三分之二. 原因不明, 不过还是明智的(后述). 新办公室的地址离老办公室不远, 走路5分钟就到了. 而且这里以前是IBM的办公场所, 顿时感觉高大上了起来.

然而搬过去后, 又产生了一系列问题. 工位空间是以前的三分之一, 腿都很难伸开; 光线分布不均匀, 有的工位会比较暗; 桌子太窄, 打字时离显示器太紧. 一系列新问题的解决办法就是: 慢慢适应. 由俭入奢易, 由奢入俭难, 所以新办公室, 对于以前有工位的员工来说差距太大了. 不管有诸多好处(大的厨房, 会议室), 总还是怀念老的办公室.

朋友的加入

由于没有经验, 新毕业生工作都不好找, 所以能内推当然就帮一把. 曾有一段时间, 大学一起玩的朋友都在这家公司, 即是同学, 朋友, 也是同事. 那段时间也是最开心的, 好似大学生活的延续. 所以后来朋友去更好的工作, 虽然心底是替他们高兴, 但还有意思的不舍.

Scrum

在搬进新办公室后, 我们也招来了新主任, 将我们的开发流程从Water fall转为了Scrum(敏捷开发的一种). 新增了Scrum Master和Product Owner两个新岗位, 同时降低了组长的权利, 组长主要侧重于技术和架构. 为了适应公司的人员配置, 每个组还有单独的QA来负责组内的代码的测试.

对Scrum还是很喜欢的, 主要有一下三点:
1. 隔离开发与外部, 使开发更专注于写代码.
2. 增强团队间合作, 每个任务都由多个组员完成.
3. 计划更精确, 保证规划任务在规定时间内完成.

虽然中间磕磕绊绊, 但变成Scrum后, 还是能感受到那种轻松惬意, 不用整天忙于回邮件, 不用跨级回报, 不用迷茫任务优先级.

转折点

撇开一切不利的因素, 作为第一份工作已经是非常好的. 而且公司一直在扩张中, 工资每年也涨得还可以. 然而天不随人愿, 一个做了一年的客户, 最后没有签约. 一年之中, 为了这个客户, 公司扩招了不止一倍的员工, 开发了无数个定制的功能, 最后还是取消了与我们的合作.

这一变故, 让公司措手不及. 且不说为这笔大单投入的人力物力, 就单单这一年的时间, 还有无人会用的功能, 就足够打击士气的了. 更不用提其后的大裁员, 基本把为这个客户而招的员工全部裁掉了. 瞬间Glassdoor上涌出了一堆负面评价. 新搬的办公室也一下子空了一半.

这个事件不仅仅影响了公司的投资和规划, 甚至也影响了人才的获取. 由于Glassdoor上的低分, 投递简历的人骤降, 甚至有些拿到录取通知却拒绝的. 人员缺乏, 产品的更新迭代就慢, 在职员工的担子变重, 负面情绪都宣泄到Glassdoor上, 求职者因为Glassdoor的评分而望而却步. 如此往复, 恶性循环.

T恤

公司从200人到400人, 由于办公室遍布全球, 却一直没有带公司logo的纪念品. 于是大家决定向VP反应下, 希望公司能赞助下, 给大家发个T恤. 这种事情在大公司似乎是斯通见惯的了, 甚至举办活动什么的也会给大家发T恤. 这是一个很好的宣传公司, 并且增强企业凝聚力的方法. 然而这个提议却被拒了, 但不少人还是挺喜欢这个点子, 于是大家商量就自掏腰包买个好的. 但公司的这个决定还是将大家的热情扑灭了, 当时买了T恤并且现在还在公司的员工, 我觉得一只手都数得过来了.

说寒心太矫情, 至少让天真成熟了一些. 企业利益最大化, 不要相信那些要把企业当家的套话. 当员工真把企业当家, 就会发现老板并不这样想.

混乱

公司自从上次大客户的爽约后, 高层人士调动频繁, 行政管理朝令夕改, 让人开始无所适从. Scrum和Water fall的开发模式并存, 每个Sprint都会被PM加进不少紧急任务, 最后是计划的任务没完成, 紧急的任务也完成不了. QA人力不足, 产品的测试无法覆盖所有代码, 往往由于催促, 只能重点测试改动的部分.

客户丧失信任, 不愿更新最新版本. 由于测试的匮乏, 导致虽然改动的部分正常, 但相关的模块却会出现奇怪的错误. 在客户眼里这确实致命的, 从而失去了对产品的信任. 越少的用户使用, 版本中未知的bug就越难发现, 最后用户跨版本升级, 遇到的Bug就会更多, 如此恶性循环.

空降管理层, 不仅不了解业务, 也阻断了底层员工的上升通道. 公司特别喜欢从外部找部门主任职位以上的职位, 我在公司期间经历了三个主任, 其中有两个是通过招聘进来的. 虽然技术不弱, 但业务逻辑不熟, 还是得靠老员工的经验才能进行开发. 即帮不上太大的忙, 也让底层员工觉得那有一层无形的职业天花板, 因为主任级别一直从外招.

后记

作为第一份工作, 学习了不少, 也成长了, 褪去了学生的天真, 渐渐变成社会人. 经历了公司的成长, 衰落, 还是希望它能度过难关, 怀着感恩的心祝福再次崛起, 毕竟那里有我的朋友和青春!

顺带一提的是Glassdoor上的评分还是比较准的, 因为新工作和老工作的评分差不多, 内部感觉都是比较像的, 倒不是说细节上的像, 但就是很像. 这个不好描述, 可能只有亲身体会两家评分差不多的公司后才会有此感悟.

PS: 顺便蹭一波996.ICU的热度. 就算我们公司在Glassdoor上被评为工时过长, 也很少会晚于7点下班, 更别提周末加班了. 最忙的时候也就偶尔调休, 印象中4年里也就2-3次. 年轻人是需要拼搏奋斗, 但那是为自己的理想. 企业家希望通过洗脑, 让员工都为企业的理想而服务.