![]() |
ubuntu.com - launchpad.net - ubuntu help
|
|
|||||||
Ubuntu 9.10 is out!!!
When downloading Ubuntu 9.10 please consider using bittorrent to get your copy of Ubuntu. The Ubuntu Developers Summit for Lucid Lynx will be held the week of 16-Nov-2009 till 20-Nov-2009 in Dallas, TX USA. Visit the the Ubuntu wiki for more information about UDS and how to participate remotely. |
|
The Community Cafe The Community Chat area is for lighthearted and enjoyable discussions, like you might find around a water cooler at work. Almost any non-tech-support topic may be discussed here. Discussions on religion and politics are not allowed, except for politics directly related to free and open source issues. Any topic or discussion that causes problems or drama will be closed. This area is intended for fun and community building, not arguments. Please take those elsewhere. Thanks! |
|
|
Thread Tools | Display Modes |
|
|
#1 |
|
Skinny Soy Caramel Ubuntu
![]() Join Date: Jul 2005
Location: Remote Desert, USA
Beans: 674
|
Advice for Aspiring Independent Programmers
Previously in this link, I discussed being a programmer for a company and the pitfalls with that. Now I'm going to be a little bit more upbeat, but realistic, with tips for the aspiring independent programmer. This is where you mostly work from home, and complete web development and database projects you pick up from the web.
It can be fun. The day job employer isn't skimming off 30% of your salary anymore. No more bozo project managers. There are no cubicles with regular walls or half-walls. There's far less distractions (at least until the kids get home). You have time to catch a laugh at YouTube or browse the news or your checking account without getting punished for that. You're not walking on eggshells. If you come in late to work, no one writes that down or gives you a funny look. You don't have to fight over a parking space or walk half a mile in the rain because all you could get was a space near the security entrance gate. When a project ends, you don't have to sit on your thumbs waiting for the next one and can do your own personal development (training) or find new gigs. So, unlike a company where they pay you a set rate during slack times, you can increase your income during slack time by finding more gigs. You can save gas. You can use the lighting style you desire for your home office, give yourself a better desk, LCD panel (or three) or computer, add plants, put yourself by the window, talk to a pet or a fish, and make your environment plush and comfortable. You can stop wearing suits and any kind of clothing you don't like. When angry, you can stomp off and take an axe to wood or drive off real fast without annoying the boss. Your debt must be controlled. If you have a second mortgage, a boat you're paying on, fees to a club, or more than two vehicles you're paying on, I really don't recommend this lifestyle to you because you need to keep things as lean as possible until those things become mere trifles. The ideal candidate would be married (for some income to fall back on) and have nothing but house and vehicles in addition to the other bills. If you have other credit issues such as several credit cards or one credit card over $10K, then you're going to have to come to grips with that first. Use the credit snowball technique (google that) and a variety of other techniques to try and pay down that debt as fast as possible. You need a spouse. Sounds funny, but I'm not kidding. You need someone else's cash to fall back upon if times get rough. You never know if you end up in the hospital or grow terribly sick, and every day you don't work, that's devastating to your income. You need a supportive spouse. Your spouse needs to realize that this is the best thing for you, your personality type, or the family, and that if done properly it could yield potentially far more money than what a normal day job employer would skim off the top. Get ready for chores. By being home, you're the guy that's going to be given the chores. You'll have to do the laundry, vacuum, shop and prepare for dinner, clean up afterwards, and do everything else with the house. You're going to have to deliver the kids to school and get at least one of them ready with your help. This kind of goes along with having the supportive spouse behind you. Now, your supportive spouse may say no, that making money right now is more important, and that can be cool, but be prepared to have to do the chores. Don't quit the day job just yet. A day job is a great place to hit all the items in this punchlist which are possible -- paid for, if you can swing it, by your unknowing day job employer (if you're careful). You also need to have in savings at least 2 months salary and not be behind on any payments. In fact, you should always have that in addition to resigning on the day you've paid your current month's payments and have a new paycheck coming in. One person who found out I quit and didn't have this lined up like that called me "Absolutely Stupid. LOL." And you know what, I needed that swift kick in the pants. He was right. It's going to take about 10 years after college before you're ready. In this field, you really need to have a career for two years as a Linux sysop, especially in a web environment with a web farm and a database cluster, two years as a fly-around consultant, and the remainder of those 10 years as a web developer. You can do them in any order, but you'll need all three in order to understand this market. You also need that college degree and the job experience to understand the true meaning of professionalism. Your future clients will demand it. Get ready for long hours, initially. Yes, look forward to 80+ hour weeks at your computer, furiously typing away. It sucks in your first couple years. Eventually after that you can begin to slow down, but it sucks at first to have to put in all that work. How fast can you type? If you can't touch-type fast, you better get darn good at it, and be very accurate as well. Linux rules. Sorry, Microsoft, but the corporate world is trusting your products less and less for reliability, scalability, and innovation. All three of those things have been moving steadily or have moved or were already built into Linux, and the brainshare for server room stuff has been moving steadily to Linux for a few years now, especially since the year of the Blaster virus. Do you remember how Steve Ballmer on YouTube kept screaming Developers, Developers, Developers? It's because he's freaking out, realizing that the brainshare of the world's developers are moving at a rapid pace to Linux. And if you don't believe me, go look at the stats on various sites on what the most popular computer languages are, and what the most popular web server product is. And you have to move down to #5 or so before you see something that runs on Windows. Many developers in the Microsoft environment have steadily grown annoyed because they have to keep paying for MSDN subscriptions and downloading beta products, then reinstall their OS like 3-4 times because they keep messing with the DLLs while working with beta products, and then being annoyed to have to relearn APIs that were slower than last year's APIs and have new names but not much more functionality. So, anyway, if your skills are not with Linux, then do it now. Since you're reading this here in this forum, you're well on your way, but how well do you know Linux server products and, if I may plug Ubuntu -- Ubuntu Server? No more than two simultaneous gigs. Two is about all your brain can handle without getting completely confused. I say two when you could probably handle three, but, instead, I suggest you heavily invest the other third of your time in Affiliate Marketing and Web Design/Web Hosting work. This is because it's quick, easy, is right up your alley in a sense, and can generate residual income to ride you through dry periods. You're not just a web developer, you're an internet marketer. Again, this is because it's quick, easy (for you, at least), is right up your alley in a sense, and can generate residual income. There are many non-programmers out there in the internet marketing field, who would kill to have your skills and have to outsource all their needs. And several are making a killing right now, such as $5K a month with barely 20 hours of work every week. You can pick your language and stick with it (for the most part). Remember all I said about being a programmer at a regular company and having to work with languages you don't like? As an independent, you don't have that problem at least with the programming language (for the most part), but in database API, you're going to need to learn several (and mostly free ones). So, which language? Well, to start with, you definitely need to know at least C (from college), get used to working with GCC to some minor degree, Bash, some minor Perl experience (unless that's going to be your focus), Javascript and DHTML, and then pick a favorite language. As for a favorite language, my suggestion is to see from the list of languages out there what's the most popular for the past 5 years on the Linux platform, and what the job postings are requesting. Try 3 or 4 for awhile until you find one that doesn't drive you crazy, and then know that language backwards and forwards. I don't suggest focusing on two main languages until you get a few years under your belt as an independent, or if you see the market turning unfavorably away from your favorite language. You need to bring up a F/OSS site or two. You need to draw interest to yourself. You need to bring up a Free, Open Source Software site or two to show your work on a project that you strive to make popular, and to also put demos online for smaller things to demonstrate your design skills, database skills, presentation layer template skills, and so on. And don't focus on making the F/OSS site a tremendous success with people willing to pay for your consulting, tech support, or purchase the media for your software. I wouldn't even recommend doing SaaS work with that software because that can be a rat's nest and a lot of high expectations that drain your time. Instead, the F/OSS site should really be something that is the means to new ends, not the ends in itself. You can often reuse some or all the F/OSS project code on various gigs (depending on the agreement). If the product becomes popular enough, and you gain marketshare, then you might actually have your company acquired and you can move on to another project. Last, if the product does indeed generate profit from consulting for it, tech support, or media & documentation purchases, then more power to you -- it's rare, but fantastic when it happens. Web Design/Web Hosting pays more. Sad to say, but making pretty web pages, sticking someone's content on it, adding a routine for signing up for newsletters and contacting the staff, and linking in paypal connections (extremely easy, trust me), then getting the product virtual hosted somewhere and appearing as if you're the web host when you're actually a reseller -- this sort of stuff pays more than web development. It takes far less time and gives more bang for the buck. It pays more, but you need to do both web design/web hosting AND web application development in order to ride out the tough periods. Flash, sad to say, is extremely important. I know it's proprietary, but for now it's still sadly very important in this field. If you want to get design gigs or even keep up with the latest web application development, you're going to need to get good skills with Flash. AJAX, JSON, XML, Javascript, DHTML, XHTML, Page Templates (Smarty, Symphony, etc.) and Shopping Carts. Those 8 things are critical to being a good web designer and web application developer in today's market. If you don't know those extremely well, don't quit your day job just yet. Hold on there, little fella. Test on everything. Unfortunately in this multi-browser world, you're going to need to test with, at minimum, Firefox, IE, and sometimes Safari, and also test on the Linux, Windows, and Mac platforms. Every project needs to go through that cycle. Sure, start your development on Firefox with Linux, but then go bring up your page templates on the other platforms to see what's broken and fix it. You'd be surprised by the people who call you. So far, I've been impressed with the knowledge, professionalism, and coolness of my clients. Instead of working around no-nothing bozo project managers and other annoying people, my clients have been 180 degrees in the opposite direction. My clients often have skills that far outweigh my own but in other areas that I do not focus right now, such as Asterisk. Perhaps that's just my luck, but that's what I've seen. Think in three-week segments if you can. Every three weeks, you want to be lining up gigs for the next three weeks. And every two days, you need to be putting feelers out in that three weeks for the next three weeks' worth of work. Sure, projects may run a month or three, so you may have to deny a project offer, but I've found this system works well for most stuff that's outsourced. Clients come from everywhere. I've had clients come to me from forum posts, one of my various blogs, or from my F/OSS project sites. Then, I've gone hunting for them too on Craigslist and various project sites. I've also gotten leads from many friends, or friends of friends. You don't have time to focus on what you're not good at. If you've focused on one of the top 5 programming languages in use today, you don't have time to focus on picking up some Microsoft Access project, shifting your brain 180 degrees in another direction. There's just too much work out there doing work in the top 5 programming languages in use today. Know about your foreign competition. Your foreign competition may be a person who grew up in a slum and will be willing to say anything to get in the door and land the project at a development center, stealing away that sales lead away from you. That's why you need to be a lean, efficient operation. A lot of developers out there lie, but don't you be one of them. I've seen a lot of developers out there lie in that they can conquer someone's project in two weeks when they can't, or that they have skills with something when they don't, or way underbid something when they can't. On many freelance project sites, you often sees replies from these liars. Good thing for you a lot of those liars are ignored and found quickly, never called. A lot of those replies from these liars are just there to discourage you from even trying. A lot of the lying is because if the small development company doesn't lie, then they have to put developers back out on the streets into the slums and these guys would rather kill themselves then go back to that. So, when you're honest, you actually stand out from the pack. Now, don't get me wrong -- I don't mean you need to be so transparent as to expose all your fault in a blog, but I do mean that, if you're going to screw up a project if you say you can do something when you can't, then honestly say you don't have enough experience (or any experience) in that field, and offer that you're a fast learner if indeed you are. You don't have time to work onsite. This is the modern world. There are just too many gigs out there, and telecommutes for independents on very small gigs, right now where you don't have time to be wasting it commuting back and forth to a job site. Stick with the small gigs. The long-term gigs often mean being onsite for part of a month, and they are so massive that you can't keep updating your skills or focus on getting more work. Stick with the small gigs because you can get paid more with these than the long-term gigs in most cases, and they're less of a hassle. Stay healthy. Now that you're home, you can make decaf tea for yourself or sipping filtered water instead of hitting the vending machine for a Coke. (Trust me, I fight with gout after years of Coke drinking. And I'm only 40!) You can prepare and eat cheaper, better-tasting, and healthier foods. You can have time to exercise or perhaps curl some dumbbells while listening on a conference call. Also, in the winter, if you exercise regularly, you find you can decrease your heating bill because you will feel warmer. Yes, do power naps. Sounds funny, but it's now surprise how much more refreshed you'll be, if, every 2-3 days, you take a quick nap for 1 hour around 1pm, should you have the potential to swing it. The key word is DOING. Unless you're behind schedule or heavily mired down in a project, spend 1/3 of your work day doing research, and then the other 2/3rds should be spent DOING something, such as bringing up another Affiliate Marketing site, finding a new client, learning a new essential skill, or working steadily on your client's project. Don't look down. At first, being an independent programmer is like tightwire walking at the circus. Don't look down because it's a long, long way down. Down there you can count on being depressed, or losing your house or an SUV, or having to take out a ridiculous loan and more risk, or bouncing checks at the grocery store, or worse -- getting divorced. So don't look down, whatever you do. I hate to sound so harsh, but take your fears, think of it as a deer, and run over it with your SUV. There is no time for fear, only functionality. Sometimes it takes the memory of the cubicle HELL you put up with in order to be an independent contractor. If you have fears, don't ever forget what a terrible few places you just left and why this was all necessary. You wanted to be the master of your destiny and not have that destiny guided by some fool. So, every morning, go to YouTube and begin your day with a motivational video, and then find one on Affiliate Marketing or some other important topic critical to your job. Skip daytrading, initially. You may think, hey, I'm sort of good at stocks and bonds, I'll just daytrade to offset the ups and downs of being an independent programmer. Think again. It can be very distracting. However, as you get through your first couple years and you think you're okay, then sure, give a little daytrading a little bit of a try. But be prepared for the risks and have a good amount of emergency savings, just in case. Get over yourself. You may think you know web design and web development, but something new comes out every two months that changes everything. You have to constantly stay on top of your game. So don't be arrogant and think you're a hotshot because you're not. In this field, no one is except for perhaps a few months before their skills become stale to the next big thing again. Don't let success make you arrogant. It is so EASY as an independent programmer to become cocky after a few months of success. This is then exemplified by the fact that you have a lot of quiet time and may actually forget how to speak politely, or carefully craft what you are saying, as you speak to people. This can annoy existing or potential clients. So, every day when you look in the mirror, say "HUMILITY" to yourself and think about that, as well as reflect on anything stupid that you said or did the day before. The right answer is Yes. Well, sort of. You want to be honest and realistic, but don't discredit yourself too soon or say no because you talked yourself out of a good opportunity out of fear. Again, fear is a deer on the road and you must run over it with your SUV at 100mph. Fear makes you humble and realistic. Fear is important. Sure, I've been harping on killing your fears, and that's important especially in the first year, but you need to continue to be humble, realistic, and polite to everyone you interact with. For instance, you should continue to show your client how flexible you are, because, after all, they're paying you to sit in your jammies and flip-flops. So, if you're sitting there crying one day, you've already failed yourself. Turn those fears into motivators. Creativity vs. Eccentricity vs. Entrepreneurship. Sometimes you begin to realize, as an independent, that you may feel you have a problem sorting out whether your reasonable entrepreneurship is creative or eccentric, or just flat-out insane. Again, this is where the humility and realism comes into play. Looking in a mirror and thinking can help a lot. Visiting sites that impress you can make you feel humble again. There is transcendence and it's wonderful to rise above imminence, but it's imminence that makes the transcendence real, not fantasy. Every day, get out there and communicate. Sales leads don't just come to you automatically. Get up early and start communicating in forums, emails, and phone calls to make it happen. Use your friends and relatives on commission. Got a relative with a home-based business where they daytrade and do housing rentals? Got a neighbor who sits at home doing odd chores in town for a regular paycheck? I highly suggest you approach them with a pack of your cards, show them your websites, and say that if they generate any sales leads at all that go through, they can get a very nice commission for that work and all future work with their gem of a client. You need a brand, some business cards, some branded golf shirts, and some branded oxford button-down shirts. You need to make it clear for people you meet about who you are and to make them ask, "What's that company logo you have there?" These things are easy to come by and they really do drum up business. By your third year, you need a change. By your third year, you should be thinking of getting the gigs and outsourcing some of the work to others, and working hard on making your Affiliate Marketing more profitable as well. If you're still slaving away at 70-80 hour work weeks, something's wrong and you should either go back to a regular day job to fix some of your debt problems, or work harder to make the next year what you should be experiencing in your third year. There are many Internet Marketers who only occasionally dabble with their previous sites because they have volunteer forum moderators, or profit sharers, who participate for them. And they're making money hand over fist. Time management is important; time is your enemy. You need to get an agenda started, probably paper-based so that you can free up all your screen real estate, and budget your time so that you do a little bit of everything that's important in your day in order to stay afloat, not just picking a particular day to focus on a particular need. That is, unless you're behind schedule or mired down in code. Make time in your day for humility, motivation, research, sales leads and follow-ups, DOING something, more motivation, excercise and eating healthy, house chores to make the spouse happy, and sleep. Don't sleep in. Instead, go to bed earlier. This is because your spouse is probably mired down in a day job that works like that. It's so easy as an independent contractor to stay up late into the evening or have all kinds of crazy hours. Sleeping in also sends a message to your spouse that you're lazy, and that's not what s/he wants to see with you when they're taking all this risk. And that can lead to a confrontation or, far worse, a divorce, trust me. Only one of you, your spouse or you, can afford the independent contractor lifestyle. Unless you have like zero debts except a small mortgage payment, it's too much of a risk to have both you and your spouse as independent contractors. Motivating others about you will be harder than motivating yourself. You may have thought that motivating your spouse might be easy, but motivating yourself everyday would be hard -- well, it's the opposite. Motivating yourself is easy. You'll find that it's hard to motivate others to use you sometimes, and at least for the first year you may find it hard to motivate your spouse that you've made the right decision. You need a desktop, a laptop, two large flat panel screens (19", minimum), a wireless mouse, and a really quiet keyboard. The desktop is because laptops are noisy and generate a lot of heat to work with, day in and day out. Laptops also have slower hard drives, typically, than desktops, and can slow you down either initially, or after a few months. The laptop, however, is for driving around to clients to demonstrate your work, or when you need to sit on the back porch for a few minutes. The two flat panel displays are important because you need to have research pages and the website view you're working on with one, and the code, email, and chat on the other. Those displays should also be square, not wide screen, because you need to see more lines of code, not less. The wireless mouse is just easier to use. The quiet keyboard is so that you don't keep up your spouse at night, or make loud typing noises when working with a client over the phone. You likely may need about 4 decently fast PCs besides your desktop and laptop. This is for server projects for multiple clients at the same time, or for running Windows or Mac, so that you can accommodate special needs. Deliver key results every 2-3 days. Ask how often your client wants to see results, or suggest every 3 days. Don't try and work purely on the backend without front-end results in a substantial way, especially early on in the project -- you'll turn off your client really quick. Know what to take. When building the project plan for what you will do, know what you will take and if something smacks you as ridiculous to achieve in such a tight timeframe, politely and very gingerly ask if it can be put into another phase for follow-up work, paid separately. And as you do a project plan and work the code, take notes on how long something takes so that you know it might take just as long on your next project. Some projects are toxic. Of course, you want to take every project you can, but some projects smell from a mile away and shouldn't be done because you'll be setup for failure. As you proceed in this career, you'll realize more and more what the signs are. So take the toxic project, try to politely reason with the client to make some items in the project in follow-on phases, and try to see if that floats. Otherwise, don't touch it. Don't set yourself up for failure. Never admit to doing more than one client at a time. Sure, you need more than one client at a time to stay afloat in this business, but never admit that you're doing more than one gig at a time -- it's not looked at very favorably. If hard-pressed about it, however, be perfectly honest and say that one project has overrun in time and bled into the time used on this project, but admit you're working nights and weekends as well on this project to overcome the loss. You're going to lose a client or not get paid here or there. Sad to say, it's a reality as an independent that you're going to lose a client or not get paid sometimes. I suggest you try some follow-up a couple times, but don't waste your energy on them. Just learn from it and move ahead. Remember, with each project you do, you learn something new, and can take that knowledge on the next contract. So, consider it like a training budget. At first, let the client set the payment options. When you're first starting out, let the client set the payment options -- whether they pay you in two chunks via PayPal, or cut you a W2, or pay you all at once with a check, or whatever. Until you get used to what clients like, you should dictate to them your preferences. You're going to need a functional specification and statement of work for each project. You can't always get a functional specification or statement of work, but you'll need one and you should try to very gingerly try to extract one from the client. If they can't give you anything but draft, then take it and offer to tighten it up and send it back for review. This is a difficult part of the project, and some clients can be stingy about this, but you live and you learn on how to request it without getting your head chewed off, or to even ask for it at all. Know your databases and SQL. It goes without saying that you're going to need to know your databases, especially the free ones like MySQL, PostgreSQL, and SQLite. Then, you're going to need to know Oracle, MS SQL Server, and a few others. Get used to SQL, stored procedures, database replication, database clustering, and performance improvements. Know the difference between normalization and denormalization, and when it's better to have one style over another. There is no magic. Regardless of what someone tells you, there's no magic to this. You could learn all this and still get it wrong. There is no silver bullet to make it all better. There's only persistence, luck, patience, and your own momentum. I've said it before. I simply must say it again. There is no time for fear except to motivate you to fix what's broken. You're going to need a plan, and to identify what's broken in your life, and prepare your life before you take this leap, and then you need to DO IT and don't look down, consistently, every day. If you're depressed, or sleep in and don't know why but think it's because you're depressed, or watching too much TV, or visiting UbuntuForums and Reddit and Digg or YouTube too much, or even find yourself sobbing in a panic -- you've already failed yourself. You can do it because others have done it on far less than you. |
|
|
|
|
|
#2 |
|
Skinny Soy Caramel Ubuntu
![]() Join Date: Jul 2005
Location: Remote Desert, USA
Beans: 674
|
Re: Advice for Aspiring Independent Programmers
Latest Update
Web developer, but still a sysop occasionally Glad I've gotten a bit of Linux sysop experience behind me, otherwise I'd be a dope in this industry as a PHP Freelancer. I mean, tonight my client expected me to work on CentOS4 (which comes with PHP4) and get it working with PHP5 + MySQL5 + Apache2 + MySQL5 integration into PHP5. I had to figure out Yum and then the special add-on repositories that are poorly documented for CentOS. There were no ifs, ands, or buts on that -- I either knew it, or I don't get his lucrative cash offer. (And man oh man I wish everyone would simply host Ubuntu Server -- apt makes it so much simpler.) More than one client at once Sure, you can triple-book yourself in a month and reap the reward, and you can't get that kind of reward when you work for someone else as their programmer. However, that's extremely hard work, my friend. I mean, client expectations are very high, they want everything yesterday, and although they often have nice cash (like $4K-$5K per project), they commonly want their task done in 2 to 2.5 weeks. So, right now I'm double-booked in my week, and both clients are suffering for it because it's the tail-end of one project (and it's running over in time) and the other project is dragging along slowly with the client wondering when I'll actually have something started that I can show them. So, I've come to realize that I really can't handle more than 2 clients a week, max, if that. I bet that will be about your limit too, as a programmer freelancer. However, as a web designer or a "chopper" (who takes PSD and converts to XHTML) or a Flash artist, you have shorter gigs and can take probably 3-4 clients a week. When all you have are IM, email, and a rare phonecall, it's hard to pick up on how customers are feeling I've learned that even the most subtle hints about your performance are important to look out for. Functional specs are tough So my client gave me a 1000ft level functional spec like I asked, along with some rough draft mockups in a paint program for the screens, and I was able to make a quick timeline that was interim. I then asked him to make a 500ft level functional spec and I gave him a project timeline. Unfortunately this project timeline was waaaay off. Why? Because I kept assuming I could pull certain things off rapidly, such as a treeview control in Javascript, or eCommerce. Instead, I should have read the functional spec more closely and given a more realistic time estimate. I'm also keeping notes on my performance so that I know how long I'll take on the next go-around. As always, if I figure something out that's hard, I'm making my own knowledge base. What to do when the customer balks at price First, break it up into phases and shave off things out of phase 1. Second, if necessary, offer to do phase 1 for $5-$10 cheaper per hour and if they want to continue more phases, they will have to pay full price. Of course, if they choose that option, you'll want to let them know that you'll have to shave phase 1 down a bit. Third, let them know you're a good communicator, that you give regular status updates with realistic news, that you have a careful attention to detail, and that you want to genuinely continue your involvement in their project for follow-on phases. And if they don't like any of that, then forget them and move on. Windows sucks!!!! I had to break down and purchase Windows Vista so that I could do browser testing of my apps. It started with me wanting to test IE 7, but then I'd have to get XP. So I look up XP Pro (which has the Terminal Services feature) and it's unbelievably expensive still. I thought for a minute and realized I need a laptop occasionally, so I might as well get the cheapest laptop I can find and find one that comes with the OS already on it. And when I compared prices, it was only a couple extra hundred beyond the price of what I would have had to pay for XP. And sure, I could have used that trick to install IE 7 inside Linux, but it has defeciencies I cannot handle, such as lack of IE 7 conditional comments, and doesn't use the same font sizes as Windows for it, which is crucial for browser testing and CSS style sheets. Moreover, when I was done with this, I had to bring up W2K Server so that I could test IE 6, and lucky I had an old MSDN CD for that. IE Sucks Serious. When you compare, feature by feature, Firefox to IE 6 or 7, you can honestly see how much better of a browser it is and how much more compliant it is with W3C standards. IE 6 has these terrible pixel positioning problems, and you also can't put a DIV on top of a SELECT field! They fixed this in IE 7, but there are still quirks with IE 7 that will drive you nuts all day. Moreover, Opera is used by much of Asia and some of Europe, so I had to install that stupid browser with its own quirks too. If only everyone could just stick with variants of the Gecko engine, we'd be getting somewhere. You don't just build websites for your client, you build them for yourself It just seems practical that as your building these great websites for your client, the gears in your mind continue working on great ideas and you'll want to knock out websites for yourself as well. And Affiliate Marketing is a big part of most of my ideas. AM is just a natural progression for PHP Freelancers. Besides, most of my clients are AMers. What happens when the USD exchange rate is not so good? Sure, I've got clients now and I'm overloaded with work, but what happens when the US Dollar goes up and I'm not as cheap anymore? That's a day I worry about. Outsource the XHTML Until you get good at all the new Web 2.0 looks and DIV placement, outsource the XHTML to services that advertise "PSD to XHTML". And let your client manage that and feed you the page templates unless he's too confused about that process. However, once you get the XHTML and analyze it and experiment with it, you might just pick it up on your own. If you do, you can do PSD2XHTML work all day and make more money with less hassle than you could with PHP development, or you could use it to fill in the gaps in time between clients. Clients take awhile Clients will take a good week and a half to iron out a functional spec with you so you can get them a timeline, and also get the PSD drawn up and chopped up into XHTML. So, knowing that, you need to be looking for your next client one week before you wrap up with your existing one, or try to start advertising for your next one the moment you're finished on the first one. Advertising pays You'll be surprised how well a $10 ad for your programming talent, along with an attractive website for the landing page, along with a blog geared for customers and fellow programmers -- you'll be surprised how much all that pays off in landing you new clients. It works. Kill Reddit In this business, you'll need to curtail your use of other time-wasters like Reddit. Sure, you need to keep up on the news, but you need to filter it and spend less time looking at it. I personally have a serious Reddit addiction. Backups are critical As a freelancer, you need to have backups to the backups. I mean, you need spare servers sitting around to back stuff up to and to use when your system crashes during a deadline. You need UPSes and surge protectors on everything, including your phone equipment. You need to pay for extra ground protection on your house. You need good clean power, systems to use during deadlines, and tape and/or disk backups of your stuff. Most of these things are cared for when you work for a big company, but on your own, it's all up to you. So get serious about it. |
|
|
|
|
|
#3 | |
|
Skinny Extra Sweet Ubuntu
![]() Join Date: Jun 2006
Location: Syracuse, NY
Beans: 3,258
Ubuntu Karmic Koala (testing)
|
Re: Advice for Aspiring Independent Programmers
Quote:
Firefox, while a great browser, really isn't that w3c compliant. Opera and Apple's Safari are much better in this category. Does this mean that they are without quirks? Hell no. But they are better than Firefox, which has really terrible css support in certain cases (only an eyelash better than IE7, imho). And please, the gecko engine? That's what I hate about firefox... It's just too slow and bulky to be useful. Ok, I'm done complaining. Please keep these up, there's a ton of solid advice here.
__________________
Desktop: AMD Athlon64 X2 3600+, Nvidia 8600GT, 3GB RAM, 80GB hd, Windows 7 Beta Lappy: Sony Vaio FW-140E, Intel P8400 2.26Ghz, 3GB Ram, 250GB HD, Intel x4500MHD, Windows 7 Beta & Kubuntu 8.10 w/ KDE 4.2 |
|
|
|
|
|
|
#4 |
|
Skinny Soy Caramel Ubuntu
![]() Join Date: Jul 2005
Location: Remote Desert, USA
Beans: 674
|
Re: Advice for Aspiring Independent Programmers
Paypal sucks (but that's a thread of its own). Customers want PayPal, but they don't take into consideration how much Paypal sucks. Their PDT process is far easier than their IPN process, but it's too complex to set up. Now, something is wrong over at PayPal and the PDT process isn't even working. The sandbox generates system errors and/or times out. If you get the thing to work at all, it doesn't come back with a 'tx' parameter like it should. And if you don't turn on AutoReturn (which should be turned on by default), customers may click the X on the PayPal window and they end up getting charged but you never know the transaction went through! When I contacted tech support, they said it was a bug and have fixed it. However, all my warm fuzzy feelings about safely running transactions through them have bled out of my body and I don't have a shred of hope for them anymore.
Meanwhile, on the web, we read the eBay CEO stepped down. eBay owns PayPal. As well, they have a class action lawsuit against them. Plus, Google gmail consistently stuffs my tech support emails from PayPal in my spam folder, and when I mark as non-spam and open it in my inbox, Google has to comment at the top of the email that this might be a phishing attack. It's not, of course, but then you can't exactly blame Google because the reply-to doesn't go back to PayPal, but goes back to some other domain! And that's only on their tech support emails. So, since PayPal is the pariah of broken mail filters, that also kills my warm fuzzy feeling, and PayPal doesn't help it because sometimes it makes its own reply-to go to a different domain. About the only way to trust the email is because it's addressed to me with my accurate full name. So, for now, I'm handling PayPal transactions like so: * We're going the email route. If the user clicks a PayPal button, they first go to an intercept page that sets their transaction in a table for me as "Pending PayPal", and then goes on its merry way to PayPal for a payment. At that point, I have a return page to say thanks, and I will use AutoReturn on it, but I don't anticipate the end user will get there. Then, the site's owner will use a manual process of checking emails from PayPal to confirm the payment came in or not, and switch the transaction status in an admin moderation queue to "PayPal Paid". * As for subscriptions, I don't have a warm fuzzy feeling that PayPal will not fire off subscription emails at the prescribed times. No, based on the buggy sandbox issues, I have a funny feeling they'll fire it off early, or twice, or simply forget the subscription at all. Instead, we're going to handle that process ourselves by, upon login to the admin system, it checks for monthly renewals that need to go out, and prompts the admin to send these out. They click a link and off the emails go. (This is because we can't install cron jobs on virtual sharing hosts.) The emails will give the user a link to go back to the site, and then they can click a BuyNow button from there. ....so, anyway, I'm seriously contemplating Google Checkout. For one, Google is spending millions of investment dollars to make it reliable and better than PayPal, and Google usually has a certain polish to the things they do. I bet Google's Checkout sandbox never has system errors and stays up most of the time. My faith in Google is 100x higher than PayPal. Also, once you get listed in Google Checkout, I read that your AdWords blocks change so that your Google Checkout button appears in them, and people have been bragging how this has increased sales. You don't get that with PayPal. |
|
|
|
|
|
#5 | |
|
Skinny Soy Caramel Ubuntu
![]() Join Date: Jul 2005
Location: Remote Desert, USA
Beans: 674
|
Re: Advice for Aspiring Independent Programmers
Quote:
Fighting with DIV placement, CSS quirks, and testing in the various browsers is an extremely frustrating task as a PHP Freelancer (or any kind of web developer), and it can take up a whole couple days, at times. So I'm a fan with sticking with the top 2. Unfortunately, though, Microsoft is the brat that doesn't like anyone playing with it in their sandbox, and thinks only their sand castles are the prettiest and most functional, when it's not. I mean, for one thing, the whole IE 7 interface is just flawed from the get-go and one has very little recourse to skin it or move things around. |
|
|
|
|
|
|
#6 |
|
Fresh Brewed Ubuntu
![]() Join Date: Jul 2006
Location: Orlando
Beans: 1,240
Ubuntu 8.04 Hardy Heron
|
Re: Advice for Aspiring Independent Programmers
I've found there's money to be made in designing corporate intranets for SMBs... Up until recently, I've consulted for some law firms who had aspirations of going digital. IOW, instead of keeping documents upon documents lying around, they'd set-up scanning stations and convert EVERYTHING to digital. Court docs, contracts, invoices, yadda yadda. Instead of buying fast capture 35pps scanners, they'd use existing high-capacity photocopiers to send to PDF. Okaym that's the part I worked on, anywho, most of them were working on an HTML-based corporate intranet where they can have a page dedicated to info about every member of the organization, a page for new policies, etc, etc. Some are even adding some of their back-end accounting software to work via web browsers to eliminate the need to update client-based applications on each and every workstation when a newer version comes available.
__________________
Registered Linux User #419773, Ubuntu User #8473 If you type rm -Rf / as root at command line you will get herpes... then die... "It is what it is." |
|
|
|
|
|
#7 |
|
Skinny Soy Caramel Ubuntu
![]() Join Date: Jul 2005
Location: Remote Desert, USA
Beans: 674
|
Re: Advice for Aspiring Independent Programmers
Asking for more time and more cash
In the last project I had, it was fixed price and for too little cash. It also had monstrous feature creep. So in this project I'm on now with a different client, I raised my rate, which was successful because several potential clients still contacted me and I had to turn some down. I also told my client up front that I believe it's going to take me 3 weeks, I'll hope I get it done in 2, and that I won't overbill for more work -- I'll just stop. Well, phase 1's are tough. They are always ambitious even when trimmed down, and until you get your fingers in there to really feel the project, you can't really make accurate timeline estimates. My wife made me realize now that I actually make good timeline estimates -- I'm just off by half. She says I need to double all my timeline estimates from here on out, and then if clients won't like that, to just negotiate to get certain items trimmed out of the first phase. Meanwhile, one thing I do know is that usually phases after the first couple phases are slimmer and take less time. So, unfortunately, I had to ask my current client for two more weeks at my regular rate. It's a tough thing to have to do, but unfortunately we need to pay our bills too. I think what I should have done is to divide all projects in half such that halfway through a project, I can post a site with 50% of the phase 1 features implemented in a /build/ area on the website. That way, the client gets a good feeling about me and if I need to ask for more time at the tail end of the first phase, I can use that as a bargaining chip. Asking Client Questions I hate to say it, but when you are stuck on a vague feature in the functional specification, where you could implement it a couple different ways, it's really not going to go good to ask the client which one he would prefer, with pros/cons. The reason is because my experience has shown that this jogs the client's memory to think of adding more work into the phase, and then they'll go and justify why this is necessary. Another thing they do is go with the one with the more cons than pros, and then justifying this. Instead, I just make a note in the functional spec, keep on chugging along and make the best decision for the client. Then, at the end when I hand it over to the client, I email them the functional spec with my added notes (in blue highlight) to the spec, explaining things. And if they don't like how I made a choice on someting, then at least I'm paid and I can come back in a later phase to make it work a different way. Everyone Wants AJAX AJAX has changed everything. So far, every single one of my clients except one wanted AJAX in their project. So, if you're an aspiring web developer and you haven't learned JSON and AJAX, then you need to get with the program and like super fast. Start by learning how to make one listbox update another listbox (like major and minor categories). Next, learn how to make live editable fields. And then you'll have to learn how to make dynamic treeviews and the most difficult one of them all -- the dreaded drag and drop. Making your own framework I've found that it's better to make your own framework than to use a bloated version of someone else's framework. In the PHP world, this is why I don't use Zend or PEAR. However, I do use Smarty because it just makes good sense. Sure, I have to recreate the wheel sometimes, but I also don't have a massive learning curve to get over to learn someone else's massive framework, and my code runs leaner and faster and with less installation dependencies. That said, as you go, you learn that you repeat things over and over again, and that's time-consuming. You'll never get ahead in this business, making the money you really need to make to survive on, unless you start using some degree of OOP and start optimizing your code such that you can snap pieces together. For instance, I'm always drawing forms in my projects, so why don't I have a forms class in PHP that I can reuse? |
|
|
|
|
|
#8 |
|
Skinny Soy Caramel Ubuntu
![]() Join Date: Jul 2005
Location: Remote Desert, USA
Beans: 674
|
Re: Advice for Aspiring Independent Programmers
Affiliate Marketing Is Hot
I recently got the opportunity as a PHP developer to travel to have a meeting with a wealthy Affiliate Marketer who is one of my clients. They cut a deal with me to pay half my salary and keep me on retainer for the year. After the flight they paid for landed, I got the royal treatment. They sent a stretch limo to pick me up, and then stuck me in a hotel room that was like an inexpensive condominium, and the back of the door said it cost $400 a night. I was told, charge food, laundry, Internet, whatever to the room -- it's paid without question. In the morning when I visited their offices, they kept showing me screens, or I'd see one when looking over someone's shoulder, where it was yet another website that paid for ads and they had earned $2500 per day. So, over and over again, they were bringing in $2500 per day per ad network. My goal there was to use PHP/MySQL to build them a tracking system to give them a competitive edge. And they found me by surfing some Affiliate Marketing (AM) forums. AMers use PHP guys a tremendous amount, and a few PHP guys I've met eventually focus on their own AM projects and stop seeking new clients. The client's strategy didn't seem too complex. Anyone could copy it. At first, they struggled at the bottom of the AM ladder. However, for free, they give you a representative at these AM ad networks (like cpaempire.com) and that rep will help you increase sales if you follow his/her instructions. So, they figured out that there's more money in ads that work with things on your mobile phone than things that work with your credit card. Don't know why -- just is that way. They got good at rapidly building landing pages from scripts, then "paying for traffic" as they called it by paying for ads on Google, MSN, Zohark (that's a new search engine gaining popularity fast, I guess), and Yahoo. They said that eventually they learned that you have to pay to play in this game, and it's a gamble with a lot better odds than the stock market. Another thing that gave them the edge was that they scanned forums for successful people already in the AM industry, then offered them lucrative deals to join the company. And part of that deal was to have larger sums of money to invest in ads and to get systems online to scale their operation further than they could do on their own. Last, some of the offers they host themselves. For instance, they kept doing ringtone ads, like many AMers, but then they wondered what would happen if they saved up enough AM cash to purchase two ringtone companies. So, they did it and it has been extremely profitable for them. So, from all these techniques, they actually could take a week off and earn money in autopilot! So, the experience showed me that AM is a huge, wealthy business, and it's exploding with an influx of new users, and we aspiring independent programmers (freelancers) can take advantage of this in multiple ways. First, we can leverage this influx by building their websites for tracking tools, landing page generators, landing page redirectors, and pixel tracking systems. Second, we can learn from them for free on what makes them profitable, then (as long as we follow our NDA) turn around and make our own AM projects. Third, we can gain so much experience in AM that we can help boost the AM capabilities of existing clients, or help new clients realize the potential of AM, and then when they make cash, they have more cash to pay us for projects. Fourth, eventually we can migrate from freelancing into AM work. Fifth, AM is not rocket science -- it's cheap to get started, you get free advice from the ad networks, and eventually you learn you have to pay for advertising, systems, and network bandwidth in order to make money from advertising, and it's a gamble with better odds and higher profit than the stock market. |
|
|
|
|
|
#9 |
|
Gee! These Aren't Roasted!
![]() Join Date: Dec 2006
Beans: 176
|
Re: Advice for Aspiring Independent Programmers
I read the MS sucks, IE sucks, Windows sucks, Linux rules stuff and I just have to say - It reads more like advice from a Linux fanboy/MS troll to aspiring independent developers.
Last edited by laxmanb; February 22nd, 2008 at 11:40 AM.. |
|
|
|
|
|
#10 |
|
A Carafe of Ubuntu
![]() Join Date: Jul 2006
Location: Indiana
Beans: 124
Ubuntu 8.10 Intrepid Ibex
|
Re: Advice for Aspiring Independent Programmers
A bit off topic but in reference to backups.
I already backup the backups and the final backups go in a firesafe but can anyone recommend an online backup service? Carbonite is currently not Linux compatible. I have been thinking about Amazon S3. Has any one tried it or has any other suggestions? Thanks
__________________
Thanks, Fr. Robert, Registered Ubuntu User # 6004 Batushka's Web Hosing & Design http://www.batushkas.com |
|
|
|
| Bookmarks |
| Thread Tools | |
| Display Modes | |
|
|