Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
How to find programming mentor?

I've been programming for a while. I've read several books, have tried out several languages (Perl, Ruby, Python, C++, .NET, HTML, CSS, JavaScript, SQL), and have taken tons of advice and I feel like I have greatly progressed, fast.

But I feel like I would've learned more if I had a mentor. Well... not a tmentor. More of someone that can guide me, and somebody that I can ask if I had a problem.

Yes, StackOverflow is great, Programmers-SE is amazing, and there are huge community's for languages, but it isn't the same as having a "mentor".

So, where can I find one? Like I said, I'm not looking for someone who will teach me everything, or somebody who I will have to meet once a week. Just emails here-and-there. Nothing major. Of course I would like it to be free. But where and who?

Is there a website or organization that can help me? Somebody you know?

Thanks so much!

share|improve this question

marked as duplicate by Mark Trapp Dec 12 '11 at 4:25

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1  
Have you considered taking a class? Or better yet, a degree in Computer Science? –  Dima Dec 11 '11 at 22:43
    
@Dima : I'm still in middle-school. –  Dynamic Dec 11 '11 at 22:49
2  
what you looking for is called a mentor –  Morons Dec 11 '11 at 23:04
    
I just have to ask if some of the answers were given "generically" or in the context of the person asking the question... he is in middle school. Get a job?? hire someone?? –  DXM Dec 12 '11 at 4:07
    
You could candidate for a Google Summer of Code project. Then you'll have a mentor if your project is accepted. –  Basile Starynkevitch Dec 12 '11 at 9:32
show 1 more comment

7 Answers

In addition to the other great ideas, since you are still in middle school (wow), look around for a math or science teacher that has some time to give after school or during a study hall. That way, if you get stuck on one of your independent projects, you have someone to turn to, and you'll be encouraged to move on. In terms of entering your work to be judged somewhere (and receive recognition), competitions such as the Intel fairs are more geared towards high school students, but see if you can get an early start on a project that can grow with you as you progress through the grades.

Your teacher may know of other motivated students like yourself, and be able to teach you what they know in a "club" setting (and many schools have budgets that would pay teachers to do this, though money may be tight these days), or may be willing to learn the computer science material along with you.

share|improve this answer
    
Unfortunately, I have asked around my school. Nobody programs (not even the IT guy) and nobody has ever programmed. Is there an online community or club that I may be able to join? –  Dynamic Dec 12 '11 at 0:51
    
@perl.j Hmm. Sorry to hear that. See if someone would be willing to learn along with you. Have you checked out any of the Stanford online classes. This one, which starts up late January, might be along the lines of what you are looking for, and those classes have a Q+A forum associated with them (and an unofficial Reddit page, normally, but I can only judge from Machine Learning that's running currently) and those take "off-topic" questions related to the material, which could function as a community for you. –  jonsca Dec 12 '11 at 1:57
    
@perl.j Also, if you have a guidance counselor or something like that, let them do some "headhunting" for you at your high school and perhaps a local corporation for someone to run a club. Public schools in the states often have corporate mentors via a program called Junior Achievement, which normally tutors social studies and civics, but you could bend their ear to see if they'd like to volunteer further towards your cause. Be polite, but know that sometimes the squeaky wheel gets the oil. –  jonsca Dec 12 '11 at 2:01
add comment

Have you read Anthony Grimes' story? Basically he learned himself some new programming languages (Haskell and Clojure), did some projects with them. The community noticed what he did and raised fund for him to attend his first conference when he was 16! So you probably could:

  • go to place like github to participate in whatever projects interest you or start your own projects, and get to know people
  • try some IRC channels. Chat with people, ask questions and get answers in realtime.

You never know what will happen next!

share|improve this answer
add comment

You could try some IRC channels (internet relay chat).

I think that the kind of interaction provided by IRC is more appropriate for "mentoring" than the typical web forums or communities.

Try connecting to an IRC network and searching for programming related channels, like #programmers, #coders or even language specific channels like #php. Talk to the channel members and take it from there.

share|improve this answer
    
Should I find a mentor on the IRC channel, or just participate in the channel? –  Dynamic Dec 12 '11 at 0:53
    
Well you should try to have a relationship with the people in the channel. Some of those relationships may evolve to a sort of "menthoring" process. Some participation in the channel will help in this bounding process. –  MyNameIsZero Dec 12 '11 at 1:32
add comment

You could look for a local "International Olympiad in Informatics" preparation team. There might even be one in your middle school, or in a school nearby. They may have some mailing lists or newsgroup forums where they discuss algorithms and implementations.

(However, beware of "commercial" IOI preparation classes (i.e. companies who charge money and claim to teach programming). Instead, look for teams which consist of school teachers and students who actually plan on participating in competitions.)

Start with 3 concepts and be very familiar with them : Breadth-first-search, Depth-first-search, and Binary tree. Aim be able to solve any kind of problems thrown at you, and also knowing what types of problems are solvable / not solvable with these three techniques.

This will give you a big head-start as you enter college. This head-start will give you additional advantages during your college years, as you can spend more time broadening your knowledge in other subjects and advanced topics while your classmates will be stuck trying to learn introductory concepts for the first time. (Of course you can also help tutor your classmates and make some friends.)

share|improve this answer
add comment

Work on a programming project with someone (or a bunch of someones) who is more experienced than you, and who is a good communicator.

Ideally, you should find someone who understands the scope of the whole project you're working on, who can tell you when you're doing something stupid (or at least ask you to justify the questionable decisions you make).

You can find plenty of people on IRC who are willing to call your code stupid, the trick is to find someone who can do so in a consistently useful manner, and preferably one who is already familiar with the difficulties inherent with your current project.

As much as I gain from reading what smarter people have written, I think I've learned the most from my smart coworkers - the ones I argue with as we solve more problems in our well-established projects.

...and given those goals, I would

  1. Look for an open source with at least few respectable coders who review all the checked-in code, ideally ones who chat regularly in forums or IRC
  2. Get a job with people who are smarter than you, and who are making sure that the project's code is always getting better
share|improve this answer
    
So basically, find a guy on an IRC channel? –  Dynamic Dec 12 '11 at 0:52
add comment

A mentor would be nice. But unless you can find someone with experience who will sit down with you one on one, read (not just look at) your code, criticize it, and then guide you to (not just give you) answers, I think you are out of luck at this point in your life.

This is fine because I strongly believe in "find a way make a way". You want to learn? Read books, go on sites like this one, and experiment with technologies you are interested in. If you have questions, the internet is at your fingertips. Not satisfied, ask a question on a forum. It seems you already know a lot and have read tons of books and learned a lot of languages and technologies. Just keep doing what you are doing. Don't feel you have to rely on someone else for approval or for answers.

When you can, maybe do an internship where you can ask lots of questions and learn a lot. Take college classes and you will have professors you can ask questions. Make friends with CS upperclassmen, join CS related clubs on campus, talk with CS tutors/mentors. (Notice college emphasis - go to college)

Do not just go to IRC channels. Who knows who is giving you answers. Are they professionals? Are they telling you false information to mess with you? And that goes for any internet source of information, make sure you trust the information source.

You are unlucky in the sense that you do not have a person in your life that you can go to. No family members and no teachers in Middle School. That's ok, you are certainly not the first in this position. You seem to have done well so far so why the sudden need for someone? If you want to learn you will, with a mentor or without one. A mentor may make it easier to progress but who likes easy anyway. Take it as a challenge.

For someone still in Middle School its pretty cool that you are this interested in CS/Programming and want to progress. But don't forget to go outside and play. You will have plenty of time to learn and at this rate you are going to be pretty bored in your first couple of semesters at college. Good luck and happy learning.

share|improve this answer
add comment

Hire someone on Elance or Guru.com. I have had good luck finding people to answer my questions.

It seems like once you get to a certain level of proficiency, then Stack Overflow is a perfect place to ask questions that have very specific answers. But before you get to that point, you need someone to answer general questions and explain concepts.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.