导读:原文作者Greg Jorgensen是一位典型的程序员,他从1974年开始编程。曾在耐克和苹果等公司任职。他专攻修复和完善受损、被遗弃和半生不熟的Web应用程序,尤其是后台语言是PHP的网站。他写了一篇文章《Tips for successful freelancing》,以下是文章内容

我从事自由职业已有十余年了,有时候在我有全职工作时我把它当做副业,有时候我只做自由职业。关于自由职业中如何成功地编程,我也学到了一些经验。

1. 做你会做的事情

客户付钱请你解决问题。他们对Haskell语言有多炫根本不感兴趣,而且他们也不想付钱让你去学习新的工具和编程语言。因为上一个程序员力不能及而 退出或者被解雇,我接手这一类的项目,多的数不胜数。你应当拓展自己的技能以保持竞争力,而且不要因为其自身价值而过分喜爱时下流行的程序语 言。(注:Haskell是一种纯函数式编程语言。)

2. 不要独树一帜

如果你掌握了一种新奇的、炙手可热的技术,那你当然可以使用它。但是,如果仅仅是因为看到会Lisp的自由职业者赚钱多就去学习Lisp,那你得仔细 考虑一下自己如何跟他们竞争。当然,现今有很多PHP程序员,但大部分都是业余爱好者,你能轻易地跟他们竞争,并且有的是PHP工作去做。跟技术娴熟的、 有经验的专家竞争少数工作更困难。别人能赚钱的工作你都想去做,但不打算做的更好,所以你在与一支六年级的队伍打篮球,而不是试图去加入NBA。

3. 不要试图做所有事情

注意不要忙于做技术支持、硬件安装、设计、艺术创作等工作。要坚持做自己擅长的。把那些你不擅长的工作发送给其它擅长的自由职业者,遇到同样的情况,他们也会发送给你。

4. 不要接规模太大的工作

如果很难用一张纸把项目描述清楚,或者整个开发进度要持续几个月甚至几年,那么你得注意了。通常,规模较大的项目对一个人来说工作量太大。如果你非常 想接一个大规模的项目,那么,试着把它分成若干个小的子项目,每个子项目可以短期完成并有一个可交付的成果,这样你和客户就可以看到项目的进度和成果。

5. 避开行为恶劣的客户

如果客户看起来狂暴、专横、吝啬、贪婪、粗鲁、苛刻、霸道等,那么远离他们。去找其他客户。如果你很难想象与客户能够保持一种专业的、有报酬的工作关系,或者你感觉客户做的任何事情都很恶劣,那么拒绝他们。

6. 大多数业务都是通过推荐得到的

好好干,让你的客户满意,与其他自由职业者合作,构建能够推荐你并给你带来工作的人际关系网。

7. 不要试图让它看起来像个“真正的”交易

很多企业家过分注重积累公司的外在形象。你不需要花哨的网站、信头、办公室等。你可能甚至都不需要创建一个企业或者有限责任公司。除非你有员工或者一 天能给客户开出72小时的账单,否则你不会赚到足够的钱来证明一切都制作精良或者能被认定为“专业”。你的客户不会在乎你在家工作,也不会在乎你没有排场。

8. 采用源码控制和问题跟踪

学会如何使用源码控制和基于网络的问题(bug)跟踪。在Wiki上记录每一个项目的需求、问题及决策。运用工具,让客户通过系统向你汇报bug。我使用ProjectLocker,现如今还有其他便宜的托管方案。不要浪费时间在你的服务器上搭建它。

9. 追踪工作时间并定期开账单

获取报酬最好的方式就是准确地记录工作时间,并定期向客户开账单。我喜欢按小时记录工作,每两周向客户寄发票。你不需要一个成熟的记账系统,现在有很 多时间跟踪托管软件以及像BlinkSale这样的在线开发票方案,它们能帮你完成大部分工作。

10. 不要转包

我提倡与其他自由职业者合作,但我不喜欢将工作转包出去。很可能给别人讲解项目并审核其工作完成情况所花费的时间,与你亲自完成这项工作所花费的时间 一样长。不管怎样,任何跟你水平相当的程序员花费的时间都是差不多的。如果你认为在Craigslist找到了一个每小时收费12美元的程序员是捡到了大 便宜,那祝你好运。如果你承担的工作多到你处理不了,那么试着将它转交给另一个懂得回报的自由职业者。

11. 使用敏捷开发技术

客户都想了解工作进度。对需求的错误理解,可能是你犯的错误中代价最高的。采用短期可交付成果和反复审核的敏捷开发技术,会让你的客户满意,也会让你远离繁杂的任务。你不需要向用户讲解敏捷开发,他们根本不在乎。只是告诉他们你如何做以及你需要从他们那里得到什么。

12. 让客户及时了解项目情况

在线发布工作进度,让客户了解你在做什么。对大部分人来说,编程很神秘,所以让你的工作进度清晰可见会使客户感觉跟你合作很舒服。我发现敏捷透明的开发过程可以防止账单纠纷,而且一旦客户习惯了你的高标准服务,他们便很少会把工作再交给其他自由职业者来做。