原文發布於: http://www.zhihu.com/question/33197302/answer/56199040

我是 Canonical 台湾台北办公室员工,虽然因为业务关系时常来往中国各省差旅,恐怕无法反映中国地区程序员的体验。

有钱任性的创办人,乐意付钱让人作开源项目,对于信仰自由软件或开放原码的人应该相当有吸引力。差别是你写的每一行代码大概都会是 GPL 或 LGPL 授权,无论是 merge proposal 或是 bug comment 都公布在 Launchpad[1] 供人评阅。有许多機會與技术能力强大的牛人共事,大部分的同事都非常友善、容易合作。在这里身為软件程序员也很容易找到工作、生活的平衡点,反正自愿决定 是否加班。

高度自由,可以弹性的选择工作时间与工作地点。事实上,不少人是在家工作,我自己依照需要独立专注工作的需求,通常一周有一天会在家里工作。在某些团队, 你也能自由选择如何完成你的工作,包含尝试不同的开发语言或技术方案。当然这些自由度与开心程度取决你的直属老板的管理风格与能力。

由于许多人都在家工作,平时透过网路联系,一年半载才有机会见面,这时 team building 就更重要了。早期的时候,每个半年有一次 Ubuntu Developer Submmit,召集全球员工一同旅行到美国或欧洲,进行为期一周的欢乐派对^H^H会议,往往开场的时候得叮咛晚上别饮酒过量,但是会议时间过后肯定可 以在附近的酒吧看到每个团队一边狂欢一边讨论工作。后来由于公司规模太大,召开全员到齐的会议太昂贵。只剩下各个团队举办 Sprint 会议,规模大概两三百人到十几人节奏明快的会议。上回到北京開 Sprint, 结束日前一晚由 Vice President 带著一群老外隊伍,到三里屯酒吧街对饮到清晨三点,隔日开会都醉了。

这个公司有许多有挑战性的工作,也有非常乏味的苦力工作,端视你在那一个事业群、团队下面。每个一段时间会因为创办人兴趣^H^H业务变动,进行组织改 组,当下最大的两个软件工程事业群是 Cloud Dev Ops 与 Ubuntu Engineering and Services。从 Ubuntu Engineering and Services 中的工程团队,又大致分成 Ubuntu Engineering 与 Commercial Engineering。

其中 Ubuntu Engineering 做的是产品项目,像是 Ubuntu Phone, Desktop, Core, Unity8, Mir, Snappy 等等。做产品相对比较具有挑战性,会依据 Mark Shuttleworth 的产品策略或产品经理定下开发蓝图,以 Agile 敏捷开发模式进行产品项目开发 (之前是依据半年的发行周期),每隔两三周都会交付成果。由于代码完全开源,所以开发时候也可能有外界社区加入给予意见。全球的员工透过 CI/Launchpad/IRC/Kanban board 等协作工具合作,需要线上沟通的技能透过文字或代码清楚表达你的思路。除了公司内部小组间的合作,也常常需要回应开源社区的疑问。

至于 Commercial Engineering 则是将产品出货的部门,产品类型多元,可能是 Desktop、Phone 或是神秘的研发计划。其中最枯燥无味的大概就是 Desktop preload project,许多工作已经制式化,日常是不停重复同样的工序,像是验证硬件程序、测试 BIOS、打内核补钉、整 workaround、出貨排期、发行预载版等等。这些工作是确保搭载 Ubuntu 出货的笔记本等硬件功能都可以完美的运行,由于硬件完成的时候因为各种因素会导致驱动无法运作,像是 BIOS 不按照业界规格实践、不同的硬件使用同样的产品代码,导致使用错误的驱动程序、或是新硬件平台时内核支持功能未完善等,这些细节都需要大量人力的调适。这 个部门会适配来自不同合作伙伴的闭源软件,依据授权的不同导致部份代码无法开源。硬件调适与功能验证[7] 是 Canonical 收费的主要服务之一。

即便仍然会有些开发工作,像是做 userspace 的软件问题、LTS 的共用预载版、Firmware Test Suite[2]、Checkbox Job[3]、上述这些重复工序的自动化工具,但是常态仍是重复工序。而空闲程度通常跟出货季节相关,淡季时有些人会兼职当猎头、专研新技术、上网选修课 程、修 Launchpad[1] 上公开的臭虫[8]、翻译物理书籍等等。不过目测接下来一两年的 Snappy Personal Ubuntu 会从 Debian-based 换成 Snappy[4],以及 Unity8 的更换,应该会有一波新的挑战。

Commercial Engineering 也有一些来自不同客户的订制项目,订制项目通常包含大量软件改造与功能适配等工作,相对会多元有趣一些。

目前除了在家工作的员工之外,Canonical 在全球有四个主要办公室 London、Boston、北京、台北,依照事业群或团队的要求,会要求是否进办公室,通常与硬件相关的部门,像是需要实体硬件上测试的 QA 等就必须进办公室工作。各地辦公室的福利不同,北京辦公室就让本地员工来回答吧。由于许多员工都是在家工作,所以有个坑人的规定,是员工必须自备笔记本, 即使在办公室上班,公司仍不配发电脑。

在台北办公室的福利之一是办公室位于 Taipei 101,以下是我的窗景 (四十七楼) –
20150707_184148-01
以上是我的个人体验,你也可以参考一下 Glassdoor 上的员工评价[5],看看其他人的说法。

如果看了这么多之后,你对到 Canonical 工作感兴趣,欢迎查看目前职缺列表[6],在填送求职申请的时候,介绍人一栏写 Rex Tsai. 并私下与我联系,以便告知你应征的技巧或调查职缺内容或向征人团队经理写推荐信。除了帮点小忙外,Canonical 也提供 Referral Bonus Policy,正式通过试用后介绍人会得到 USD 1,000-2,000 的介绍费奖励,依照所需职位的急迫重要性不同,我曾经最高拿过 USD 5,000 的介绍奖金呢!有兴趣请来联系吧。

[1] Launchpad
[2] Firmware Test Suite Kernel/Reference/fwts
[3] Testing/Automation/Checkbox
[4] Ubuntu’s Desktop-Next Switching From .DEBs To Snappy
[5] Canonical Reviews
[6] Canonical | Careers

[7] Certification

[8] BugSquad – Ubuntu Wiki

  • Vincent Lan

    你好
    最近有收到一份 Canonical的面試邀請
    不知可否私下向您請教一下
    my mail address: [email protected]