纪念我们在新西兰工作一周年!原来国外的工作生活也可以这样有趣。
本文授权转载自公众号:小橘和小烦
微信号: xiaoju-xiaofan
小烦按:小橘的第二篇流水账,鼓掌!
去年7月,我和小烦不顾家人反对,在前路一切未知的情况下,双双辞职来到了新西兰——坐标,惠灵顿。中间的过程暂且不表,感兴趣的朋友可以翻下我们的历史文章。一直以来,我都没有写过一篇关于新西兰IT工作的文章,所以今天我主要想写一下在NZ做程序员的工作内容和感受,希望对国内的朋友有所启发和帮助。
-在第一家公司的工作日常
我第一个雇主是是一家nonprofit organization,funding主要来自于政府部门MSD(Ministry of Social Development)。当时这个组织正在组建专业的IT团队,等到我加入时,我们已经招齐了Product Owner,Project Manager,Data Analyst,Designer,2个Tester, 4个Developer,这阵容对于一个小公司来说已经相当豪华了。这其实就是一个典型的敏捷开发的团队,麻雀虽小五脏俱全。紧密协作,各司其职,朝着一个目标前进。这边绝大部分公司都会使用Agile的开发模式。
既然说到了Agile,那我就专门写写Agile以及我们是怎么应用敏捷开发的吧。希望对于不知道或没应用过Agile的朋友,特别是对过来找工作的朋友参加面试多少有点帮助。
敏捷开发的方法出自一个叫Agile Manifesto的宣言,我在宣言找到了中文版的解释。
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。
由此我们建立了如下价值观:
个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
也就是说,尽管右项有其价值,我们更重视左项的价值。
讲下Agile中的一些概念,角色涉及Product Owner,Team Member,Scrum Master。实际上很多公司具体实施的时候没有Scrum Master了,而是Project Manager在负责管理、协调和组织。PO代表了最终用户的利益,他来拍板产品和功能是否达到了标准;同时,PO或Business Analyst会负责产品Roadmap的建立,粒度从大到小分为Epic,Story,Task等,插入到backlog中。Sprint就是一个迭代周期,通常是两周,然后每个Sprint开始前会有Planning。PO会从backlog里面把一些story拉到todo项中,然后PO/BA以Definition of Ready的标准来refine这个周期中的story,developer就可以把ready状态的story拿来开发,开发完成的功能可以由tester拉去测试,最后由PO决定是否accept,这里可能还有一个Definition of Done的标准。
每天早上团队会有一个stand-up 会议,控制在15-20分钟,主要是让大家知道每个人在做什么,有什么困难等等。每个sprint完结时会有Retrospective,团队成员一起review过程中的不足,brainstorm更大的障碍以及今后可以改进的方向。总之,在整个软件开发生命周期中,就是不断重复sprint,直到最终的交付。
其实习惯了Agile以后,我和小烦把家里的事情都开始用类似的工具进行记录和管理。推荐Trello, Waffle.io,我们会把要做的事情,预约,购物计划都写上去。这样每天看一眼board就知道对方做了什么,如果有解决不了的事晚上再开个家庭短会商量下。以前就是经常忘记要买什么,或者买重复了,有时候甚至忘了安排好的预约。
-家庭Trello board示意
顺便再说说工具吧。以前在国内我其实是比较反感公司内部的各种管理工具的。一是不好用,二是很多时候走形式。没有一个进度跟踪以及文档关联的一套工具。
我也是出来以后,才觉得国外很多比较好的工具。比如项目管理Jira,文档管理Confluence,办公通讯Slack,日程安排Google/Microsoft Calendar,音乐Spotify,新闻Stuff(哈哈,最后两个可有可无,老外上班比较喜欢戴耳机看网页)。Jira可以安装Kanban board的插件,可以非常清晰的看到每个story的进展情况。通常说来,一个story从诞生到完结有至少这个几个状态,Ready,WIP(Dev),DONE(PR),Testing,PO Accept等。
说说我日常的工作的一天吧。我一般早上9点到公司,先检查一下邮件的收件箱,看有没有重要的邮件或者invitation,要参加的meeting或gathering我一般会加到Calendar中,这样我就能提前收到日程安排的提醒,不至于错过。这边的会议组织一般都走邮件的邀请,参不参加都需要回复下,组织起来井井有条。
9:30开始stand-up meeting,时长15-20分钟。一般是PO或者PM组织会议,我们会把Kanba board投放到大屏幕上,每个成员的task都看的一清二楚。然后大家挨个快速简短的讲一下手上的工作,任何诉求或者blocker(阻碍工作进度的事情)都应该及时提出来,然后PM就会根据实际情况去协调。
站会之后就是每天开始干正事的时候,developer的主要日常就是写代码,这点我就不多说了,毕竟每个人做的方向以及用的开发语言都不尽相同。至于tester,基于目前大多数都是在做automation testing的情况下,他们每天也要花大量时间写自动化测试的代码,所以感觉跟开发差不多。不过新西兰程序员的工作量都不会很大,加班是不可能的,这辈子都不可能的。
中国人的“通病”是做的太快,一般老外几天的工作量中国人一天就要把它做完。后来发现做的太快也不好。项目忙时候,当你做完了手上的活,PM又会给你分新的活,一个接一个前仆后继。然后发现你的同事不紧不慢的工作后,顿悟自己太傻太天真;项目不忙的时候,你发现做完手上的活就没事了,接下来可能是一连几天的无所事事。自己无聊倒无所谓,关键是PM发现Kanban上没有你的任务时,心里上会觉得你没有在工作,导致对你印象不好。所以掌握工作节奏很重要,不要太快要不要太慢,自己根据团队和项目情况去调节。
通常相比大公司来说,小公司要求你做的事情会更多一点。好处就是你可以学到更多的东西,比如除了development你还可能会接触一些DevOps的事情,比如Container和CI/CD。小公司一般host到cloud上,那么又会多少接触点AWS或Azure。大公司人多,每个人做的事情就会更专注一点,适合喜欢轻松稳定适当摸鱼的朋友。
我第二个雇主是某银行,每天工作7.5小时,我是9点上4点半下。有些接孩子的同事7点半来,3点就下班接娃放学了。我们team上午10点还固定去楼下喝咖啡,然后再除去中午吃饭的时间,所以..(捂脸)。反正习惯这边的工作节奏了以后,回国肯定不适应了。而且工作环境也很不错,多屏+电动升降桌,桌面足球、乒乓球、台球、PS4、XBOX样样俱全,还有有氧健身区加洗澡,对于我等没见过世面的人肯定满足了。
-公司活动室1
每周五下午很多公司都有个casual gathering之类的,就是大家一起聊天喝啤酒,是个很好社交活动。这边公司人员的组成还是比较diverse,来自不同文化背景的移民,相互之间可以增进点了解。另一方面,因为不同的口音,这是个练听力口语的好时机(捂脸)。我认为,华人程序员除了要保持自己在技术上的竞争力之外,更要持续不断提高自己的英语水平。技术当然是我们的立身之本,是我们找到工作的保证;英语好,让我们今后在更大的平台上从容不迫谈笑风生。技术决定下限,英语决定上限。
-公司活动室2
近期我们人在国内休假,一些朋友也在咨询技术移民的问题,他们普遍还是觉得英语是第一个拦路虎。担心雅思考不过,其实总分6.5真的不难,以国人的考试天赋刷刷题都可以搞定。雅思考得再高到了国内还是会发现不够用,唯有亲身沉浸在英文环境中才能继续提高。不过也不用担心太多,外国人一般都会体谅你的英文水平,只要你有实打实的IT技术加上基本的英文交流,工作是肯定没问题的。
好了,皮皮冒完了,又要回去搬砖了。欢迎大家留言交流。
(责编:Stella)