Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I got out of school about a year ago, and have been freelancing since then. Sometimes it seems like it would be a good idea to work for a company for a few years, to learn from people with more experience than I have. But on the other hand, working for myself has let me pursue projects/technologies that I'm interested in learning about, and I'm hesitant to give that up. Any advice?

share|improve this question
    
Depends on what you want to learn as far as I can tell. Companies may allow you to specialize more whereas freelancing forces you to wear the jack-of-all-trades hat. YOu will learn a lot from playing many roles in freelance but you will also for a company in a lot of positions be able to specialize and focus on one particular topic to some extent. They each depend. –  Chris Jun 1 '11 at 0:25
add comment

9 Answers

up vote 2 down vote accepted

In freelancing, your business value is given by seeing and solving problems, often in direct interaction with your customer. One of the hardest parts is actually discovering what your customers wants. Think of it as being a medical doctor, who has to find out about his patient's pain and develop a therapy

In a company, business value is often created by coordination of tasks with others. This requires a rather high amount of discussions and meetings. On the other hand, you might have more access to resources (equipment, knowledge, ... ) to tackle a problem. Think of it as being part of a bank that earns interests on generated knowledge.

share|improve this answer
add comment

Do both. I always have. They don't have to be mutually exclusive.

Working for a company will teach you things like:

  1. Deciphering and improving legacy code that is not your own.
  2. Meeting deadlines
  3. Documentation
  4. Making do with technologies and tools that others have selected for you.

Working freelance jobs will let you explore whatever interests you at any given moment. You're more likely to be able to play with cutting-edge technologies, and you can choose your favorite tools.

share|improve this answer
    
Sure, who needs a social life, right? (I joke, but here I am doing exactly the same thing...) –  Aaronaught Jun 1 '11 at 2:36
    
If you want to do both just be careful about whatever non-compete contract your employer wants you to sign. –  WuHoUnited Jun 1 '11 at 12:27
    
True. Also make sure your company doesn't own everything you code - even on your time. –  Amy Anuszewski Jun 1 '11 at 17:53
    
Good advice! This setup helps you learn new things and have a solid income at the same time... –  gyurisc Jun 2 '11 at 10:31
add comment

You learn the same amount - just a different set of skills.

Just like everything else, practice makes perfect. The skills required - and acquired - are vastly different from freelance work and working with others. Working in a team for X years will deeply expose you to the game of politics and general team rapport. Whereas, freelance work for X years will make you extremely sufficient at self-learning and appreciate of your flexible schedule. If you're really sitting on the fence, go and try both. Otherwise, delve (further) into what you're leaning towards and prepare yourself for the future.

I prefer the face-to-face interaction with people on a regular basis. Something that stuck from school was a teacher once said: here at school, you learn 20% from me and 80% from your classmates. I'm sure there's no evidence to back the numbers up, but I like it.

share|improve this answer
    
I am not sure about "You learn the same amount - just different set of skills". It really depends on as a freelancer how motivated you are and potentially depends on what duties you perform for a company who employs you. –  Chris Jun 1 '11 at 0:26
    
@Chris - Difference in our mentalities: you succumb to letting your environment determine how much you learn. (The first 'you' is emphasized for a reason.) –  Jonathan Khoo Jun 1 '11 at 0:51
    
Just pointing it out since you did not explicitly mention it. –  Chris Jun 1 '11 at 1:57
add comment

I'd say work for a company for a good few years, but be careful to choose a place that stresses team interaction and has strong senior developers with plenty of 'in the trenches' experience - this is vital to your success and it's hard to get when you're on your own. After that, do 'whatever floats your boat'.

share|improve this answer
add comment

Adding on - Working in an organization taught me to be a team player and things to look out for. In a real world, projects are equally driven by political decisions as they are by business needs.

You may also get exposure to working with external organizations (especially when you are in a consulting firm).

share|improve this answer
add comment

Most freelance assignments are solo projects. Contracting can give opportunity for team work. Working at a company gives team work opportunities.

What you learn in these two setups is going to be different. Which of these you learn more and which you learn less is what you will become in future.

My opinion is, there might be more opportunities to work on big projects (liken them to skyscrapers, cities, etc) when working at a company, in a team. And, there might be more opportunities to write cleverest code that you enjoy most, but could only handle projects of some size (which, in my opinion, can at best be of medium size and complexity) after which you would need to work in a team.

share|improve this answer
add comment

Find a place where you can surround yourself with mentors, strong senior people, and innovative thinkers. Make sure you're in an environment that is challenging. You can find these things in a company, or as a freelance, but as a freelance contractor, you're more at the whim of the contracts you get.

If you can, try and find a consulting company. There you can find the best of both worlds. You'll get diverse projects, technologies, but usually you'll have a great support network and you'll be surrounded by other senior consultants. And you'll also learn a lot of soft skills that will help you with the non-technical aspects of your job.

share|improve this answer
add comment

Working for a company can be pretty invaluable starting out. You get to see how things are done "out in the real world," procedures and processes that you wouldn't think of on your own.

As they say, you don't know what you don't know.

share|improve this answer
add comment

As often happens with these types of questions, the answer is somewhere in between - it depends!

There are plenty of great companies to work for, who'll give you all the learning opportunities you could wish for.

There are other companies that will suck the life out of you on some god awful project on outdated technologies.

A job interview will not often reveal the truth on what a company is really like.

Even in the really great companies you might find yourself constrained under a crappy group/division/manager.

For me, finding a great company to work for (however you define great, and whether you find out the truth) for a few years would be a great start. You can always freelance again later.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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