前言
酝酿几个月后,我们搭建的远程工作者社区( 一早一晚 )终于上线。短时间内收获了好多位新老朋友的反馈和提问,他们都在从事或者打算从事远程工作。最后我们决定将团队的经历和经验写下来,供感兴趣的朋友参考。关于我们
我们是 DeepDevelop ,一个远程工作团队,从事 Web 和 App 开发;以外包为主,同时会开发一些用于提高效率的工具。一些数据
2010年
团队成员:1人2014年
分布地:1个城市
第一笔收入:¥300
团队成员:10人
分布地:4个国家,9个城市
年收入:¥300W
此文目的
坦白来说,我们算不上很酷的团队。首先没有名校、名企光环,成员多以本科甚至专科为主;其次没有如雷贯耳的产品,通俗来说,是个“做外包的”;再次收入实在不多,与动辄融资几千万美元的90后团队相比不得不自惭形秽。正因如此,这一系列文章只希望通过记录我们的经历和经验,来与大家探讨远程工作的方法以及未来。
文章目录
- 如何走上外包和远程之路 —— 前情提要和团队诞生
- 增加新同事 —— 从哪里找到团队需要的人
- 收到客户的赞赏 —— 与客户共同成长和发展
- 最大的财富 —— 打磨一支可靠的团队
- 提高效率 —— 规范、流程和工具
- 孤独?颈椎病?鼠标手? —— 花更多的时间关注健康
- 接下来会怎样? —— 面临的问题及后续的计划
1. 如何走上外包和远程之路 -- 前情提要和团队诞生
我曾怀疑我 走在沙漠中有一段时间,每次去唱歌的时候我总要唱这首《海阔天空》,觉得它特别能表达我的情感。
从不结果 无论种什么梦
才张开翅膀 风却便沉默
习惯伤痛能不能 算收获
庆幸的是我 一直没回头
终于发现 真的是有绿洲
每把汗流了 生命变的厚重
走出沮丧才看见 新宇宙
第一笔收入
当时我的技能树:
- 看过一些html和css教程,基本熟悉。
- 看过我爱水煮鱼(感谢你们)的Wordpress主题教程,大概了解,但没有实际经验。
- 了解一点php语法。
就这样第一个项目来了,金额只有 300 元。对现在的我来说,可能只需要半天来完成。但当时自己看什么都一头雾水,更别说要亲自去写代码了。那几天自己几乎每天都在连续24小时工作,边 Google 边学习边练习边做任务,困了就在桌子上趴一会儿,因为我不能让对方发现我是个毫无经验的家伙。终于,在约定的时间交付了结果,并且对结果很满意。拿到
300 块收入的时候,很困很累却高兴的怎么也睡不着。
单枪匹马,收入迅速提升
以 300 元收入为开端,正式拉开了外包的序幕。当时我的目标是每个月收入够 1500 元,这样就可以确保我的负债不再增加。利用搜索引擎继续在网上搜索类似的中文关键字,去寻找更多的项目。同时,将自己做过的每个项目都精心包装,作为案例。很快,月收入奔着万元去了。回头想想,那个时候接单的难度要比现在小的多,现在仿佛人人都是程序员,人人都可以接单,并且价格被拉的越来越低。另外,自己力求将做过的每个项目都整理好,让人看的舒服,让人感受到我在认真做事。
在享受欣喜的同时,给自己制定了新的目标:每个月存下 1W 元。如果月收入不够 1W,那就去想各种办法凑够并存起来;如果超过 1W,多出来的部分就去挥霍,尽情犒劳自己。这样 1 年以后自己就有 12W 可支配资金了。
可事实总会超出计划和预期。很快,要挥霍的部分就多于要存下来的部分了。于是不得不再次调整目标。
迅速提升的收入给我带来了更大的信心;几个月的辛苦奋战也让自己的技术水平有了很大提升;随着案例和客户的积累,项目也多的有点招架不住。于是开始考虑寻找帮手,组建团队。
组建团队,采取远程工作的方式
没有过任何招聘和管理经验,要迈出这一步还是有点不自信。该去哪里找人呢?该找什么样的人呢?该怎么介绍所做的事情和现状才能让人感兴趣呢?在后面的第2、第4篇里讲一讲这段招聘和团队建设的经历。先说说远程工作的方式给我们带来的好处。虽然人数在不断增加,但我们一直在保持这种方式,并且从没打算设置一个固定的办公室把大家都圈过来;反而是越发体会到远程带来的优势。
- 自由。 这是团队里每个人都追求的生活状态。可以10点睡6点起,也可以2点睡10点起。可以周末连续上班,也可以出去玩 2 个星期抛开工作。
- 成本低。 省去了办公室租金,各种税费;可以将这些钱直接发给大家或者花在其他方面。
- 更容易招到合适的人。 无论将办公室设置在北上广,还是三线四线城市,显而易见的是我们的招聘都将变的困难的多,很难再聚集起这么多优秀的人才,即使花更高的成本。
- 时间利用率高。 浪费在地铁、公交车、堵车路上、写字楼电梯里的时间,现在可以拿来运动,或者工作。
2. 增加新同事 -- 从哪里找到团队需要的人
Hi ychong, 不经意看到你的网站,很喜欢你的博客和作品,想问一下你目前工作是否忙? 是否有兴趣加入我们做 wordpress 开发工作? 我们的项目均来自国外,数量比较多。 我们目前需要高水平的前端和 wordpress 开发。这是几年前发给 YChong 的第一封邮件。现在看来内容很单薄,缺乏吸引力,但它却立刻奏效,为我们团队带来了 YChong 这位中坚力量。
兼职全职都可以,有兴趣的话我们详谈。
DeepDevelop 诞生及现状
前期发展比较迅速,也很顺利。在招聘远程同事的过程中也没有遇到太多困难。我们就在疯狂的接单、写代码,没考虑到我们应该有个团队名字,应该有个官方网站。 每次都是通过邮件或者直接面对面向客户展示我们的案例;当然,我们会将案例整理的很有条理。当时效果也不错,因为客户多数都是案例导向的。后来在 Jason 的推动下,我们定下了 DeepDevelop 这个名字,也有了自己的网站。Jason 当时在美国读金融,具备我们其他人所没有的视野和胸怀。他是我的大学校友,也是当年带我入坑,爱上 Palm(Treo650 还有人记得吗) 和 Thinkpad 的人。为了方便开拓美国的市场,我把他拉进了团队。
目前我们团队有 10 人,分别位于美国、英国、澳大利亚以及中国的9个城市。另外还有多名兼职合作伙伴分布在国内的多个城市。
小团队的招聘难题
我们有几个朋友的互联网公司分别位于北京、上海、厦门,他们无一例外的都面临着招聘难题。经常会联系我,要我帮忙介绍靠谱的人,或者将我们团队的人借调给他们用。一方面,一线城市的互联网行业工资已经非常高,但同样的工资,大家更多的会选择成熟的大公司;另一方面,靠谱的人实在不够多,虽然号称会写程序的人很多。对于这个轻资产的行业来说,公司发展主要取决于团队实力。如果不能建设一支足够强大的团队,那可能只会得到一个“心比天高,命比纸薄”的结果。
在我的建议下,一些朋友已经开始招聘远程员工,而且取得了很不错的成果。根据我们的经验,小团队招聘远程员工要容易的多。主要三方面的原因:
- 很多靠谱的人已经厌倦了一线城市的拥挤生活,他们在逐渐走向更自由、更舒适的小地方。我所知道的最夸张的一个朋友,他上午种田,下午写代码。
- 拿一线城市的工资,生活在四线五线城市,对远程员工来说诱惑力很大。
- 远程工作很适合互联网行业,很多时候不但不会降低效率,反而会大幅提升。
从哪里寻找潜在的同事
在这几年里,我们尝试过很多途径。主要包括:统计现有的全职及兼职同事共10几人,来源如下:
- 主动发现优秀的博客、Github主页,然后主动联系作者
- 朋友及现有同事介绍
- 相关社区发招聘帖
- 相关 QQ 群里发招聘信息
这个统计结果与我们的发展过程是相符的。从团队建立至今,我们随时在各个网站留意潜在的同事。对于合适的人,即使今天不能加入我们,我们也要与他们保持联系。其次,随着团队成员的增加,大家可以提供的熟人圈子越来越大,介绍熟人加入的可能性也越来越大。再次,当某个阶段增长速度过快,前两种途径都无法满足需求的时候,则会主动去社区发帖。至于 QQ 群里发信息,曾经分好几次、发过几十个相关的群,收到过很多回复,可惜从没遇到合适的人。
- 50%
- 25%
- 25%
- 0
如何发现优秀的博客和开源作品呢?这个问题没有唯一答案,很多时候靠的是缘分。比如,当看到有人在论坛里发了一篇有价值的帖子,当看到一个不错的开源项目,都可以去探究一下作者的信息。也可以直接在 Google 里搜索相关的关键词,来查找某些类型的个人网站。
招聘的时候,我们聊些什么
我们一直认为,这是一个单纯、善良、高效率的行业。面对这样一群单纯、善良、高效率的朋友,不需要花哨的辞藻或者过多的心机,只要做人靠谱、坦诚相待就足够了。先说主动联系。
我们会仔细的去查看潜在同事公开的各种信息。比如个人博客、微博、Twitter、社区里的发言,这些可以反映出这个人的性格、追求、生活习惯、当前状态等等;而开源项目、代码则可以看出他的技术水平。如果这些方面都合适,那我们会直接发邮件给他,附上我们的团队介绍。然后,无论是否成功,一般都会聊的不错。实际上大多数信息都已经在聊天之前获取到了,所以我们更多的是进行深入的沟通,看双方是否适合。这些沟通可能不仅局限于工作本身,而是可以涉及到双方感兴趣的各方面,比如远程工作经验、对某个框架的看法。而对于公开信息比较少的人,我们首先会希望他提供足以说明自己水平的案例和代码。
再说收到简历。
我们不是专业HR,对邮件和简历的形式没有任何固定的要求。但至少我们希望信息有条理,而且包含以下内容:- 个人介绍和经历
- 当前状态
- 技能树
- 以往案例
- 其他有助于展示自己的链接
哪些行为会导致直接否定
上面提到 QQ 群里发的招聘信息效果不理想,实际上我们会收到至少几十条求职信息和简历,但从没有一次成功。列举几个原因:- 不会写邮件和沟通。比如邮件没有标题,比如正文里只有一句话 “想加入,还要人吗”。
- 不在乎细节。比如提供的案例文件名是乱码;代码是临时抓过来的。
- 刚入门,没有经历和案例。
哪些习惯是最被欣赏的
首先是可靠性。简单来说,你总能在规定的时间内完成任务列表里的事项,而不是经常有意外、推脱、找理由;你做出来的产品总是很可靠,而不是bug一堆。道理很简单,但事实证明能做到的人并不是大多数。其次是自主解决问题的能力。我曾经形容我们的一个同事是推土机,又像是一个封装好的万能的类。无论什么任务丢给他,无论有什么困难,他总能不声不响的按时把结果摆在大家面前。而不是像有些人一样,一直把问题丢回来,“这里看不懂” 、“这里没用过”。
幸运的是,我们团队里的每个成员都具备这些优秀的品质。这支团队是我们最大的财富。
曾经遇到过的坑
曾经有 X同学联系加入我们团队,从个人经历到案例到聊天,都很合适。在完成试用期的任务期间,非常非常努力,当时我认为努力程度超过团队其他任何人了。有不懂的东西会通宵学习;为了更快速的完成任务,每天晚上都做到很晚。当时我都看不下去,不断提醒他正常工作不应该是这样的状态,难以持续。但他很乐观,体力也很好,总是一副精神饱满的样子。本来以为我们很幸运,又多了一位好同事;但是当最后检查结果的时候,傻眼了。各种难以理解的逻辑和实现方式,各种难以接受的bug。一个很简单的需求,计算 M 比 N 大多少,当其他人都用 M 减去 N 的时候,他会用 M 减去 S 再 减去 N 再加上 S;更难以接受的是他非常坚持自己的观点。当我们尝试过很多次沟通都无法取得任何进展的时候,不得不放弃。
很久以后,有一次团队人手不足,我再次尝试联系 X同学做一个不太难的任务,结果重蹈覆辙。最后我们不得不承认,有些人适合从事这个行业,但有些人不太适合。X同学的乐观和吃苦耐劳让我们很佩服,但毕竟我们是结果导向,是商业行为。自此以后,我们在寻找新同事的时候会更加谨慎。对于我们来说,过程很重要;但于客户来说,结果更重要。
3. 收到客户的赞赏 -- 与客户共同成长和发展
i want to thank you for the great work you do一个德国客户跟我们说的一段话。听到这个评价的时候,除了欣喜,更多的是得到肯定之后的问心无愧。
pls tell your team that we are really happy with you guys
i always appreciate your dedication. and the money part will be different in the future as a matter of fact.
客户从哪里来
经常在社区里看到很多人在问,怎样才能找到外包项目。这个问题恐怕我们也难以给出准确的答案。在我们的官方网站上有这样一段话:We work with selected digital agencies and design teams who complement our development service.2010 年,刚步入外包行列,主要通过搜索引擎来搜索别人发布的需求。经过初期的尝试之后,我们果断放弃了两种类型的项目:
We only co-operate with long-term partners instead of dealing with single project.
- 直接面向最终客户的项目
- 国内的项目
国内的项目,或许是我们运气不好,或许是当时国内风气就是如此恶劣,大家普遍想花 1000 块钱做一个 20000 块钱的东西;做完之后,对方总想再改 20 次,不然会觉得这 1000 块钱花的不值。面对这样的要求,自己还不能抱怨,不然会被差评。
认识到这两个问题之后,我们马上将目光转向国外。首先去研究了著名的几个外包平台,比如 Elance,oDesk,我们认为这种方式同样不适合。无休止的投标会大量浪费时间,与印度人的竞争我们也明显处于劣势。
于是我们开始采取另一种方式:位于美国、澳大利亚、英国的三个同事,直接去联系本地的 digital agencies 和 design companies。通过邮件、电话、甚至面对面的方式,向他们介绍我们的团队,展示我们的案例。
与此同时,我们向所有客户承诺,在项目交付前不收取任何费用;直到项目完成并满意之后再付全款。这个承诺一方面来自于对自己团队的自信,另一方面也相当于给还在犹豫的客户注入一针强心剂。
终于,这条路走对了。我们与几家数字机构和设计机构达成了合作协议,他们负责与本地的最终客户沟通需求,完成设计,并形成需求文档;而我们只负责技术实现部分。由于合作关系都是长期的,彼此都很熟悉,文档也都很完善,因此几乎不需要额外的沟通成本,几乎是流水线操作。我们团队也不需要销售、客服等人员。
逐渐的,随着案例的增多和合作的进展,已有的客户也会给我们介绍新的客户。我们几乎没有再去开发新客户,依然保持不错的增长。
可靠;做别人做不到的
同样是文章开头提到的德国客户。当我们第一次与这家公司接触的时候,他们的一个经理说:“我们以前与很多团队合作过,有泰国的,印度的,中国的,美国的。可惜结果是没有一个团队最终让我们满意。我不会讲中文,但我知道你们中国人有一个词,叫做‘差不多’。最让我害怕的就是这个‘差不多’”。事实是,经过一年多的合作,我们收获了文章开头的那段评价。我想,中国团队在他们那里的印象应该也得到扭转了吧?
可靠,道理很简单。但这几年与很多客户接触,与很多同行接触,与很多求职者接触,一路下来发现真正能做到可靠的人其实并不是很多。我们希望每个团队成员都做一个可靠的人,同时我们也努力的在客户面前塑造可靠的团队形象。对于承诺必须遵守,对于自己做出来的东西必须负责。
在这个程序员满天飞的时代,仅靠 “我会xxx语言而其他人都不会” 是难以成为核心竞争力的。
去年春节吃年夜饭的时候,手机收到了 Basecamp 发来的通知邮件,标题以 [urgency] 开头。原来是一个客户擅自动了网站的配置,导致出现异常。由于他们当天正在推广新产品,所以很紧急。
我回复邮件告诉我们的德国伙伴,现在是中国人一年里最重要的一顿饭,能否吃完饭再解决。
他回复我说,他也在中国生活过,知道春节的意义。但如果不能马上解决的话,他们会遭受很大的损失。
于是我将邮件转发给了 YChong,他当时负责这个项目。
接下来, YChong 离开饭桌,回到电脑前,半小时后问题成功解决。
还有一次,一家意大利的公司做一个很重要的网站,已经花了将近3个月的时间只做出了一个不能用的产品,而且他们已经无法继续做下去。当接到求助时,我们果断放弃他们原来的烂摊子,调集高手上阵,在2周的时间内做出了一个让他们非常满意的产品。
有人看到这些场景可能会嘲笑程序员要随时待命,最近在微博上我也经常看到大家发一些程序员在街边打开电脑解决问题的照片来调侃。实际上这不是工作的常态,一年里可能只会有三两次特殊情况,但就是因为可以处理好这少数的几次特殊情况,才会让自己与别人区别开来。
正是这些细节,以及处理紧急情况的能力,才会一次次巩固我们可靠的形象,才会成为我们的核心竞争力。才会让我们不需要销售人员,就能保持业务持续增长。
帮助客户共同成长和发展
我们的客户都是 digital agencies 或者 design companies。在长期与每个客户接触的过程中,会发现他们每个公司都有很多长处。比如 A 公司的文档写的特别好,B 公司的流程特别合理。我们从他们身上学到了许多东西,用来改进我们自身的不足。在吸收到这些优点的同时,我们会将它们有针对性的重新分发回每个客户那里,以帮助每个客户提升自己,比如协助 A 公司改进他们的流程,指导 B 公司写出更好的文档。当其中一个客户在某个方向取得不错的突破时,我们会马上反馈给其他客户,协助他们来发展这个方向的业务。比如几年前一家美国客户率先做起了响应式设计,我们马上将它推广到了其他客户那里,他们都取得了非常好的成绩。
这其中并不涉及竞争和秘密泄露的问题。一方面这些客户分布在不同的国家和城市,另一方面所有的信息都经过了我们整理和过滤。
在协助客户提升和发展的同时,为我们自身也带来了极大的收益。客户的增长就代表着我们的增长,每家客户每个月都有可观的增长,汇集到我们这里就是更可观的数字了。
4. 最大的财富 —— 打磨一支可靠的团队
这张照片是威海的环海路。今年夏天我们团队齐聚威海,在那边工作、生活了2个月。
信任和自由发挥
经常在社区里看到有人担心远程工作是否能保证效率和工作时间;在我向朋友们建议招聘远程员工的时候,他们同样会向我提出这样的疑问。经过几年的实践,我想说,我们从来都没有为这个问题担忧过;我们反而经常担心大家主动加班过多导致身体不好而采取很多措施促使大家多去运动。在接受一个新朋友加入团队之前,我们会对他做尽量多的了解,包括人品和技术两方面。加入团队后,我们会有一小段试用期,通常是最初的 2,3 个新任务。在完成新任务的过程中,逐渐就可以认识到他的为人做事的习惯。一旦成功渡过这个试用期,我们将对他付出100%的信任。
所谓 100% 的信任,并不仅仅是相信他会努力工作,更重要的是让他可以自由发挥自己的特长和潜力。每个成员都可能是某个方面的专家;每个选择远程工作的人都有自己丰富的想法和追求。他们不是执行命令的机器人,不是言听计从的好下属,他们应该是可以独当一面的好伙伴。
我们开发了几个用于提高效率的工具,比如 DeepDeploy(自动部署),DeepWiki(团队wiki),DevelopSpec(方便制作开发文档),SoonerPress(Wordpress Framework),搭建了远程工作者的社区 一早一晚。无论哪个产品,我们都会在前期集体讨论,确定总体方向,确定由谁负责。之后,该负责人就可以尽情发挥了,可以采用他喜欢的编程语言和框架,可以使用他喜欢的界面和布局。这种自由发挥的方式,让每个人都可以将情感注入到自己开发的产品中,这样开发出来的产品自然是充满活力和激情的。
一旦团队里形成了这种氛围,就会形成良性循环,就会朝越来越好的方向发展。
个人成长和长期规划
每个新进入团队的同事,我都会跟他聊聊接下来 1 年、3 年的中长期规划。主要有两方面的原因:- 我们是一个长久的团队,希望每个同事都能长久相处,而不是短期路过。如果个人规划与我们的发展路线不符,比如只是短暂的来工作2个月,之后有别的打算,那我们是不会接受的。
- 在团队发展的同时,我们希望每个成员都能收获自己想要的东西。了解每个人的规划,就能知道他想要什么,团队就可以根据他的需求进行一些针对性的调整。比如有人偏向于更高的收入,有人偏向于技术的积累,有人偏向于更自由。
值得欣慰的是,从团队成立至今,我们没有一个全职的同事主动离开。
靠谱的人组成靠谱的团队
“靠谱”几乎是我们平时提到最多的词。我们对每个同事最基本的要求就是“靠谱”。它实际上反映的是一个人的性格和习惯,而不是某种技能。它不仅体现在我们所做的编程工作上,也体现在每个人的日常生活里。我们的美女前端 Summer 刚加入团队时,做完的东西总会存在很多问题。那段时间我不得不每次亲自测试她的作品,每次都会严肃的跟她说,我又要给你找出 50 条 bug。每做完一个项目我们俩都会一起总结经验和教训,都会聊各种生活和工作上的“靠谱”行为。令人欣慰的是,3 个月后她就发生了翻天覆地的变化。现在 Summer 俨然已经是我们最棒的前端了。
每年一次长期旅行
我们从 2013 年开始增加了一项新计划:每年选一个地方,团队集体过去生活、工作 2-3 个月。2014 年我们选的是位于山东半岛的海边小城威海。从百度百科可以了解一下这座城市。我在6月份的时候去那边物色合适的地方,最终选了山东大学威海校区校园内的一套房子。本来计划找一座独栋别墅的,但既方便吃住行,又方便出游的实在找不到,进出一般都需要开车才行。而选在校园内,可以享受学校的食堂和运动场;学校出门就是海边,环海路和海水浴场。选好地方后就开始置办大家所需的全部用品,包括全部办公家具。然后就是给大家订机票。6月底的时候大家陆续到来。
集体生活是很幸福的。早上人人睡到自然醒,中午一起吃饭,然后睡午觉,傍晚的时候一起去运动,比如去打羽毛球,去游泳,去跑步,甚至请了个私人教练带我们一起。有时候去看落日,看电影,去山里吃农家饭,去海边吃海鲜吃烧烤,凌晨开车跑到10公里外的地方等着看日出,结果遇到大雾。买了吊床没用上,野餐垫倒是经常用。去海边买刚捞上来的海鲜回来自己煮。
经过这种面对面的相处,大家互相更熟悉,感情更深厚。结束旅行回到各自的城市后,彼此间的沟通明显高效随意了很多。
明年 2015 年,杭州和泰国暂时位于我们的备选清单里。
收入和工作量
我们团队内部经常说,只有保证了经济基础,不需要为生活而奔波,才有美丽心情做出美丽产品。我们一直采取“任务驱动”的分配方式。每个月做的项目、完成的任务越多,拿到的收入就越多。我们没有像其他团队一样用计算工时的方法来计算收入,而是根据项目和任务来计算。我们在接到一个新项目时,就会确定这个项目给客户的报价、项目由谁来管理、项目有哪几个人来完成、每个人具体怎样分工、每个人的工资。
根据所花工时来计算工资的方式更适合于创业团队,他们在开发自己的产品。而外包团队更适合我们这种方式,可以有效的减小各方的风险,同时提高效率。
这种方式也可以有效的提高大家的积极性。上面有提到过,我们从不需要担心团队里有人偷懒,只需要担心大家会不会工作时间过长,占用了正常生活和运动的时间。
在“任务驱动”的基础上,我们的全职同事也都有“最低收入保证”。“最低收入保证”的意思是,即使这个月什么都不做,也可以拿到这么多收入。
我们一直采取每 2 周发一次工资的方式,每个月的 15 号和 30 号。因为团队的现金流很健康,希望每个成员的现金流也很健康。
我们的“最低收入保证”一般是 ¥6000 起;大家的正常月收入一般在 ¥8000 - ¥25000 左右。
遭遇不靠谱的人
从事这个行业的人多数都是聪明人;这个行业里选择远程工作的,更是追求自由、想法丰富的一个群体。我们在享受每个人带来的聪明、高效、创意的同时,更要包容他们的某些缺点,以及由这些缺点带来的工作上的意外。只要不是原则性的问题,我们总会选择平静接受,并共同思考对策。面对这样的情况,团队或者项目的负责人就显得尤为重要。当有同事负责的工作出现意外情况,我们会调集所有可用资源来解决问题,不让客户感受到任何风险和意外;虽然我们有可能会为此付出沉重代价,但没有什么比维护团队的可靠形象更重要的事情了。
我们也遭遇过不靠谱的人,而且是原则上的问题,是我们无法接受的。
同事A与我们共事2年之久,他可以算得上是团队的早期人物之一。他经验丰富,对团队和客户的习惯都非常了解;技术也不错,可以称得上全栈;他为团队的发展做出了不可否认的贡献,经他完成的项目也都会受到客户的好评。他很适合来担任项目管理者的角色。但在与他共事几个月之后,他第一次出现 “不稳定状态”,简单描述就是:无理由的要扔掉手上的项目,不想做了,求换人。因为项目工期比较赶,其他同事都在忙各自手上的任务,我们费了很大的周折才协调其他人完成了这个项目,同时也付出了不小的代价。这次不稳定事件之后我与他聊了很多,但仍然 100% 相信他,相信他只是意外。几个月之后,第二次“不稳定状态”再次出现,与上一次的症状完全相同。这次之后,我同样与他聊了很多,但放弃了让他做项目管理的念头,认为他缺乏基本的担当意识;而是希望他继续留在团队里,做一名普通踏实的程序员,以他的水平,可以保持不错的收入。但就在半年前,第三次不稳定状态再次出现;而在这前一天,团队刚送给他一台 ipad air 作为奖励。这次我没有与他说一个字,直接进入团队的各个系统里删除了他所有的账号。
5. 提高效率 —— 规范、流程和工具
图中是我们自己开发的 SoonerPress 一段配置代码截图,它是一个 Wordpress Theme Framework 。
标准化作业
提到外包,经常会遭到一些人的鄙视,他们认为这是毫无技术含量的标准化重复劳动。给客户做一个网站,从自己的电脑里或者搜索引擎找一个模板改几下交差,不需要任何创造,然后收个 3,5 百块。在我看来,这种想法是对标准化作业的严重误解。
客户想要一部独一无二符合自己气质的手机,我们不能直接去买一部小米,拿回来刷上迷彩色的油漆,交给客户就算交差;但也绝不能自己生产一颗CPU,一颗内存,一块屏幕,以及所有的零件,然后组装起来才叫做独一无二。我们应该手中握有一系列成熟的CPU、内存、屏幕和其他所有零件,以及一套自己研发的操作系统,以及对这些软硬件都了如指掌的优秀工程师。面对客户的需求,大家可以分工协作,迅速组装出一台可靠的手机,并在其基础上做一定的改进,使之完全符合需求。与此同时,不断满足一个一个客户需求的过程中,要不断的升级、补充自己的软硬件仓库。
http://hamburger-kammerspiele.de/ 这是我们去年为客户开发的一个网站。除去通过 API 同步数据的部分,它是个很小的项目,但具有独一无二的样式和简单易用、功能丰富的后台界面。除去 API 部分,这样一个网站需要多长时间来开发呢?答案是 4 天。其中前端 3 天,完成后交给后端;后端 0.5 天;完成后交给测试,测试和修改 0.5 天。
当团队初期只有我一个人时,主要给客户做普通的 Wordpress Theme 开发。当时 Theme 里的每个部分都需要自己来实现或者去搜索其他人的开源代码。一段时间以后,我将一个 Theme 可能用到的所有功能全部集中起来,每个功能都包含一个实现部分和一个配置部分。自此以后,做 Theme 的时候我只需要配置一下用到的功能就可以迅速完成。因为这些功能代码都是经过长期考验的,所以做出来的 Theme 几乎不需要担心有 bug。这就是我们团队的第一个框架雏形。
后来我们完全重写了一个 Framework,就是文章开头提到的 SoonerPress。它的核心理念就是 configuration。它包含了几乎所有功能,让开发速度快到难以置信;由于整个框架和所有功能都是经过大量客户和项目验证过的,开发出来的产品几乎很少有 bug。同时,我们会不断的根据发展和实际需求去更新、补充它,确保它总是最具生命力。
除此之外,我们在 PHP 开发、前端开发、App 开发等方面都积累了一整套标准化的工具,使得大中小型项目的开发效率和可靠性都大大提高。
总结一下我们团队的标准化作业:将智慧和创新性的工作放在打磨、积累零件上,然后用最短的时间最高的效率为客户生产出可靠的产品。
用书面文档取代口头传授
我们有一个 wiki 知识库。里面包含团队介绍,团队协作及工作习惯,编码规范,测试规范,开发工具等内容。知识库的内容使用 Markdown 编写,使用 Git 做版本管理,所有成员均可编辑,任何人更新之后,会通过我们的自动部署工具 DeepDeploy 实时部署到 web 服务器上。平时大家通过 web 查阅。
在平时的工作中,我们会随时将新知识或者新工具补充更新到知识库中。当有新同事加入的时候,我们只需要将这个知识库展示给他,而不需要浪费人力和时间来培训。
最近我们开源了这个 wiki 工具: DeepWiki- 基于 Markdown 的 Wiki 工具
与客户之间的沟通
对于我们这样的团队来说,与客户的沟通重在两方面:一是降低成本。 这里所谓的降低成本是降低沟通成本。降低沟通成本最有效的方式就是标准化,将沟通过程标准化。对于一个新项目来说,从第一次接触,到最终完工验收通过,总共有哪些环节要沟通,我们可以将其形成一个标准化的流程,客户只需要 "Config"。
二是明确需求。 在达成协议并开工之前,务必要确保项目负责人已经完全明确每个细节的需求。我们在这方面吃过很多次亏。这个阶段的大意很可能意味着开发过程中要为自己的大意付出惨痛代价,而这部分代价必须自己买单,客户不会再多掏一分钱。一旦明确,需要尽可能将所有需求都以详细的书面形式呈现;以后客户如果要做任何修改,我们会将修改组织成新的版本,并对版本升级单独收费。
由于我们现在只跟固定的 digital agencies 和 design companies 合作,大大降低了与客户之间的沟通成本,也更容易明确每个项目的需求。
除了以上两点,还有三个细节:
一是需求文档。刚开始的时候,有的客户并不知道如何写出一份好用的需求文档,这会给后面的开发带来很大的麻烦。于是我们采取措施来解决这个问题,其中最简单的方法就是为他们提供优秀的文档做参考。这是件一劳永逸的事情,一旦每个客户都能够写出好用的文档了,沟通成本更是可以降到最低。我们开发的一个专门用来写文档的工具 DevelopSpec 很快就会上线,希望能给大家带来方便。下面图中是我们正在进行的一个项目的文档目录,可以看出层次分明,逻辑清晰。
二是付款周期。现在我们几乎没有坏账的风险,也没有催款的烦恼。我们与每个客户都采取按月结算的方式,每个月底付清当月已完成项目的费用。规模较小的项目一次付清,规模较大的项目会分成 2-3 个阶段。这种方式给我们带来健康的现金流,可以将精力全部用于产品开发上。
三是尽量用文字而不是语音。在没有特殊情况的时候,我们尽量用 Email 和 Basecamp 做所有沟通。这样做的主要目的是确保所有的沟通都有据可查。如果事后某方对自己此前的说法不承认,Gmail 的强大搜索功能立刻就能派上用场。其次,异步沟通也能提高效率,避免反复被打断。
同事间的沟通
同事间的沟通最重要的是协调好异步沟通和实时聊天的关系。当我们一起探讨某个产品时,我们会在 Hipchat 的 某个 Room 里进行实时聊天。而在具体做某个项目的过程中,我们会尽量避免直接聊天,有什么问题都会通过 Basecamp 进行。这样可以确保大家有充分的自由和更高的效率,无论是在工作还是在买菜,不想被打断的时候可以尽情选择推迟处理。另外,在第二篇文章里有提到过,每年一次的长时间共同出游给同事间的沟通带来了很大的好处。大家不再陌生也不再客气,可以很好的把握屏幕后面那个正在与自己聊天的人的性格和喜好。
合理安排,减少加班
一是提前知道每个同事的动向,合理分配项目和任务。比如某个同事计划一周后请假出游2个星期,我们会尽量确保他在2周内可以完成手上的工作,出游的 2 周不被打扰。
二是尽量不在周末谈工作。我们没有严格的工作日和周末之分,有的同事习惯周末工作,因为外面太闹;而有的同事习惯周末出门,因为其他上班的朋友只有周末才有空闲,可以聚会见面。通常后者居多。我们的 Basecamp、Hipchat、Email 通常会在周末的时候陷入沉默。如果手上有任务的话可以继续做,但通常不会有彼此间的打扰。
一些工具
我们平时用到的协作工具主要有:Basecamp,Email,Hipchat,Bitbucket,DeepDeploy,DeepWiki
6. 孤独?颈椎病?鼠标手? —— 花更多的时间关注健康
将这张图送给坐在电脑前的各位,如果你也会觉得背部酸痛,颈椎难受,马上起来贴墙站 5 分钟吧。
身体
身体健康问题应该不是远程工作者的专利。我有一个做医生的同学,我将她请来做我们团队的远程随队医生。她说,你们这些职业病都是懒病。今年夏天在威海的 2 个月时间里,我们的主题之一就是运动。之前整个团队里没有一个人有规律锻炼的习惯,这个现实让人难以接受。我们去跑步,游泳,打羽毛球,健身。多数人开始的时候连跑 500 米都有困难,但最后竟然能一次完成 10 公里。有个同事之前每个月都要规律的感冒发烧一次,但在这里他竟然把这个习惯给忘了。
大家体会到运动带来的好处之后,各自回到自己的城市,也可以一定程度的坚持下去。但很明显坚持的还不够,这也是我认为目前团队里存在的重要问题之一。我们正在针对这个问题想办法。
我在一早一晚社区里发了个帖子,总结了自己的 日常运动计划。长期规律的锻炼给我自己带来了很大的改变,这些改变又转化为继续锻炼的内在动力。
根据自己的经历,我建议想要养成规律运动的同学去离自己最近的健身房请一个好的教练。让教练带自己连续运动 2-3 个月。一方面,会准确掌握锻炼的知识和技巧;另一方面,2-3 个月的时间足以让自己发生很大的变化,这种变化会变成内在的动力,驱使自己继续下去。
等有一天你发现自己浑身舒坦,线条完美,曾经从不正眼看你的女神现在也对着你的身材忍不住流口水的时候,恭喜你,你应该不会再被程序员职业病所困扰了。
环境
选择远程工作,为自己准备一个舒适的工作环境应该是很重要的基础工作。如果准备得当,既能提高工作效率,又能保护身体健康。我们在社区里交流工作环境,交流舒适的椅子,希望更多的朋友参与进来,提供建设性的参考意见。
心情
看到很多人担心全职远程工作之后社交圈子是不是会突然变小,与人沟通的能力是不是会突然下降。根据我们这几年的经验,我想说,多虑了。社交圈子的大小,与人沟通能力的高低,更多的应该取决于自身的性格。远程工作也只是份工作,它不可能占据 24 小时的时间;相反,它能给人提供更多的自由。在工作的时间内,可以结实很多志同道合的朋友,无论他是不是跟自己在同一个城市或者同一个国家;由于这些朋友的生活环境与自己可能有很大差异,反而能给自己带来更丰富的信息和灵感。在工作时间之外,可以自由的经营自己的生活和爱好,无论是否与自己工作相关的团体、组织、活动,都可以自由参与,而不用担心今天是否必须要上班,是否会被扣工资。
7. 接下来会怎样? —— 面临的问题及后续的计划
作为一支远程工作圈子里的老兵团队,一路走来我们逢山开路遇水架桥,解决了很多困难。但依然有很多难题在困扰我们。
可持续增长
虽然每个月都在增长,但我们一直无法摆脱强烈的危机感。以外包为核心业务的模式常常让我们缺少主动权。我们一直在尝试做一些小工具,这些工具都来自于日常工作中遇到的需求。希望有一天我们可以在多年积累的基础上,做出更有价值的产品,提供更有价值的服务。招聘和求职
随着业务量的增长及业务难度的增加,我们对人才的渴求也越来越强烈。虽然有过许多经验,但前面提到的三种有效途径已经逐渐无法满足需求。受我们影响,开始招聘远程员工的朋友公司虽然暂时缓解了燃眉之急,找到了几个合适的人,但面对急剧增长的业务,也依然有点心急如焚。
一边是我们找人困难,另一边是经常在各个社区里看到不少人在寻找远程职位而没有结果,只可惜他们多数人的技能树与我们的需求不符。
招聘与求职双方的信息不对称,似乎是因为缺乏一个有效的沟通平台。它不应该是个简单的论坛,也不应该是冷冰冰的智联招聘。它到底应该是什么样子?我们一直在思考。
周围人的看法
总会有很多人不太理解这种工作方式,尤其是自己的父母。如果在工作的同时要面临周围人的压力和奇怪的目光,那实在难以舒坦,难以享受到远程工作带来的乐趣和自由。目前来看,能有效缓解这个困局的途径有两条。一是确保自己过得好,不断成长,不断收获自己想要的东西,只有这样周围的人才能放心;二是推动“远程工作”这个概念走向大众,就像当年巨头们推动“团购”一样。
我们要做的
回到国内来前几年的经历促使我们“走出去”;最近的一些经历吸引我们“走回来”。最近几年可以明显感受到国内的互联网行业突飞猛进的发展,一批优秀的公司和团队迅速成长起来,一出生就带着十足的“国际范儿”又不失“中国地气儿”。我们如果不赶快回到这片热土上来,很可能将是最大的损失。
一位做游戏的朋友在看过这篇文章的初稿之后,严肃的说,如果国内有像你们这样的外包团队,我们愿意付2倍价格。
就在昨天发完文章前半部分的10个小时之后,我们已经收到了数十位朋友的邮件,其中包括探讨、合作和简历相关的内容。
过去几年的经历为我们团队塑造了优秀的性格和习惯;回到国内来,无论是继续做外包,还是做更有价值的产品,有理由相信我们会继续披荆斩棘,保持高速增长。
推动远程工作的普及
远程工作者在国内还只是一个很小的群体。但在愈演愈烈的互联网大潮中,我们相信有越来越多的个人和团队会加入到我们这个行列中来。在继续发展核心业务,扩充团队的同时,我们希望能为推动国内的远程工作发展尽绵薄之力。这就像我们一直在协助我们的客户共同发展一样,大家都发展了,我们自然也会收获更多。
一早一晚 是我们迈出的第一步,虽然它还只是个雏形。希望有同样爱好和需求的朋友加入到社区中来,一起推动远程工作的普及,同时也享受社区带来的优秀员工、优秀团队、优秀项目。