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.
It seems like he is asking the wrong people these questions since there is a lot of "I can't really answer that because I don't need to do that". I would rather know the answers to these questions from random folks on the Ruby mailing list that I haven't heard of since their experiences would probably be more fitting for me.
"I would rather know the answers to these questions from random folks on the Ruby mailing list that I haven't heard of since their experiences would probably be more fitting for me."
I'd want to hear from people who tried and failed and learn what didn't work for them. Did they do the same things as the successful people? What were the differences?
What things actually make a difference, and what things are largely coincidental.
I have not read all the articles fully so I cannot comment on the content, but I found that the way the articles were written was interesting. I mean this guy just emailed all these questions to all these people and they just replied?
Yes, i write down some questions, which was interesting and useful for me on that time, and send about 70 emails. You can read all comments i got, only one guy write that he can't publish any interviews cause his contract.
Some of guys write me that they will answer later, but i think they forgot about this.
Anyway, i'm happy that i was able to get answers from those "cool guys" ;)
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.