原文:Freelance Software Development Tips
这是三篇独立程序员(自由职业程序员)系列文章的最后一篇。
在 第一篇, 我们整理了一些成为独立程序员的优点和缺点,帮助你决定自己是否适合成为独立程序员。
在 第二篇,我们介绍了怎么成为一名独立程序员。
在这第三篇,将分享一些过去几年里我们作为成功的独立程序员所学习到的经验和技巧。
本文分成三大块来讲述:
- 和客户的沟通
- 维护自己的名声
- 怎样解决一些常见的问题
和客户的沟通
第一个部分要谈的就是和你的客户沟通的问题。作为一名独立程序员,这是要做对的最重要的事。我发现客户喜欢有以下品质的人:
可靠
成为一个可靠的联系人,能及时的回复邮件和回答问题。同时,避免让客户担心你的进度,你可以给他们发送常规的进度报告或者当你完成一个目标后让他们知道。
礼貌
礼貌并且专业,友好也一样重要,毕竟我们是人!
诚实
不要说谎,总是遵守诺言。不要许下做不到的承诺。比如,不要在项目快结束的时候答应实现一些功能,如果你都知道你连按时项目都已经很困难了。
不要隐瞒问题
如果问题很严重或者迟早会暴露,尽快告诉客户。
记录你的时间使用
如果你是按照小时收费的,记录你的时间使用,并且经常告诉你的客户。如果你是按照项目一次收费的,这也可以帮助你评估你的效率。
提供技术建议
如果你发现客户做出了一个错误的技术决策,一定要告诉他们而不要让他们陷入困境。和他们讨论这个决定,但是要注意的是,最后还是让客户自己定夺。
提出问题
不要害怕提问,这可以让你和客户在未来省下不少心。如果有疑问,总是去问清楚,不要自己假设客户想要的是这样。如果一个需求定义的不是很清楚,或者缺失了一些关键的细节,要求他提供更多的细节,或者告诉你他想要的结果。这样他就能马上指出一些错误。
做出客户期望的东西,而不是你认为客户期望的东西
在软件开发里,总是有一条沟:沟的这边是客户期望的结果,沟的那边是最后他们得到的结果。消除歧义并且在不明确的时候不要自作主张是缩小这个沟两端距离的好方法。
比如,如果一个需求说:一个用户注册需要提供邮箱和密码。但是在另一个地方却说:一个用户登录需要输入用户名和密码。你会发现两个需求有冲突:注册时填的是邮箱,登录却要输入用户名。是把邮箱当做用户名还是在注册时需要填用户名?除非客户自己说明否则没人知道。
解决问题
当出现了一个问题,集中精力去解决它而不是去抱怨。
维护自己的名声
这个部分要分享一些怎么维护自己的名声的建议。
作为一名独立程序员,这是你最重要的资产。正如老话说的,那些你做过的好事早就消散在风里,而坏事永流传(good things are written in sand, bad things in stone)。
我们都希望事情不是这样,是反过来的,然而世界就是如此。如果你的名声不好,你就很难找到项目,尤其是在你的名声是公开的社交网络上。
最好的维护提高你的名声的方法就是让你的客户满意。
怎么样做到呢?一个可行的方法是临时把你想象成一个客户。我曾经从一些平台上(Freelancer、Upwork)雇过几次独立程序员,所以以下几点有切身体会:
- 怎样从几份申请中选择程序员
- 期望工作的进展是什么样
- 当开发者没有告诉我当前的进度,没有回复我的邮件我有多郁闷
- 如果开发者总是和你保持联系,回答你的问题,告诉你进度是多么开心
当然你真的不必为了体验客户的感觉真的去雇两个人,这还是挺贵的 。:]
如果你时常从客户的角度来思考会很有帮助。尤其是当你刻意隐瞒一些存在的问题或者撒谎这样的行为。这辈子我最喜欢的一句话就是:己所不欲勿施于人(没想到老外也知道这个。我天朝文化真是经久不衰)。
怎样解决一些常见的问题
最后一部分是解决独立程序员常见的一些问题的建议。
就像所有的职业一样,独立程序员也有危险的区域。这里告诉你怎样避免一些常见问题。
在项目开始前都谈清楚
在上面里我提到,让用户满意的一个关键就是明确客户的期望,消除歧义。项目的开始阶段也有很多不明确的地方:开发速度,开发费用,支付方式和交付日期。这些一定要谈的非常清楚。
不要在对项目一无所知的时候签下保密协议
有好几次客户在没有向我展示项目的任何信息就要我签署保密协议(NDA)。即使冒着丢掉的风险,我也总是拒绝。
为什么呢?关键是:我怎么能签下一份不知道具体详情的协议,让我自己去为它保密,在没有完成前都要保密,我连要保密的是什么我都不知道!如果我一开始就已经违反了保密协议呢?
如果你也遇到这样的情况,请求客户告诉你这个项目的idea是什么,不需要太多的细节,只要让你能有信心能做到保密。
这个项目是做什么的?一个社交约会APP?额....我应该告诉你们我最近在做着一些相似的项目。
仔细阅读理解合同里的条款
看起来这是显然的,但是这是需要一个特别认真对待的话题。一份合同是受法律保护的你和客户间的协议。并且通常都是客户要求你签的,这份合同通常总是更关注保护客户和他的项目的权益,而不是你的权益。
这很难给出建议,因为没有两份合同是一样的,而且更重要的是,我也不是一个律师。但是有一些通用的忠告:
- 仔细的读合同。
- 再仔细的读一遍,然后再读一遍!
- 如果某个部分不明白或者不清晰,一定要找个有经验的代理人帮你看看。是的,虽然获得法律的建议要花费一些钱,但是这些建议可能最后为你节省更多的钱。
- 如果你发现有一些错误,歧义或者你不喜欢的条款,不要害怕提出来。
- 如果客户不同意你提出的要求,放弃去寻找另一个项目。
为可能突然找不到项目做准备
有时你在一个项目完成时找不到下一个项目是很正常的情况。我的对策就是保证自己至少同时在做着两个可以兼顾的项目,宁可放弃一个可以专职的项目。
这样每个项目都可以为另一个项目当做后备:如果一个结束了,我还是有项目可以做。毕竟有一半收入比完全没有好。
当真的发生这样的情况,你可能会很伤心,至少我有时会这样觉得。但是我知道这只是一种正常的反应,当我感觉我状态正常了我就开始找一些其他有挑战的事。
如果我依然没有激情状态不好,我就会让自己休息一两天。我会和家里人花更多的时间相处,也可能做一些我平常没法做的事,因为总是有着大量的工作,比如一些休闲活动(我最近在练习打鼓:]),学习一些新东西或者读读书。
最后,我不知道是因为运气好,巧合还是其他的什么。当我的一个项目结束的时候,我经常就收到主动邀请我的offer。上一次,比如,在一个项目突然暂停后的第二天,我就接到Stack Overflow的邀请,在那之后的几天又收到LinkedIn的。都是一些不太熟的人,不是朋友或者朋友的朋友介绍的。
我希望这样的事情也能发生在你的身上。
然而,无论有没有主动的offer,我会坚持搜索,申请项目,询问我的朋友等等。知道我有一个新的项目可以做。有时会花几天时间,有时也能要几个月。
这些我都知道了,我还能去哪多了解一些?
我希望以上提到的这些能对你有帮助,如果你在考虑是不是要否要成为一个独立程序员,或者已经是了正在寻找一些经验建议。
如果你想要了解更多的东西,下面是一些可以提供的资源:
- Staying motivated as a work-from-home developer
- Interview to Piero Toffanin, a former digital nomad
- Why you shouldn’t be scared of going freelance, by Ignacio Nieto
- Do’s and Don’ts of a Freelance Developer, by Ignacio Nieto
- Fixed quotes, by Mariano Abdala
- Busting the Top 5 Myths About Remote Workers, by Scott Ritter
- How to Travel While Working: The Traveling Engineer’s Survival Guide, by Breanden Beneschott
- Don’t Be Fooled: Calculate the Real Cost of Employees and Consultants, by Hyam Singer
有人给我推荐过:Serial Winner,一本不是专门给自由职业者的看的书,而是给那些希望自己总是成功的人的书。
还有一本是我的个人推荐,和自由职业者完全不相关但是有好几个地方都激励了我,是关于管理你的资金:The Richest Man in Babylon.
欢迎关注我的微博:@没故事的卓同学