Slashdot Mirror


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.)."

5 of 140 comments (clear)

  1. What helped me... by johnsnails · · Score: 5, Informative

    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??

  2. Don't start as a freelancer by Tim+Ward · · Score: 5, Insightful

    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.

  3. Advice from a senior IT professional by Anonymous Coward · · Score: 5, Insightful

    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!!

  4. Rules of Freelancing by Shinobi · · Score: 5, Informative

    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

  5. Re:Don't. by luis_a_espinal · · Score: 5, Insightful

    I kinda feel like it won't be long until programming is in the same position. Scientists all have a decent enough grasp of programming that they cobble together their own software/algorithms without the need for a software engineer.

    Decent enough grasp of programming? Do you even know what that even means. I work, and I have worked, with scientists and EE majors who write copious amount of code (which sadly I have to deal with), code that looks like this (yes, this is the type of code I've had to deal with from such scientists and EE majors, and to be honest some CS majors, I'm not making this shit up):


    do{
    if (!condition1){ break; }
    else{
    // do some logic
    if(! condition1_a}{ break; }
    else{
    // do some logic, and
    // NOW, HERE IS THE KICKER, SPRINKLED HERE AND THERE if( error ){ // do a recursive call hoping the error goes away }
    }
    }

    if( ! condition2 ){ break; }
    else{
    // some other stupid logic intended to mimic a goto
    // statement because gotos are evil, but this shit is ok
    }

    // .... cue several dozen more tests like these..

    if ( ! condition_I_lost_count_how_many ){ break; }
    else{
    // do some more logic that you cannot longer follow,
    // and which makes you can to commit seppuku, and
    // hang yourself with your own guts
    }
    while(0);

    People who, intelligent as they might be, still don't fucking get why it is important to layer your functions, as opposed to opting for direct access to the same set of pointers spread all over the place. People who tell me they can write a compiler just with a look-up table based search/replace approach. People who tell me programming is nothing but if statements and for loops and that encapsulation and modularity are just academic shit that no one really uses.

    Better yet, I've had project managers of a scientist/EE background telling me, and I quote, "we do not need a design, by the time we are in the middle of it, code is different from the design and things changes, so a design is superfluous" (this for critical systems with SLOC counts in the millions.)

    It is a meme so consistent across companies it cannot easily be dismissed as a generalization.

    You, sir, don't know what the fuck you are talking about, and this mentality is the root of all the evil code monkey shit that we see in the software industry.