蛋刀副手必出bug:IT自由职业者的成功秘诀

来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 17:16:45

Greg Jorgensen是一位典型的程序员,从1974年开始编程,已有近35年的行业经验,曾在耐克和苹果等公司任职。其特长是:专攻修复和完善受损、被遗弃和“半生不熟”的Web应用程序,尤其是后台语言是PHP的网站。Greg同时也是一位独立咨询顾问,他撰文称(中文):“我从事自由职业已有十余年了,有时候在我有全职工作时我把它当做副业,有时候我只做自由职业。关于在自由职业中如何成功编程,我也学到了一些经验。
1. 做你会做的事情;2. 不要独树一帜;3. 不要试图做所有事情;4. 不要接规模太大的工作;5. 避开行为恶劣的客户;6. 大多数业务都是通过推荐得到的;7. 不要试图让它看起来像个“真正的”交易;8. 采用源码控制和问题跟踪;9. 追踪工作时间并定期开账单;10. 不要转包;11. 使用敏捷开发技术;12. 让客户及时了解项目情况。

Tips for successful freelancing

I’ve been freelancing for over ten years, sometimes moonlighting when I have a full-time job, sometimes doing just freelance work. I’ve learned a few things about successful freelance progrramming.

Do what you know how to do
Clients pay you to solve their problems. They aren’t interested in how cool Haskell is, and they don’t want to pay you to learn new tools and languages. I can’t count how many projects that I’ve taken on after the original programmer quit or was let go because he got in over his head. Expand your skills to stay competitive and don’t fall in love with languages du jour for their own sake.

Stay with the herd
If you have an exotic in-demand skill by all means use it. But if you decide to learn Lisp because you see Lisp freelancers making top dollar, think hard about how you will compete with them. Sure, there are lots of PHP programmers out there, but most of them are amateurs you can easily compete with, and there’s more than enough PHP work to go around. It’s much harder to compete with skilled and experienced experts for a small number of jobs. You want to do what everyone else is making money at, but better, so you’re playing basketball against a team of sixth graders, not trying to join the NBA. 

Don’t try to do everything
Be careful you don’t get buried doing technical support, hardware installation, design, art production, etc. Stick with your competencies. Find other freelancers who specialize in the things you don’t do and send them business, and they will do the same for you.

Don’t take jobs that are too big
If the project is too hard to describe on a sheet of paper, or it has a schedule spanning months or years, be careful. Big projects are usually too much for one person. If you are tempted to take a big project try to break it into smaller projects with shorter-term deliverables so you and the client see progress and accomplishment.

Avoid bad clients
If the client seems angry, bossy, stingy, greedy, abusive, too demanding, too controlling, etc. step away. You will find other clients. If you can’t imagine a professional and rewarding relationship with your client, or if you feel dirty about whatever it is they are doing, say no. 

You will get most business from referrals
Do a good job, leave your clients happy, work with other freelancers and develop a network of people who will recommend you and send work your way.

Don’t bother trying to look like a “real” business
Plenty of entrepreneurs get caught up accumulating the trappings of a big company. You don’t need a fancy web site, letterhead, office, etc. You probably don’t even need to form a corporation or LLC. Unless you have employees or manage to bill for 72 hours every day you won’t make enough money to justify anything elaborate or supposedly “professional.” Your clients won’t care that you work from home and don’t have all the trappings.

Use source control and issue tracking
Learn how to use source control and web-based issue (bug) tracking. Keep a wiki for each project documenting the requirements, questions, and decisions. Use the tools yourself and get your clients to report bugs through the system. I use ProjectLocker, there are other cheap hosted solutions out there. Don’t waste your time setting this up on your own servers.

Keep track of your time and bill regularly
The best way to get paid is to keep track of your time accurately and bill your clients regularly. I prefer to work hourly and send invoices every two weeks. You don’t need a full-blown accounting system, there are hosted time tracking and invoicing solutions like BlinkSale that do most of the work for you.

Don’t subcontract
I recommend working with other freelancers, but I don’t like subcontracting work out. Chances are you will spend almost as much time explaining the project and reviewing the work as you would spend doing it yourself. Any programmer as good as you will cost as much anyway; if you think you are getting a bargain with a $12/hour programmer you found on Craigslist, good luck with that. If you take on more work than you can handle try referring it to another freelancer who will return the favor.

Use agile development techniques
Clients like to see progress. Misunderstanding requirements is the most costly mistake you will make. Agile development, with short-term deliverables and frequent reviews will keep your client happy and keep you from going off in the weeds. You don’t need to sell your clients on agile, they don’t care anyway. Just tell them how you do things and what you need from them.

Keep your clients informed
Post all work online so your client can see what you’re doing. Programming is mysterious enough to most people, so keep your work visible so clients feel comfortable with you. I’ve found that an agile, transparent process heads off billing disputes, and once clients get used to your high customer service standards they are less likely to give work to other freelancers.