自由软件开发者的十点注意事项

在 Teahour 85 期“这次我们聊聊远程工作”中谈到了远程工作者和自由开发者应该注意的一些事项,但聊的比较散乱。抽空整理出十点,是为补充。

一、信任是合作的基石

没有信任,难以进行远程工作。信任是相互的,体现为:

  • 客户放心把项目交给你,由你来规划、管理和完成任务。
  • 客户相信你提交的所花费时间的报告。
  • 你会在期望的时间内把预期的工作成果交给客户。
  • 你会在预定的时间内收到客户支付的报酬。

有些竞价平台要求自由开发者(freelancer)在工作的时候打开某个监控软件和摄像头,客户可以随时通过该软件查看你的工作状态。这显然不是正常的合作关系。

二、沟通是长期关系的纽带

沟通对软件开发团队来说非常重要,于自由工作者(一般也是远程工作者)更是重中之重。Email 和电话(Skype)作为传统的沟通方式,将继续发挥主要作用。除此之外,使用在线协同工具,提高沟通效率,如:

  • Slack: 实时交流,同时可以分享文件和其他资源。我的做法是,让客户将我加到他们的 Slack channel 中,或是我建 channel 邀请客户进来。
  • Trello: 项目管理。

沟通要及时有效(但没必要实时,大部分的交流可以是异步的)。遇到问题主动与客户交流,对于客户的提问及时回复处理。

三、避免恶性低价竞争

你永远不可能与 $5/hour 的开发者竞争。与其(恶性)压低报价,不如花力气寻找付得起你的价位的客户。只要你能提供让人满意的服务,总有人会乐意买单。

我甚至碰到过嫌你开价低的客户。这种客户一定要珍惜,他们认同一种观点:优质服务的提供者,会报出与之相称的较高的价格。

四、务必签订合约

合约是对双方的保护,所以一定要签订合约。在合约里写明项目内容,报价,双方的权利和义务,完成或提前终止合约的要求,等等。

当然如果工作内容非常简单,所花时间不超过一天或报价很低(低到拿不到这笔钱也无所谓),那么不签合约也 OK。不过这种情况下保险的做法是要求客户先全额付款。

五、克服孤独

远程工作,难免会孤单寂寞。解决方法也很多,比如花更多时间陪家人,多参加社区活动,多读书,偶尔去 co-working space 或类似地方与其他开发者一起工作。

发展各种兴趣爱好,充实生活。我的个人爱好是看电影和写程序,嗯,比较宅。

六、学习学习再学习

软件开发是一门技术性和时效性兼具的工匠活。不进则退,只有一直不断学习与进步才能保持竞争力。

不要以为端着一门手艺就可以吃一辈子了。有无数其他方面长你无数倍的人,在学习成长为全栈工程师,随时会抢走你的饭碗。

七、提供超出客户预期的价值

做为自由开发者,要求自己能提供超出客户预期的价值。说白了,只要你给客户带来的收益增长高于你开出的报价,双方就是 win-win 的。

如果推销能力高超,你也许可以报超出给客户带来的实际效益的价格,但这种好事一般不长久。

八、关于报价

避免按小时报价。小时报价对自由开发者来说是非常不合适的,原因有:

  • 随着你的水平和经历的增长,你完成同等工作的时间应该是递减的。但小时报价不容易大幅增长。换句话说,如果你的报价保持不变,你每小时都在给客户打更大的折扣。
  • 很多客户听到你的小时报价会觉得价格太高。当你把这个数字乘以 8 再乘以 5 然后以周报价时,他们反而会觉得价位合理。
  • 软件开发需要手脑并用。思考 5 小时,编程 3 小时,这是我个人日常的时间分配。但有些客户会觉得你收那 5 小时的钱不合适,哎。

尽量按天甚至周报价,如果是按月来就更好了(听着像一份全职工作了呢,不打紧,这是错觉)。

九、定时准时发送 invoice,并要求客户及时支付

你付出了劳动交付了成果,客户就需要按时按量的支付报酬。如果客户在没有特殊并且可以理解的原因的情况下延时甚至拒绝支付,客气的提醒对方尽快补上(合约上可以订上 late fee)。如果对方不及时处理,参见下条。

十、该分手时就分手

遇到以下情况,当机立断说拜拜,快速终止与客户的合约。这样做,对双方都是好事。

  • 你无法提供客户需要的服务。比方说客户的需求以你目前的技术和知识结构无法实现。
  • 客户不讲理,不认同你的工作成果,或再三提出不切实际的需求。
  • 客户在项目进行中要求降价。
  • 客户恶意延期支付或拒绝支付报酬。

以上十点,每点都可以展开进行很多讨论。欢迎探讨。