Before you become a PHP Freelancer, I recommend you consider the following advice, and try to spend weekends and evenings working this out before you step foot into the bull pen. Otherwise, it can be a rocky road for you.
Debts. If you have a second mortgage, or a boat you're paying on, and other big risks right now, you need to get those off your plate or pay them down a great bit. Otherwise, the foreign competition, will often work for peanuts, will outbid you on contracts.
Spouse. You need a spouse with another income coming in to help you ride out the tough periods, and you need a supportive spouse that can tolerate the ups and downs of your work from home, and can tolerate seeing you in sweatpants and a T-shirt every day with uncombed hair and badly in need of a shave. You need one who trusts you and won't consider you a bum, and you need to do your part of the bargain by bringing in gigs every month so that you don't start to become a real bum.
Capital. For USA residents, you need at least a $20K or higher IRA or 401K out there that you can borrow from (as long as you return the money in 60 days in order to not incur a tax penalty). For anyone else, you need a pension or retirement account which gives you a borrowing arrangement, or some kind of savings account. As well, you also need about 2-3 months salary saved up and liquid enough that you can use it as you get started in your company.
LLC. For me, I found that the LLC is the best structure to have your startup company in. It's easier to do taxes, has the easiest corporate rules, has some liability protection, and shows clients that you are serious and not some guy goofing around.
Professionalism and Experience Are Crucial. You may not need a college degree for this business, but going off to college and getting at least your Bachelor's Degree does change you and make you a bit more professional. If you can act professionally and mature, then perhaps you don't need a college degree and more power to you. Still, having a college degree gives you at least something to fall back upon if times get tough. As well, you also need sufficient experience to do what you're doing, and not just in programming. You will work a lot with Linux when doing PHP, and so you need to understand Linux command-line sysop work in addition to clustering, web farms, database clustering and replication, Apache directives, and so on. And most of all, you need to be the kind of personality that is calm under pressure, that knows how to not be so whiny and defensive when communicating with people, and can empathize with your clients.
Type Fast, Real Fast. It's obvious that if you have brutal foreign competition out there that you need to type and think extremely fast. Nuff said.
Get Ready for Long Hours, Initially. You have long hours now in your cubicle programming job, but get ready for a shocker -- as a PHP freelancer you may find you work far more hours than the cubicle job, at least initially until you get regular work and have other websites up that bring in residual income.
Brainstorm Residual Income Ideas. Before you even think of jumping into this industry, you need about 15 projects out there that bring you residual income with minimal effort. I don't care if it's a series of blogs with ad revenue, or an eCommerce thing, or selling "bling" graphics for MySpace kiddies -- you just need several things that bring in at least $3K a month, combined, and which really only occupy about 30 minutes of your time each day, or 2 hours every other day. Having this sort of thing helps you ride out the tough periods as a PHP Freelancer.
You're Not Just A Web Developer. You need to change your mindset as a newbie PHP Freelancer. Most of your clients will be AMers (Affiliate Marketers/Internet Marketers). In order to better serve them, you need to understand their world and understand terms like pixel tracking, CPA, CPM, PPC, EPC, and so on. You also need to let their ideas and successes help influence your own residual income projects, and do a good bit of AM work yourself. There's nothing finer than making $100 a day for doing almost absolutely nothing each day and only having to spend like 4 days each month doing your AM projects.
You're Not Just A Web Developer, Part 2. In addition to web development, you'll be frustrated to know that web designers get paid more and work with less frustration. Sure, web designers do graphics and XHTML/DIV/CSS work, but they get more gigs available to them and don't have to spend a lot of time doing them. Demand is higher for their work than pure development, unfortunately. So, if you want a way to hedge your bets, you either need to learn graphic web design and get good with the latest trends, or at least know how to convert any graphic design into XHTML templates that use DIVs and CSS.
Skills. I recommend the following skills:
- PHP5 (and get ready to learn PHP6 because it's coming fast)
- PHP libraries like gd (for graphics), and several others -- think about what might be in big demand, and learn it
- MySQL 5.1 (and better) -- know how to install from RPM or DEB or custom compile, along with configuration, basic SQL commands, importing and exporting data by command line, working with temporary tables and transactions from command line and from PHP, backup strategies, normalization, the case for denormalization, database optimization, and so on
- osCommerce, Zen Cart, and Magento Commerce (all three) -- installation, customization, and understand how to hook the login mechanism
- Drupal and Joomla CMS -- installation, customization, and understand how to hook the login mechanism
- vBulletin and Vanilla (getvanilla.com) forums -- installation, customization, and understanding how to hook the login mechanism
- Smarty PHP Templates
- Zend Framework
- jQuery -- recommended instead of ExtJS, Scriptaculous, Prototype, or any other Javascript platform. When you study jQuery versus the other Javascript platforms, you'll know what I mean. jQuery changes the way you think about Javascript, and it's crucial to know because the largest time killer in web projects is fighting with DHTML/DOM work, and all the cross-browser quirks
- Affiliate Marketing/Internet Marketing -- know the terms like pixel tracking, ad copy, CPA, CPM, PPC, EPC, content arbitrage, and so on, and not from a terminology perspective, but actually attempted it as well
- XHTML along with DIV/CSS work
- A little bit about using graphic design packages
- An understanding of Web 2.0 design and the latest design trends (like what you see on webcreme.com)
- Apache 1.5 and 2.0 -- installation from RPM or DEB or custom compile, along with configuration
- Reverse Proxy -- understand open source products like Pound and how you can use a reverse proxy to build a cheap web farm
- AJAX, JSON, and REST -- hugely important
- Linux sysop command-line stuff -- can't stress this enough
- Building Linux clustered systems, Linux virtual machines, web farms, database replication and clusters, and REST web service communication
- CVS or other source code checkin/checkout tools
Client on Retainer. One of the first things you should do after you figure out what your hourly rate should be (and after you have tested it and learned whether that rate works out pretty well), is to put out a Google AdWords ad, a SitePoint.com ad, and a WickedFire.com ad (trust me on these) to work on retainer for half your normal rate. So, if you plan to charge $50 an hour, then put out an ad that says something like, "Get a Part-Time PHP Developer on retainer for $25 an hour." Sure, it may take you a good long time to wait for someone to take advantage of this, and you might have to do the ad campaign, give it a rest of a couple months, and try again, but eventually you'll luck out and someone will agree to pay you either $15 to $25 an hour for 100 hours a month, on retainer. By being on retainer, this means that they are supposed to pay you whether they have work for you or not. And if you don't believe me that this works, then look at me -- I found that some AMers out there are wealthy, and one of them snatched me up to do this very thing.
Understand Common Website Types. You need to sit down and list out common website types you see and have visited. For instance, sites like a catalog/shopping cart site, a politician site, a doctor's/lawyer's office site with newsletter, contact page, and scheduler, a business directory site, a real estate listing site, and so on. Then, combining PHP, MySQL, jQuery, AJAX, Smarty PHP Templates, and a few other packages like Drupal, Joomla, and Magento Commerce, build sample sites. This allows you to hit the ground running when you become a freelancer because you'll already have a site template you can pull off the shelf and customize for a phenomenally low rate, yet still make a profit because you do more of then in a month than your competition.
Work Environment. I recommend getting everything on laptops instead of desktops for a few reasons, but, that said, I also highly recommend getting a keyboard and 2 or 3 flat panel displays. You'll need at least 3 laptops, if not a couple more. The reason I say laptops is because you'll often need to pick up the project and go somewhere with it, especially when trying to meet a deadline but yet you need to attend your son's baseball game, or if you need to take it on vacation, or if you're going crazy at home and need to hit the beach and work from there. Getting a laptop just makes it easier to get up and go. However, laptop keyboard durability is weak, so you really need a USB keyboard that you hammer on each day, and you need a flat panel display that's larger and better quality than your laptop's display. I also recommend 2-3 screens set up in multi-display mode so that you can drag windows between them. As for multiple systems, it's because you need to be able to test your apps against a Mac Safari browser, Windows IE6 and 7, Windows with Firefox, and Ubuntu Linux with Firefox. You also need a color laserjet and a really nice set of desks and cabinets for your work. Even the chair needs to be ready to go and very comfortable. It just makes life easier to have all this going before you decide to go full-time as a PHP Freelancer.
Start Your Portfolio. Before leaping in full-time as a PHP Freelancer, you need to find some clients in town or on the web who wouldn't mind you doing their work for absolutely free, telling them that you're trying to build a portfolio. When it's free, they can't complain or hassle you. Plus, in exchange you can let them know you want to include the site image in your portfolio and have a back link to them as a reference and a way of advertising their site. Sure, they may change the site eventually, but at least you'll have the initial image and a link to the client, and you can discuss what you did on the project that makes it interesting and unique. You need at least 4 sites completed in a portfolio you are proud of before you can begin. Otherwise, you just come off as an amateur. And if you can get at least one catalog/shopping cart site in the mix, that's even better. Now, if you want to take a shortcut, just make some fake sites with fake company names, hook it up to some fake address and some real (although free) voicemail, and register the domain by proxy (cloaked whois info) so that no one can easily see that you built this yourself for yourself.
Relationships. You need to find some contractors out there that you can sublet your work to who are quite affordable and reliable, and most will likely be foreign guys. This helps you do work you don't want to do or aren't particularly good at yet, such as XHTML, and to help you meet your deadlines. I mean, who can beat a PHP guy who can work for you for $8 an hour? Imagine what you can get accomplished with that kind of help.
It's Not Just PHP/MySQL. You'll find as a PHP Freelancer that it's not just PHP and MySQL work that you'll be doing. In fact, that's the easy part! Your biggest time killers on projects will be, in this order: Javascript DHTML/DOM work and cross-platform testing; AJAX and AJAX debugging (quite difficult); DIV/CSS placement and alignment consistently across browsers and platforms; Admin pages; eCommerce; and understanding various packages like Drupal, osCommerce, and so on. So, to that end, you'll need to know jQuery, JSON, AJAX, DIV/CSS placement and alignment techniques, browser quirks, and packages like Drupal and osCommerce, among others. But the biggest thing to learn is jQuery because it is such a time-saver.
Style. You need to build your own style, and templates for the source code of your work. For instance, I recommend you build your own date/time class for doing date/time manipulation, strings class for manipulating common things you do with strings, web class for all web functions like redirects and cookie management, encryption class, database class, and so on. Then, I recommend that your average PHP page be composed of sections where you consistently do things, filling an empty file with comments so that all you have to do is add source in the right area and move on -- it helps you keep your pages consistent, easy to read, and helps keep your mind in gear on projects.
Job Board. Instead of getting ready to take gigs from job boards, go bring up your own and make it popular, providing a way for clients and devs to post their needs and respond to them, and make it so that devs who want a client have to pay like $5 to have a promoted listing in yellow or something, sorted to the top of the list. And, as expected, make it email you when certain keywords are triggered so that you potentially have first dibs on all the work that comes in.
Don't Use Other Job Boards. Many job boards are complete rubbish. They either make you complete "tests" or jump through other hoops in order to get gigs, and they may require that you and a client go through some sort of agreement. Well, what you'll find here are that few job boards actually land you any kind of decent client, and few will give you a client at a decent rate. Instead, get ready to advertise.
Advertising Is Vital. You'll need to learn that Google AdWords and other advertising venues are very important in getting work and getting quality clients. There are several AM forums out there like Warrior, WickedFire, Cash Tactics, and so on, and you'll want to pay for advertising with them as well.
Build an Admin Scaffolding. After you build many of the common sites your customers will want, you may realize that admin pages suck up a huge amount of your time. Therefore, use a concept called scaffolding. This is where you create a set of forms and database interaction that help you do 80% of the required CRUD (Create, Read, Update, Delete) on a project's administration pages needs, and then you customize the last 20%. So, if you can build a script that you can point at nearly any database, and it automatically builds for you a set of admin pages that you can then finalize, it's a tremendous time saver and makes you that much more brutal against the competition.
Take An Interpersonal-Communication Seminar or Class. This is critical and will make a huge difference. You need to be mindful that not all clients are the same, many are cranky, and you need to learn diplomacy, the art of negotiation, and watching what you say or how you say it. For instance, I had one client love it when I told him that his site could look better, and he and I collaborated on a new design, and that was in addition to reworking the code on the site. That worked well. But, dummy me, I took that optimism and used it on another client with the same tactic, telling him that his site could look better if he'd let me suggest some options, and that shut the client down immediately and I got a terse response: "Based on your last email, I think you and I would not work well together, so I'd like to discontinue this contract." And that's a bad day, my friend. So, watch out with your optimism and you eager nature -- it can backfire at times.
So that about wraps it up. If you can achieve all this before you become a PHP Freelancer, then you're a better man than me. Instead, I had to learn this all the hard way, with very little time, and it was either sink or swim. At first, I just about sank until a benevolent CEO at some AM startup heard about me and decided to pay me on retainer. And that's how I eeked out a living in the first few months.