Slashdot Mirror


Volunteer Programming For Dummies?

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?"

195 comments

  1. make your own stuff by sopssa · · Score: 5, Insightful

    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.

    1. Re:make your own stuff by Foofoobar · · Score: 4, Insightful

      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.

      --
      This is my sig. There are many like it but this one is mine.
    2. Re:make your own stuff by vintagepc · · Score: 1

      Exactly.
      A good place to start is an open source app that you like. Browse the bug reports, find one you think you can handle, and submit a patch. It may take a few tries, but once the devs see you do good work, they'll likely let you do more. Then you can start moving up the chain, and in the process, you can mention your contributions on your C.V., both as volunteer work and experience.

      --
      Evolution - Est. 4500000000 B.C. Don't piss in the gene pool.
    3. Re:make your own stuff by iamhigh · · Score: 2, Insightful

      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.

      --
      No comprende? Let me type that a little slower for you...
    4. Re:make your own stuff by Anonymous Coward · · Score: 1, Informative

      Wow. I know people don't read the links, but you didn't even read the summary.

      He said he has done everything you just said to do already, and is looking for experience integrating with an actual development team/environment.

      To answer the actual question, your idea of joining into an open source environment is a good one. I'd also recommend looking for local Linux support groups, and if your town has a college maybe check there or at the public library. Often these groups will have meetings posted, and while the subject of the meeting isn't directly up your alley you're more likely to meet some fellow programmers & make some contacts.
      Look for people who are also interested in programming, maybe come up with a small project you can work with them on, the specific subject isn't really that important for what you're after.

      The hardest part of joining an online community is face-time, so you might want to focus more on some meat-space contacts before jumping into the deep end. Just keep at it, and you'll find some people that share a common interest. Who knows, you might even end up with a really viable project in the process.

    5. Re:make your own stuff by Tom9729 · · Score: 2, Informative

      Definitely agree. Also if you can't come up with your own ideas (it's hard) there are tons of inactive OSS projects that you could pickup; just search around on SourceForge for something that interests you.

    6. Re:make your own stuff by Anonymous Coward · · Score: 0

      I second that emoticon.

      Let me fix that for you...

      I second that emotion.

      There, fixed! Have a good day!

    7. Re:make your own stuff by StormReaver · · Score: 1

      There's really not much I can add to the great advice sopssa gave you, except to agree with him. If you want to learn to actually write software, then there is no substitute for just diving in and doing something. You'll learn as much from your mistakes as from your successes. You'll also learn a lot from reading other people's code.

      Think of something small that you want to accomplish, and then create a program to do it.

    8. Re:make your own stuff by sopssa · · Score: 1

      You either did not read my message really well.

      I'm starting to get tired of working with examples that are not put into real use.

      This implies that he has only worked on examples provided by programming books or such. You don't need a team to work on your own ideas or programs, nor you need to "join" a team to work on open source projects. But before you do actually join a team, you should be pretty used to even create and publish stuff on your own. Be it a commercial product, freeware or open source project.

    9. Re:make your own stuff by DriedClexler · · Score: 4, Interesting

      I'm in largely the same position as the submitter, and I think the problem is that jumping into existing programs like you suggest is not the simple step you make it out to be. Stuff that may same "duh!" to you, may not be obvious to others. Stupid as it sounds, what I really need is some step-by-step instruction set like:

      "If you want to contribute to [OSS project or class of OSS projects], download the source files [here], and compile them using [program], which you can download [here], by [following this compiling procedure] with [these settings]. If you're a beginner, check out the part of the code that [does simple task x] which is in [file], and see how it interacts with the rest of the program. This program depends on [other files], which you can get [here]. [Here] is an example of where it uses them."

      But I have yet to find some tutorial like this anywhere.

      Gee, it's almost like they don't want people to learn to how to contribute.

      --
      Information theory is life. The rest is just the KL divergence.
    10. Re:make your own stuff by WarlockD · · Score: 2, Interesting

      I complete agree. The best way to learn is to find a good problem you enjoy and solve it.

      I have been trying to learn practical Java even though I have a good C background. I found out the source code for The Ur-Quan Masters was released for GPL and I thought, "Hey! I love that game, it has a special place in my heart. I also know it backward and forward, lets try to convert this C application to Java!"

      Trust me, its a miserable experience though. The code is organized haphazardly, even after its been ported to the PC. I never dealt with SDL so I have to go back on a lot of API's to figure out how they are doing the graphics. Heck, all I got now is just a handful of objects that just handle some simple database operations. Did I mention I am also "learning" Java? I barely know how JFrame works let alone the Graphics object. (Or Graphics2D)

      However, but struggling with this I am learning, by leaps and bonds, more about Java than I would of ever done in a book. I have to make practical decisions on the conversion that may effect the rest of my coding (ie, should I keep the original uqm file and resource file, or construct one easier for Java to manipulate)

      If I was you, I would search the net for a project I was interested in, see if there is free code available, then attempt to finish it. At the very least your learning some basic programing skills. If you finish, you would also contribute to the coding community :)

      PS - Also, it teaches you to document your code. I can't wine about the quality of the C comments in this thing because I don't comment very well myself:P

    11. Re:make your own stuff by Tom9729 · · Score: 1

      Gee, it's almost like they don't want people to learn to how to contribute.

      Most projects do have some kind of step-by-step guide to get a build environment setup. If you have trouble, post to the project's mailing list or forum.

    12. Re:make your own stuff by fishbowl · · Score: 5, Interesting

      I wish more projects were as well-organized as KDE.

      http://techbase.kde.org/Projects/PIM/KMail_Junior_Jobs#KMail_Junior_Jobs

      --
      -fb Everything not expressly forbidden is now mandatory.
    13. Re:make your own stuff by joss · · Score: 1

      I don't really mean disrespect, but this isnt easy to say politely. It's a filter. The people running those projects are not looking to take on apprentices on the whole, they are looking for help. If you don't have necessary experience for that stuff to be understandable in the terse way that it is explained, you are likely to be a net loss in terms of time gained because you did something useful against time lost because you asked a lot of questions or did something stupid that needed to be fixed later.

      --
      http://rareformnewmedia.com/
    14. Re:make your own stuff by Chelloveck · · Score: 2, Insightful

      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 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.

      --
      Chelloveck
      I give up on debugging. From now on, SIGSEGV is a feature.
    15. Re:make your own stuff by Orkie · · Score: 1

      I think that most people just have better things to do with their time than writing such things. The assumption is: if you are able to and genuinely interested in contributing, you will figure out the easy stuff on your own.

    16. Re:make your own stuff by Monkeedude1212 · · Score: 2, Interesting

      I have never found a more truthful, accurate, and informative response on Slashdot. Parent post

      The trick is simple, understand how programs "work" - once you've got the logic down its just a matter of putting that logic to a problem, then putting that solution into code. Examples only show you putting the solution into code, and don't tackle the bigger problem of really teaching you the logic.

      The biggest problem REALLY is finding the problem. Alot of people turn away when they think "Why would I take half an hour to program a step that takes me 30 seconds to do?" In fact thats what I did. Which I now see as erroneous, because any step that will be done more then 100 times that can be coded in a short time is always worth it.

      To be honest, I found the way I started was trying to design a way to kill time in class. I had taken a VB module in Comp Tech, which was very "By example" and unapplicable. But anyways, so I popped up my TI-83 Calculator and decided to program a simple game: High or low. 5 Guesses to get the # between 1 and 100, and the Calculator would only tell me if I were too high or too low.
      After mastering that (and programming it on all of my friends Calculators, because none of us had those nifty link cables) - It wasn't long before I took up another project.

      By the end of that year, I had a small scale, rip off of space invaders, about 6 enemies approaching you on screen, and you at the bottom moving back and forth to try and hit them.

      By Finals, I had programmed dynamic solutions to series of equations (solving algebra), also an easy to read and use UI for calculating all the elements of a circle (radius, Diameter, circumference, even Arcs and stuff!). Also a program that did derivatives in calculus. Because of me, my school forced everyone to clear their calculators memory of programs before writing diplomas.

    17. Re:make your own stuff by al0ha · · Score: 1

      Well said sopssa.

      --
      Did you ever wake up in the morning, with a Zombie Woof behind your eyes? -- FZ
    18. Re:make your own stuff by Razalhague · · Score: 1

      Eww, you made it all... normal and stuff.

    19. Re:make your own stuff by TW+Burger · · Score: 1

      Well said. I like to program solutions for problems I have that do not exist. An example is that my bank can allow downloads of transactions in several formats including Quick Books format but none in a format directly usable by Excel. I wrote a utility that converts the file from QIF to CSV by dragging and dropping the QIF file onto the dialog box (I like a minimal interface). There are a lot of open source project out there looking for collaborators. Also, you could create your own open source project and solicit contributors. A Fire Fox add-in as an example.

    20. Re:make your own stuff by mwvdlee · · Score: 0, Offtopic

      I second that emoticon.

      Let me fix that for you...

      I second that emotion.

      There, fixed! Have a good day!

      And please allow ME to fix THAT

      I second that emoticon.

      Let me fuck that up for you...

      I second that emotion.

      There, fucked up! Have a good day!

      I will, thaaaaaaaanks.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    21. Re:make your own stuff by ari_j · · Score: 2, Interesting

      Incidentally, I initially got started programming by hacking an existing Lunar Lander clone written in GW-BASIC and provided with the family computer. An EE uncle encouraged me to learn how to make it display more data on screen to aid in perfect landings. Hacking on existing code is a great place to start, because the total investment between sitting down and having code that does something is much lower than if you start a new program from scratch.

      Eventually I got a book on C++ and a copy of Turbo C++ and learned the language. Around that time I discovered Minix and did a ton of programming on a 286 laptop running it, all in C. The big accomplishment was probably a set of several Tic Tac Toe playing programs with different AI strategies. Then I bought a used Sun workstation and learned more languages, probably Perl but it's hard to say anymore.

      But where I got the single largest segment of experience programming was hacking at PennMUSH, the online text-based role-playing game server software. It's good for this purpose because it is (even more so now than it was a decade ago) reasonably well-designed and well-documented, and because it is roughly the maximum size and complexity for single-programmer comprehension without investing years in the learning curve.

      Really what you need to do is find something that you want to do. Don't just try to join a project to learn - you and they will both end up frustrated. Add a feature to a program you use regularly (an IM program, for instance), write a program that would make your life easier, or fix a random bug from some project's bug tracker. If you get really desperate, watch the changelog for a program you use and try to implement equivalent changes without reading the code that was committed in the project's main repository first.

    22. Re:make your own stuff by artgeeq · · Score: 1

      For some meaty programming, I'd suggest writing a chess engine for Winboard. To get into the project, the sentence above is all you need to know. Everything else is online. One starting point is "Chess Engine Protocol" in Wikipedia. I hope you'll find out that programming isn't really about a specific language.

    23. Re:make your own stuff by StikyPad · · Score: 1

      I've worked with a lot of data files haphazardly created by some developer or another, which don't always work well or easily with the language I'm using.

      I've found that in most cases, especially if you're limited to read-only operations, it doesn't make sense to reinvent the wheel, no matter how far from a circle that wheel might be. The fact is that either way, you'll have to flesh out the data types, offsets, etc., and write code to handle it. Once you've done that, you're only creating even more code by then writing it to your preferred format, and then creating another method to read that format.

      If the storage format ever changes (which it probably won't in this case, but just for the sake of argument) then there are changes you might have to make in several locations, whereas if you're reading straight from the native data file, you'll only have to make changes once.

      The only exception to this is, IMO, if you really need a human-readable format such as XML for some reason. In most cases, the data itself might never be human-readable (coordinates, bitmaps, etc) no matter which container you place them in. I guess the other exception would be exposure to patent litigation, such as with long filenames in FAT, although I've never personally had to deal with anything like that.

    24. Re:make your own stuff by DriedClexler · · Score: 1

      Note that I said "project or class of projects". That means, your explanation is fine for any one specific project. But why isn't there a more general guide to bridge the gap between "I can write individual programs and scripts" to "I can understand real-world programs"?

      I don't see how such a guide would be a loss from the perspective of FOSS as a whole, since it would make it easier to tap already-existing programmers and increase the accessibility of projects in general.

      --
      Information theory is life. The rest is just the KL divergence.
    25. Re:make your own stuff by MinistryOfTruthiness · · Score: 1

      Nobody stays an amateur forever, Master Jedi. If they did, no one would hire or train younglings.

      If a junior developer has any potential at all, it's often worth it to take them on, develop them, use the opportunity to teach them the ways of the force, as it were. That way as they develop their skills, they grow in understanding of your project and can potentially be very dedicated and useful later on.

      I guess some people aren't really cut out for teaching, but as a general approach to "newbs," you want to look for midiclorians, not mastery of the force.

      And no, I don't really know why I went with Jedi on this one.

      --
      "I know that every word that man just said is true, because it's EXACTLY what I wanted to hear." -- Space Ghost
    26. Re:make your own stuff by Abcd1234 · · Score: 1

      Alot of us learned how you learned

      Although, apparently "a lot" of us haven't put the same effort into our spelling and grammar skills... ;)

    27. Re:make your own stuff by sopssa · · Score: 1

      This is true in corporate and business sense. But since it's open source, people can just come and go and the long-term teaching you went thru is useless.

    28. Re:make your own stuff by Anonymous Coward · · Score: 0

      > And no, I don't really know why I went with Jedi on this one.

      You tried a car analogy, but had a bad feeling about it?

    29. Re:make your own stuff by Anonymous Coward · · Score: 0

      How about starting that volunteer programming effort by programming something to track offers of free programming by students like yourselves, and make it easy for people to accept your offers. The database should be VERY up to date, assuming you are learning at a decent rate.

      This way you not only do something, you provide potential benefit to others.

      Of course, you COULD join in on OpenSource projects, or start one.

    30. Re:make your own stuff by Mangala · · Score: 1

      I haven't been on the giving end of the filter, so I don't really know how effective it is, but being on the receiving end I can say it's a poor idea. I would hope it's an oversight rather than something done on purpose.

      I long shied away from an OSS project because I wasn't interested in diving in to VS and MySQL completely on my own. Eventually, I decided to get into it, had to learn on my own, and realized that VS is very easy to get started with, C# is easy to pick up, and VS is a fantastic IDE for helping you understand a huge pre-existing codebase. I have been employed as a programmer for 10 years and have become a valuable contributor to the project. It could have happened sooner if there was a good starter guide to getting involved. It could have not happened at all if not for other factors that pulled me into it.

      Having said that... it's just a case of laziness on my part that I haven't made a starter guide myself! While I tend to ignore questions in the forum from people who display no appreciable intellect, I do try and respond helpfully to those that appear to have potential.

    31. Re:make your own stuff by Anonymous Coward · · Score: 0

      Something like this?

      http://www.netbsd.org/contrib/projects.html

    32. Re:make your own stuff by Foofoobar · · Score: 1

      Omigod, the lowest common denominator of trolling... spelling errors. Allow me to just say thenk ewe.

      --
      This is my sig. There are many like it but this one is mine.
    33. Re:make your own stuff by Anonymous Coward · · Score: 0

      Other projects don't try to penetrate young kids with the tongue of the beast.
      C++

    34. Re:make your own stuff by Anonymous Coward · · Score: 0

      Write a screen-scraper that downloads your favorites and mails them to you. Like porn? Ditto.

      The porn example is a good one. I'm pretty sure my python porn downloading meta-language is Turing complete at this point.

    35. Re:make your own stuff by The+A-Team · · Score: 1

      0) Install svn and commit your own project to it
      1) Read about and build your own project using Apache's ant
      2) Read about and build a=your own project using Apache's maven (will likely involve restructuring of your project. That is fine, and will teach you a few things)
      3) Install maven and svn plugins in eclipse. (ant is included)
      4) Use svn plugin to download open source project. (Might also use cvs. Cvs plugin is included with default eclipse install)
      5) Use maven plugin to build project cleanly. Possibly it uses ant. Probably not though.
      6) Use built-in junit functionality of eclipse to run unit tests for given project. *Don't know what unit tests are or what junit is? Read about junit. Write a junit test for your own project.)
      7) Pick a component of the project you want to understand. Inspect the units tests for this component to understand it. Unit tests are the real functional requirements documentation of any project, and usually best practices for their uses.
      8) Read dev forums / lists for given project.

    36. Re:make your own stuff by fishbowl · · Score: 1

      Thanks for the netbsd link. There is something in there that I might be able to plug into along with others from my shop.

      --
      -fb Everything not expressly forbidden is now mandatory.
    37. Re:make your own stuff by xtracto · · Score: 1

      The first thing I would recommend you if you want to contribute to Open Source programming is to get the book Beginning Linux Programming to learn about Makefiles and other source project management practices. Learning about SVN, CVS or the like is also a must.

      --
      Ubuntu is an African word meaning 'I can't configure Debian'
    38. Re:make your own stuff by Anonymous Coward · · Score: 0

      I was stuck for a long while at that sort of level. Got into game modding. Good stuff there. Then I discovered C# and .NET, in particular Windows Forms. I hate that I remained in the dark about them for so long, as trying to do Windows apps in plain Win32 in C/C++ is a nightmare, yet in this day and age, GUI apps are requisite step for an intermediate programmer.
      If you haven't discovered Windows Forms already, do so. Best advice I can give.

    39. Re:make your own stuff by cerberusss · · Score: 1

      Really what you need to do is find something that you want to do. [...] Add a feature to a program you use regularly (an IM program, for instance), write a program that would make your life easier, or fix a random bug from some project's bug tracker.

      First you narrate how you created and adapted some really cool games, then you conclude how the question asker could adapt some boring software packages. I'd like to suggest to the question asker that he picks up your first advice. There are plenty of open source games and I would suggest the (relatively) straightforward and very addictive games of Parallel Realities, two brothers creating really cool arcade-like games. Some years ago I did a write-up on how to adjust their Starfighter game to include an additional weapon.

      --
      8 of 13 people found this answer helpful. Did you?
    40. Re:make your own stuff by TheRaven64 · · Score: 1

      Gee, it's almost like they don't want people to learn to how to contribute.

      Not necessarily, but if you can't work out how to compile a project by yourself then you are unlikely to be providing useful changes. I've helped a few new people through the build process, and the ones that have problems with steps that we don't document are usually the ones that aren't going to contribute anything useful. If you ask a question that is answered on the mailing list already then you're demonstrating that you can't use a search engine to find solutions and you can't work them out yourself, which is not a good qualification for a developer.

      There are a few exceptions to this. The biggest one is if you are compiling for an OS or architecture we haven't tested before. In this case, you may be finding problems that we haven't found before. Even then, however, the good developers are the ones that find the problems and fix them. If you can't read a compiler error, then you aren't going to be much use as a contributor.

      We just gave commit rights to someone who started contributing like this. He was the first person to try building a lot of our code on a 64-bit platform. Because we use a particularly pedantic set of compiler flags, including treating all warnings as errors, this found a lot of things where the compiler complained about implicit cases between a pointer to a smaller integer. Most of these were fixed by an explicit cast, a few were fixed by turning the variable in question into an intptr_t. This kind of diff is trivial for even a novice developer who can read compiler errors (the compiler tells you what the problem is and which line it's on), but it was a good way to get started.

      The guy who made these fixes most recently committed a fairly big new API to one of our core frameworks. It went through three rounds of code review, with the initial version doing a few strange things, but the final version is really nice code. We got some good code, he got some good experience, everybody wins.

      One of our most active developers at the moment came to us with very little programming experience. He's since become maintainer or co-maintainer of several chunks of our tree. As I recall, he also had a few problems building things at the start, but he tried to fix them and didn't ask stupid questions. If you send us a build failure log saying 'what's wrong?' and it turns out to be because you are on Ubuntu and didn't install the dependencies we list in INSTALL.Ubuntu then don't expect sympathy.

      --
      I am TheRaven on Soylent News
    41. Re:make your own stuff by Anonymous Coward · · Score: 0

      just pick a linux rpm that intrests you. Pick a small one, download the source, mess with it, compile it, see how different or better you made it.

      then once you can do that, go for larger rpms

      then contact the authors, submit your change ...

      Alternatively, contact a linux rpm developer, tell him you can provide coding if he helps you get started

    42. Re:make your own stuff by elevtro · · Score: 1

      Off topic on my part.
      I'm doing a research paper for school. I'm needing to interview an industry expert. Are you a professional programmer? If so, how long have you been programming?
      Some of the highlights in your reply are the same as my theory on learning to program as a child.

      Please send a reply to elevtro at my.wgu. edu

      Some questions I have are below. Please answer the ones you can. Add any other insight you have that I may have missed.

      The question driving my paper is as follows. What are the benefits to a career in programming if you learn to program as a child?

      Child is all ages to high school, to be clear on the wide range of ages I'm looking into.

      Do programmers in the work place that learned to program as a child generate better code?

      Do they program more efficiently?

      Can they solve more complex problems faster?

      Do they write better quality code?

      Or are their usual independent learned skills more of a hindrance?

      I sincerely appreciate your time spent with this interview.

      Regards,

      Ben Stine

    43. Re:make your own stuff by ari_j · · Score: 1

      I certainly didn't mean to imply that messing with games is not an option. The whole point I was trying to drive at is to find something you think would be fun (to you), useful (to you), or both. Try different things until you find one that really gets you excited to work on, and then work on it for a while. It's a completely subjective thing and nobody can easily guess what would get another person's creative juices flowing.

    44. Re:make your own stuff by mdwh2 · · Score: 1

      Well sure, it'd be nice to set up these kinds of guides/tutorials. But the point is that people who are working on an open source project themselves usually aren't going to be interested in providing step-by-step guides for newbies, and I don't think it's reasonable in general to expect open source programmers to do this when they're main purpose is getting the product written.

      And remember - the whole advantage of open source is you're free to do this yourself. If you want to help people learn, then there's nothing stopping you taking an existing open source project, and writing all the guides, tutorials and explanation for it.

      But then again, if you can already compile and write simple programs, you don't need someone to hold your hand for the basic stuff. Just go exploring yourself - download an open source project, see how it works, play around with it yourself. I've done this myself, and it's interesting to see how other people do things.

      I occasionally get emails for help regarding one of my open source projects. I'm happy to answer questions, but there's only so much I can do (e.g., one guy saying he didn't understand programming very well, and wanted me to explain the entire project so he could learn ... I pointed him to some tutorial sites instead).

    45. Re:make your own stuff by CodeBuster · · Score: 1

      Because of me, my school forced everyone to clear their calculators memory of programs before writing diplomas.

      Did you write the "memory cleared" program? It occurs to just about every student who can program their calculator at some point, when a school which enforces such a policy, to write a program which emulates the "on screen" look of a memory clear operation, but which in fact does nothing.

    46. Re:make your own stuff by Monkeedude1212 · · Score: 1

      Yes, actually, I had done that, the teachers learned how to do the factory Reset - and insisted on doing it themselves. Hand over your calculator on your way into the gym - that was the policy.

    47. Re:make your own stuff by Anonymous Coward · · Score: 0
    48. Re:make your own stuff by Abcd1234 · · Score: 1

      Trolling? Buh? It was a pointless comment, to be sure, but it certainly wasn't trolling. Hell, did you just choose to ignore the smilie, indicating it was meant to be a good-natured jest? Or perhaps your humour circuits are simply disabled?

      That said, oddly enough, my post does allude to an important point that's relevant to this article: writing code isn't all there is to being a developer. Effective spelling and compositional skills are vital when assembling proposals, writing requirements and design documents, and communicating with clients and co-workers. Making a basic spelling mistake like "alot" in a professional email to a business partner would look decidedly *un*professional.

      Unfortunately, your average computing science/engineering degree program doesn't properly emphasize language skills, and so I regularly encounter those who possess a minimal grasp of basic spelling and grammar. 'course, that's not to say you fall into that category (you capitalize the first letter in your sentences, make appropriate use of commas, finish those sentences with periods, and follow them by paired spaces, putting you head and shoulders above many I encounter).

    49. Re:make your own stuff by cerberusss · · Score: 1

      Reading back my comment, it comes across as snide/snarky, sorry about that. I totally agree with your point -- the motivation is all important.

      --
      8 of 13 people found this answer helpful. Did you?
    50. Re:make your own stuff by Foofoobar · · Score: 1

      I find only three reasons to ever correct spelling: One is if you are losing an argument and can't find anything else to demean the person with, two is because you have an obsessive compulsive bent toward the english language and you can't control yourself anymore that someone with teurrettes can and third is if the person being demeaned is DELIBERATELY mispelling or mispeaking ("I axed you a question","u 6E pwn39")

      Regarding the smiley provided, I saw it as being contemptuous and chose to spit in his smiley face. :)

      --
      This is my sig. There are many like it but this one is mine.
    51. Re:make your own stuff by ari_j · · Score: 1

      Nah, I didn't take it that way. This is the internet - tone is lost and almost anything you say can be read with anywhere from 0% to 100% snark. Since I am often a victim of people taking things I say the wrong way, I try to give the benefit of the doubt. No worries here. =)

    52. Re:make your own stuff by deadkennedy · · Score: 1

      Another interesting activity one can attempt is to figure out what would be useful to the open source community as a whole but does not yet exist. Start by exploring already existing open source projects and the common problems they share. This valuable for three purposes. First, you end up learning by exploring. Second, you might find a way to join one of these projects instead of starting your own. Lastly, if you were to start your own open source project based on what you feel troubles the project you explore, it will be all the more rewarding in the end.

  2. Glad you asked... by dkegel · · Score: 4, Informative

    Here are a few notes I wrote a while ago on the subject:
    http://kegel.com/academy/opensource.html

    http://kegel.com/wine/sweng/ might also be of some interest.

    1. Re:Glad you asked... by Reason58 · · Score: 4, Funny

      Here are a few notes I wrote a while ago on the subject:
      http://kegel.com/academy/opensource.html

      http://kegel.com/wine/sweng/ might also be of some interest.

      I'll be honest, I thought those links were to something else entirely.

    2. Re:Glad you asked... by Java+Pimp · · Score: 1

      Here are a few notes I wrote a while ago on the subject: http://kegel.com/academy/opensource.html

      http://kegel.com/wine/sweng/ might also be of some interest.

      I'll be honest, I thought those links were to something else entirely.

      And you clicked on them based on that rather than an interest in programming topics? Dude you're messed up... :P

      --
      Ascalante: Your bride is over 3,000 years old.
      Kull: She told me she was 19!
    3. Re:Glad you asked... by S77IM · · Score: 1
      --
      Student: Is it true that the foundation of the universe is paradox?
      Master: Well, yes and no.
    4. Re:Glad you asked... by thatkid_2002 · · Score: 1

      What could kegel wine tricks possibly be I wonder...

  3. Start here by Yvanhoe · · Score: 1
    --
    The Wise adapts himself to the world. The Fool adapts the world to himself. Therefore, all progress depends on the Fool.
    1. Re:Start here by westlake · · Score: 4, Insightful

      Navigating Sourceforge is a voyage of the damned.

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

    2. Re:Start here by Misterfixit · · Score: 0

      I started working with one of the "Projects Going Nowhere" (tm) about 3 months ago. It is Ham Radio related. The original author wrote such a kluge that the project was "Hopelessly Hosed" (tm) and of course, not seeing it Work the First Time (tm) he lost interest and went back to Morse Code or something. I've been unraveling the fur-ball ever since. However, it has been one of the greatest learning experiences for me ever - and that includes having Professor Universe personally show me how to whistle DTMF tones when I didn't have my trusty BlueBox -- back in the 70's, BTW. My Advice, find a project on Sourceforge, d/l the source and try to get it to work, one small Piece o'Crap (tm) at a time. Good Hunting.

      --
      nar
    3. Re:Start here by mdwh2 · · Score: 1

      Gamedev might be a better place to find people to work with - either advertising yourself, or looking for a project to join.

      (Just beware of the "I've got a great idea for a MMORPG, it's gonna make millions, who wants to write it for me?" posts.)

  4. Exactly by Weaselmancer · · Score: 4, Insightful

    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.

    --
    Weaselmancer
    rediculous.
    1. Re:Exactly by Ethanol-fueled · · Score: 3, Insightful

      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.

    2. Re:Exactly by hazah · · Score: 1

      I think this greatly depends on the college. Last thing he needs is to end up where I went. I was fortunate enough to have the personal interest to actually learn the stuff on my own.

    3. Re:Exactly by uncqual · · Score: 1

      While this can teach one to suffer fools kindly (or, end up on the news with neighbors and fellow students saying things like "I'm shocked. He was a quiet guy but he never seemed violent before."), the number of motivated and bright students you will find in a CC programming class is quite small. These people will mostly just "want to get the project over with and hope to get at least a 'B'" and will struggle at that. You may end up doing the entire project yourself to "get it done right". This may incorrectly lead you to conclude you're a 'lone wolf hacker' when in fact, you would be a good team player if you could pick a good team.

      --
      Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
    4. Re:Exactly by Zero__Kelvin · · Score: 1

      "This may incorrectly lead you to conclude you're a 'lone wolf hacker' when in fact, you would be a good team player if you could pick a good team."

      if(you_could_pick_a_good_team) { printk(KERN_INFO "Congratulations! You get to pick your own team!); }

      Compiler Warning: Code unreachable!

      If he is any good he should get used to having people who do just enough to get by and aren't very good. It is a pretty common scenario. Of course, if he isn't very good, he is one of the 80% of Software Developers about whom one could make the statement: As a Software Engineer, you'd make a great janitor

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    5. Re:Exactly by Anonymous Coward · · Score: 1, Insightful

      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.

    6. Re:Exactly by mtremsal · · Score: 1

      Screw the middle step.
      If you're confident in your "learning skills", just find a 3 months internship.
      That's what I am currently doing and it's amazingly rewarding.
      Put your studies on hold for a semester and work.

      I can't say I had no experience with the middle step. I did code some little projects. But nothing impressive, really.

      Where I am, I have to learn things very fast, all the time if I don't want to drown.
      And what is great is that I get help from co-workers whenever I need it ( = tried for hours, didn't manage).
      Not everyone can learn vi commands by themselves. The senior cobol dev knows it, just ask.

      Seriously, I am just so happy I found this job.
      Going back to school soon, but then I can say I know some coding.

    7. Re:Exactly by GravityStar · · Score: 1

      Both writing a program on your own and working on a huge project can be valid next steps.

      A huge multiprogrammer project can be just the thing. Creating your own program from scratch takes a lot more work and knowledge than just settling into a couple of niches in a large project and learning bits of the trade. A lot of programmers at your side working away at other parts of the same program also provides you with a great resource where you can ask them: "What do you think of this?"

      But, I agree with GP. Just do it.

  5. Thank you! by Anonymous Coward · · Score: 2, Interesting

    I feel like I'm in the same boat as you. I like to read programming books and I feel that I'm pretty good at many of the higher-level languages; however, I'm not sure how to take that knowledge and apply it to an open-source community. I started by looking at Google Code and Sourceforge and the source code they provide for many programs. I feel like I'm capable of working on some of these projects, but it's intimidating when the program is stable and you don't know what to contribute. There are bug reports I can look at, but they are generally over my head.

    1. Re:Thank you! by Deltaspectre · · Score: 2, Interesting

      A good place to start is the IRC channel for a project. Especially during the summer, since the organizations in Summer of Code will have idea lists up with many many unclaimed ideas. The org I'm working for this summer is Thousand Parsec ( http://www.thousandparsec.net/wiki/Ideas_for_Programmers ), but you can find other idea pages here: http://socghop.appspot.com/program/accepted_orgs/google/gsoc2009

      --
      My UID is prime... is yours?
    2. Re:Thank you! by richlv · · Score: 4, Informative

      some projects have so called "junior jobs" - bugs or improvements that are easy enough so that a new contributor can tackle them - for example, http://techbase.kde.org/Contribute/Junior_Jobs

      --
      Rich
    3. Re:Thank you! by slartibart · · Score: 1

      Didn't really have anything to say except, Yes, my UID is prime.

  6. collaborative programming by Anonymous Coward · · Score: 0
    Can I get some help guys?

    10 print "Hello Wrold!"
    20 goto 15

    1. Re:collaborative programming by Anonymous Coward · · Score: 0

      10 gosub 100 20 goto 10 100 print "Hello World!" 110 return

    2. Re:collaborative programming by Anonymous Coward · · Score: 0

      I always used capitol letters:

      10 PRINT "Hello Wrold!"
      20 GOTO 15

      but it's been a while since the C64

  7. Rent a coder by qoncept · · Score: 3, Insightful

    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.

    --
    Whale
    1. Re:Rent a coder by Windrip · · Score: 5, Informative

      If you live in a 1st world economy, I wouldn't bother w/ RAC. Most buyers will only pay 3rd world wages to RAC sellers. It's quite frustrating and will probably be a complete waste of your time. The only Americans who make money at the RAC site are the owners.

    2. Re:Rent a coder by SirLurksAlot · · Score: 2, Informative

      There are a number of requests out there for simple things, requested by people without any money.

      You mean like the multiple requests to do the poster's homework assignments? Or the "I need a clone of $_SITE_X" posts in which they want fully functional sites for the cost of a night at the movies? Or posts like this one asking people to spam forums for them?

      Yes there are plenty of legitimate requests on rentacoder but the majority of them require you to leave any scruples you might have at the door. Rentacoder is a nice way to make a quick buck or two but he would be better off contributing to any number of other projects that actually deserve his time and effort.

      --
      God, schmod. I want my monkey man!
    3. Re:Rent a coder by computational+super · · Score: 1

      What I did, when I first started learning C and later when I first started learning Java, was to follow the newsgroup (comp.lang.c or comp.lang.java), and solve as many of the problems that were asked as I could (although in many cases, if it was obvious that this was somebody's homework assignment, I didn't necessarily post my solution back to the newsgroup). The "rentacoder" problems tend to be quite a bit more involved and poorly specified IMO.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    4. Re:Rent a coder by Anonymous Coward · · Score: 0

      I signed up at Rentacoder.com when I saw a project that I was uniquely qualified to perform (it was for configuring the open source project that I created). I began to question the site after the project was re-posted week after week with no feedback. It began to feel like some form of scam. I eventually removed myself from the site, but they've still got my social security number...

    5. Re:Rent a coder by Anonymous Coward · · Score: 0

      Hm... I don't understand that reply...

      America (USA?) is not a 1st world economy anymore. I bet there are tons of fired programmers having a hard time making a living overthere, and should turn to '3rd world' wages, so they at least get SOME money.

      In some part of the USA, you can buy houses for $1 and up to $500 that are quite okay. ANY RAC job can get you at least 10 houses in the USA.. That does not sounds too bad for a few hours of work !

  8. Getting Started by Anonymous Coward · · Score: 0

    Pick a skill you want to hone and find a project requiring that skill that has problems. Download the code and start playing.

    Request a contributor role or developer role on the project. If the team has it together, they will ask you for some samples or patches to their code base for them to review. After you've done that for a couple of patches, then you'll start getting some more access/authority and after a while, you're in.

    A good place to start (for Java based stuff) is dev.java.net or kenai.com (pronounced "key-nigh") That's where most of Sun's open source stuff is handled.

    If you want to really impress people, find a shortcoming in a tool, or a capability you want to have within your own stuff and create it. Then Blog, Blog, Blog... about it and register it with some open-source repositories like github (ruby / RoR) or Kenai (Java / JavaFX).

  9. make a game by Anonymous Coward · · Score: 0

    Make a game, even if you are not a big gamer, and there is a chance you'll quit it before its 100% complete. Here is why:

    - Games are fun for the majority of people, even if you are not into FPSs or MMORPGs, perhaps you'd be interested in some sort of card or casino game, or perhaps a puzzle game, or a jepordy / wheel of fortune trivia game, or a sports game.... the list just goes on and on
    - Game development covers alot of topics, obviously depending on the game, you will need I/O (eg keyboard / mouse handling), 3d graphics, networking / socket programming, AI, and more
    - Even if you quit part of the way through, you might have an idea for future projects, or perhaps you can spin off a component of your game into its own project

    There are many other reasons, these are just the few I just thought of.

  10. MUDding Community by Cult+of+Creativity · · Score: 2, Insightful

    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.

    1. Re:MUDding Community by daid303 · · Score: 2, Insightful

      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.

    2. Re:MUDding Community by Anonymous Coward · · Score: 0

      I second this. I learned C when I was a junior in high school at 16 (technically summer before junior year) in order to be able to fiddle around with the source code to CircleMUD. Ah the good old days. And from 14-20 MUDs sucked up a lot of my time, time well spent :) In much of the source code you will see examples of what not to do. After all many of the MUDs had their sources by a bunch of college students, often without that much programming experience. Quite often global variables abound.......But it is usually fun, will motivate you to learn the language, and you'll find many interesting features :) And it is always fun to add a new enhancement to the game, turn it on, and then see it in use :)

  11. First, write a database to keep track of your CDs by Saint+Stephen · · Score: 1

    :-) That was that the first one I did. Let's see, each CD has an Artist, and multiple Tracks, and each Track can have multiple Artists, each CD has a year, each track has a year, genre, cd has a name, bleh bleh bleh bleh.

    Write some program to keep track of your CDs. Then, realize what a dumb-ass you are, and get a job :-) rinse lather repeat

  12. To add some levity to this discussion... by motherpusbucket · · Score: 1

    you could join the Peace Corps and teach the locals how to write 'Hello Third World' programs using discarded VIC-20's.

    --
    "You can't really dust for vomit" --Nigel Tufnel
  13. local community colleges by Red+Flayer · · Score: 4, Insightful
    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.

    --
    "Trolls they were, but filled with the evil will of their master: a fell race..." -- J.R.R. Tolkien on Olog-hai
    1. Re:local community colleges by Av8rjoker · · Score: 1

      I am in the same position as the OP. I'm not able to afford college (even community college) anymore, but was just recently in school up until a few weeks ago. I would have loved to have some sort of computer club, or at the very least an IT organization available. Unfortunately, they didn't have any such thing at my "technical school", and the only way to get one would be to start my own. That could be one option, but as it was for me, might be way more than you could handle. I haven't looked in a few months, but I was not able to find any sort of local computer club that is designed for beginning programmers to help mentor, etc. Surprisingly, my school (and where I live) is about 5 miles from the Microsoft campus. Maybe I didn't look hard enough, but I couldn't find anything that wasn't an internship or didn't involve one of the large universities around here. Like the previous advice given, I figure the best way is to join some sort of open source project. Good luck!

    2. Re:local community colleges by roscivs · · Score: 1

      I've been interested for a while in setting up some sort of system for people to find a "supportive mentor" to help them learn a new programming language or a new software development skill, etc. If anyone's interested in collaborating on the project, leave me a comment or send me an email (username at domain name in my URL).

      --
      ~ roscivs
    3. Re:local community colleges by OutOfMyTree · · Score: 1

      You do need to be careful of the people on some open source projects. They are not necessarily supportive! Good mentors may be in short supply. If you run into a really bad example, just move along somewhere else. But be aware that you may have to prove yourself a bit at first, and you cannot be too thin-skinned about criticisms of your code, and you by extension.

      The parent's suggestions make a lot of sense as steps on the road.

      Actually, I got from self-taught to university lecturer in a few easy steps, but this was in the early days of computing courses, and I did have the advantage of a Math degree. You have to compete in a market with many more people with relevant pieces of paper.

  14. Re:First, write a database to keep track of your C by Anonymous Coward · · Score: 0

    This isn't a bad idea. I've started attending our local .NET User Group simply to get ideas for projects. This was one that came up which I've been planning on doing for practice. There was also a simple .NET Woot Notifier for Woot-Offs which someone developed for himself.

  15. If you have to ask, you're no use by Anonymous Coward · · Score: 0

    The people who contribute most to the community are those who take a look and figure out for themselves what they might contribute and then get working on it.

    Those who ask what to do are the ones who are joining because they like the idea of being part of something but aren't so willing to put in the effort needed to start contributing anything worthwhile. They will want their hand holding and constant reassurance from day one.... or I might be completely wrong.

    1. Re:If you have to ask, you're no use by jmnugent · · Score: 2, Insightful

      "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.

    2. Re:If you have to ask, you're no use by computational+super · · Score: 1
      "Well, it was hard for us, and we had to figure it out on our own

      Wow... I hate to break this to you, but it wasn't really that hard for us... I certainly didn't need or want any mentoring, beside the odd technical book or code samples (you know, like the ones that are freely available as open source).

      --
      Proud neuron in the Slashdot hivemind since 2002.
    3. Re:If you have to ask, you're no use by Fulcrum+of+Evil · · Score: 1

      "If you have to ask, you're no use" What a decidedly non-welcoming attitude.

      KDE isn't a social club. They're there to get something done, and if you aren't at a professional level, then maybe you need to start somewhere else.

      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.

      It's not that hard, but you have to get to at least good before you're valuable on a large project.

      we want mentors who will guide and teach us along the way, without being condescending or flippant.

      My free time is in short supply - why do you expect that it's someone's job to help you get better? Find a mentor local to you and be thankful for whatever help you can get.

      the field seems either intentionally structured to be difficult to break into

      Buddy boy, you have got to be kidding - no certs, no official gatekeeper, hell no specific degree half the time and it's hard to break in? Get a computer - any computer - and program on it.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    4. Re:If you have to ask, you're no use by TheRaven64 · · Score: 1

      It's a question of attitude. Good developers, by and large, try to figure things out themselves. Sometimes they fail. If you come and say 'solve this problem for me' then you will get less help than if you say 'I tried to solve this problem like this, but it didn't work and now I'm stuck. Please help.' We don't expect everyone new to a project to be a first-rate coder, but we know from experience that the people who will become assets to the project are the ones that try to solve problems themselves before asking for help. Every question they ask improves their knowledge and increases the number of things they can do in future without asking questions. The people who ask for help first don't improve like this.

      --
      I am TheRaven on Soylent News
    5. Re:If you have to ask, you're no use by jmnugent · · Score: 1

      I've been trying to learn programming for a few years now, and made very little (if any) progress. I have yet to find any mentor, book, or approach that makes sense to me. A large variety of mentors, books and approaches seem to be based on the belief that there is only 1 way to learn to program, and if your brain isnt wired that way, well then you suck and dont deserve any help (to paraphrase). (yes, I do try before I ask questions, because I grew up very independent) I worked in a K-12 school district for a few years and got the chance to observe a variety of teaching styles at a variety of grades. One thing I noticed with regard to really good teachers is that when they found a student not learning, they worked with that student to find a different approach that would work. I think this is a fundamental skill for any good teacher. I've never been able to find anyone in the programming field who has this skill/belief. All the mentors I've had, seem to expect me to learn programming in a very particular style/approach, and at the very instant they observe that style/approach not working for me, they give up (teaching me). I'm frustrated already, it frustrates me even more when my teacher gives up. I could learn programming on my own. I *WANT* to learn programming on my own. Nothing would please me more than spending evenings or weekends sitting at home coding something that actually works. The only cross-pedagogic approach that has been marginally successful to me is Processing.org, but as much as I like their approach, I can't seem to translate what I'm learning there over to help me understand the fundamentals of programming. (Great, I can make a circle bounce on the screen, but that hasnt taught me anything about usable about arrays, objects or functions.)

    6. Re:If you have to ask, you're no use by jmnugent · · Score: 1

      Well.. it's not hard for SOME ;)... And that's one of the things that frustrates me on top of already being frustrated. I'm 36, and I read forum comments about teenagers who pickup C or read SICP in 1 weekend and they just "get it". Boom. Done. Understood.

      I dont understand how they do that. How is it that something I find so totally foreign, they understand as simply as tying shoes. Are they seeing something I'm not? Are they processing the information in a way I'm not? There must be some arrangement/connection of concepts that they are making and I'm not. .. I just cant figure out what that is.

      I've read dozens of programming books,. I've installed and built a whole stack of different Linux/Unix distros as test environments,.. but I cant get the "light bulb" of understanding to come on. I have yet to find a tutorial that will walk me through creating simple code examples that actually mean something to me, and build them up slow enough (and explain them deeply enough) to get me to understand. ;(

  16. Re:Volunteer Programming For Dummies ! by Anonymous Coward · · Score: 1, Insightful

    "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)

  17. Non-Profits by Snap+E+Tom · · Score: 4, Interesting

    I've had a lot of experience volunteering for non-profit organizations. Granted, it's not the same type of "volunteering" that you mention, but it is a very good path to gain not only coding experience, but leadership skills, business experience, and of course, contacts. On the resume, it is definitely a differentiator. In interviews, I am always asked about my volunteer work.

    That being said, there are several pitfalls:

    1) The vast majority of non-profits are inherently very conservative and risk adverse due to their unique cash flow situation. You cannot just go into a group and say, "I'll build you X,Y, and Z and it will be fabulous." You must spend time gaining their trust in a volunteer capacity they ask for. If they're advertising on a volunteer site for a programmer, great. You're in. If there is an organization you want to help, but they're not asking for IT help, you may have to spend a long time volunteering for them in whatever role they need, buddy up to the higher ups, then offer advice on how you can streamline things for them.

    2) Be careful of the organizations you list on the resume. They might not always help. The homeless, animals, and children are all very good causes that won't offend anyone. Sadly, though, gay and lesbian causes may turn off a born-again HR screener. I'm not saying don't volunteer for controversial causes, but I am saying be careful of what you put on the resume.

    3) Be sure you know what you're doing. Even though it is a learning experience for you, it isn't. You are not giving any long term help to a organization by selecting obscure tools and sloppy coding. You will not be there forever. This goes for paid work and non-profit work. You may be hit by a bus, you may have a falling out. However, the product you create will be used for a long, long time. Use best practices and common tools. Mod me down, RoRers, but I recently talked to a non-profit that couldn't find anyone with RoR experience willing to help modify an app that some fly-by-night volunteer developed. They spent months posting on Craigslist and the usual volunteer sites, and eventually had to agree on a complete rewrite in PHP from another volunteer.

    1. Re:Non-Profits by kbromer · · Score: 5, Insightful

      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.

    2. Re:Non-Profits by Anonymous Coward · · Score: 0

      Re 2) above.

      Same goes for helping niggers and wetbacks. Other than helping them to go home.

    3. Re:Non-Profits by DNS-and-BIND · · Score: 1
      Sadly, though, gay and lesbian causes may turn off a born-again HR screener.

      What about the reverse, would that be true as well? Or does it only work one way?

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    4. Re:Non-Profits by fishbowl · · Score: 1

      I don't know how that's anything but a win-win situation.

      They don't want to hire you (they don't want you to exist!), and you don't want to work for them. FTW, twice.

      --
      -fb Everything not expressly forbidden is now mandatory.
    5. Re:Non-Profits by Zero__Kelvin · · Score: 1

      "What about the reverse, would that be true as well? Or does it only work one way?"

      I have it on good authority that the people in HR go both ways ;-)

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    6. Re:Non-Profits by Anonymous Coward · · Score: 0

      a non-profit that couldn't find anyone with RoR experience willing to help modify an app that some fly-by-night volunteer developed. They spent months posting on Craigslist and the usual volunteer sites, and eventually had to agree on a complete rewrite in PHP from another volunteer.

      Craigslist isn't exactly where Rubyists hang out. I don't know what "the usual volunteer sites" are, but apparently neither are they. They could have spent those months in having someone learn Ruby rather than slap together some probably unstructured (and in the long run unmaintainable) clone in an outdated language. (Btw how do you rewrite something that you don't understand?!) The learning curve for Ruby/Rails isn't that steep. There's great support for noobs in the Ruby/Rails community. I guess they would also have found some volunteer there, although possibly not with the greatest skills.

    7. Re:Non-Profits by Anonymous Coward · · Score: 0

      Yes, it would be much better to have something probably unstructured (and in the long run unmaintainable) in a nice modern language.

      Oops, except that's what they already had.

    8. Re:Non-Profits by DNS-and-BIND · · Score: 1

      The question is, would it violate federal law. Does the law protect everyone equally, or do people get special privileges for belonging to different groups? And why would anyone assume that gays are intolerant and bigoted?

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
  18. Real World Experience by Anonymous Coward · · Score: 1, Funny

    If you really want real world experience, then find an open-source project where a key developer has just left. The more isolated, but critical the module they were responsible for, the better. Extra points if the details of their code was known only to them, and if they were fervently against comments of any kind. Step in and attempt to decipher their code in order to add enhancements. Request that the project leader withhold 50% of the requirements for all enhancements until 2 days before a release. Work 80hrs a week to implement those requirements on time, only to have the whole effort canceled at the last moment. Lament how you thought software development was all about teamwork instead of a shallow money trench where good men die like dogs.

    1. Re:Real World Experience by motherpusbucket · · Score: 1

      Well, my spirit is now broken :(

      --
      "You can't really dust for vomit" --Nigel Tufnel
    2. Re:Real World Experience by Anonymous Coward · · Score: 0

      Work 80hrs a week to implement those requirements on time, only to have the whole effort canceled at the last moment.

      ROTFL. If you want that experience, I recommend a paying position for a proprietary software firm. After a while, you'll learn to sniff out this sort of unnecessary work, and then you can just read slashdot on company time while doing just enough work to make it look like you're making progress. Then when the notice comes down that your project was cancelled, you can just smile and say "No problem, what's next"?

  19. Many Options by Thyamine · · Score: 1

    I started at a general computer support/consulting company doing non-programming things. Made it known with my boss I was into that (my degree was CompSci), and we started doing inhouse things with Lotus Notes, which moved into web apps and SQL databases. Then clients started wanted work done and I was able to do that until now I'm basically doing web app/database development full-time with ASP.Net and SQL Server. The only drawback being I'm the only developer, so I don't get to interface with other devs to bounce ideas off of, or know when I'm on the wrong track with something.

    On the other hand, I'm learning and playing with Objective-C on OS X from a book, which is how I learned the other languages I currently use, so if the books work for you it's not a bad route to take.

    --
    I will shred my adversaries. Pull their eyes out just enough to turn them towards their mewing, mutilated faces. Illyria
  20. Re:Volunteer Programming For Dummies ! by Anonymous Coward · · Score: 0

    And who will pay him for programming work if he doesn't have experience?

    You are not a great developer are you?

  21. Drop the Visual Basic. by Hognoxious · · Score: 4, Insightful

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

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:Drop the Visual Basic. by daid303 · · Score: 2, Insightful

      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)

    2. Re:Drop the Visual Basic. by Anonymous Coward · · Score: 0

      So if I ever needed to know the C equivalent of on error resume, you'd be the go to guy.

    3. Re:Drop the Visual Basic. by Anonymous Coward · · Score: 0

      I personally find it humorous when people scream in horror about Visual Basic while evangelizing C#.

      On the .NET platform VB, C#, and even Managed C++ all get reduced to the same IL.

      In business apps, companies would rather have the app now than wait an extra 3 months for the programmer to shave a CPU cycle off performance in a rarely used part of the code.

      A good programmer is able to do great things with any language (even VB). A bug in VB code may crash the app, but a bug in unmanaged C/C++ code can crash the whole computer.

    4. Re:Drop the Visual Basic. by Anonymous Coward · · Score: 0

      > having some VB knowledge doesn't hurt you when trying to find a job

      Yes it does. If you have it, you just end up being a VB app maintainer. If you know VB, never ever mention it.

    5. Re:Drop the Visual Basic. by ADRA · · Score: 1

      For what it was, VB6 was pretty good. I'd say it was excellent for the roll it was meant for, creating powerful GUI's that anyone could easily put together. It sucked when you wanted to do anything complex, but that was usually abstracted away to ActiveX land. I would say that the .NET reinvention of VB killed the platform. And as most have seen, you may as well learn C# instead, since that's the language VB.net was modelled off, not VB6.

      If a new programmer decided to learn VB.net, I'd say they're wasting their time. The only -good- options for Visual Basic (the language/platform) are VB6. If you want to learn a relevant programming language, this isn't it.

      --
      Bye!
    6. Re:Drop the Visual Basic. by Atrox666 · · Score: 1

      Have you ever created a GUI interface using Visual Basic to track an IP address?

  22. Grind your way... by Anne+Honime · · Score: 4, Insightful

    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

  23. scratch an itch by richlv · · Score: 3, Insightful

    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.
    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/ or http://techbase.kde.org/Contribute, 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 :)

    --
    Rich
  24. Just do it by Blixinator · · Score: 2, Insightful

    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.

    --
    "The Y chromosome is genetic. The odds are very good that if you are male then your father was too." -Internet Commenter
  25. Sourceforge by joshki · · Score: 2, Insightful

    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...

    --
    I do not read or respond to AC's. If you want a discussion, log in. Otherwise, don't waste your time.
  26. Learn how to learn first by Anonymous Coward · · Score: 0

    Don't learn four languages at once. C++ itself takes a solid year of learning to be proficient. Anybody who says otherwise has no idea about how complex and dangerous C++ is.

    Don't use "tutorials". They are always vain efforts written to bring attention or AdSense revenue. The very worst ones are video tutorials - search YouTube for "C++ tutorial" some time. It is sickening.

  27. Make your own problem by gjcamann · · Score: 2, Insightful

    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!!

  28. No experience required. KISS coders always needed. by ctdownunder · · Score: 1

    I have helped with OpenVZ and mysqlBind/unxsBind/iDNS. What I liked the most is that you don't need to be an expert kernel hacker to provide value. And the unxsVZ source code is very easy to read and code for. Since they use academic UK style C indentation and not the K&R classic style.

    --
    The government has a defect: it's potentially democratic. Corporations have no defect: they're pure tyrannies. -Chomsky
  29. GiveCamp.org by SirLurksAlot · · Score: 2, Interesting

    It isn't open source but it is volunteering for non-profits. I'm actually volunteering as a developer next weekend. Student volunteers are accepted and they are partnered up with more experienced developers. The projects are scoped to be completed in a three day time frame, and it is a great opportunity to meet people in your field, not to mention being able to contribute to a worthy cause.

    --
    God, schmod. I want my monkey man!
  30. Find a Mono project and rewrite it by Anonymous Coward · · Score: 0

    There are a growing number of Mono based applications being released into the wild in an attempt to undermine the Linux world. Pick one you think you might be able to port to C++ or C or some other non Microsoft language and get cracking. You'll be doing all of us a favour.

  31. Re:Don't do it! by Anonymous Coward · · Score: 0

    Says the guy who dreams to work at Microsoft and is too dumb to be accepted by the community.

  32. get mentor by fulldecent · · Score: 1
    --

    -- I was raised on the command line, bitch

  33. Scratching your own Itch by hoover · · Score: 2, Insightful

    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.

    --
    Ever wondered whats wrong with the world? http://www.ishmael.org/
  34. code golf by BLSully · · Score: 1

    Try some of the easier projects on http://codegolf.com/ . The goal is to write the code to create a given output in as small a file size as possible, but it gives you a defined goal to achieve without being too much like the "Hello World" programs you find in every programming book and tutorial on the planet. Some of them are pretty easy, some of them i just stare at and wonder how on earth I'd ever complete them. A lot of them (maybe all of them?) are more about creativity than knowing obscure functions in a given language.

  35. Notes on Contributing to a Project by mpapet · · Score: 1

    I wonder if I could volunteer for programming in an open-source community.
    There is an infinite supply of worthy projects. The hardest part is not the feature/bug you intend to do work on, it's getting a handle on the coding style of the project. One person's readable code is another person's spaghetti code.

    And then there's the social hurdle of contributing code. If the person maintaining the code base may not accept your patches. Don't take this the wrong way. If they are motivated to assist you in becoming a better coder, they'll give you good feedback. If they aren't, and many times they won't be, then don't let that stop you from maintaining a set of patches and perhaps a build of the same code.

    Whatever the depth of your motivation enthusiasm, you want to match your time commitment/capabilities to code quality. For some, a little time is needed to do elegant coding. For me right now, lots of time. So, I contribute minor things whenever possible while others more skilled would contribute by solving harder bugs adding bigger features.

    If this is a good idea, how do I start?
    Start today! (gorrilla biscuits anyone?)

    --
    http://www.maxineudall.com/2010/02/should-economists-be-sued-for-malpractice.html
  36. Database front end by XB-70 · · Score: 1
    What a great question. To my mind, the software that would have the most potential is a database forms and reports front end.

    The existing forms and reports development platform included in OpenOffice needs a ton of work. Take a look at M$Access. It's a very easy-to-use development platform but the back end is NOT a real database (like, say, PostgreSQL, MySQL).

    --
    *** Don't be dull.***
  37. My suggestion by C_Kode · · Score: 1

    Think of a problem that you would be interested in solving. (this is how most open source projects start) Once you've got an idea, look to see if a project exist. If you find one (or a few) see which one interest you the most and make contant with the project and see if you can offer help. Being inexperienced can be a road-block, but you have to keep at it. If you don't find a project you like or are unable to help out, start your own! Head on over to SourceForge and create a project!

    1. Re:My suggestion by Whitemice · · Score: 1

      If guidance is what the poster wants then joining an existing project is a much better idea than creating a new [lonely] one. And from experience, joining an existing project is just more fun.

      --
      Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
  38. cell phone app - hotest platform around by peter303 · · Score: 1

    Android, iPhone, WME: your choice.
    These gizos are loaded with more GUI devices than average computer which suggest creative uses. At the same time cell phones have less computing resources- almost as small as a 20th century computer [shudder]. Limited resources can teach you some programming economies.

  39. gnu by dscarrol · · Score: 1

    Look into GNU projects! http://www.gnu.org/ for example, kde is always looking for developers :) http://www.kde.org/getinvolved/ I think these are good places to look for projects * ~

  40. Take a community college course by jmcbain · · Score: 1

    If you started programming as a hobby, you need feedback to see if you are proceeding correctly. Take a couple of community college classes. Usually the instructors are experienced software engineers who are teaching on the side.

  41. CodeKindness - Tech volunteers for nonprofits by davecrusoe · · Score: 3, Informative

    Hey there, We created Codekindness, http://www.codekindness.org/ a site that links volunteer programmers and other techs with nonprofit organizations. Interestingly, the project itself needs some support, and so if you (or anyone else) who reads this would like to take it over, please contact me (through the contact form on http://www.plml.org./ The site has been successful in the past, but there simply isn't a time to run it now - despite that the need is greater than ever. Want to make a difference? It's an open project! Cheers, --Dave

    1. Re:CodeKindness - Tech volunteers for nonprofits by yaasman · · Score: 1

      Im pretty much in the same situation as the original poster, and that site looks promosing, no new offerings tho :(

    2. Re:CodeKindness - Tech volunteers for nonprofits by davecrusoe · · Score: 1

      Would you like to help develop the project? It's PHP and CodeIgnitor - and needs some interested people to help start it back up! We had created a lot of connections to mine as supports once it's minimally supported... --Dave, http://www.plml.org/

    3. Re:CodeKindness - Tech volunteers for nonprofits by davecrusoe · · Score: 1

      p.s. in response to a couple questions, yes, please, come one, come all - just send a note through the contact form on http://www.plml.org/ and I'll get back to you with some next steps. Thanks & cheers, --Dave

  42. more do, do, do, less jaw, jaw, jaw by c4t3y3 · · Score: 1

    If you never wrote anything useful, or are not able to think of any meaningful goal, you are still on a basic skill level. If you need other people to motivate you to keep learning, programming may not be your vocation. It isn't the end result what motivates a developer, it's the joy of learning, and writing software is part of it. But don't despair, I guess you didn't see the whole picture yet. Choose a language and start reading weblogs, you may find a vibrant community to inspire you. And more important: have fun, only that will keep you going.

  43. I hate to say it... by hesaigo999ca · · Score: 1

    Depending where you live, (Me in Canada)...you at least need the certificate to open the doors, just doing it in your basement does not cut it anymore. If we lived in the old world based on skill and merit, maybe but, the new world is all about what's on paper.
    Although a certificate does not mean much, it can portray you at least respect you need some sort of formal training and
    this will let them believe that you might also respect their company's structure.

  44. Find a local Coop by geeper · · Score: 0

    When I was in your position, I happened upon a local food coop that needed some programs written to help with mailing lists, customer info, etc. They didn't have much money and I didn't have much skill - it was a perfect fit. This helped me in my programming and more importantly, how to spec/estimate for programs and communicate with customers. I also got some free snacks and drinks every time I went to see them.

    --
    Error reading device 'Signature'. (A)bort, (R)etry, (F)ail?
  45. Just Ask! by Whitemice · · Score: 1

    Find an Open Source project your interested in (I work on OpenGroupware) and ASK! If you demonstrate you are seriously interested I doubt you'll have any shortage guidance. In Open Source, and probably proprietary shops as well, aspirations also exceed available resources (time).

    --
    Using "Common Sense" is being either to arrogant or to ignorant to ask people who know more about something than you.
  46. Try writing good bug reports by bmajik · · Score: 2, Interesting

    Step 1: find a peice of F/OSS software that you are interested in, use, or would like to use
    Step 2: use it to do real work
    Step 3: notice something in the product that appears to be a bug or a limitation related to your real-world use or desired real-world use
    Step 4: grab the code and start looking through it. Determine where in the code the problem seems to exist. If this is a segfault or something, fire up GDB, get a stack trace, grab the correct variable state to show the data conditions leading to the problem
    Step 5: construct a repro case for the bug that shows it is a problem with the code and makes the problem portable out of your environment into the maintainers environment

    At this point, you can contact the maintainers of the project if you want to. They'll appreciate the detailed research you've done and usually it won't take them long to come up with a good fix.

    Or, you could keep going

    Step 6: construct a hypothesis about what the problem is. If you have a repro-scenario and know where in the code the problem is surfacing, work backwards to understand the data and instruction flow that gets you from reading the repro state to the code blowing up. Based on your understanding, form a hypothesis as to what the specific defect is.

    Step 7: begin working on a local fix (i.e. don't do a world-visible checkout to a version control repository) to the problem. Continue iterating on your fix until the repro-case you identified earlier appears to have been repaired. Now test the program on cases that used to work prior to your fix to do some sanity checking that you've not introduced regressions.

    Step 8: once you have a fix that appears to work, check your fix against any coding styles or other conventions that appear to be in use in the project. You may want to look at past respository commits and comments in the file(s) you've worked into infer as much as possible about this.

    Step 9: wrap it all up. Compose an email describing the problem, the repro case, your understanding of the the solution, your patch, and the tests you did on the patch. Email the maintainers of the project and ask them if your problem and solution make sense.

    Step 10: based on what the maintainers say, your work may be done or you may need to iterate on your patch to improve its quality or conformance to the projects expectations. Your goal is to get a developer to accept any part of your work -- ideally, they'd commit your patch as-is, but if nothing else, the investigation you've done thus far will be helpful to them if they want to do a "better" fix in the future. And the tests/repros you've documented will be helpful for you (and them) to try when evaluating future fixes.

    This is the easiest way to get your feet wet in _any_ F/OSS project. I've contributed small fixes to a few different projects, and all of them were because I was trying to do something with the software that didn't work for me and my scenarios, and I investigated the problem to resolution and then submitted my findings to the real maintainers. In no case have I asked to become "part of the project" or any other such thing. If you find yourself drawn to a particular project on a regular basis, doing what I've described on a frequent basis will show the existing maintainers that you are serious, you are committed, and that you do good quality work. They'll ask YOU to start looking at stuff above and beyond what you've already done, and the involvement and sense of inclusiveness will happen naturally.

    Most people love to get free work done on their projects. Most have open repositories, email lists, and IRC channels. Just get to work :)

    --
    My opinions are my own, and do not necessarily represent those of my employer.
  47. Re:First, write a database to keep track of your C by digitalgiblet · · Score: 1

    For me it used to be about creating character generators for various role-playing games. I had some pretty good ones back in the Commodore days. I especially liked my Star Frontiers generator. Good times, good times.

  48. But when the point is experience over money... by SuperKendall · · Score: 1

    If you live in a 1st world economy, I wouldn't bother w/ RAC. Most buyers will only pay 3rd world wages to RAC sellers.

    If I were wanting to break into programming though, it seems like a good approach - it's better than an unpaid internship in that you earn a little, and have some practical work experience you can point to (which is more than a number of college grads can say).

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  49. But what about the mentoring aspect? by raw-sewage · · Score: 2, Interesting

    A lot of comments here are of the "scratch your own itch" or "just find a project and dive in" variety. I think those are great ideas.

    But what about finding a mentor or coach? I've been a professional developer for about eight years now, spanning two jobs. In my first job, I had a mentor. Not so much for coding, but just someone to show me the ropes around the company, explain why things are the way they are, etc. I learned a ton from him; maybe stuff I could have learned on my own (or at least via asking lots of different people questions), eventually, but the frustration level would have been significantly higher. My mentor ultimately moved on, but by then I had gained experience and responsibility in that group. I knew what I was doing.

    Another, experienced developer came into the group. I wouldn't call him so much a mentor, but a peer who was great just to bounce ideas off of. We could have easily worked in "silos", with a minimum of communication, and probably been reasonably successful. But, again, just having a willing cohort made things go a lot more smoothly.

    All the above regarding my previous job has been underscored by my second and current job: no mentoring, total "trial by fire". Yeah, I know what I'm doing now, and can get by well enough. But I was miserable for a long time, given that there were simple things that someone could have helped me with and saved me a lot of time and frustration. And the "team" I'm on consists of me and one other guy. The other guy could have been a mentor, as he has several more years of experience in this field than me. But his communication skills are awful. And even though his code works, everybody who has ever looked at it cringes in disgust. So, if anything, he's an anti-mentor.

    The point in all this: in coding, or even work in general, it's nice to have a mentor, or at least a teammate with whom you can have an intelligent conversation. I personally find myself learning more, at a faster pace, and less frustrated when working with someone who's at least in the same ballpark as me mentally. Especially with coding: I greatly lament my current lack of teammates with whom I can do "cardboard programming"---just talking through my work out-loud, or bouncing ideas off someone often results in better code or design, or in the worst case, a better understanding of the issue(s) at hand.

    1. Re:But what about the mentoring aspect? by Anonymous Coward · · Score: 0

      I enjoyed the camaraderie of days spent dredging up solutions with scripts and then later using some very simple coding. I've long since drifted out of anything vaguely similar to programming. Problem getting back into coding nowdays is that code friends are far too busy to help someone on training wheels. In my mature-age student outlook it seems programming something in C like a reasonably complex file-based converter versus an actual useful mini application is a rather large chasm to cross. Just a text editor & gcc just won't cut the mustard (although maybe there's a pre-fab VMware image somewhere :)).

      Contributing to an OSS feels like a valid stepping stone -well, maybe more of a big stretch outside the comfort zone- but at least it's getting one's mind off the couch of mediocrity and onto learning New Stuff. Anyways, thanks for all the constructive replies folks - they're all interesting, useful and appreciated.

  50. Get a Good Start by sherriw · · Score: 1

    It's less important for you to read books on how to use specific programming languages, and more important for you to know how to code well. A book like Code Complete is a good start. Make sure you can write clean, efficient, well organized and sufficiently (but not overly) commented code. Once you are confident you won't be doing shoddy work, hop onto a site like Sourceforge and start browsing the open source projects on there. Pick an application that interests you or maybe one that you already use and enjoy.

    Start by writing small enhancements for it like bug fixes, plugins, addons or new features. Submit your code to the project's community for review and critique and feedback. See about having it added to the core application or to the list of plugins. Log your bug fixes on to the bug reports.

    For example, I really enjoy using the open source Wiki engine Dokuwiki. If I was going to try starting to learn PHP (I already know it) I might start by contributing some plugins for Dokuwiki for example.

  51. first, do no harm by SuperKendall · · Score: 1

    I would agree with many of those saying start your own project first, or some simple stuff from places like Rent-A-Coder that another poster mentioned.

    The thing is, that being not very experienced you could well do more harm than good to start with. It's why it's so hard to find a job with a company just starting out, and also why you might have trouble integrating at first with a big open source project.

    So you need to build a bit of real world experience... your own project is good, as long as you publish it somewhere so people can look at it and decide if they like the work you do. You could go into an established open source project and do simple fixes here and there, submitting them for approval until you build up the credibility to be a committer.

    I'm not sure I'd go into non-profits as one person recommended, because chances are you are going to be The Guy. That is really the situation where you could do more harm than good until you do have the experience to ask them what they really want (or better yet, really need) instead of building what they say to build.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  52. start writing your own app by ranjix · · Score: 1

    I'll try to be as unbiased and fair as I can.

    First, I would not take someone with no experience in programming into any of my projects. I expect the projects I'm working on to be, at every level, as thorough as they can be, and this will not happen with a completely inexperienced person. IF I would decide that there is a small part completely isolated and replaceable (and re-writable by an experienced person in a couple of hours), which would not effect the performance and security of the product, then MAYBE. But, in general, would be a no.

    Second, the fact that you assume that's the language that counts makes me see how inexperienced you are. Is not enough to know programming languages, one should know basics about how a computer works (some OS understanding), how certain networks or protocols work, what algorithms should be applied and when, basics about transactions, files operations and sharing, possibly databases, and frankly some parallelism and multi-threaded programming. I wouldn't be worried if one doesn't know that should use a "repeat/until" instead of a "for", but I'll be worried that a highly-used table in a database will be locked.

    In conclusion, define a problem you'll personally like to solve (same way that youtube, facebook, twitter and myspace started), and bang in it until it starts looking like a "product". Consider it a serious project, think about source control, backups, test harness to check the performance and security, and it will give you enough insight to give you the experience you want... With a project done (or sufficiently advanced) at your belt, you should be a lot more marketable.

    Good luck

    --
    I had another sig before, but this one is better
  53. My 2 cents by revjtanton · · Score: 1

    I'm sure this point has been made in one way or another but I want to make a simple point about Open Source and beginning programming. Open Source is driven by private projects.

    If there is something you'd like to use (i.e. an application that interfaces with something or calculates something for you) and you don't know where to find it build it! That'll give you the experience AND that's how most Open Source projects start :) Even better, if you'd like to integrate something like Twitter or Facebook into something you'll get experience doing something for yourself using tools provided by someone else (so you get that mentor/lead dev kind of feel).

    If dealing with web stuff isn't your cup of tea theres always Android dev or something like that. With Android you'll have the experience of using Eclipse and all that while developing for a simpler platform.

    I'm only like 1 step ahead of you in all of this so I hope my advice helps. I'm explaining what I've noticed going through the same motions you are :)

  54. Pick up a basketball. by v(*_*)vvvv · · Score: 1

    Here is why you are making this a difficult problem for yourself. Social and technical skills do not have to be acquired simultaneously. First and foremost, programming is best learned on your own, and programmers often aren't good teachers of teamwork to begin with. So I say, do something specifically for teamwork. Like, picking up a team sport.

    If you are making social skills into a technical problem for yourself, you are already starting off on the wrong foot.

    If you want to become the leader of a programming team, first and foremost, you should be the best programmer on that team. If you were at that level with your programming, you wouldn't be looking to volunteer.

    If you just want to be on a team, but not necessarily lead, then you don't need to focus on team skills. Just get your foot in the door with your programming portfolio/degree, and learn at the workplace like the rest of us.

  55. Get some real source code by Anonymous Coward · · Score: 0

    Get open watcom c++ http://www.openwatcom.org/ and start here: http://www.scene.org/dir.php

  56. dangling modifier by Hognoxious · · Score: 1

    Are we talking about dummies programming the volunteers?

    I think the scientologists are over there ---->

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  57. answered your own question by convolvatron · · Score: 1

    congratulations for deciding you could use someone with experience to be around

    go to the most challenging and difficult shop you can possibly. not a community college or a university.
    someplace where they write compilers for toy languages over a weekend. can spend an hour talking about the
    first 100 instructions after hard reset. someplace where they actually code instead of whinging about patterns

  58. See Collins-Sussman's and Fitzpatrick's Tech Talk by mdblake · · Score: 1

    If you haven't seen it already, you'll want to watch this great Google Tech Talk on how to survive and thrive on Open Source project teams.

    Beyond what the title claims you'll learn from the talk, you'll also also come away with a ton of excellent insight into how to recognize healthy project teams.

  59. Precisely by goldcd · · Score: 1

    I was on a message board for a while and had a strop and threw my rattle (long story, nobody comes out looking good).
    Anyway, decided I could do better myself.
    I use Oracle at work, so knocked up something in PL/SQL. Now nothing wrong with Oracle, but it's a slight over-kill for a message board and a little expensive should you choose to license.
    So I picked up an O'Reilly PHP/MySQL book and started reading.. then got bored and started coding.
    It is SO much more productive to have a goal and bang your head against it until it crumbles (the tears and suffering fade from the memory). Anyway, got it done and if nothing else I have new lines for my CV.
    Site was popular, over-ran the shared hosting, so now leased a dedicated server (kind patrons of the site pretty much cover the lease).
    Once you've got the server, the mind wanders - so SSL, mail servers, MMS/SMS integration, Google Maps etc etc follow. Once you've got a 'project' suddenly feature creep is quite fun - get to spend an evening prototyping something, and if it works then you have a new feature. (bobpitch.com)

    Next 'thing' was that I wanted to sell some DVDs on Amazon/Ebay - I'd bought NAS and was going media-less. Found it a pain in the arse trying to work out what stuff was worth cash and what wasn't. So stumbled on the Amazon API and automated it. Seemed a waste not to share my knowledge, so just shoved up a domain with a lookup on it (checkean.com).
    Then somebody saw that and actually asked if I'd make a tool for them that would bulk it through CSVs and check another site. Other site didn't have an API, so I learnt about curl. Anyway got it working and got a bit of cash. Doesn't match my 'real world' hourly rate, but felt so f'in good for somebody to recognize your tinkering as being worth cash. Since then a few other people have stumbled across it, and signed up as well.

    Anyway, not quite sure what my point is. Maybe there are a few:
    PHP/MySQL - Easy to make stuff with and bang it out.
    Web Apps - People will 'find them' and you get to plunder and mash all the rest of the stuff that's out there. Build what interests you - and tinker yourself stupid
    Work alone - Personally, I have enough of hierarchy at work. The stuff I do is MINE. I MADE IT. Doesn't mean others haven't helped me out and that I don't appreciate the help, but just something lovely about an idea coming into your head and making it real. Message Board 'project' is sortof finished now and code's been cleaned up. Few more things to do, but then I'll chuck it at sourceforge. I like OSS, but seemingly don't like sharing.

    There's probably more and I think I'm just repeating what others have said - I'll stop.

  60. read source code by prollifik · · Score: 1

    When I learned to program, I think reading a lot of source code from different open source projects I was interested in helped me a lot. I usually picked up small enough programs. You don't need to understand the whole program either, if you're bored, you can satisfy yourself with only a piece of the code. You'll have to do that and read books too, because sometimes you will come upon programming constructs that you don't know but which are commonly used and documented in books. For example, once I discovered a linked list implementation and tried hard to figure out how the hell it worked, then later I read about linked lists in a textbook. Reading source code shows you how to write clean code (or at least recognize clean code from dirty code), lets you pick up coding styles you like, and above all shows you how scores of programming tricks and methods are used in the language of your choice. Things that you may only know from one lonely poor example or exercice, you will get them in the real code, with a more practical and significant context and purpose.

  61. Some projects do mentor by Anonymous Coward · · Score: 0

    "Just dive in" works for some, not all. Dreamwidth.org is a LiveJournal clone that has a lot of support and mentoring for new coders. THe idea that people need help and encouragement and to do things in small steps is built in to their development model.

  62. become "the world's greatest expert" by SL+Baur · · Score: 1

    (The subject was the title of a research assignment I was once given in Jr. High School).

    Gee, it's almost like they don't want people to learn to how to contribute.

    There is no royal road to learning. It's very much an individual thing. You will find that in most serious projects, there are instructions as to how to go about contributing.

    I can tell you how I did it ...

    First off, pick a project that interests you. You do not have to be any sort of an expert at first. Then, hang out where people are asking questions, user interface-wise, programming-wise, it doesn't particularly matter which though a combination of both helps. Then go through it and research the answers to the questions people are asking. Start posting answers when you get confidence in yourself.

    Once you have a bit of reputation as someone who answers questions, it will not take much, you can offer your services doing documentation. Open source projects are always looking for people to do that. Probably someone will ask you first before you offer services. The best part is that documentation is what separates the pros from the rest of the field.

    After you've done all that you're in a position to start tackling various programming assignments. These will vary from project to project. Start with simpler things first and work your way up.

    In my case I went from answering various questions on comp.emacs, and later, comp.emacs.xemacs to getting interested in Gnus and writing the first Gnus 5 FAQ. When the XEmacs FAQ maintainer stepped down, I was ready to take that on too. Post 19.14 release, I tackled the barrage of questions and issues on comp.emacs.xemacs. By then, I was starting on doing various maintainer sorts of things like random bug fixes, synching newer lisp code and stuff like that.

    When Chuck Thompson decided to step down in the autumn, they ended up asking me to take over in his place.

    And yes, when I was Mr. XEmacs, I wrote letters of recommendation for every contributor who was looking for his first job out of college who asked.

    If you're looking for cool random things to hack on just for the joy of programming, the ACM Programming Contest http://developers.slashdot.org/article.pl?sid=09/04/22/1820229 has some interesting looking problems to solve. Perhaps choose a language you want to learn to write your solutions in.

  63. Port someone else's stuff by SL+Baur · · Score: 1

    Incidentally, I initially got started programming by hacking an existing Lunar Lander clone written in GW-BASIC and provided with the family computer.

    Yeah, that's a good idea. I was very, very lucky when I wanted to become a Unix expert in the mid 1980s. I had a System V-oid box at home and much of the code posted to the old Usenet source code newgroups (particularly games) were written for Berkeley Unix. Porting the stuff I was interested in to System V was as much fun as educational.

    1. Re:Port someone else's stuff by ari_j · · Score: 1

      Porting isn't nearly as much fun as it used to be. The closest I've found was porting Warzone 2100 to the Mac back in 2006, which taught me Xcode but was almost entirely an exercise in fixing endianness issues when reading and writing data files. It's more tedium than education anymore, it seems. But maybe it's in line for what other people need to learn. Want to learn a GUI toolkit? Find a program written for some other GUI and port it, you'll learn a lot and you'll learn the pros and cons of your selected GUI toolkit.

  64. I'm an insightful interesting funny f'baitn troll by Zero__Kelvin · · Score: 1

    "Wow. I know people don't read the links, but you didn't even read the summary."

    Actually, I believe everyone reads the links (ObCarAnalogy: you pretty much have to look; it is not entirely unlike an auto accident scene in this regard.) What is much more rare is for people to click on the link, read the article, give it careful consideration, augment that with some research, and post an intelligent well thought out post peppered with interesting, insightful observations and funny anecdotes. Oh yeah, I almost forgot ... if you do what I just described - and this is especially true if the subject involves Windows - you can expect to get modded as a flamebaiting troll.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  65. Do it alone first, because teams are different by massysett · · Score: 1

    If you are really just learning to "program," then practice alone first by working on a solo project. That's because working in a group requires lots of skills that aren't directly related to what is typically called "programming."

    For instance, lots of open source projects are concerned with portability, meaning they need to use something like Automake and Autoconf. Working with these systems requires some knowledge, and although it is "programming" it's probably not what you had in mind. When you write something for yourself, all you have to know is that it works on your system.

    Collaborating may also require that you use a version control system like SVN, CVS or git. These tools are not easy enough to learn in five minutes. They can be handy when working alone, but when working alone you don't have to mess with them.

  66. Contact me- project for you by bootup · · Score: 2, Interesting

    I've got a small project that will benefit allot of people moving to GNU/Linux. I could use some help on enhancing it if you are interested. It is a firefox plug-in that is finished to the degree it is ready for distribution. It lacks allot of desirable features you could work on. Nothing too complicated either. Send an email to jade -@- kglug do.t org.

  67. volnteer mentor by polycopter · · Score: 1

    well, I'm working (thinking of working?) on a project: visit www.mathspace.net & if your curiosity is piqued, contact me. In other words, I am volunteering to try to be a supportive mentor. In any case, I admire your initiative & wish you good fortune in the endeavor.

  68. Welcome to Open Source! by thatkid_2002 · · Score: 1

    You seem more skilled than I!

    Just browse Source Forge for a bit to find a project you would like to (or have the skills to) contribute to. If you already know a project which meets these criteria then that's great. Go hang in the IRC channel and maybe just start with some bug fixes or a simple plugin.

    You can also be of great help to some projects and not "just another contributor" by checking out which projects are looking for help. Go to the SourceForge Help Wanted section and pick your weapon/project.

    As long as you know how to write documentation, administer a mailing list/forum or do HTML/CSS then you can get into FOSS.

  69. Try writing a small game by Anonymous Coward · · Score: 0

    I think you would like to do something in the middle of an "big" open source project, and just small testing examples, and start with something that is a bit competing and difficult, and when you succeed, go on with a new harder project.

    When I started programming, I made a lot of useless programs to test out different things.. After getting tired of doing that, I started to make different games. Usually based on that you are a person just walking in a two dimensional world. After a while I found Simple Direct media Layer:

    http://www.libsdl.org/

    Looking through the introduction, you can see it is fairly easy to load in graphics from a .bmp file, and display it. I will recommend you to try writing a game like tic tac toe, drawing board and bricks in any graphical program, saving as .bmp. If your not used to making things like this, you probably would get more or the less stuck sometimes. But when you find a solution to your problem, it would probably give you a good kick to continue. After you finish, you would probably have the self confidence to a larger project, maybe a open source, maybe a bigger game, or another useful program/utility. I recommend that if you don't know what to do.

    Another tip. Maybe you already do know, but I was knowing the basics of C++ for long time(self thought), but actually I didn't know about standard template library, STL. If you do not know about STL, I really would recommend you to study it, not only how to use it, but also how it works. A vector may often come handy. Before I knew STL, I made those things by myself. Another funny thing to do, is to try implementing something like Dijkstra's algorithm(and others, like quicksort and mergesort if you not already have done that) in C++, such things also makes you have to think and focus.

    If you not have done those things I've mentioned, I will recommend you to try. If you have implemented all of above(more or the less), you should be prepared for any project(but you just don't know or are aware that you actually are good enough:).
    Myself I've been programming several years, since I was a little kid. I've been teaching students(that sometimes looks to be completely lost in the beginning, but in the end they succeed on their assignment). I think in programming it is not the most important to have a lot skills in everything(but is definitively useful), but having confidence to attack a difficult problem and figure out what you need to know on the way to the solution..

    If you get a task, but don't know a good solution, then try to find any solution(that will solve the problem, even "bad" ones). Maybe there aren't better solutions, or maybe you would find a better solution later.

    Happy programming.

  70. Depends on what are you trying to get by Calyth · · Score: 1

    Are you trying to get experience so that you are more marketable in the job market? If so, and you're in a post-secondary, try internship / co-operative education.
    If you just want to program for the sake of programming, try contributing to an existing project.
    If you're trying to learn how to run one, start a project.

    This is by no means the definitive way to do things, nor correct, but I think you get the idea.

  71. Just show up and start helping out by Orbital+Sander · · Score: 1

    You don't need to ask anyone permission, just show up and start helping out. If you check out the source code to the Apache HTTP Server (find out how at http://httpd.apache.org/dev/devnotes.html), you'll find 50 instances of the word "FIXME" in the source code (case insensitive search). Check out what the original author thought still needs fixing, and post a patch to dev@httpd.apache.org. Alternatively, you can look in the bug database and start picking low hanging fruit. Again, no permission needed. If your patches are good, they'll get committed. If they aren't, we'll tell you how you can improve.

    You will find that every project has its own coding conventions, macros, libraries and idiosynchrasies. Real code will look very different from the examples and exercises you have worked with so far. You'll have to learn the particulars and become comfortable with each project you take on. This is a tedious and uncomfortable process, but it does tend to pay off.

  72. Another project for you, small team with mentoring by YoungJules · · Score: 1

    I have a project or 2 that I've been looking for help with. We're a small team (maximum 3 coders right now) just doing things for the fun of it. Come on over to www.dragoncontroller.org and introduce yourself.

  73. I'd welcome some help by ozseptember · · Score: 1

    G'Day I'm currently working on a project written in Java for a volunteer organisation and I'd welcome all the help I can get... you or anyone interested in finding out more drop me an email at sir_september@yahoo.com.au

  74. Have you looked into Net Tuesday by rstackhouse · · Score: 1

    Net Tuesday is about using the social web for social change. Have you looked into this community for volunteering your newly minted programming talents? If there is not a Net Tuesday in your area, you could always start one: http://www.netsquared.org/share/meetup/start-a-group.

  75. I see, you wnat inflanted payments. by jotaeleemeese · · Score: 1

    Interesting concept.

    Have you heard about competition?

    --
    IANAL but write like a drunk one.
  76. Cool! An Anne Hathaway/Sash from SG makeout vid by Impy+the+Impiuos+Imp · · Score: 1

    > "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

    Here's some hard-won lessons from the real world:

    1. "Write as if the utility/OS/other stuff is flawless" -- Doesn't sit too well with a customer if it's Microsoft's fault. We're spending 1.2 million on it, just fix it, thxbie.

    2. References are only useful if you're familiar with the stuff. If you don't know what some system's equivalent of printf is, or how to add numbers in some other langauge, you can't look it up because you don't know that terminology.

    3. Don't try to initialize what a FILE * points to. Not the pointer itself, that's fine to set to NULL. But *ptr = xxx.

    4. "Pass by reference" and "Pass by value" are backwards from their intuitive meaning, which, as most programmers will forget, first seems like "pass by a copy of" and "pass the actual variable so it can be modified for the caller". The first is actually "pass a pointer to the variable so the function can change it for the caller" and "pass a copy of the value that will have no affect on the variable in the caller no matter what the function does with it."

    5. Global and local variables are "automatic" because they're created on the stack, not allocated as by malloc or new. What this means is mumbo jumbo, but you need to know that generally you can't pass the address of such a thing to a different thread in your process, while you can do that with an object that was allocated with malloc or new. The first address is really an offset from the stack pointer while the new'd addresses are a full pointer within the processes' virtual address space mumbo jumbo.

    6. Generally, the qsort library function takes a pointer to a C, not a C++ function. This can cause you to have to give it a C-style function declaration if done inside a C++ file. Otherwise nasty stuff occurs.

    7. Program defensively -- Always use a block {} after things like if and for and while and not just a single line with a ; . Also, when creating the opening block, create the closing block. Always init everything even if it's first use is assigning it to something else. Always init pointers to NULL if not to an address in their declaration. Always test for NULL before using the pointer. You can get rid of that later for true tight inner loops in intensive calculations, but it's rare you'll ever get anywhere near that type of calculation.

    8. Always save off a copy of your file from time to time if you aren't checking it into a version system regularly. Once every half day is fine -- if you don't mind losing a half a day's worth of work. Eventually, this will kick your ass. You do something stupid like accidentally hit a key combo that translates roughly as "delete everything from the cursor to the end of the file" and you don't notice it and save the file.

    Especially do this if you're gonna put in major changes. Also, save off a copy of "the last version that worked" as you progress on a more complicate feature with sub-steps. I have had files that I recreated by hand and they worked, even though they seemed identical. Some stray character or symbol somewhere throws off the compilation without generating a syntax error, and you can't find it for love or money. This, too, will eventually kick your ass.

    --
    (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  77. CPAN by Dr.Ruud · · Score: 1

    Hi, also take a look at http://search.cpan.org/.

    Much is already there, but new good stuff can be, and is, added every day.

  78. You could help me with my small project by rhkramer · · Score: 1

    I'd like to have a lexer for Scintilla for (basically) the TWiki markup language. It can be written in C++ (preferred) or Lua, or possibly some other ways (as an "external" lexer).

    I'm looking into it, but I'm not a C nor C++ (nor a Lua) programmer--if you're interested in helping, give me a shout.