Open Source as Programming Exp. for College Students?
texatut asks: "With the computer industry in a slump, many college CS students nearing graduation are looking at pretty meek prospects. While 'formally' educated, few actually have concrete experience dealing with development of software. Many would like to have something concrete to put down on their resume or application to graduate school. However, starting their own project is a hard and time-consuming task. Obviously, the Open Source community is a perfect place for us to get our hands dirty. My question is, are there any resources that can help people with varying levels of experience connect with development teams in a way that would benefit both the project and the students?"
The problem that some employers have with new grads is not just the lack of experience. It is also the lack of experience on large projects. Writing and maintaining a 2k-3k utility, even at a job, is very easy as compared to dealing with a small portion of a 250,000 line program.
Fight Spammers!
"Frank, sourceforge needs more hits... we'll need to buy a few banner ads"
"Nah, I've got a better idea, why not post an Ask Slashdot question where the most obvious answer is 'sourceforge'? Like 'where can I find a bunch of open source developers?'"
"Great.. I'll get right on it.."
DISCLAIMER: I'm not currently looking for more help.
While my site (db.etree.org) is not (all) open source, I have mentored a student (hey Eric) while he developed code now used on my site.
His school assignment was designing and implementing something from start to finish. He asked to work on top of the work (adding new code) I had done as his project. I hooked him up with a shell and CVS and we had quite a few phone conversations where (I hope) I taught him quite a bit.
We both benefited from the relationship in the end. Eric contacted me directly with a plan to enhance my site. This method worked very well for us...that is, someone looking for experience came up with a plan for an existing project and asked to do itand, in return, I mentored him.
SourceForge is a good place to start if you wanted to get involved in OSS development, but I would question whether such experience is truly valiable in the job market. While it looks good on a grad school application (maybe) it really doesn't demonstrate an ability to work in a close knit team, to meet deadlines, to solve problems, enguage in project management activities (in the more treditional sense).
It's true that working on an OSS project may give you experience in the actual work of software development in that you will be producing code, vary few of the software development skills msot companies look for are really developed or evaluated in the OSS world, unless you think a hiring manager at any company would actually be influenced by your code-fu rating as listed on SourceForge or Avogado. While in the strictest sense it may allow one to sharpen one's coding skills, I seriourly doubt whether it would significantly effect a hiring decision at any large company. On the other hand, if you want to start building up a consulting business it could never hurt to say you were a lead developer on OSS projects A, B, and C.
--CTH
--Got Lists? | Top 95 Star Wars Line
As someone who has hired a large number of software engineers in the last decade, I'd like to give a little perspective on this issue.
It is a very difficult market for engineers. There are far fewer companies than there were 24 months ago and those that remain have cut hiring right back. When I can hire I get flooded with applications, many of which are from people with a lot of relevant experience. A newly minted graduate is going to come up short against someone who has been building commercial software for 5-10 years.
Getting on a successful open source project and showing you can make a real contribution is going to help you stand out from the crowd. Choose your project wisely - if you want to be an operting system engineer then getting on board with one of the core Linux projects will be much more impressive than building yet another Quake level editor, and vice versa. You'll need to have people on the project who can vouch for you and the contributions you have made. The higher the profile the project and reference it provides you the better: having Linus tell me what a great job you did on the kernel extensions you built will help you a lot.
Bear in mind that to really make an impact on a substantive project, whether its commercial or open source, is going to take a while. Spending a week adding a couple of printlns isn't going to cut it.
Be aware that a good commercial software engineer has more than just technical skills. You need to be able to work under pressure, to a deadline and in a team. Just being a great hacker isn't enough. Use your time to demonstrate that you have these skills in addition to your coding abilities. One of the disadvantages of an open source project is that many (not all) of them aren't run with the degree of close teamwork and tight deadlines that are the staple of commercial software development. And of course, the one's that have established teams working on them may be the hardest for a newbie programmer to get into.
Yes, its rather Catch-22, but it takes a while to build up the reputation that will carry you into the better companies, roles and projects.
Sailing over the event horizon
I actually have always been a geek and programmed heavily before actually getting a job. In fact, I had more programming experience than most people at the first job I worked on.
But that didn't make me more productive. Working on a team in a production environment is very different than just programming on your own. I have always been told to leave Open Source stuff off of my resume. That doesn't mean you can't use it to refine your skills. I learned most of what I know on my own.
Now, by the same token, most college curriculums suck as far as CS is concerned. Realize that if you only rely on college to teach you how to program, your essentially going to an employer without knowing how to program.
I don't want to discourage OS programming, but do not do it with the expectation of having it help you get a better job. Do it because you either believe if in or because you really enjoy it. The last thing the OS community really needs are people who are just looking for resume builders (especially ones with little useful experience). If your really concerned about getting a job, get a co-op or internship.
int func(int a);
func((b += 3, b));
>>Income from Open Source means Consulting
>>and Services.
in other words, make your software so shitty and unreliable that people need to pay you so they can keep it functioning? And people bitch and moan about MSFT's subscription policies.... this is the same thing.
Here's a real world example:
The last company I worked for, we produced a very high end, specialized application with a limited user base (it is used for doing movie special effects). When we launched a new product recently, it was the work of about 40 developers, working full time for almost 4 years. That doesn't count people writing documentation, QA testers, support staff, the people that clean the toilets, etc etc etc. All told, probably between 150-200 people. So lets *conservatively* estimate the development costs at $15 million (and that is VERY conservative).
Now this work took FOUR YEARS. So when it comes time to release it, we should just give it away and expect and there will 'magically' be money to pay the rent and food for all these people? Cmon already. Should they survive on happy thoughts and good wishes?
This shows the mindset why Eazel was such a beautiful failure. They were paying these developers to produce work and had NO way to generate money.... they didn't even sell t-shirts. Yes it's very altruistic and benefits the community, but sooner or later it's going to flame out because it can't last forever - the money will run out.
If people want to give away their work for free -- more power to them. I write code for a living 9-5. And i also produce open source code after hours that I give away. And that works fine. I don't see any differentiation between giving away code you write and going down and volunteering at your local community center. People can definitely benefit from it, but don't expect that it's going to pay your rent. And don't declare that there is no right/future in charging for your work.
Software costs money to produce - you can't debate that. If you don't want to pay for your software, you're free to use the stuff that people give away and thats good. Same thought process that you don't have to pay for your groceries - you can go to a soup kitchen. Thats all well and good, but you lose the right to complain if you don't like whats provided.
I'll give you an example. We PAY to use Qt for our development. Why? It's an excellent toolkit. Sure we could use gtk for free --- but for the headache that Qt saves me $2000/year is a BARGAIN.
Same with compilers --- the open source crowd loves gcc. Hate to step on any toes but gcc is pretty sucky. Yes it is good for retargeting code, but the performance is terrible. To build the latest release of Qt on Win32 took about 45 minutes. On linux (exact same hardware) took 3-1/2 hours with gcc. Over the course of a year, the $200 we spend on Visual C will more than pay for itself. GCC will be going into the crapper as soon as somebody produces a good fast compiler for linux.
Closed source isn't dying - it's doing very well. Don't be a hypocrite/bigot. There's room (and NEED) for both commercial and free software in this world.
Wow. Slashdot is pretty full of people with lots of ideals and no skills or experience, but you completely take the cake.
Bold claim. Got any proof? Got any numbers for how many people are actually doing it? How many programmers actually make a living doing open-source programming full time today? How about a year from now, if the economy doesn't pick up? How many total programmers are there in the world? This "phenomenon" you rant about, this wave that's going to overwhelm us all, was barely even statistical noise even at its peak, and that peak has passed.
Been there? Done that? No, didn't think so. Open source or closed, your zealotry would be fatal in business. Those few people who are making money off open source have survived by learning not to piss off the guys with the money with that kind of extremism.
You might actually be right there. "Need" is a funny word. No, the world doesn't need proprietary software or copyright law. But they exist, and people - real people, not just big corps - benefit from them. You haven't provided any compelling argument that society would be better off without them. Heck, far better programmers and writers than you have tried to make such arguments, and they haven't succeeded either.
That, my friend, is called argumentum ad hominem and it's frowned upon as a fallacy. I'm not just nit-picking either; logic and debate are essential skills in the business world, regardless of whether your source is open or closed. There are myriad reasons why people participate in the creation of open source. Lambasting them all as parasites or cowards is as absurd as characterizing all open-source programmers as thieves. There's a grain of truth in each case, but no more.
Even if I were the most ardent advocate of open source - and I've probably done more for open source than you ever will - I'm too much of a pragmatist to back the losing side in any fight. You'll find that such pragmatism is a common trait among real engineers.
Slashdot - News for Herds. Stuff that Splatters.
First, let me qualify my post:
* I regularly evaluate candidates for employment in a disciplined software development environment.
* I fully support Open Source Software.
That being said, the open source code that I have reviewed has been of low quality in the areas that I look for in evaluating candidates, including:
* strong OO principles
* rigorous design
* excellent documentation
The few open source projects that I have tried to contribute to (freenet being one) actually scoffed at these points, claiming them to be the stuff of over-educated highbrows, stuffed-shirt engineer etc.
If that is the culture of open source software, then so be it. However, in the world of commercial software development, these are very real, very important requirements. The best hacker is useless if he creates an unmaintainable system.
The point is that, from my experience, OSS projects and commercial development are two very different environments (granted, many commercially-developed codebases are poorly engineered, hackfully constructed and are devoid of documentation). OSS projects will get you acclimated to integrated your work with that of other developers', but may also indoctrinate you in an unrealistic development environment.
In other words, it produces a lot of cowboys. Don't expect your bazaar approach to be successful in the cathedral.