18

Being a freelancer, I don't have a luxury of corporate training and a circle of professional employees. Even though I have been programming for the last few years and developed professional projects, but at times I find myself in a place where there is no help. Not even StackOverflow and other related sites can help.

Take for instance, Crystal Reports. I am using it for the last few years in my projects. I learned it all by myself, but still I struggle with many issues. I am still not able to improve the performance of reports, not able to design fast and still I am able to use only 30% of the Crystal Report's power.

I reside in a city where I can't find freelancers like New York or San Francisco, to hire them for learning. A handful of experts available online are not in my budget.

I face the same problem with C# and other technologies. At StackOverflow, you can't keep an expert engaged. After two-or-three comments, he will loose focus of your question and jump to a new question out there.

Few people suggested me to look into code written by others to learn fast. But again, how to get my queries answered. There are some aspects where you just can't write it down. You need personal assistance.

I think freelancers in US have better choices and flexibility as compared to other countries.

8
  • 2
    Asking questions to the others had never been a good way to learn something. Ask questions to yourself and find the answers on your own - this way you'd learn quickly.
    – SK-logic
    Apr 20, 2011 at 9:51
  • 2
    @SK-logic: I guess it is by asking that people have learned programming. And this is why there are sites like StackOverflow and others.
    – RPK
    Apr 20, 2011 at 11:36
  • 2
    @RPK, StackOverflow is more for sharing than just "asking". There is no point at all in the RTFM-kind questions like "how to do X with framework Y". A good SO question is "I want to do XXX, tried YYY and ZZZ, and got problem XYZ, could you please suggest the appropriate RTFM direction?". Without this "I already tried YYY and ZZZ" stage your question will be pointless - both for you and for the others with a similar problem. You have do do your homework first before you ask something.
    – SK-logic
    Apr 20, 2011 at 12:23
  • 2
    Introducing StackOverflow Chat. That way, you can get engage with an expert. Apr 20, 2011 at 13:35
  • +1 @SK-logic - could not agree more. I see way too many of these "Sir/Madam, I need ERP accounting system in C++...Give me codez now." Apr 20, 2011 at 17:53

6 Answers 6

15

Being a freelancer, I don't have a luxury of corporate training and a circle of professional employees.

I think you should reconsider this.

Freelances are paid much more than employees also because they must finance their own trainings. After all, they are supposed to be expert. How can you be an expert without proper trainings AND experiences?

Training should be an integrate part of the freelancers's business plan. As well as sick days, pension, insurances, holidays, and of course... taxes.

Do you think doctors or lawyers stop learning after they leave the university? My father was a doctor (generalist), and he spent lot of money in trainings (in his case, they were mandatory by law). Not only he has to pay for them, but during that time, we was unable to bill for his work.

On +- 200 billable days, consider at least 10% of trainings.

Set your daily rate accordingly.

Tip to save on trainings: when you choose a mission, always try to pick one with a technology you don't master yet. It will not only force you to learn it, but will also make the mission more challenging, and therefore less boring.

11
  • 3
    "Tip to save on trainings: when you choose a mission, always try to pick one with a technology you don't master yet. It will not only force you to learn it, but will also make the mission more challenging, and therefore less boring." -> Problem is that when hiring a freelancer people expect an experienced professional. This makes it hard to get expertise because if you are not experienced you are not likely to be hired quick for such projects. Most people start freelancing after a long period of working for a company and gathering experience.
    – Gertjan
    Apr 20, 2011 at 7:48
  • +1 - I freelance, and certainly in the UK, that is part of the package of being freelance. You get paid more, but that has to cover lots of things permie staff get for free eg. training, paid sick days, holidays, pension, insurance etc.
    – ozz
    Apr 20, 2011 at 7:49
  • @james: Thanks. I'll add them in the answer to put emphasis on why freelances are paid more.
    – user2567
    Apr 20, 2011 at 7:55
  • + 1 i must say wonderfull answer for all freelancers. they must change their approach toward training.
    – maz3tt
    Apr 20, 2011 at 8:18
  • 2
    @RPK: insecurity is real in India where there is a lot of competition. But this is untrue in most western countries.
    – user2567
    Apr 20, 2011 at 9:52
14

Answering questions is how you become an expert. You do not become an expert by always having your questions answered by others or by having personal assistance "on call."

You do not need personal assistance. Personal assistance is nice if you want to learn how to do something quickly. An experts strives to understands what (s)he is working with so (s)he can address any question (by anybody, including yourself) that comes up. An analogy would be learning a physics formula to apply to some problem by heart versus understanding the physics and being able to reproduce the formula at will without every committing it to memory.

While having a (very specific) question answered on a forum can help you get unstuck, if you want to become an expert, you really should learn how to become self-reliant: you get your queries answered by: you. When a question pops up, you answer it by delving deeper. For example with your Crystal Reports: delving deeper means not only studying examples using Crystal Reports, but studying the Crystal Reports library code itself. That is how you start really understanding what the Crystal Reports library is about, how it is put together and thus how you can best put it to work for you and whether it is or is not suited to whatever problem you are trying to solve with it, and even how you could extend it to make it do what it can't at the moment...

Delving deeper is something most "production programmers" don't do. Go to any forum, including StackOverflow, and you will find that the community is largely divided into three groups:

  • a majority of "askers": people who want help solving the problems they encounter. They do answer question as well, but looking at their StackOverflow profile you will see that their number of questions far outweighs the number of their answers.
  • a minitory of "answerers": people who have encountered problems, solved them (with or without outside help) and are willing to help others. They do ask questions, but their number of answers far outweighs the number of their questions.
  • a group (varying in numbers) of "askers" seeking to become "answerers".

So, if you want to become an expert at something: start answering questions. Your own questions as well as questions posed by others. If you don't know the answer to a question of the top of your head: do the research. If the answer has already been given, or you find it somewhere: make sure you do not "just apply" it (like copy-pasting the code), but that you understand why the answer solves the problem and what you would need to do if the question (the requirement) were slightly different.

Oh and the reason it is hard to keep an expert engaged? All answerers on forums are volunteers. Getting follow-up questions that make it clear that the asker is not taking the answer and running with it him/herself, is not very enjoyable and motivation to keep answering flies out of the window. Getting follow-up questions that show the asker has taken the answer and done some experimenting/research to further his/her understanding on the other hand is very rewarding. It may be advisable not to do this in the same thread, or on StackOverflow in the comments, but to start another thread/question where you show where you have taken the answer to a previous question, what you have tried and where you are stuck now.

0
4

Corporate training is vastly over-rated in my experience. You can usually learn far more from good resources on the web, videos (e.g. http://tekpub.com) and good old fashioned books.

A lot of technologies also have user groups and on line communities where you can get support.

3
  • Videos and tutorials are a way behind best practices in the industry.
    – RPK
    Apr 20, 2011 at 8:32
  • 1
    Like I said, in my experience. I have attended some good in-person courses, but they are rare, and even if they are good they are still just a finite time with an expert, you will still need other resources to carry on learning after the course is finished. I'm saying they are bad, just over-rated.
    – Steve
    Apr 20, 2011 at 8:34
  • Couldn't agree more. I have been to 3-4 corporate trainings in my life and all of them are good only to get a head start. Even when the tutors are experts, there is really no time to learn and interact in the 3-4 day sessions and so on. "Advanced .." courses in 3 days should itself explain how much you can learn. Apr 20, 2011 at 18:46
2

Being a freelancer, I don't have a luxury of corporate training and a circle of professional employees.

I know how you feel, seeing I was a freelancer before (and occasionally freelance). A freelancer and contractor are regarded as experts: They are hired and paid (mostly) hourly/daily rates for their expertise services, etc. If you need to get there, finance your own courses/training. I had to do just that to be a step closer to becoming a software engineer and software architect.

Also, freelancer/contractors are expected to be knowledgeable in their fields, hence why they're hired. Most organisations provide training and courses to their permanent staff because permanent staff not only do code (for developers) but also should learn the business of the organisation (that's where freelancer and contractors are not included).

If you are not an expert in a product, you will have to do 2 things. Either you:

  • Become permanent or work in a environment where Crystal Reports is a plus. That's the only way you can liase with people. Most of the SO users here are working and are paid to work, so most of their time is to work for the company they're hired. If you want expertise, find where they work and join them there.
  • Take a course in the product of choice and learn. That will require you to spend money, time (unpaid, of course) and resources to becoming an expert (at your own expense).

I've done both and it has really been a blessing.

2
  • Unfortunately both of your suggestions don't work in India. And also, freelancers are not considered experts. Freelancers are considered as computer repairing guys and you need to prepare yourself when someone will ask you to check the keyboard if it is not working. People are still unaware of hardware and software in majority. Taking a course has always proved to be disastrous here, because after a week I realize that the tutor is less equipped than myself. Anyway, thanks for your valuable suggestions. I hope I get the opportunity to implement them.
    – RPK
    Apr 20, 2011 at 16:12
  • @RPK, interesting! I didn't know India had a different view of freelancing. Just clarify to the client that you're a software developer and hopefully apply the suggestions the OP have given here. Apr 21, 2011 at 6:50
1

Having a mentor is ideal, especially when you don't know where to start (Tough to know what you don't know.). You're working in the field, so you must come across problems all the time. Having questions is 90% of the battle. You will get answers to specific questions on stackoverflow, but if you ask "How do I build better enterprise applications?" no one is going to take the several days required to answer it fully. You may come up with more answers than questions which is a good thing.

There are tons of videos of speakers on youtube.com. Plenty of reference books and how to websites. Again, maybe they are not ideal, but you obviously want to do something. Start reading. And don't just stick with language specific books. Methodology, best practices, design and any other foundation subject matter will help.

1

I find that the best approach to becoming an expert on a technical subject is to read books about it. You can then get a complete picture drawn from someone who is a real expert on the subject. When you get the hang of reading technical material at a reasonable speed you will find that it's a very efficient form of learning because you can save time going through issues that other people have already developed solutions for.

The main advantage that US and other English speaking programmers have in this regard is that many of the books are written in their mother-tongue. However, in reality technical reading is a skill you develop with persistence anyway. It's slow going at first but becomes surprisingly easy after a while.

That said, I actually believe that it's more important for a programmer to focus on a specific industry than mastering specific technical skills. A deep understanding of a target group of customers will bring you more customers in the long term.

1
  • The other advantage in US and other western countries is that more importance is given to innovation and ethics. Hard work is appreciated but this is not true in other countries.
    – RPK
    Apr 20, 2011 at 17:12

Not the answer you're looking for? Browse other questions tagged or ask your own question.