So many folks suggest "If you don't have anything you can show, start by contributing to OSS work!" that I sort of have the urge to be contrarian:
1) The professional degree for software engineers is a BS. You might not be great shakes when you get out of school, but you're still a professional. You know what professional means? That when you're the least experienced person in the room doing barely serviceable work, you're still getting paid.
2) Extended unpaid apprenticeships are a feature of the guild system and their modern analogues, used specifically because they make it harder to get into the field rather than easier, despite the outward appearance of offering a ladder into the field. Is that who we really want to be?
3) Every programmer you admire sucked once and almost all of them got paid back when they sucked. They often got paid in a variety of eccentric fashions, but they got paid.
You know that ubermench coding for a local company when he was 14 who, hah, had to have his mom cash his paychecks because he didn't have a checking account? His code sucked, too. It just did something that solved a problem for the business. You know what businesses do for people who solve them problems? That's right, pay them money.
I have nothing against OSS. By all means, write OSS. Get paid to do it, though. Can you FizzBuzz? Good, you're hireable by somebody. Get hired. Write code. Learn to write code better. Career path goes up and to the right from here.
Is it really that bad to work on opensource software solely because you want to?
Of course not. But there's a difference between "I work on OSS because I want to" and "I work on OSS because someone said I should". I believe patio11 is speaking about the latter, mostly.
Do we really need to get paid for everything we do?
I really think we should get paid for everything we do for for-profit companies. And if someone at a for-profit company is saying "We'll hire you, but only after you've 'paid your dues' by giving us labor for free", they do not have your best interests at heart.
Yes. Also, if I am going to put some time into OSS and I'm a beginner, I want more specific advice than "work on OSS". What's the procedure for jumping in? How many initial questions are non-annoying for the project maintainers? How do I submit a pull request? What are the projects that are near or just slightly above my skill level? Is my own project, started from scratch at my less than impressive skill level, as good as contributing to an existing project if I'm not ready?
Oh and just to tack on my Ruby specific gripe -- so what if I haven't written tests for my own stuff? Can't you teach me Rspec or whatever your shop uses instead of just tossing out my resume?
Take an afternoon to learn RSpec. there is plenty of documentation, free tutorials online or you can pay $9 to peepcode to get a screencast. Being self-directed goes a long way.
Yeah, I was definitely being a little whiny there. I did just pick up an RSpec book -- just wish TDD experience wasn't such a pre-req for getting a Ruby job.
See, I'm actually the other way, I'm really glad that testing is such a huge part of Ruby's culture. In a language that gives you so much freedom, you need something to make sure you're not doing terrible things.
Also, writing tests is a skill. After knowing how, you still can actually get better at writing tests. It's not as easy as 'just teach me RSpec,' it's more like 'teach me functional programming' or something. It's much bigger than just switching languages.
I agree that it's important for the community as a whole. But for a junior position, isn't the key that the person can write working Ruby, can get along with the team, and has growth potential? Would you hire someone who had been a hobbyist, produced some cool, working web apps, but happened to not have written a single test for them?
Totally. But knowing how to test puts you at a competitive advantage; if you had two applicants and one knew how to test already, wouldn't you hire that one?
I've been working on my own to learn Ruby, and I know TDD is a big part of things. Have you used the Peepcode screencast? Would that be a good starting point on RSpec?
Yep I've worked through the first couple chapters of Rails tutorial and launched my first rails app. I'd just like to learn more specifically about RSpec.
While that may be true in other areas, it may be difficult to get a job at one of the more well known ruby or rails shops without a GitHub account and community contributions.
1) The professional degree for software engineers is a BS. You might not be great shakes when you get out of school, but you're still a professional. You know what professional means? That when you're the least experienced person in the room doing barely serviceable work, you're still getting paid.
2) Extended unpaid apprenticeships are a feature of the guild system and their modern analogues, used specifically because they make it harder to get into the field rather than easier, despite the outward appearance of offering a ladder into the field. Is that who we really want to be?
3) Every programmer you admire sucked once and almost all of them got paid back when they sucked. They often got paid in a variety of eccentric fashions, but they got paid.
You know that ubermench coding for a local company when he was 14 who, hah, had to have his mom cash his paychecks because he didn't have a checking account? His code sucked, too. It just did something that solved a problem for the business. You know what businesses do for people who solve them problems? That's right, pay them money.
I have nothing against OSS. By all means, write OSS. Get paid to do it, though. Can you FizzBuzz? Good, you're hireable by somebody. Get hired. Write code. Learn to write code better. Career path goes up and to the right from here.