Coding, is? Fun!

Sunday, May 03, 2009

Establishing an Internet Presence

I wrote about the administrative details of starting freelancing here. In the below article, let me talk about a few guidelines for getting clients.
When you plan to take the freelancing route, as I mentioned in the above article, be clear about your role: A freelancer in IT is usually a programmer (or graphic designer). You need to be ready to program and be hands-on.
You are NOT starting a business - for now. You are a one-man show initially. Do not be over-aggressive in going after clients. Do not commit to more than you can do. All the rules that apply as a programmer in a project applies to a free-lancer too.
There are certain possibilities for getting clients as a freelancer - let us consider these:

The GetAFreeLancer route
Here is a link to a set of freelancing websites for coding: 85+ Tools & Resources for Freelancing
When you start, it is tempting to look at getafreelancer or other sites and assume that you can bid lower than everyone and get projects. This route is completely packed with a million other programmers all over the world. The clients are mostly cheap and try to lowball every bid. They have no idea about the true value of programming and may not pay at the end either. I have seen people who ask for an Email campaign system for $200. It is ridiculous, and I would advise you to stay away from this route.

The NRI route
As I mentioned in the previous article, if you have been abroad for some time, maintain contacts with your immediate friends. This does NOT mean that you go after any contact like an Amway rep. Stay within your comfort zone but let people know that you will be available for freelancing. Open a LinkedIn.com account and keep it current.
In my experience, if you let people know that you are going back to India, they will approach you with offers. In this technological age, remote working is pretty easy and so feel confident about going into freelancing.

The Long Hard route
If you are in India, have not had time to cultivate contacts abroad, you can still get clients. But it is a long haul. You need to prepare from now. Most Indian programmers with a talent and passion for programming would be in the situation I describe below:
1. You will have had some years of experience (3 or more) in a services company.
2. You will have worked with foreign clients. You would have communicated with them via email,IM; you would also have interacted with them personally when they come over or you go abroad on short visits.
3. You know that there are a set of "soft skills" - writing grammatical English with some structure; how to organize your thoughts and write emails; and you understand a few foriegn accents. If you are not skilled at these, you atleast know that you have gaps and try to get better.

The method I suggest below takes a long-term view. It may not yield results immediately; but there is no question that it is a clean route to take.

Note: Most services companies have non-solicitation agreements. Based on those agreements, you cannot usually work with direct clients of your company for a time-period. So, PERISH the thought of freelancing directly for your companies' clients.

Establishing an Internet Presence
1. Register a web domain name with a good hosting provider. For now, go cheap. Think a bit about your domain name. Remember that you MAY grow to be a business at some point, so create a professional sounding name.
2. Make sure that you get a hosting provider which offers platforms with the technology you are most comfortable with - such as .NET framework and SQL Server if you are Microsoft; or PHP and MySQL if you are in PHP.
3. Google (and other providers) offers email services under your own domain. For example, if your site is www.mygreatcompany.com, then you can get email services for @mygreatcompany.com. Most hosting providers give you a way to map from the domain name to a third party email service such as Gmail. Use that and create professional email ids such as sales@mygreatcompany.com and an email address with your name.
4. Some hosting providers give blogging packages for a small fee. That way, you can host your blog in your site itself. Or you can try the route I chose - I have a blogspot technical blogging address (http://ramsnotes.blogspot.com). I link my articles from my website (http://www.alphazonsystems.com).
Having a blog is important. Having some backend such as .NET or PHP with database support is also important, even if your site consists of html pages only at this stage.
5. Have a graphic designer design a decent website. Develop it and make it available for public.

At this stage what is the content strategy for your website? How do you get traffic?
You have to create content based on your goals. Your goal is to be known as a good technologist. This website will be seen by your potential clients. They will NOT take a decision solely based on how good your content is, but it is definitely ONE of the factors. You are trying to gain popularity in the internet.
The best way to create content is to write blog articles. These articles can be of certain types:
a) Explaining a concept such as XML parsing or concurrency checks in a O-R framework.
b) Explaining a tip such as how to trace HTTP calls with Fiddler while browsing from Firefox.
c) Exploring a new technology such as Microsoft Silverlight or Adobe Flash Collaboration Service.

I have written a detailed article on the idea of blogging here. You need to learn to write well. Apart from writing articles, provide free code. People will always visit sites with free code. For example, if you wrote a business app based on Silverlight as a proof of concept, provide the code as a zip file, linked and downloadable from your website.
If you create good content, then there are two advantages from it:
1. Obvious one - people will visit your site; they will link to you. It serves as online credntials.
2. Subtle one - for every article you publish, send the link to your clients, friends and contacts. Put the link in LinkedIn.com, facebook and so on. What that does is it REMINDS your contacts that there is a talented guy/gal out there who is available. They will keep being reminded by your work. Let us say, instead, that you send an email every month telling everyone that you need contracts. people will not react favorably to that. But sending the blog link is a very subtle reminder.
I think this is the best way to use the internet as a marketing tool for personal work.

One big question is how far you can market yourself while STILL working for another company. If you look at my website, alphazonsystems.com, I am explicitly marketing myself. But I ONLY did it after I left my last job. Before that, the site was available and so were the articles. But I did not cross the line and ask for work for myself. I think that is safe. Maintain a website and post articles, but don't let your company feel threatened.

This internet presence you create will take time to accumulate. Over time people will link to you, download code. But you may not get actual clients who ask for services. That is fine. There are other indirect reasons it will help you.

The Website as Credential
As I said earlier, you cannot directly approach your clients. But your clients have friends and their own network. THAT is the network you can tap into. It is one level separated from your own network. If you impress the people known to you, they will refer you and remember you when someone is looking for a freelancer.
That network does not know you personally. But your website and the work that has accumulated in that website over a period of a couple of years will serve to convince them to trust you.
If you are passionate about technology and want to freelance anytime in the future, it is IMPERATIVE for you to establish an online professional presence. Start the process NOW.

So, again, the steps to create an internet presence are:
1. Create a website
2. Create a blog in your website or separately
3. Start writing a couple of articles
4. Popularize your articles by linking them in your website; linking them from your IM; Facebook; LinkedIn; and send emails with the links to everyone who likes technology in your circle.
5. Write frequently
6. Create demos in your website with free code downloads.
7. You can also write articles in online tech journals and link to them. It requires professional writing skills but you should try.

Back to my original point, you require this kind of long haul approach to seeking clients for freelancing. Particularly if you do not have many contacts abroad.

Labels:

Friday, April 24, 2009

Being Self-Employed in IT

I have been self-employed doing freelancing programming work for the past 6 months. Let me describe how I got into it and a few administrative details.
Taking the plunge
There is a difference between being self-employed and running a business. If you plan to run a business, you can face exponential growth or risky shutdown. Freelancing is not the same thing, even though there is pressure for you to expand. (Note: Do NOT freelance if you plan to get loans. Banks do not give out loans to freelancers)
If you are in the USA and planning to come back to India, or if you are already in India but have enough contacts in the USA, freelancing may be a good idea for you. Let your contacts know that you plan to freelance. Your contacts will need some credentials to justify hiring you. For that purpose, register a domain and have a basic website - if only with html. Put your resume outline in that resume and highlight your work. If you can write well (with grammar and good content), then link your blog articles in the website. Have a set of email addresses registered under your domain. My own website is here:http://www.alphazonsystems.com/
Freelancing works well if you have a stable contact who trusts you and vice versa. Companies may not trust just an unknown freelancer in another country. You need a champion at the client. It would be ideal if he/she can coordinate payments and also help you get set up for starting. The gain the companies have is, of course, lower rates.
So, I would advice you to cultivate potential clients if you are abroad and planning to come back. If you are already in India, do not hesitate to contact your friends abroad.
Technically, you will generally need a VPN connection to the client. You will need a high speed internet connection.
You will also need to be self-motivated to work by yourself. I maintain a timesheet even if the client does not ask for it. I have regular calls and status updates sent to them - and that keeps my work planned.

Infrastructure and Administration
Freelancing, of course, needs the following infrastructural and administrative elements:
1. You need your own computer, preferably a laptop. Make sure you have a warranty.
2. Get an UPS for electricity failures.
3. You may not need an office space, if you have enough space at home. Otherwise, get a small enough office space, close to home. Don't plan a long commute or spend too much money on decorating the office.
4. Get a webcam.
5. Open a Skype account with SkypeOut (ability to call international phones). Start with a $10 SkypeOut credit. For the SkypeOut payment, get an online receipt printed for your tax purpose.
6. Get a good set of headphone with a microphone.
7. Get atleast two physical file folders. Label one of them for your business account in the bank and the other for your taxes. (I will come to banking and taxes later)
8. Since you will spend time at home, make sure you have a decent broadband internet connection. Atleast 512kbps will be needed.
9. Get a good computer table and chair. Make sure your working location has good airconditioning. This is important, because if you are at work, the AC is takend care of by a company. If you only have AC at bedroom at home (as most middle class households do), then you will find yourself trying to work from the bedroom all the time. That is not a very good place to work from. Plan for a second AC room.
10. Buy an external hard disk with atleast 160GB for backup. Have a bunch of DVDs for storing your important files. Have a USB flash drive with 4-8GB capacity. If possible, sign up with a service like Windows folder share or SugarSync for an online backup of your programming work.
11. Backups are VERY important. Take a full system backup atleast once a month. If your client uses source control, check in your files regularly.
12. Get a copy of Norton Anti Virus with Internet Security. Run LiveUpdate once a week. Keep running Windows Update every week or have it run automatically. Keep your computer well patched and do not have any anonymous shares. If you use Vista, run under the UAC (User Access Control) mode all the time. You cannot afford a virus infection.
13. Get a laser printer; they are not that costly now and will help you out.
14. For ALL of the above purchases, whether online or not, get a receipt. You will need it for tax purposes.

Founding the Company
In India, there are different kind of company structure - proprietorship firm, partnership or private limited. For a beginning freelancer, a proprietorship firm is ideal. It ties to a single bank account and you can use your personal PAN card for filing taxes. (You can still hire people under a proprietorship firm). Other than the bank account, you do not need any other form of registration. Here are the steps for founding a proprietorship firm:
1. First decide on a name. Make sure the name is also unique for starting a website.
2. Make sure you have a individual PAN card. A PAN card in your name is sufficient.
3. Decide on a bank. Contact the bank official and let them know you will be running a current account for your business. They will give you a set of guidelines for opening a current account.
4. You need rubber stamps. 3 stamps at least - a seal called a "For" seal that you will affix with your signature to documents; a seal called the address seal with your company name and address; and a date seal. All these rubber stamps cost around Rs.600-800.
5. You need letter pads and a logo. If you already have a website designed, you may have a logo. Otherwise design a logo, a letter pad and a visiting card. A graphic designer can do this for you. Get a letter pad printed and the visiting card printed. (The visiting card is not essential).
6. Contact an auditor near your location. Let them know you are starting a company. You would go back to them when filing your taxes.
7. After the bank opens your account, they will send you a checkbook.
8. Usually, if you work with clients from abroad, the easiest and fastest way to transfer money (payment for your services) is to wire transfer. But wire transferring has charges - upto $100 for a single transfer. The charge applies to the person doing the transfer ie your client. They may deduct it from your payment. If you do plan wire transfers, then get the wire transfer details document from your bank. Every bank has a slightly different procedure and there are some details to fill in. Send the details to your client.
9. From a stationery shop get a "Cash Voucher" book and a receipt book. They may come in handy when you document expenses.
10. For invoices, get an invoice template online. Every invoice should have a unique number and will have the amount you will be charging your client. (Invoices are the "bill" for your client. They will make payments according to the invoices.)
9. With a bank account, stamps, letter pad, PAN card, invoice template, cash voucher book and (if possible) a website, you are all set to go.

Payments and Taxes
Before you negotiate with your clients, you need to know this: it is better to be on a hourly work basis than on fixed-bid work. If your work is such that the clients engage you for a long term with a steady hourly payment, that situation is ideal. Please note that a commitment for an engagement long term does not mean much - the client can cut you off at any point with payment for services till that point.
So for hourly work, what would be your "take-home"? Let us say you bill $100 every hour (unlikely, but it is easy for calculations. Being in India, you would probably only bill less than half that amount).
There is no service tax for dollar exports in software coding services. So, your taxes would come to 20%-30% (depending on your slab). Let us say you started work in January; If by end of March, you earn less than 5 Lakhs, then your slab would be 20%. But, this is assuming you had no other income from the previous April to December. You are taxed for your entire income from April to March.
So $30 of every $100 you earn would go to the government ideally. But there are a few expenses that you can claim to lessen your tax load.
(Your US client may want to know if he needs to tax you in the USA. Because India and the USA have a dual taxation treaty, your income will NOT be taxed twice. )
The expenses you can claim are:
Capital expenses (all your initial investment such as buying the UPS, printer, headphones, stamps and so on)
Location rent (if you work from home, only 50% of your rent is eligible for deductions. If you have an office, your entire rent is eligible)
Transport (if you commute to work; have a car or two-wheeler)
Water
Phone and broadband
Stationery (not much use in IT)
Entertainment (such as lunch with your client at the Taj)
You are a proprietorship firm - you can hire people. You do NOT have to deduct tax for them. Your payments to them count as expenses.
Your LIC, PPF and other savings still apply.
Keep a receipt of ALL your expenses in a physical file. Auditors advise to keep a note of credits and expenses in a excel file.
You have to pay advance taxes twice a year (March and September) and file returns in June. For advance taxes, you would sit with your auditor and go over all the expenses and income. The advance tax can be paid in a local bank such as SBI or HDFC. Keep the advance tax receipt safe.
When you file returns in June, you will include the advance tax receipt and then adjust your final payment according to actual figures. At that point, you need all the proof of your expenses. The Income Tax office may ask you to come in person and ask you to submit the proofs.
If you receive foreign exchange payment, then do NOT forget to get the receipts from your bank called the FIRC. You need it for submission to the Income Tax office.

How to Plan Future Work
The biggest problem you will face as a freelancer is insecurity. Your contract may end at any time. It is tempting to take additional contracts to stave off this danger, but then you may end up having a hard time managing two contracts and clients. So, you tend to try to hire someone. But then you have to face all the problems that comes with trusting a third party - he/she may not like to work for such a small shop. they may disappear any day. They may ruin your reputation with clients.
So, it is a dilemma. I have avoided this by deciding early on never to hire other full-time people. I also decided that I will not take additional full-time contracts. Sure, my position is risky in that case - I actually lost a couple of contracts because I refused to work full-time for them. But that is fine for me.
One key struggle psychologically is NOT to consider yourself a budding star entrepreneur. It is very tempting, particularly with all the propaganda about entrepreneurs to consider yourself a special sort of human. I remind myself constantly that I am simply self-employed and not running a business. It helps.

Labels: ,