Forgot your password?

typodupeerror
Programming IT Technology

Volunteer Programming For Dummies? 195

Posted by Soulskill
from the learning-the-ropes dept.
Tios writes "I've been studying programming languages (C++, Java, C, Visual Basic) on my own with the self-guided, basic textbooks and tutorials, and I'm starting to get tired of working with examples that are not put into real use. I'm motivated to utilize my programming potential, but I've not had any experience programming in a team environment with lead developers, mentors, or collaborators. If finding a programming job isn't an option, I wonder if I could volunteer for programming in an open-source community. If this is a good idea, how do I start? What resources are out there that could get me oriented in volunteering? What kind of basic projects are out there, with a supportive team/mentor for me to develop, practice, learn, and contribute?"
This discussion has been archived. No new comments can be posted.

Volunteer Programming For Dummies?

Comments Filter:
  • by sopssa (1498795) * <sopssa@email.com> on Tuesday July 07 2009, @11:44AM (#28609041) Journal

    The best practice is just doing it. That's how me and probably many others have learned about programming. In 90's I did have some programming and game developing books, but I pretty much read about those out of curiousity and because they were interesting. Actual programming knowledge comes from making something you like and learning from it. Every time you will learn more and more and it just goes along the way. In my teenage years coding games made the most fun out of it and I always learned more. This was even before Internet started to be so widespread, and only help I had was Delphi's (great!) manual.

    Seems you only have experience in programming by examples. There's lots of times you need to be able to solve a specific problem, and programming by examples doesn't teach that really well. You will also be relying on someone's elses views and "best coding practices" thinking, instead of actually developing your own and seeing much further. You need to be comfortable programming and solving problems by yourself if you look to join a team.

    I suggest you take some topic that's interesting to you and develop program around it. If you later get a better idea, don't be afraid to move into it. That's what happens to lots of programmers, but when learning it also improves creatly how you look at the problems and you see what you could have done better in your previous projects.

  • Exactly (Score:5, Insightful)

    by Weaselmancer (533834) on Tuesday July 07 2009, @11:49AM (#28609123)

    That was my first thought too - he's missing the *middle* step. In between examples and collaborating on a huge multi-programmer project he needs to make something for himself first.

  • by Foofoobar (318279) on Tuesday July 07 2009, @11:49AM (#28609127)
    I second that emoticon. Alot of us learned how you learned; by just picking up books and putting it to practice. But we also went the extra mile by learning about coding practices, techniques, development practices, etc. The only way you learn about Eclipse is to start using it. The only way you learn about MySQL is to start using it. The only way you learn about MVC is to start using it. You really have to dive in and just keep your head above water.Sure you may get frustrated but if you were anything but a developer, you wouldn't have gotten this far in the first place.

    Anyone can sit in a classroom and be taught but a true developer goes out of their way and teaches themselves.
  • Rent a coder (Score:4, Insightful)

    by qoncept (599709) on Tuesday July 07 2009, @11:54AM (#28609195) Homepage
    Rentacoder.com. There are a number of requests out there for simple things, requested by people without any money. The strategy seems to be for people new to the site to do a few free or low paying jobs to get their rating up before tackling the high paying jobs, but a lot of these people just need something simple and don't have the time to do it and are (necessarily) understanding of people with little experience.

    My wife does odd jobs on there every now and then. Unless you work at it, it's not going to be a good way to make money, but you'll get practical experience (coding experience, if not so much development experience) from it.
  • MUDding Community (Score:2, Insightful)

    by Cult of Creativity (1548333) on Tuesday July 07 2009, @11:57AM (#28609249)
    While it might not be exactly what your looking for, I really have to give it up for the mind/life-suck that is MUDding for me, though you could just as easily apply it to the whole gaming universe as a whole, modding, etc.. It's something that brings both fun and function/al learning together, least it did for me.
  • by Red Flayer (890720) on Tuesday July 07 2009, @12:01PM (#28609299) Journal
    Emphasis mine:

    What kind of basic projects are out there, with a supportive team/mentor for me to develop, practice, learn, and contribute?

    I think you've identified that as being the key for you.

    Do you live near a Junior/Community College? They are often great resources for things like this. The computer club or whatever they call it these days is a great way to meet people you could collaborate with, and most of the professors at most of these schools (in my experience) definitely enjoy being mentors. You'd probably need to enroll in a class to be able to participate, but classes are relatively cheap and they might benefit you anyway.

    When I finished college and relocated for a job, but didn't have a family yet, I took classes at my local CC for fun and to meet people, and joined a couple of clubs. This was a great experience for me, and there were several non-traditional (read: older) students who also participated (you might fit into this group). The great thing about the computer club was that other groups would come to us for help... we wrote a lot of programs to help the other clubs (especially the engineering club, since there was so much crossover in membership).

    I'd imagine that the computer clubs now participate in open-source projects a lot, but it's been a while since I was involved... but it probably wouldn't hurt for you to start there.

  • by iamhigh (1252742) on Tuesday July 07 2009, @12:04PM (#28609347)
    Also, what about developing a module to do something cool in a framework like Drupal or Joomla? It can be craptastic at first, but if it does what you want you are well on your way. Just clean it up a bit, make sure it conforms to their coding standards (get used to that), and submit it. Then you might be able to pull other developers in to work on *your* project, and you can learn by what they improve.
  • Re:Exactly (Score:3, Insightful)

    by Ethanol-fueled (1125189) on Tuesday July 07 2009, @12:04PM (#28609351) Homepage Journal
    Not necessarily. Submitter could take a game programming or, if available, software engineering class at a community college. Those classes almost always emphasize group projects.

    That would be a great way to jump right in to team programming experience to learn the skills of those better than yourself and you also learn the patience to work with idiots. In short, that's a great way to learn what kind of coder (team player, leader, lone wolf hacker etc. ) you are.
  • by Anonymous Coward on Tuesday July 07 2009, @12:04PM (#28609359)

    "Volunteer Programming For Dummies"

    The headline says it all. You have a marketable skill for which sensible people will pay you MONEY to perform. Giving that skill away for free devalues the skill AND your worth to the market.

    To use the car analogy, that is like saying that since you enjoy tinkering and working on your automobiles, and thus posses the skills to do so, you should not work at all on your car or any other unless someone pays you.

    What happened to doing things just for the joy of it, or even for bragging rights. Oh yes, and I'm sure being the creator and primary developer on that big open source project that now tons of people are using will not help you in any way in a job interview and / or getting a higher salary (see all of developers who authored / worked on an open source project on their own time, and later was hired and paid well by some company to work on it for your job)

  • by Hognoxious (631665) on Tuesday July 07 2009, @12:08PM (#28609429) Homepage Journal
    Drop the Visual Basic. Do it now. And never, ever, mention it again.
  • Grind your way... (Score:5, Insightful)

    by Anne Honime (828246) on Tuesday July 07 2009, @12:10PM (#28609467)

    I've been pondering over the same questions for some time, and appart from starting your own project (a good way, but not everybody has the creativity to make a successful new application, many skilled persons are best performers when putting into code someone's else ideas), I would advise you to pick a middle sized project (2 or 3 regular devs), and begin with ancillary tasks.

    Many small projects build badly for instance ; so why not clean things up there, providing a good configure script ? Submit this, do the package for your distro, and maintain it. That should give you some familiarity with the code.

    Do the code documentation if lacking, or write the user doc. Most projects lack this too. Read each line of the code in the process. At this step, you will certainly become part of the team in some way, and you will have expertise over the code.

    Clean bugs. Now, you begin to have a feeling where they might be lurking.

    Get involved in the roadmap. Code the new features you feel like you can.

    That would be my take on the process

  • scratch an itch (Score:4, Insightful)

    by richlv (778496) on Tuesday July 07 2009, @12:10PM (#28609469)

    the best course ? find something that interests you, maybe something that you use every day - and find something you don't like about the product, or maybe think of how it could be improved.
    it's famously called scratching your own itch [catb.org].
    why is that an effective way ? because you are interested, of course ! you see the results of your work, you use them.

    what project to choose ? it's completely up to you. pick one, look at what they have on their web, wiki, join their irc channel, talk with people. see whether you like them - because that is important.

    you could look at major projects who have specific sections to help new contributors like http://contributing.openoffice.org/ [openoffice.org] or http://techbase.kde.org/Contribute [kde.org], or take a look at the many smaller projects in various categories like personal or system management software, games or... anything.

    but really, basic requirements :
    1. you are interested;
    2. you can work with the people on the project.

    everything else will come itself.
    also, you are in no way limited to a single project - actually, it is beneficial to participate in multiple projects because you'll get familiar with various organisational, code versioning, documentation and communication practices. contributing a few fixes here and there can be very eye-opening on how these things come together.

    good luck :)

  • Just do it (Score:2, Insightful)

    by Blixinator (1585261) on Tuesday July 07 2009, @12:10PM (#28609473)
    Here's a few tips from my experiences. Try www.projecteuler.net Yes, they're problems with a well defined goal. But it's always up to you how to go about doing them. It's probably one of the best sites to help you develop problem solving skills using programming and forces you to delve into the often vast pool of predefined classes and methods that you will undoubtedly use again in your future if you're a dedicated programmer. I'd also suggest trying to recreate programs you've used before. One of the first things I tried to recreate was minesweeper; a project that vastly improved my recursive function programming, frame organization, and event listening. The point I'm trying to make is, the best way to improve your skills and put the knowledge you already have to good use is to just program. Go out (Well, since we're talking programming, I guess we'll stay in) and just experiment. You don't even need to have a goal in mind. Experiment with the limits of a language. Go see how well arrays handle redefinition. Find instances where you prefer one method over another. Try to improve on your past work and examples that you've been given. Just do it.
  • Sourceforge (Score:3, Insightful)

    by joshki (152061) on Tuesday July 07 2009, @12:12PM (#28609509)

    Go to sourceforge, find a project that you have an interest in, and send a note to the developer to see if he could use the help.

    Be honest about your skill level and intentions...

  • by daid303 (843777) on Tuesday July 07 2009, @12:15PM (#28609549)

    While it might not be exactly what your looking for, I really have to give it up for the mind/life-suck that is MUDding for me, though you could just as easily apply it to the whole gaming universe as a whole, modding, etc.. It's something that brings both fun and function/al learning together, least it did for me.

    If you like games, then this is the BEST advice you can get. Go get modding. I learned loads and loads of stuff while I made all kinds of silly mods for UnrealTournament. 90% of the stuff you produce is not worth releasing, but that doesn't mind. You'll just get the satisfaction of making something yourself. And with a mod you have a whole base to build on.

    Just be carefull not to jump into a mod team right away, as they fall fast, and are 99% of the time they aim to high. Just try to make simple things, as they can be great fun. (See CrateDM)

    If you are not into games, then there are many other options. If you love websites then go make something with php, just look what you need and build it. Build your own blogging software for all we care, sure there are 100000 php blogging projects out there, but that doesn't learn you anything.

  • by gjcamann (181834) on Tuesday July 07 2009, @12:17PM (#28609585) Homepage Journal

    Find a problem you have, and try to solve it by programming. Like make an address book, where you can enter in people's information and search by last name or something. Or make a program that organized your MP3 and finds duplicates. Or make a program that automatically solves Sokudo puzzles. It'll be something with utility you can use and play with, and improve over time as your skills increase. Good Luck!!

  • Re:Non-Profits (Score:5, Insightful)

    by kbromer (1220380) on Tuesday July 07 2009, @12:21PM (#28609635)
    Please, please, PLEASE be careful with this. Understand that working with non-profits is a commitment, and that they're going to be 100% reliant on your expertise and documentation. You'll need to be careful to put on your consulting hat as well, ask alot of "Why?" questions. Often times NPOs will tell you what they THINK they need, not what they ACTUALLY need in technology. Be the expert. I work with non-profits as a DB/CRM consultant, and I cannot tell you the number of well-meaning volunteers who have cost non-profits thousands of dollars (not a small sum in the NPO community) in lost time, productivity, and then additional service/IT hours to people like me to fix the mistakes, holes and general sloppiness of applications developed for them in good faith. That "volunteer" project can often turn into a massive money-pit for organizations who cannot afford it. If you do go this route, DOCUMENT EVERYTHING (EVERYTHING), and make sure the org has several copies of your documentation. I'm not suggesting you shouldn't do this, but just understand its not your personal sandbox, these are real people, doing some VERY important and impactful work (most of them at least...) Please don't treat these orgs as second-class citizens or test-beds for your corporate career or cutting-edge untested ideas.
  • by daid303 (843777) on Tuesday July 07 2009, @12:23PM (#28609663)

    Drop the Visual Basic. Do it now. And never, ever, mention it again.

    Why? Sure, no sane programmer would start a new project in VB. But next to other languages it does provide you with a bigger knowledge base. Just don't ever release something new in the wild build on VB. But don't forget, loads of corporate crap has been build on VB, and thus having some VB knowledge doesn't hurt you when trying to find a job.

    (I'm an embedded C programmer with VB6 experience)

  • Re:Start here (Score:5, Insightful)

    by westlake (615356) on Tuesday July 07 2009, @12:25PM (#28609693)

    Navigating Sourceforge is a voyage of the damned.

    There are only two types of projects here. Those going nowhere, and those already solidly anchored.

  • by hoover (3292) on Tuesday July 07 2009, @12:30PM (#28609771)

    Programming has always been about "scratching your own itch", at least that's how I got started in the early 80s when computing classes were introduced at our school in the mid 80s. I wrote a simple basic program on a genie16+ to help us with our maths assignment (some linear algebra stuff) and we both promptly got an "A" for solving the problem in an intelligent manner and not just crunching the numbers, er equations by hand.

    I agree that in today's IT world, software is available out there in abundance that probably solves 99% of the problems you might have tackled yourself 20 or even 30 years ago, but there's always something left that may seem interesting. Maybe it's not even outright programming, but "scripting together" some available tools to do a job not previously thought of by the original designers.

    The last pet project I worked on was a "remote control" for vdr because I got fed up with vdradmin-am's javascript based remote control that disappeared whenever I had to restart Minefield (so daily as I'm running 3.6a ;-). I needed a stand alone program for that, so I dabbled with Mono and its gui tools a bit, but ultimately ended up with coding something rather ugly in glade / Python.

    Of course any python guy worth his salt would ban me into the lower chambers of VB development if they saw the code, but even after 25 years of dealing with computers it's still a bit of a buzz to use your own stuff, something you wrote and that can be adapted quickly to scratch any new itch that might come up.

    In closing, you'll find something to work on without ever resorting to sourceforge if you think long and hard enough.

  • by Chelloveck (14643) on Tuesday July 07 2009, @12:59PM (#28610179) Homepage

    The best practice is just doing it.

    Amen. Find your personal itch and scratch it. In my case, many moons ago, I had spent all my money on a shiny new Apple //e computer -- but didn't have money for software. I needed to write papers for school (I was a senior in high school at the time), so I wrote an editor in the BASIC that came with the machine. It was a really lame editor, but it got the job done. After that I wrote a database manager, again because I needed one. Then I wrote a clone of the game Lunar Lander [wikipedia.org] just for the hell of it.

    Find something you want done, and do it. Don't worry about whether or not anyone else will see it. Like web-comics? Write a screen-scraper that downloads your favorites and mails them to you. Like porn? Ditto. Play paper-and-pencil role-playing games? Write a character generation program, or a combat program. Reinvent the wheel -- write something to unpack zip files, for example. Just write something.

  • by jmnugent (705421) on Tuesday July 07 2009, @01:05PM (#28610265)
    "If you have to ask, you're no use" What a decidedly non-welcoming attitude. I have the same problem as the OP, and its attitudes like this that really make me resent myself for wanting to learn to program. It's like some super double-secret club where all of the members have some attitude like "Well, it was hard for us, and we had to figure it out on our own (uphill, both ways, in the snow) and so therefor you should have to do the same before we will let you in. Sure, technology is better now, and we could improve the learning structure and lower the barriers to entry, but thats sissy girl talk." New and learning programmers don't want "constant reassurance or hand-holding"... we want mentors who will guide and teach us along the way, without being condescending or flippant. New and learning programmers have ideas and new ways of seeing things that should be equally valued for their potential. You'd think... existing programmers would understand that documentation and training efficacy are vitally important avenues to bring new programmers up to speed. The better you welcome and train new programmers, the better your field becomes. We're not asking for it to be easy.. I have no problem with "earning my place" ... but I completely agree with some other postings here that the field seems either intentionally structured to be difficult to break into... OR so chaotic and unstructured that no one gives a damn to improve those aspects of it.
  • Re:Exactly (Score:1, Insightful)

    by Anonymous Coward on Tuesday July 07 2009, @06:30PM (#28615175)

    There's another middle step he can take if he doesn't have an idea for something that he can build or if he doesn't feel confident in his own skills to take on a project like that.

    Documentation.

    Find an open source project with crappy documentation and start writing some. There are quite a few that are decent, well-coded projects where the developers haven't had time to tackle the documentation. This will probably mean spending some quality time with the code for the project since the documentation will, by design, be lacking. However reading other people's code will be help him learn, even if that code is crappy and he learns what not to do. Once he's produced a bunch of documentation, contact the project lead and offer it to the project. By that time, he'll no doubt have figured out some area of the code he'd feel comfortable improving. If he's unsure whether the project is interested in the improvement he has in mind, he can bounce the idea off the developers first. When he has questions or gets stuck, the developers will probably be more willing to answer questions and give advice since he's provided them with something of value that's saved them a bunch of work.

    Honestly, I'd prefer more people take this approach than the typical start a project and try to make it work. While I understand the sentiment behind those projects (and, indeed, started that way myself), it's still somewhat frustrating to use projects that require me to dig into the source code to figure out how to use them. If more projects had better documentation, I think open source would gain even more credibility than it has now.

Distrust all those who love you extremely upon a very slight acquaintance and without any visible reason. -- Lord Chesterfield

Working...