views:

217

answers:

5

In your own experience, which working environment has provided you the best/most satisfying opportunities to really get out and learn the software skills you now have, gain confidence and get some marketable experience?

For me, it was making a conscious decision to leave the academic environment where I worked, swallow some pride, and agree to work at a much reduced salary at a graduate level (though being in my late-thirties!) for an engineering company. Boy it was humbling, struggling with things that 22 year olds found easy.

I realized I didn't know half as much as I thought I did, but as a learning experience it was second to none. For me this bit of time spent in industry has opened up vast opportunities that my previous environment never did.

I would also like to find out if people have got more out of working for small or start-up companies over larger, more well-established corporations.

+2  A: 

The biggest breakthrough for me was developing my own start-up. When you are working on your project, which is your passion and pride, you go to much greater lengths to achieve the best possible results than you would in any hired position.

I would imagine it is similar for people involved in an open-source project, however for me I was also planning on making it my source of income, so additional motivation for continuous improvement was involved.

As a result I got into Object Orientation, design patterns, agile methodologies and TDD amongst others. I learned every possible technology and methodology remotely relating to what I needed to achieve, just in case it might be useful. It was (and still is) a real journey of learning and advancement, and was one of the best decisions I ever made.

Eran Galperin
+1  A: 

I don't think it's any particular type of environment, per se, but a willingness to get out into areas where you don't know as much -- to take risks, in other words. If you're constantly working in an environment or on projects where you're comfortable and know everything you need to know, you're not going to be learning or growing.

In other words, if you're not living on the edge, you're taking up too much room. 8^)

genehack
+2  A: 

You could work as a contractor moving along to new environments every 6 to 18 months and you'll soon pick up new technical skills and learn to get along in a variety of bureaucratic and cultural landscapes - remember that computing is not really about computers! My last few contracts have been longer than this, but that hasn't stopped me learning since there has been change along the way.

You must be willing to accept the risk of being unemployed and even to say goodbye when a position is no longer right for you, but should balance the latter with offering stability of supply for your customers. If you don't feel confident with that, then stay permie.

One of the most different transitions is between public and private sector organisations, and between small and large organisations, each has a very different culture. If you can dip your toe into each of those types of organisation you'll gain a lot of perspective both personally and professionally.

The only type of environment to be avoided is those that are so chaotic and pressured that all you learn about is coping with chaos and pressure. If you can't fix it, and aren't learning from it then leave fast.

To answer your final paragraph directly, I found small organisations offer you more of a chance to take on responsibility but can slip into chaos, and large organisations offer opportunities to learn about methodology (in particular release management), but sometimes they will fail to offer anything really intellectually challenging and unhappiness can sneak up on you that way.

Simon Gibbs
+3  A: 

It goes both ways. You have to swallow your pride to leave the real world for academics. And you have to swallow your pride to leave academics for the real world.

Learn the 80/20 rule. You are not there to make the perfect product you are there to make a profitable product. You cannot spend 100 hours to do a 10 hour job. Avoid anything gee whiz and stick with simple, basics. No fancy data structures, no fancy new languages, nothing with a name (the jones method, the smith system).

Coming from academics you are going to be happier in a large corporation. In a small startup you have to be "the superhero" all the time. At the top of your game, and/or at a startup you have to be the low cost fresh-out (of school), that is well...low cost.

Both big and small are learning experiences. For example at the small company with no money you will have to spend many hours re-inventing a wheel instead of buying some $1000 item that is the wheel you need. At a large company that same $1000 wheel is likely not to get purchased because none of the 73 managers want it to come out of their accounting bucket, they wont hesitate to spend $50,000 in (hu)man hours discussing the purchase of the product because those hours are not in their budget. (having those meetings makes them look busy which is what they need to do to keep their jobs). At the large corporation though you are far more likely to get most of the tools you need to do the job, you just have to know how to play the game to get that tool into the right budget/project.

At the small company you are more likely to be "heard", assuming you have something to say. Be careful though this isnt always a good thing, say the wrong thing at a small company one time and your job there is over (within days or weeks or months).

A simple rule about managers in the big company. When you need to discuss something do it in the form of multiple choice question. Here are options A, B, C, here are the costs and the risks, which path shall we take O fearless leader?

At some point you are going to get older and you will most likely want to be in a large corporation at that point as you can be one of the masses, and hide in a corner, nap most of the day, tell stories about the good old days the rest, and go home with a paycheck for a few more years. If you wait until the last minute to learn the corporate game though you will have a hard time pulling that off. Think of those last years as comp time or payback for the years put in (at any company) up to that point. Those stories from the old timers, are worth their weight in gold and I dont have any problem with them napping at their desks the rest of the day.

I would assume that the games played in academics to get the tools/funding/etc are similar to those at a larger corporation, so again I think you would fit in better. You are likely to periodically take your academic experience and teach that to members of the corporation (the smith system, the jones method, a new programming languate), something that wont be tolerated at a small company.

dwelch
Well put, I must say.
ayaz
+1  A: 

To use an automotive assembly line metaphor, my most satisfying experiences are when I got the opportunity to design, build, paint and test drive the entire car. The least satisfying involved tightening the lug nuts, as many as possible, as fast as possible, all day, day after day.

Marketability? Specialize. Satisfaction? Generalize.

dongilmore