Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Volunteer Programming For Dummies?

Soulskill posted more than 5 years ago | from the learning-the-ropes dept.

Programming 195

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

Sorry! There are no comments related to the filter you selected.

make your own stuff (5, Insightful)

sopssa (1498795) | more than 5 years ago | (#28609041)

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

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

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

Exactly (4, Insightful)

Weaselmancer (533834) | more than 5 years ago | (#28609123)

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

Re:Exactly (3, Insightful)

Ethanol-fueled (1125189) | more than 5 years ago | (#28609351)

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.

Re:Exactly (1)

hazah (807503) | more than 5 years ago | (#28609897)

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.

Re:make your own stuff (4, Insightful)

Foofoobar (318279) | more than 5 years ago | (#28609127)

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

Anyone can sit in a classroom and be taught but a true developer goes out of their way and teaches themselves.

Re:make your own stuff (0)

Anonymous Coward | more than 5 years ago | (#28609537)

I second that emoticon.

Let me fix that for you...

I second that emotion.

There, fixed! Have a good day!

Re:make your own stuff (1)

Razalhague (1497249) | more than 5 years ago | (#28610897)

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

Re:make your own stuff (0, Offtopic)

mwvdlee (775178) | more than 5 years ago | (#28611271)

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.

Re:make your own stuff (1)

vintagepc (1388833) | more than 5 years ago | (#28609151)

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.

Re:make your own stuff (2, Insightful)

iamhigh (1252742) | more than 5 years ago | (#28609347)

Also, what about developing a module to do something cool in a framework like Drupal or Joomla? It can be craptastic at first, but if it does what you want you are well on your way. Just clean it up a bit, make sure it conforms to their coding standards (get used to that), and submit it. Then you might be able to pull other developers in to work on *your* project, and you can learn by what they improve.

Re:make your own stuff (1, Informative)

Anonymous Coward | more than 5 years ago | (#28609371)

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.

Re:make your own stuff (1)

sopssa (1498795) | more than 5 years ago | (#28609709)

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.

Re:make your own stuff (2, Informative)

Tom9729 (1134127) | more than 5 years ago | (#28609437)

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.

Re:make your own stuff (4, Interesting)

DriedClexler (814907) | more than 5 years ago | (#28609711)

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.

Re:make your own stuff (1)

Tom9729 (1134127) | more than 5 years ago | (#28609937)

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.

Re:make your own stuff (1)

joss (1346) | more than 5 years ago | (#28610095)

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.

Re:make your own stuff (1)

Orkie (899576) | more than 5 years ago | (#28610185)

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.

Re:make your own stuff (1)

StormReaver (59959) | more than 5 years ago | (#28609641)

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.

Re:make your own stuff (2, Interesting)

WarlockD (623872) | more than 5 years ago | (#28609921)

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 [sourceforge.net] 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

Re:make your own stuff (2, Insightful)

Chelloveck (14643) | more than 5 years ago | (#28610179)

The best practice is just doing it.

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

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

Re:make your own stuff (2, Interesting)

Monkeedude1212 (1560403) | more than 5 years ago | (#28610247)

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.

Re:make your own stuff (1)

al0ha (1262684) | more than 5 years ago | (#28610365)

Well said sopssa.

Re:make your own stuff (1)

TW Burger (646637) | more than 5 years ago | (#28610963)

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.

Glad you asked... (4, Informative)

dkegel (904729) | more than 5 years ago | (#28609081)

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

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

Re:Glad you asked... (4, Funny)

Reason58 (775044) | more than 5 years ago | (#28609407)

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

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

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

Re:Glad you asked... (1)

Java Pimp (98454) | more than 5 years ago | (#28609649)

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

http://kegel.com/wine/sweng/ [kegel.com] 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

Supportive? Open source? Forget about it. (-1, Flamebait)

Anonymous Coward | more than 5 years ago | (#28609099)

The only things in open source sparser than the documentation is humility and supportiveness. You'll find no project as you describe.

Start here (1)

Yvanhoe (564877) | more than 5 years ago | (#28609111)

Sourceforge [sourceforge.net]
Gna! [gna.org]

Re:Start here (4, Insightful)

westlake (615356) | more than 5 years ago | (#28609693)

Navigating Sourceforge is a voyage of the damned.

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

Volunteer Programming For Dummies ! (-1, Troll)

Anonymous Coward | more than 5 years ago | (#28609113)

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

Re:Volunteer Programming For Dummies ! (1, Insightful)

Anonymous Coward | more than 5 years ago | (#28609359)

"Volunteer Programming For Dummies"

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

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

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

Re:Volunteer Programming For Dummies ! (0)

Anonymous Coward | more than 5 years ago | (#28609427)

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

You are not a great developer are you?

Re:Volunteer Programming For Dummies ! (1)

nlindstrom (244357) | more than 5 years ago | (#28609741)

What the hell do you want to be a code monkey for? Long hours, poor pay, no respect, and a required willingness to train your replacements in Bangalore. It's not much of a career choice.

Thank you! (2, Interesting)

Anonymous Coward | more than 5 years ago | (#28609169)

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.

Re:Thank you! (2, Interesting)

Deltaspectre (796409) | more than 5 years ago | (#28609435)

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 [thousandparsec.net] ), but you can find other idea pages here: http://socghop.appspot.com/program/accepted_orgs/google/gsoc2009 [appspot.com]

Re:Thank you! (1)

slartibart (669913) | more than 5 years ago | (#28610023)

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

Re:Thank you! (4, Informative)

richlv (778496) | more than 5 years ago | (#28609511)

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 [kde.org]

collaborative programming (0)

Anonymous Coward | more than 5 years ago | (#28609175)

Can I get some help guys?

10 print "Hello Wrold!"
20 goto 15

Re:collaborative programming (0)

Anonymous Coward | more than 5 years ago | (#28609239)

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

Re:collaborative programming (0)

Anonymous Coward | more than 5 years ago | (#28609251)

I always used capitol letters:

10 PRINT "Hello Wrold!"
20 GOTO 15

but it's been a while since the C64

Rent a coder (3, Insightful)

qoncept (599709) | more than 5 years ago | (#28609195)

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.

Re:Rent a coder (-1, Offtopic)

Anonymous Coward | more than 5 years ago | (#28609631)

Good advice! His wife gave me a free blowjob. I'm not into dudes, but I know a lot of ./ is, so offering free ones on rentacoder is a great way to get experience.

Re:Rent a coder (5, Informative)

Windrip (303053) | more than 5 years ago | (#28609929)

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.

But when the point is experience over money... (1)

SuperKendall (25149) | more than 5 years ago | (#28611523)

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

Re:Rent a coder (2, Informative)

SirLurksAlot (1169039) | more than 5 years ago | (#28610119)

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 [rentacoder.com] 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.

Getting Started (0)

Anonymous Coward | more than 5 years ago | (#28609199)

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

make a game (0)

Anonymous Coward | more than 5 years ago | (#28609231)

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.

MUDding Community (2, Insightful)

Cult of Creativity (1548333) | more than 5 years ago | (#28609249)

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

Re:MUDding Community (2, Insightful)

daid303 (843777) | more than 5 years ago | (#28609549)

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

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

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

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

Re:MUDding Community (0)

Anonymous Coward | more than 5 years ago | (#28609715)

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

First, write a database to keep track of your CDs (1)

Saint Stephen (19450) | more than 5 years ago | (#28609255)

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

Re:First, write a database to keep track of your C (0)

Anonymous Coward | more than 5 years ago | (#28609339)

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.

Re:First, write a database to keep track of your C (1)

digitalgiblet (530309) | more than 5 years ago | (#28611225)

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.

To add some levity to this discussion... (1)

motherpusbucket (1487695) | more than 5 years ago | (#28609289)

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

local community colleges (4, Insightful)

Red Flayer (890720) | more than 5 years ago | (#28609299)

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.

Don't do it! (-1, Flamebait)

Anonymous Coward | more than 5 years ago | (#28609337)

The open source commmunity will only take and take and never give. They love the free software and they don't care if they bleed you dry in the process.

Re:Don't do it! (0)

Anonymous Coward | more than 5 years ago | (#28609717)

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

If you have to ask, you're no use (0)

Anonymous Coward | more than 5 years ago | (#28609353)

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.

Re:If you have to ask, you're no use (2, Insightful)

jmnugent (705421) | more than 5 years ago | (#28610265)

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

Non-Profits (4, Interesting)

Snap E Tom (128447) | more than 5 years ago | (#28609403)

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.

Re:Non-Profits (5, Insightful)

kbromer (1220380) | more than 5 years ago | (#28609635)

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

Re:Non-Profits (0)

Anonymous Coward | more than 5 years ago | (#28609827)

Re 2) above.

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

Real World Experience (1, Funny)

Anonymous Coward | more than 5 years ago | (#28609405)

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.

Re:Real World Experience (1)

motherpusbucket (1487695) | more than 5 years ago | (#28609605)

Well, my spirit is now broken :(

Many Options (1)

Thyamine (531612) | more than 5 years ago | (#28609421)

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.

Drop the Visual Basic. (4, Insightful)

Hognoxious (631665) | more than 5 years ago | (#28609429)

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

Re:Drop the Visual Basic. (2, Insightful)

daid303 (843777) | more than 5 years ago | (#28609663)

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

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

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

Re:Drop the Visual Basic. (0)

Anonymous Coward | more than 5 years ago | (#28609983)

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

Re:Drop the Visual Basic. (0)

Anonymous Coward | more than 5 years ago | (#28610215)

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.

Grind your way... (4, Insightful)

Anne Honime (828246) | more than 5 years ago | (#28609467)

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

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

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

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

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

That would be my take on the process

scratch an itch (3, Insightful)

richlv (778496) | more than 5 years ago | (#28609469)

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

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

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

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

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

good luck :)

Just do it (2, Insightful)

Blixinator (1585261) | more than 5 years ago | (#28609473)

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

Sourceforge (2, Insightful)

joshki (152061) | more than 5 years ago | (#28609509)

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

Be honest about your skill level and intentions...

Learn how to learn first (0)

Anonymous Coward | more than 5 years ago | (#28609553)

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.

Make your own problem (2, Insightful)

gjcamann (181834) | more than 5 years ago | (#28609585)

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

No experience required. KISS coders always needed. (1)

ctdownunder (816383) | more than 5 years ago | (#28609607)

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.

GiveCamp.org (2, Interesting)

SirLurksAlot (1169039) | more than 5 years ago | (#28609647)

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.

Find a Mono project and rewrite it (0)

Anonymous Coward | more than 5 years ago | (#28609659)

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.

Scratching your own Itch (2, Insightful)

hoover (3292) | more than 5 years ago | (#28609771)

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

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

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

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

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

code golf (1)

BLSully (1590615) | more than 5 years ago | (#28609789)

Try some of the easier projects on http://codegolf.com/ [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.

Notes on Contributing to a Project (1)

mpapet (761907) | more than 5 years ago | (#28609807)

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

Database front end (1)

XB-70 (812342) | more than 5 years ago | (#28609877)

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

My suggestion (1)

C_Kode (102755) | more than 5 years ago | (#28609889)

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!

Re:My suggestion (1)

Whitemice (139408) | more than 5 years ago | (#28611071)

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.

cell phone app - hotest platform around (1)

peter303 (12292) | more than 5 years ago | (#28610035)

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.

gnu (1)

dscarrol (1547159) | more than 5 years ago | (#28610123)

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

Take a community college course (1)

jmcbain (1233044) | more than 5 years ago | (#28610133)

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.

CodeKindness - Tech volunteers for nonprofits (3, Informative)

davecrusoe (861547) | more than 5 years ago | (#28610167)

Hey there, We created Codekindness, http://www.codekindness.org/ [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./ [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

Re:CodeKindness - Tech volunteers for nonprofits (1)

yaasman (1593053) | more than 5 years ago | (#28610569)

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

Re:CodeKindness - Tech volunteers for nonprofits (1)

davecrusoe (861547) | more than 5 years ago | (#28611173)

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/ [plml.org]

more do, do, do, less jaw, jaw, jaw (1)

c4t3y3 (1571639) | more than 5 years ago | (#28610349)

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.

I hate to say it... (1)

hesaigo999ca (786966) | more than 5 years ago | (#28610541)

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.

Find a local Coop (1)

geeper (883542) | more than 5 years ago | (#28610717)

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.

Just Ask! (1)

Whitemice (139408) | more than 5 years ago | (#28610869)

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

FuckeR (-1, Offtopic)

Anonymous Coward | more than 5 years ago | (#28610875)

mire of decay, 'I have to kill You can. When the disgust, or been but with Netcraft can be like you need to suuceed words, don't get to foster a gay and be on a wrong the NetBSD project, you down. It was The future holds The project this post up. much as Windows Conversations where of the founders of lube or we sell us the courtesy Over a quality sure that by the my bedpost up my (I always bring my Poor dead last Rules are This the above is far

Try writing good bug reports (2, Interesting)

bmajik (96670) | more than 5 years ago | (#28611115)

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

But what about the mentoring aspect? (2, Interesting)

raw-sewage (679226) | more than 5 years ago | (#28611555)

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.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?