Wednesday, April 16, 2008

Why Become A PHP Freelancer?

First, let's push aside the word PHP for a moment and focus just on being a web dev freelancer, working from home, trying to earn an honest buck. So why do it? Can it be done?

To answer that, let's back up to look at the guy who works in a cubicle doing web development for a big company. More than likely he's a frustrated person right now, or will be in a year or two and have to find another place to work. I know this because I was that guy.

First, managers are often idiots -- they don't really know what it takes to build a project right, and you do, but they won't listen to you and want to cut down your estimates by 40 and 50%.

Second, they won't give you a walled office (few do) because then they think you'll isolate yourself and not communicate, because they are idiots and think that you need to communicate face to face in order to get work done, when this isn't the case at all.

Third, they will often think they can throw any programming project at you, in any language, and you'll just say, "Sure, I love doing projects in Pascal. Please give me more."

Fourth, they can throw 3x as much work at you, steal all the praise on your successes, take your raise and promotion opportunity instead of you getting it, and then pay you the same rate even though you work 3x as hard now.

Fifth, the foreign competition is brutal and if you're in the UK or USA, you experience foreign immigrants in the office, or work being outsourced offshore, and it's a frustrating experience to see guys take away your projects and work for half as much as your salary.

Sixth, contracts dry up within a year or two and you have to transfer to another department, maintain some tar baby you don't want to maintain anymore, or struggle to find new work because you've been laid off.

Seventh, you're so preoccupied putting out fires and reworking someone else's spaghetti code that you miss a lot of training opportunities.

Eighth, and this is most important -- you read about guys who are freelancers on the web, who have time to keep up with the latest trends, and they're doing exciting things and using the latest ideas and technologies, and you're stuck with weaker skills and not enough time and training dollars to improve yourself.

Sure, not all programming environments are like that in a company, but a lot of them are. Now let's counteract that with what it's like to be a freelancer, point by point.

First, you are your own manager as a freelancer. You can estimate work as much as you want and work it out with clients. They may not always agree, and in fact you may lose a potential client because of a broad (even realistic) time estimate or cost estimate, but hey, at least you get to say what you feel without getting shot down and ignored.

Second, your commute is like 5 seconds from bed to home office desk, and you no longer have a cubicle. You can take your job literally anywhere you can get a sporadic, even weak, Internet connection. You can take your job on a vacation at the beach. You can take your job in the backyard with a laptop. You have complete peace and quiet in order to focus. You have no interruptions except an occasional chat window or perhaps a cellphone call, but you can block those when busy and force people to email you. You don't have to put up with the same old dumb office jokes, or antics in the office, or frustrating people to have to ask favors from, or anything like that. Heck, if you need to, you can stop all work and take a month off as long as you have the bills paid. So, you have a lot of freedom.

Third, you can choose any programming language you want, but you have to use what the client is looking for. However, at least you won't have a manager dictating to you if you say only know Visual COBOL, to suddenly have to do everything in Java. So, you have to pick a language that has good profit potential and good demand. Right now that's either Visual Basic (still a lot of need for that out there), C#, ASP.NET, Java (on Linux and Windows), and, of course, PHP (mostly on Linux). For me, I picked one based on ease of use, has a fairly good speed, has a great developer community, is stable, has a wide function base, runs on Linux because my faith in Windows is extremely low in the server room out of security and performance concerns, and has great customer demand -- and that means PHP.

Fourth, if I work 3x as hard in a given month, I can make 3x as much. There's also a lot of clients out there who just want a template site using products like Joomla, Drupal, osCommerce, Zen Cart, Magento Commerce, etc. And with template sites, once you build one, you can repeat that knowledge fairly rapidly, over and over and over again. So, when you want to make 3x as much, you can try to skim off client projects who just want a template site that you've already done before, and you can repeat this and increase profit.

Fifth, by being a freelancer, you are a lean machine. Now, instead of your manager skimming much of your profit away, and all the other business overhead, you can keep 100% of the profit. This means that you can work for a slightly lower rate for a client than your previous employer could, and keep far more of the profit. This makes you a bit more competitive against a foreign market. As well, you'll save money on gas, such as spending $50 a month rather than $50 a week, and you'll save money on lunches because you can eat at home on a cheap budget and not be influenced by the smells of other lunches that cost too much.

Sixth, when contracts dry up, you just go find another one and don't have to wait for a stupid salesman to do it for you, or wait for a manager to clear up all the dead weight tar babies off your lap so that you can grab something new. You make your reality, every day.

Seventh, every day you get up, or before you hit the sack at night, you can spend 2-3 hours training yourself on something new. Because you're not wasting 2 hours every day in a long commute in heavy traffic, and aren't wasting time in endless meetings, you can utilize that time. And, if your bills are paid, you can take a week or two off and put yourself in a training class if that suits you best.

Eighth, you can keep up with the latest trends and technologies and move with that in order to keep getting new clients, rather than being stuck with tar babies from the past.

Now, out of this, I have put a positive light on being a web dev freelancer, but there are downsides too, and I'll discuss those in another article.

No comments: