Ask Slashdot: How To Begin Work In IT Freelancing?
king.purpuriu writes "I'm a computer science high school student, and I'm looking for some work in IT freelancing. I have had a interest in computers and programming for a while, and I began learning on my own before high school. I would like to gain some experience (e.g. what the bulk of the jobs in various markets require, various technologies/frameworks and their usage) and possibly make some money on the side (not expecting too much; at this point, any non-negative amount will do). Key areas are web development, app programming and scripting. What solutions do you recommend? Any tips or tricks of which I should be aware? How should I deal with payment (in terms of fees and commissions; I'm from European country), and what type of work should I seek out? I would also be willing to do some small stuff for free in order to gain experience (small, static sites, small scripts, etc.)."
1. Get some experience not doing freelance (know the tools of the trade) - Dont just default to freelance because you can't find a job. 2. Create a Website with a portfolio of your work. (this does not need to be for actual customers, could be ideas you have come up with and made, eg for web development create some word press sites / joomla or similar, create some sites using the language of your choice, for me that was PHP and the whole LAMP stack. and some sites using a framework like Yii (or what ever). and mingle in some JQuery / JS / LESSCSS. 3. Profit??
Keep on studying and learn to write some damn code.
I have created whole e-commerce systems for free, and that was ~9 years ago. Really, the market is so competitive right now that the only way you're going to get paid with your knowledge is thanks to everyone's favourite abuse of capitalism: information asymmetry. Find small organisations who have so little clue about IT that they think that abilities like yours aren't dime-a-dozen.
Alternatively, accept that your abilities are tools to enhance a career rather than career-worthy in themselves. Either learn to become a software engineer in the full sense, worrying more about learning than earning at this stage, or find something else that you like, safe in the knowledge that your IT skills will make you a more valuable member of any team.
What people are hiring in a freelancer is experience and skills and experience and ability to hit the ground running and experience. Oh, and experience.
Do ten years in a proper job first to learn this stuff.
Personally, I would recommend that you get a full time job first. After a few years, when you've had time to build up commercial experience and a good couple of names on your CV (resume), you can hop into the freelancing circle.
Freelancers tend to command more money (certainly in the UK a contractor's daily rate will be more than double that of a permanent employee). There are often A LOT of people chasing these jobs, especially these days, and without proven commercial skills and those client names to back up your experience, you could well be ignored.
Start with a full time job first, get the experience and then start offering yourselves as freelance.
THE HONOUR OF THE KNIGHTS - CC Licensed Sci-Fi Novel
>> I would like to gain some experience (e.g. what the bulk of the jobs in various markets require, various technologies/frameworks and their usage)
Can't speak for anyone else I wouldn't take someone on freelance without the experience - there is nothing for free, even if you come in with no "salary" the cost to me in terms of lost productivity with other members of the team, delays because the work you did isn't up to snuff etc. is too much of an unknown.
You also need to have the basic experience of having worked within an organisation, what's expected from you in terms of behaviour, interaction with colleagues and basic commercial sense. (You'd be suprised how many fall over on that last one - spending x weeks on something which is of little or no real value (or far cheaper in real terms to buy in) or being unrealistic in terms of costs and timescales - I've seen sales deals lost on that one since the IT person appears unrealistic the whole sale loses some credibility).
Best way I can see is finish your studies, try and get on a graduate intake for a medium-large organisation and take it from there, once you've a few years experience it becomes a lot easier to start moving around.
Develop a finer appreciation of peanut butter and jelly sandwiches.
Learning to write code is very important, but if you go to university and learn computer science for several years they will teach you to program many languages and the fundamentals of programming and object orientation. At that point I agree with the others that you can then go out and get a job to get the experience.
When I was in high school, I made web sites for realtors. This was back in the 90s when any sorta webpage would pretty much do. Looking back, there were a lot of areas I was lacking in.
One was simple business skills. First is finding a decent niche to sell your services to. That was pretty much handed to me given one of my parents was in real estate. Apart from that though, is marketing yourself. As a skilled developer, you have the ability to bring value to other people. You have to be able to convince these people of this simple fact. This is a whole different skill/world than development. It's a skill that is equally valuable in life though.
Anyways, a few random tips. Don't undervalue yourself, your skills, and what value you are providing to others. It's probably worth more than you think. As far as payment, work out what is agreeable to both parties. This again comes down to "business skills". Also, a good knowledge of your local laws is handy where as a worst case scenario.
Finally, take what work you can get that doesn't sound horrible to you. Any work is good work. In the "real world", most jobs are not dream jobs. It's one of those sad facts of life.
Don't! Your time is better invested in actual studies, where each university credit will lead to a better position in the future job market. Study harder, study more. Writing code is done by thousands of indians and chinese, and you DO NOT want to be in a position to compete with them.
I would strongly recommend you to get out of the programming/IT sector all together. It is NOT a future business in Europe. It pays poorly, and is subject to massive outsourcing to Asia.
If you must work in IT, consider something which is close to the customer: Sales, Management, Relationship intensive design tasks. DO NOT ENTER A CAREER IN IT PROGRAMMING. You will be competing with millions of poorly paid Chinese and Indians and companies will always outsource to the lowest bidder.
I have 20+ years experience in IT, and I've seen 5 companies outsource all European operations to Asia already, and I see it happening all the time over and over again.
Study hard, study more. Study something which can't be outsourced: M.D., Lawyer, anything in construction.
Avoid IT like the plague!!
If you don't wanna study, get noticed through work in open source projects. You will gain experience and once you're good at what you're doing you'll get offers. If you're out for the money, all that Java bzzzzness bullshit pays very well. The more you're willing to sell your soul (Banks, Pharma), the merrier. But as a programmer this kind of work is not satisfying. If you wanna become a good programmer do various projects with various languages. And don't shy away from doing lower-level stuff. C is still king.
Anyway, you're from Europe, so go to one of them free colleges. You'll meet interesting people and gain connections into the Industry. Do internships, cause that's where you really learn how to code and how to work in larger groups. Some companies keep ex-interns around as well paid freelancers, but that depends how indispensable you made yourself for that project.
Don't.
1- Post question on Slashdot
2- ???
3- Profit
Steal the identity of a successful freelancing company.
Have a BSc or better (normally in Computer Science or similar IT degree), plus several years real job experience. As someone has pointed out, being a significant contributor in Open Source projects may also get you noticed.
It doesn't rule you out of being an IT freelancer, but I suggest you plan an educational and career path, as good pay only comes with good qualifications or job experience.
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
Having worked as a freelancer for most of my worklife, I can chime in with a bit of stuff.
First of all, personal traits:
Self-discipline, self-discipline, self-discipline. You need this to complete your contracts on time, in accordance with the contract. It means being able to sit down and do everything required to fullfill the contract. It also means being able to work with people you dislike on a personal level. It means maintaining a clean, whole persona. No, it doesn't mean three-piece suit, but it means not showing up in tattered jeans, faded t-shirt etc. It means having the discipline to tell your friends that you can't spend time with them if they have a day off, because you need to stick to your schedule. Discipline enough to hold on to your money, because you never know when you'll have a 2-3 month dryspell.
Also, maintaining separate accounts for personal use and professional use, as well as separate hardware etc
Integrity:
Accepting a contract is your word. You have to stick to your end of the contract, otherwise your reputation will suffer. And reputation is EVERYTHING. Do not accept contract that you can't complete, even if the lure of the money is strong. If you believe it's highly unethical to complete a certain contract, feel free to not take it(This is one of the major perks of being a freelancer, not being a wage-slave). Never ever blindly accept your potential clients estimates of time required etc, always do your own estimates BEFORE accepting the contract. If the client is trying to keep you from doing that, they are out to try and get you to work for free, or at least really cheap. Do not EVER complete tasks/favours asked of you by the client that fall outside your contract. Stay out of the office politics. Maintain customer confidentiality within the boundaries of the law and your ethics. I won't sell out my clients data to any competitor of theirs, but if I become aware that the data I'm working on is evidence for a crime, I'll contact the police. I will NOT make myself an accomplice.
Other things:
Try and go into a niche field. The more general areas are oversaturated. You can't throw a stick without hitting a "html/SOAP/PHP/PERL/JAVA/Social Media "expert"". Comp sci PHD's are becoming fairly common that it's close to employers market. There's a shortage of competent software engineers on the other hand, especially for embedded stuff(counts 40 offers listed on agent's summary, while only one of us who works with the agent is currently available for a contract.....)
ALWAYS retain the services of a lawyer when evaluating and negotiating a contract. It will save you a lot of headaches as clients try to catch you in horrible penalty scenarios in the fine print, or even clauses that are completely illegal. Go for solid but not flashy reputation, preferably one who also wants a long term client relationship. If a client says you don't need to bring a lawyer because they have retained the services of one for you, politely tell them you're not interested, because they ARE out to screw you over.
Likewise, an accountant is a good service to retain, to keep track of your economy and keep you grounded in reality. As with the lawyer, go for a solid but not flashy reputation, and who is interested in a long term client relationship.
An agent is also a good thing to have if you become proficient and sought-after. In my case, my lawyer is also my agent. He receives the contract offers, reads them through according to the guidelines I've set for what offers I'm interested in, and if it's something he thinks fits the criteria, I get them forwarded to me. He also maintains a list of more general offers that any of us who retains his services can inquire about
In terms of payment, I use escrow and direct transfers primarily, sometimes invoices. I NEVER accept cheques, which makes quite a few potential US clients rather unhappy.... The reason for escrow is to make sure the client has the ability to pay, and from the third-party escrow account it's
Cover your arse! Web stuff is likely to get hacked. You need to make certain that you know what you do. If you don't have any experience, get a normal job and learn. Put in the hard work to get your skills up to par. Make a name for yourself in the company that you work for at the moment. It's good to be known as the guy who gets things done, even if this means unpaid overtime. When you start freelancing you can even get a contract with your current employer or at least some recommendations.
There is good money to be made by people who know what they are doing. The problem is there are very few of those and that's why I'm not a freelance :) There is less money to be made if you don't know what you're doing. In theory, you could learn the job while on contracts. That's the ideal world, but expect to put in loads of hours and try to make certain you know people who can get you out of trouble.
It might also be a good idea to invest some money in a rig where you can simulate a work environment, so you can code at home.
Around here the only way to get a job of any sort in software development is to have a few years of commercial experience in whatever technology they are using.
Set up a corporation (corporations are people), set up your website with credential, contact, maybe a price list (per hour or per job, whatever), send out offers to companies and to people about your services.
Of-course it's not going to be easy, but you asked the question "how to begin", not "how to really make it a success".
MY OTHER COMMENTS
It's quite funny that people with modest coding skills still believe that they can make good money as freelancers. Putting aside the rare occasions when you find (a fat pigeon) some clueless and wealthy investors, if you're not backed up by some company with a nice portfolio, then you're usually out of luck. A few years ago, I was digging around sites like rent-a-coder to see if it's even remotely feasible to make some money as a freelancer. What I found was a swamp of "experts" who were willing to code youtube clones for 100$ and small companies that posed as users with perfect ratings. My conclusion is that if you're good enough and you have many years of experience in the industry, then you're better off as a consultant for (big) companies, paid by the hour. Otherwise, just find a nice job at a company that's willing to invest time in training you, and, heck, you might end up learning how to code while making some money as well.
Simply start doing small, simple projects next to your regular studies, whatever helps out others and if it pays the bills even better.
Your goal shouldn't be looking for the most large, lucrative projects, just keep it simple so you can gain experience with freelancing without too many headaches. Your long-term goal should instead be amassing a large network of people who know you and who see you as an (up and coming) expert.
Freelancing / consulting has everything to do with the people you know. The larger and more diverse your network, the easier it becomes because there will always be plenty of people looking for someone like you.
This takes time so my advice would be to continue studying, working on open source projects and taking a part-time job so you can gain experience and contacts. Once you're a few years down this road you'll know when you are in a position to become a full-time freelancer: you'll get more work thrown at you than you can cope with.
This sig is intentionally left blank
You say you're from "Europe" (does that just mean you were born in a european country, but have moved elsewhere - or that you are a legal resident and intend to work in a european country? the difference matters and is huge). Assuming you are hoping to get a job in a european country you need to be aware of the employment laws where ever you are.
You cannot expect to say "I've just finished my secondary education .... I think I'll become a freelance programmer". Nobody will touch you. The first thing you need is experience. The second thing you need is more experience. After that, you need to demostrate a good, long, relaible history of producing successful results in sectors that have lots of vacancies.
You will also find that in some european countries, no company will hire you directly as the employment and tax laws could make the company liable if you fail to pay your taxes. The company could also find that i'ts taken on an employee, and that you have employment rights (long holiday entitlements - 25 days paid, min. , sick pay, pension, and/or that you are unsackable if you "contract" there for too long.
The first thing yo need to do is research the laws in your country, get a degree, get some experience and then consider whether the eceonomic situation in 3 or 5 years time is suitable for a freelance worker.
politicians are like babies' nappies: they should both be changed regularly and for the same reasons
I'll reply to you, though offhand I'll remark that I can't find any replies yet by the Submitter.
I had a small project on one of those sites for a little while where I put up an incredibly simple program commission, then see of the few people who replied, who didn't walk into basic proofreading blunders.
Hey Submitter, if you're out there and reading these notes, dig me up, I need a few small things done!! In return, I'll give you a rating as a Slashdot User who is at least modestly respected by the crowd as not being a shill.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
stay away from the mainstream .. ie dont just become another windows administrator moron.. there's thousands of them competing for the same position. In fact there are so many that I watch them compete for jobs that pay half of what the same skills would have paid 10 years ago. Learn some of the more specialized tools. My best advise is to run 2 or 3 linux servers in your home working on building up a few skills. Learn the ins and outs of how sendmail actually works. become an expert on IP networking. Learn what a subnet really is, why we have subnet masks, how to break a netblock into smaller subnets. Learn what a 'gateway' really is and what route statements actually do. Delve into layer2 as well. Learn what a VLAN is and how 802.1Q tagging works. Having a solid understanding of networking will go far to give you a generalized set of tools that will enable you to support a broader platform of products. By running a few linux servers you will learn the in's and outs of services like DNS, NTP, SMTP, IMAP4, and POP3. Even if you were tasked to support a windows server, the deeper understanding of these protocols will give you the tools to reverse engineer some other flavor of software that does the same protocol (such as exchange). Since linux is not a point-and-click or find the right answer in a pulldown option sort of OS, it forces you to learn at a deeper level. I would also recommend installing Asterisk on one of these servers and become well versed in the command-line programming of the asterisk dialplan. Asterisk is a very prevalent phone system and understanding it will either give you the skills to support companies running asterisk, or at the least the skills to work with any other SIP softswitch
as far as payment, invoicing someone from paypal is a good option. If you build up enough work you can cut 'discounts' by selling blocks of prepaid hours. That avoids being ripped off.
When bidding a project, I recommend you split it into two:
1) scope and prototype
- enumerate exactly what the features will be
- create a mock-up of how it will look and function so the client can visualize what the scope includes
2) the actual implementation of (1)
Clients never know exactly what they want. Even after seeing it and using it, often they discover it's not quite what they needed. This causes feature creep--which is the bane of all software projects. You have the conundrum:
a) you charge a flat fee for the project, meaning the client gets infinite features for a fixed rate and you lose
b) you charge an hourly fee, meaning the client feels screwed the more they realize they forgot stuff or didn't originally understand it well enough to tell you "right" the first time
I've found that this approach allows you to help mitigate this. Do (1) at possibly a lower rate than (2), and even do (2) at a fixed fee if you are confident in your estimation of the work involved, but only after (1) is complete and they sign off on everything in the scope and how you've demoed it to look and feel.
Obviously, you can lather, rinse, and repeat this as they discover new things that they want--but doing this cycle keeps everything fair.
There's nothing wrong with starting as a freelancer.
I respectfully disagree.
As a freelancer, you need to be able to operate with a degree of autonomy. You need to be able to take general direction from a client, work out what it is that they need, and provide it. You need to find your own tools, and develop your own skills.
Coming straight out of full-time education, I don't believe anyone has the experience to do that yet. You could be the most talented and enthusiastic person in the world, and perhaps a few years down the line you'd be a great freelancer, but at the start of your career you don't even know what you're missing yet. You can be completely sincere in your desire to do a good job, and still be utterly incompetent without even realising.
Even today, after working in a few jobs as an employee and now being freelance for a while, the thing I miss the most is still the shared experience/peer review side of things. That kind of interaction can be very educational even if that wasn't your original goal, and if you're going to fly solo you need to find a different way to maintain your awareness of the industry and develop your skills. That's difficult even for someone who knows roughly what they're missing, and I suspect it's impossible for someone who doesn't.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I have worked freelance/contract almost my entire life, despite leaving school at 15 and only getting an Open University distance learning degree in Computer Science.
The most important thing you need is a portfolio of work that you can demonstrate. This is "proof" of experience and counts for more than almost anything else. Having a university degree is a more of a tickbox line item on your CV, at least it is when you have one, though you may have work harder at proving yourself without one.
The trick to building up a portfolio is: find a problem and then solve it. This is the entire essence of IT contracting/freelance work, people have problems and they need help to solve them. The best way to demonstrate that you are in a position to solve somebodies problems, when you are asking them for money in exchange, is to say "I can do this, I solved a similar problem for X, Y and Z, this is how I did it and I can do the same for you". The catch-22 of the contracting world is that it is difficult to get experience unless you already have experience, and even when you do have experience you can get a little stuck inside a niche.
Individuals, charities, NGOs, online communities are all places that often lack money for "professional" help, but may provide an useful source of problems that need solving where you are not going to get out competed by lack of experience. Compared to an individual who knows nothing about computers, you are highly experienced. There may not be much money involved in such projects, or any money at all, but this also gives you the freedom to say "let me go away and play with this for a while and see what I come back with" and deliberately try to stretch the limits of what you can do, rather than being tied to "I will deliver this specific spec by this specific date for X amount of money". Any job or project that you do, even if it is not paid, is 100% valid to go on your CV (you don't need to mention money on your CV).
My first website I built, www.starsfaq.com was a very simple HTML and just a collection of everything I could find out about an online game. Later I had a girlfriend who was an activist and she convinced me to build www.earthemergency.org which required writing slightly more "pretty" HTML and www.sustainable-society.co.uk which gave me the challenge of writing a database driven Content Management System (CMS) from scratch using PHP. During my first "proper" job-interview for a tiny digital agency, I had a 5 page CV of small unpaid projects like this, websites and small desktop utility programs, plus an unpaid job being webmaster and IT manager for a startup NGO www.worldfuturecouncil.org. I was asked to show code samples of my previous work and managed to get the job. It only lasted three months, and I admit to making a few mistakes during that "first" job, but getting fired from this "perm" job was one of the best things that ever happened to me. I put the job down on my CV, added all the agency projects I had worked on to my portfolio list, knocked off a couple of the smallest projects from my portfolio (that now look "silly" compared to a couple of small "commercial" portfolio items) and went right back onto the job boards with a full time mission to find myself another job. My CV now looked twice as good as it did before and I had "recent" work experience in a full time job. Chance then sent me my first "contract" job, doing 6 months of web scraping for www.hotproperty.co.uk getting paid by the hour, the job after that landed me back in a digital agency www.idmedia.com where I got to do my first "big" website, the now defunct www.sugarmagazine.com. A few years down the line and I managed to get big name brands, and big brand money, working at www.ft.com, www.premierleague.com and www.barclays.co.uk
Each contract, usually working 9-5 and getting paid by the day, tended to last 3-6 months and in each case was a stepping stone to bigger and better projects and bigger and better brand names, and bigger and better rates. During the ascendancy of my career,
because it's fairly normal. I'm not being negative, it's called "Negative Analysis". I started freelancing about 20 years ago and not only do you have to be good technically, you have to work on your soft skills, and your commercial skills. Business people are tricky and you have to be able to play on their level. You are green, you will be ripped off, get ready for it and figure out how to look after your cashflow.
Don't worry about failing, for whatever the reason, pick yourself up and keep going. Don't expect to get rich quick because it's not going to happen. The freedom is great but the responsibilities can keep you awake at night far too often. Put aside time for personal development because you have to remember that you are the product.
Are you good at accounting, learn, done the invoicing, learn, purchase orders, learn, marketing, learn - do you know what your business does, learn that too. You will wear a lot of hats so you may as well learn how to wear them while you are young and have the energy and after you have learned how to work hard you will learn how to work smart. Don't worry about the 20 years experience you need to have to be a consultant - that will come later, just get good at something, preferably something you love to do, do it well and offer that service.
People will say you don't have enough experience and you don't, so just go out and get the experience. The attitude you develop in business to adversity will bring you an optimism and enthusiasm that is infectious, then you will discover how employable you are when you need it.
Make failure your friend and success will seek you out.
My ism, it's full of beliefs.
To be fair on the client side: In many ways we can't know what we want, it's like Jeopardy - we don't have the knowledge to ask the right questions. I've commissioned a few small things here and there, and I much prefer a dev who will warn me if I make a mistake in my wording that entails 500 hours of work, rather than just clunking down to it, only for me to discover "well, my 7 hours of paid time vanished, and the dev didn't bother to tell me that what I asked for could never be completed in that time."
Meanwhile, of course this young guy should continue to study, but actually trying his hand at writing some real code gives context for those studies. Let's say he takes me up on my offer to give him some small things to thrash around on. When he comes up against specific problems in my assignments, then later when he studies, he'll remember "oh, yeah, if you don't do ____ and ____ and ____ when making X kind of program, Bad Things happen." THAT is the fundamental flaw in college - your basic theory might be good, but when it comes time to solve actual coding problems, there's no substitute for having hands on practice.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
Except that whole "develop skills" part is chicken and egg.
Elsewhere I offered him a chance for me to be a "mock client", aka as if it were a more serious engagement, but with a lot of leeway for stumbling. For me at least, only when faced with X specific problem did I realize I had a gap in my knowledge. I have a couple of good test case projects for him to chomp on. If I can "stump him", then that's when he will have something to anchor a week/month's worth of study.
Per a couple of other poster's comments about being hacked, one of my projects involves users and logins to the system. So whatever he comes up with, I'd just put it up as a free for all and tell the "security testers" to go break it. Then he gets that experience too, so when the topics come up in his formal studies, he's "been there, made that mistake."
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
When I needed an income and decided to drop back on my programming skills, I recognise what others here are saying in that I was competing against a very large base of other freelancers charging very low rates. My first job was from a freelance site where I was able to complete the job quickly and present it as a fait accomplis to the contractor. I think I got $5. That led to repeat business with the same client, improved feedback on the site, and more business from others.
After getting high feedback from a load of very low paid jobs over about 6 months, I got my first longer-term contract at $4.50 per hour on a Joomla site. After 6 weeks, that finished, and I fell straight in with a mobile-app developer who wanted lots of work doing, I doubled my salary, and I stayed with them for a year. After that, I got in with a realty website for a few months and more money, and since then I've been working for a client offering a webservice based around Kindle books. That's been 2 years now, and I'm on my original target rate of $25 per hour. I would point out that I'm an ex-pat living in a developing country, so I can live very well on what I earn.
The main thing for me has been being able to provide a quality service. I've sub-contracted out some work to other freelancers (with the clients' knowledge) and, generally, the work has been poor and the attitudes have been appalling. Getting repeat business and good feedback is the only reason I was able to succeed (by my own benchmark) with this, and I only got that through being professional and responsible. Even when I was earning a few dollars for a day's work. In the end, this led to long-term "guaranteed" work with clients that I enjoy working with. My current client even stalked me to get me to work with them because they liked my feedback and previous work so much.
Early on I was advised to learn a CMS or two, and Drupal and Joomla were recommended. I would give similar advice, but would recommend Wordpress. Not that it's a CMS as such, and not that it's particularly pleasant to code around, but because it is very popular. If you have a niche you can go for, great. If not, you will either be competing against a wide variety of low-charging code-monkeys, or you will be honing your skills at something that may (potentially) be more rewarding to code in, and that is marketable. Possibly Yii. But making squat in the meantime. Actually, SugarCMS may be a possibility as a niche market, but I admit I despised writing code for it.
Good luck, if you decide to go for it.
I agree with you completely.
One other issue that bosses and clients seem to be unwilling to accept sometimes, is an "I don't know" estimate.
No matter how similar problem A may appear to problem B, quite often the details may be such that the developer cannot really know how long it will take--it's different enough that it's essentially a new problem to solve. Often times, solving a problem is exactly like finding your lost car keys--you just don't know how long it will take you. These scenarios do occur, and they frustrate all parties--the boss/client demanding an estimate, and the developer who is struggling to not be forced to give a WAG and later be called out on being wrong. No matter in which direction he's wrong, both look bad--if it takes far less time, then he is suspected of padding other things, and if he takes much longer, he looks like a bad estimator or worse--a poor performer.
Get out of CS and take a IT tech / trade school like path. Community College due offer classes as well in IT.
In today's world, get ready to be sued big time when the slightest thing go wrong with your programs. I have has scores of ideas for programs and websites and other non-IT inventions in the past. I always decided to abandon the ideas because I ALWAYS would see something in the programs/inventions that could definitely happen whereby someone could sue me. Try to get on with a company and work a while and be sure that any company you should start on your own in the future can afford and has product insurance.
You're talking about setting up a business. Business (in any country) has rules. Rules that are sometimes radically different from what you've experienced as a "person". Rules that make no logical sense, but exist none-the-less. Know what the rules are and follow them (or get someone else to help: attorney, accountant, etc... that's their profession) or inevitably, you'll get burned in some unexpected way.
Taxes. Gotta pay them, as a business. Maybe it's only a US$20/year (or equivalent) business license for your town/city, but you're in business, you pay it. Ditto for all the other countless fees/permits/etc. In general, the *cost* of all this in monetary terms is small, but it will consume a significant amount of time.
Budget for administrative time. Particularly as a new business, you'll spend on the order of 20% of your time dealing with stuff that is NOT directly related to producing the software product. Book-keeping, form filing, invoicing, etc.
Budget for sales/marketing time and money. Many free-lancers learn this the hard way: you burn all your hours day and night getting the product out the door, and when it's delivered, there's no new work coming behind. You need to be marketing continuously. While working on jobs A,B,and C, you need to be lining up jobs D, E, F, and G.
Do not become dependent on a single client. No matter how lucrative and friendly, some day, they'll get it into their head that they need a change, and then you're screwed. It won't be because you did something wrong, or any rational reason. Having multiple parallel clients also keeps you out of trouble with the "de facto employee" or "co-employment" problem; it makes it better for your client if you have multiple clients; they're less likely to get into trouble for not doing things like withholding taxes (if they have that where you are) or paying for legally mandated employee benefits, etc.
Are you sure you want to compete with 3rd world wages?
The submitter is in Europe (presumably the EU). "Community colleges" are not really a phenomenon here, as university tuition is so low (or, in some countries, education is free) that one can easily complete one's studies at a respected institution, which also offers the possibility of employment in academia while one is trying to find opportunities in the marketplace.
You can do both and learn CNC machining, then CNC programming and eventually how to troubleshoot and repair CNC equipment.
That gear MUST run or the owner loses big money. Trying to do what "everybody else" does is silly. Find jobs where there are very few competitiors and which cannot be outsourced away from the working system.
"This post is an artistic work of fiction and falsehood. Only a fool would take anything posted here as fact."
I spent my first fifteen years doing freelance which grew into my own company with three employees. I started by finding a couple of web forums, communities, where people sometimes asked technical questions. In my case, forums for people running their own web sites (1-3 person companies). If I could answer a question, I would. If I didn't know the answer but could look it up, I looked it up. Soon I had a reputation as the most knowledgeable technical person in that community and people wanted to hire me for projects. Eventually I ended up participating in mailing lists like IETF (Internet Engineering Task Force, the internet standards body), Apache-devel, etc. An interview is a lot easier when the hiring manager Google's your name and finds ypu on the Linux kernel list, apache-devel, and linux-lvm-devel. One interviewer asked if I had any experience with Debian. I asked if they'd seen the previous day's Debian security update, which warned of a serious flaw, crediting me for discovering it. That's gold and it's just from participating in the community. Btw, if you read this post and think I sound credible, that's exactly what I'm taking about. Just do the same in a forum where you can be helpful.
I've been studying UNIX for 20 years. I now run multi-million dollar machines from IBM (the biggest, baddest you can buy). And I'm on the god damn payroll.
And her you come, fresh out of school, thinking you can freelance.
You should be thinking about getting me some coffee the way I like it, and I might be willing to show you why everything you learned in school was a waste of your time.
Kids these days!
As important as anything else you can do, find a mentor who is willing to help you by providing advice, critical critiques, recommendations and referrals. After ability, experience is crucial to success so finding somebody who is willing to share theirs is extremely helpful.
The zeroth thing you should do is make damn sure your skills are sufficient to provide the kind of service you want to provide, and that you know what you can provide.
First thing you should do is look to local chambers of commerce in your country. They will give you plenty of advice and help on the business side of things that is relevant to your region.
Second thing you should do is go to a ton of local meetups for professionals in the area you want to freelance in so that you have some ideas as to what other people are doing. You also may make some contacts there who would be willing to take you under their wing and give you a trial working on some stuff that they have, to see if you're any good.
Since I can't tell them apart, I treat all ACs as the same person.
it's a dead end and you're racing to the bottom. Either start your own business writing software or get into the Business side. The trouble with IT is there's not much human interaction so you're easy to off shore. I know that sounds harsh, but that's they way it is. Heck, even Best Buy outsourced the Geek Squad. If you haven't noticed they plug the computers into the Internet while someone overseas fixes it. The only thing the Squad's there for is to plug it in and get the Internet working well enough for remote admin....
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
Just to clarify, what you're describing is web development or application programming - neither is really IT.
IT's purpose is to integrate technology (hardware and software) into the organization so that it aligns with the business model and goals.
Mostly it's designing, installing, maintaining the infrastructure to allow Tech to work for the business.
Coding is a very small part of that - especially in todays market where it is mostly out sourced.
Freelancing in IT is hard (except for the bottom feeders that help the mom and pop business shops and home users). Freelancing in Web dev / coder work is a dime a dozen - just join one of the hundreds of websites that specialize in cheap code work.
My own experience has always been with NGOs, schools, and small businesses, not corporations; for that market, doing small things very well will get you pocket-money in the short term, and professional, salaried positions in the long-term.
On three occasions, my helping a friend or friend-of-a friend with a desktop problem later resulted in a full-time job (in my case, as IT Manger / Webmaster for three different companies.)
Now - right now, in the US - perhaps the single most valuable thing you can have are 5-star Yelp reviews. (In Europe, as best I can tell from a quick search, that seems to be Google Reviews: Try http://goo.gl/slSq5 and notice most of the businesses on the first page of results.)
And, simply: ask around amongst your older friends and the people you've worked with already (who like you and will recommend you), and go from there.
Two very good ways to get experience:
1. Volunteer to work on some open source projects. This gives you a visible track record of having worked on real projects and produced code that future employers will be free to look at. Also, if the project is run by people who are good programmers, you can probably learn a lot from working with them.
2. Write some phone apps. It's another easy way to get your work out there where people can see it. It also provides straightforward ways to earn money from your work. Don't expect to earn much, but since you're mainly doing this for experience, that shouldn't be a big problem.
"I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
Until at least 25, try to build skills. Main focus should be learning fundamental things, not on earning money. That *includes*, but no way *is fulfilled* by learnign the "framework of the year".
Make sure you get a *solid* (that includes *mainly* theory) knowledge about database systems. Even if it may be or may not be your trade (it isnt mine) it will be crucial in understanding and communicating ideas and approaches from and to others, and also very much structuring your problems. We may like it or not, relational algebra and systems are behind a larger part of what is going on in IT world.
Make sure you have sufficient experience in functional, object oriented, and imperative programming to make a qualified choice for each problem.
Learn sofware tools (compiler gernerators, interface generators, and *all* the fundamental stuff)
So after "what should you aim for" lets come to "how to go there". The best way is to learn from people who do thing longer than you. So, try to go for a normal job. Pick up some skills, change what you are doing over time according to what you can learn, accept a bad payment for some time and make sure that there one or two areas in which you will be very good. Then, you will later never have to worry about how to earn money, and you still can decide how you can serve the customers which you have seen before betetr than in the company you worked for. If you dont have an idea what will be special about your frelancing, then avoid it.
My personal prediction: Just being "a guy who knows how to code" will suck as a freelancer. I have seen freelancers failing (either financially or by nerveous breakdowns) if they where anythin other than significantly above the average level. For all other freelancing was self-exploitation, with long working hours and nasty customers.
IMHO its better to develop as a badly paid programmer in a company for some time and then offer your spefic idea to the world than being a morderalty paid freelance programmer whos only adavntage in the eye of the boss will be his easy replacability.
If you have the idea what you can offer better than anybody else, you may be very happy.
This is by no means a comprehensive post. I'm starting up work with an IT consulting firm though, with two other partners. Some advice:
1) Take notes. If for instance you have to diagnose a network problem, it's easier if you already know the internal IP address range, whether they have DSL or cable (or something else), what network resources (network printers, servers, etc.) they have, credentials (when it's "an emergency" there's like no chance that anybody on site will know the password, and if they claim too it's usually either just plain wrong or it's someone who doesn't get that capitalization matters....)
In addition, we found when we took over for one client, the previous person had handed over a few credentials, had misremembered a few (he didn't write them down, just had them in his head) and (since he was fired) didn't give a few other credentials at all. We intend to hand everything over if we quit working for a client, so they can hand those notes to the next IT guy and they can have a nice head start.
2) Be realistic. Even if someone's IT infrastructure is terrible and needs complete replacement, you've got to give them small, incremental improvements. They won't want to pay for "rip and replace", they won't want the whole enchilada to be down for the time it takes, and you will underestimate how long it takes.
3) DON'T get roped into giving out all these freebies! Instead of having customers, you'll have a bunch of cheapskates who expect to pay nothing, but get the full level of service. If I'm gaining work experience (i.e. learning how to use some software or hardware), without actually getting any work done for the customer, I don't bill for that. I also didn't bill for minor followup (I picked up a spare receipt printer cable at one site I was at anyway, and took it to a second site I was driving near anyway. No big whoop so I didn't bill.)
4) Don't be afraid to "fire" a customer. I haven't had trouble with this myself, but some people just are going to make things a living hell for you... you know, wanting free service, thinking everything they break is your fault for "not catching it when you were here last week", not respecting boundaries (i.e. you could tell them you're in school until 3, and they'd feel free to call any old time of day instead of text or E-Mail), and so on. Just dump them, most people are normal.
I don't feel like giving you specifc advice on what kind of work to do and such. That is up to you!
Whatever man. I'm more than happy with your "rejects".
Yes, 1+1=2. 2+2=4. 4+4=8. Except when it comes to resources. 1 resources that is 10 times as good, is worth more than 100 resources at 1/10th of their ability. At least with the 1 resource, you don't need the QA to weed out the crap that doesn't work, and over time you don't accumulate anywhere near the amount of code debt.
;)
But then again, I guess I'm responding to an Ivy league graduate.
Science advances one funeral at a time- Max Planck
As a freelancer you need to sell yourself. If you don't have any experience you will always be the last in the picking line. So my advise: get some experience first. I started in consultancy, not always the most exciting job IT wise but I sure did learn quite few tricks that are still helpful now.
Also make sure you have a good skill set. Programming jobs are generally (there are always exceptions) better paid than simple scripting or designing layouts.
I've been asked for variations of this question so many times I actually wrote up a long-winded answer to it titled Habits of Successful Freelancers.
Hello there.
First, I'll start off with a little background. I'm 21 year old canadian with only 3 years of infantry training and a high school diploma as formal education. My experience as a programmer dates back to when I was 10 years old just working on cheats for the video games I played when I couldn't find cheat codes for them. No thing too sophisticated, just basic memory writing with a simple GUI using Win32 API and C or later MASM(Microsoft Assembler) to replicate at a keystroke what I was doing using CheatEngine. By the age of 16, I was running a wonderful Slackware distribution and doing freelance/non-profit web development as a hobby and made a few bucks at it.
At age 18, I joined the military and I released about 6 months ago. After not really even touching a computer for 3 years except to use Facebook or whatever, I landed a long term contract via Elance as a sub-contractor as a web developer for a company out of Australia. I am now the lead developer. My responsibilities include developing all the new major features for the app, managing the test/productions servers, basic system administration tasks, providing insight to the company along with the project manager, attending meetings, provide support, and consulting on the direction to head. I have currently implemented unit testing, automated UI testing, documentation, killed and replaced core legacy code that was killing performance, added numerous features, created API that is currently interfacing with mobile apps from other companies that have since become partners, and basically cleaned up after a number of failed contractors.
On top of this long term contract, I have also done work as the lead on a cross-platform mobile app(NDA), other web apps, some basic utilities that people have wanted, and consulting. I have had nothing but excellent reviews and my long-term 'employer' couldn't be happier and the project manager believes he found me for a price that is a steal(I am paid very well by them).
I make a very pretty penny. Between my programming and consulting, I should make a 6 figure salary this year easily, which is very nice working from my living room in my Laz-E-Boy.
I will provide a reality check though. I am lucky. I know that I am the exception and anonymous people on the internet will have a hard time believing this, but it doesn't change my life whether I am believed or not. I will also say that I have put a lot of time into this. I have read dozens of books, tried so many programming languages, OSs(MenuetOS anyone?), utilities, and other things that I'm surprised my head doesn't pop. I try to keep up to date with everything as much as I can and I always am looking to improve. I have the discipline of stone and a work ethic that most people my age won't have, thanks to the wonderful military training.
My tips to being a success are fairly simple:
1. You are trying to be a business asset. If you can't make them money or cut costs, you are useless. Bottom line.
2. Communication skills are more important to landing the job than actual technical skills. The side note to this is that the technical skills will help you keep the job.
3. Get yourself out there. There are a lot of freelance website, go bid on projects.
4. Keep your skills updated. Learn the cutting edge of everything you can. Even in fields that aren't relevant, have a broad base to draw upon will come in handy.
So, it is possible. You just have to put your best foot forward and work hard. Luck will play a big part in it and it is pretty risky.
Have you thought of offering your services on sites such as fiverr.com.
I use this all the time and am constantly amazed with the quality of some of the freelancers here.
Of course, competitor sites are springing up all over the place but fiverr.com seems to have the most momentum at the moment.
You may visit sites like peopleperhour.com or odesk.com, where if you do well in the tests, people will start asking for your services.
Iqbal
Hi there, I'm replying to you because you're about as high up on the chain as I can find a good place to put this.
We all got Ask-Rolled. It's five days later, and this "king.purpuriu" character is nowhere to be found. I'm not even sure he saw these comments. I get upset when an Ask Slashdot user doesn't enter the comment fray that supposedly he wants advice on.
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine