Page 1 of 1

7 habits of highly effective freelance programmers

Posted: Tue Feb 19, 2008 1:23 am
by sunilbhatia79
I have developed these based on my freelancing experience. Though I have discontinued freelancing, but would like to share my practices with you. These are basic practices and have been developed over time with experience (good and bad). Please feel free to leave your experiences and comment on this article.

1. Communicate with your clients frequently

This I believe is the most important habit that you should inculcate. Keeping the client in the loop ensures them that you are on top of things and that you are working on their project. Think about it! what if you were the client and were paying someone to develop something. Wouldn't you want to hear from your vendor frequently? Issues, slippages, project statuses should be frequently updated to the client (irrespective if your client asks or not). It’s professional ethics!

2. Document interactions with your client

Following point 1, you will have a lot of interactions with your client. You should record/document these interactions as a habit. These interactions could either be in the form of a chat message, emails or function specification documents. Maintaining a history of such interactions will help you during the closure of the project and mainly towards User Acceptance Testing (UAT).

3. Maintain on-going relations with all parties

Just because a project is over does not mean that you should not maintain relations with your clients. Greeting your client on birthdays, anniversaries, etc makes them feel good. This exercise is good to build rapport with clients. It always keeps you fresh in their minds. So, the next time they have a project; guess who gets called first. In addition to above, you should also maintain relations with suppliers or other freelancers who you outsource work to. In the long run it helps build trust and gives you a good bargaining power. Think about it.

4. Get yourself a professional identity

So what if you freelance, it doesn't mean that you should not carry yourself professionally. Create professional looking logos, business cards, stationery and website (very important). Get a professional copy writer to help you with the content of your website. You should mention the projects that you have done and the skills that you have. Always have a contact form on your website where prospective clients can contact you (and when you do get contacted, reply immediately).

5. Seek testimonials from your clients

Seek testimonials from your clients after closing a project. Get this on email and catalogue it for future reference. Also seek their permission to publish their testimonials on your website. In addition to this, you should consider requesting permission from your clients if its ok to give their contact information for reference checks. Some prospective clients would like to talk to your old clients and gauge the experience they have had with you.

6. Create reusable libraries

Creating reusable libraries makes you more profitable. Think about it! If you have been creating email validators on forms for nearly all projects, it makes more sense to create a reusable library and import that library in your current project and make use of it. This way your effort on the project in the long run is reduced and hence you get paid for something that has already been done. In addition to this, if you discover a bug and fix it, you can apply a patch immediately to all your projects. Saves your time there too and helps all your clients with the bug fix in one go.

7. Maintain proper accounts

Many freelancers (including me) have failed at this. We fail at this not because we don't know how to handle finances or accounts, but because we are programmers... we love to write code... not books. Do you agree with me?. But the hard reality is that at the end of the financial year we need to pay taxes. To pay taxes properly we need a good accounting system. The choice is up to you, either be disciplined and maintain proper accounts from day one or waste a lot of time towards the end of the financial year doing it. I recommend that you do it as you go along. I recommend that you dedicate a weekend to file your papers/accounts properly.

Please feel free to post your comments or add to this list your experiences and best practices.

Reference: http://www.sunilb.com/programming/7-hab ... rogrammers

Re: 7 habits of highly effective freelance programmers

Posted: Mon May 19, 2008 1:40 pm
by volomike
Sunil - great list. Here's mine to add:

8. Learn Packages

This isn't the 1990's anymore. Get over it! It's no longer all about the programming language, database, or the technology. It's about knowing other software packages and frameworks as well that are built on these, and not from just an install and customization perspective, but from an under the hood, maintenance, and feature comparison perspective as well. And when I mean under the hood, I mean looking at how to integrate the product with another product especially in regards to user authentication, sharing content with each product, and so on. Now, this is extremely hard to do in the tight timeframes you have as a freelancer, so consider Meetup.com, meet some guys, agree to divide up and study some packages, and then meet up a few more times to share what you learned. Using a laptop and a large 19", 20, or 22" flat screen monitor, 3-5 guys can sit at a table and share what they learn as well as answer questions.

9. Interpersonal Communication Skills Are Vital

You know those fliers you get in the mail where they offer classes for free or at a rate of about $100 at your local technical college? Next time you get one of those, look for "Interpersonal Communication". This will give you a great boost in interacting with your clients -- helping you get them and keep them.

Let me give you a brief example. With one client, he asked me to redesign his site, and he meant from a coding perspective. However, the client site really looked like it was made in the 1990's, and so I had a wild hair one day and approached him if he and I could redesign the site based on stuff seen on webcreme.com as inspiration. He could have been annoyed and insulted, but no, he took that, we went with it, and we collaborated together to create some sensational stuff. In the end, the client became much more than a client to me -- we now work like partners together on projects.

Okay, being elated with that great experience, I moved on to another client. Again, I tried this tactic, and got a response 180 degrees in the opposite direction. He said to me, "I don't think we would work well together. No thank you on the development and especially not on the design." I then tried to email him back and tried to cheer him up and explain about my other good fortune with my previous client in this regard, but it didn't help and he had already blocked my email address because I got bounced emails back.

So as you can see, one needs to be extremely careful with each client to study them carefully and to watch what you say and how you say it. As well, email tends to make one more formal and more rude, when this is not the intent at all, so you have to think about your word choice, your rigidity, your sentence, email, and paragraph lengths, and to watch what you say.

10. You're free in your new company now -- but enforce your own time management or you won't be.

When getting started, learn how to stick with a day planner, how to optimize your time, and by all means get a project tool online for you to interact with your clients so that you're both on the same page and can see your progress as you go, as well as keep yourself organized when you may have to balance 3-4 clients at once. Turn off the TV, keep your online chats, forum posts, social networking, and social bookmarking site visits down to a minimum.

Remember -- this isn't playtime; this isn't some exclusive club. This is business. And business is like swimming in the ocean around sharks, finding that cruise liner to work on for a few months, and then when that gig ends, being thrown back out into the ocean again with limited food, a leaky life raft, and a pair of binoculars to hunt for the next cruise liner.

11. Research Paralysis is a Trap.

We often have to research stuff to stay ahead of the competition, and research markets, and think about strategies that branch off of freelancing programming like doing AM (aff. marketing) work or SEO. Eventually in your research you have to either park it and get back to it, or get a study team to help you get back to your own work. And there are many times in your research where you find you could go different ways and you want to keep studying and studying, comparing some options and thinking about your future.

But that can be a trap. You need to think every couple days whether your research is causing you to be paralyzed and not DOING SOMETHING. You also need to get your head out of the clouds, quit dreaming, and realize, as I saw someone posted in their signature and I thought it was really appropriate -- that software does not write itself.