views:

344

answers:

10

I've been wanting to brush up on my raw coding/algorithms skills but most of the people at my job aren't all that interested in that side of coding. I've been wanting to find a group of people who could help me take my coding skills to the next level. I've thought about joining the local programming team (university) to kind of pick up whatever I can but the thought of getting my ass kicked by kids not old enough to drink is painful.

I truly want to become a bad ass coder, but I find that I get stuck on many things and need someone to talk it through with. I had a horrible time tonight trying to refresh my breadth first search implementation. This is something I could have done with someone in 1 hr or less, but it took me oh so long to remember and understand.

My question is, when you guys are looking to improve and work with others to become a "grandmaster" where do you go?

clarification: I am looking to get face to face mentoring/teaming. I have noticed when working with people face to face, its much more productive. Mailing lists are nice, but not as responsive as having a warm body with a warm brain.

+5  A: 

I'd start at the local user group for the language/environment of your choice. You might not get a lot of the sort of conversation you're looking for, but you likely to find people with similar interests.

Jim Blizard
A: 

Your best bet is to find a mentoring free software project in the same category as the skills you want to hone. Find an interesting problem to solve, come up with a solution and propose your idea on a list for peer review.

This will lead to some good things:

  • Your code might actually be included
  • A discussion such as you seek becomes a relevant (and possibly hot) topic
  • You'll make friends, enabling you to keep up the conversations in the future

Another thing to do is start a blog, post your mad scientist ideas, submit your postings to various social networks and wait for interested parties to come to you. I, for one can never resist commenting when someone is obviously thinking out of the box on a topic that interests me.

At work, I have the same problem. I'm one of the only lower level programmers (most of my work mates use things like PHP/Python) .. and just aren't interested in core systems programming.

I talk about this stuff with my wife, too .. who lovingly smiles and nods.

Tim Post
A: 

I think that you now probably understand BFS much better than had you asked someone. Not everyone knows how to teach without just giving the answer. The best way to learn anything is by doing.

I think the best solution is to find an on-line community, such as an Open-Source project. The reason is that there are only so many good programmers where you live, but a great many in the entire world, and the best of them will probably lurk around the relevant sites (the majority just want to watch Prison-Break in the evening).

So, my advice - find an Open-Source project on a topic you like, and try to contribute. Your code will be reviewed, you'll have passionate programmers who love what they do to talk to, and you'll be doing actual programming by yourself.

Gilad Naor
+2  A: 

Topcoder: http://topcoder.com/ is a decent place to find programming and algorithm design competitions.

Alterlife
+2  A: 

I agree with others that reading and contributing to open source code is perhaps the easiest path forward.

Another option is to join or start a Coding Dojo. I really enjoyed the one a friend and I started in Pittsburgh a few years ago. The goal is to get a group programmer together to practice a small code kata. Solutions are shared with the group and everyone gets to learn something new.

jaaronfarr
A: 

Join your local LUG(Linux User Group) if you find yourself hard-pressed to find a bunch of people which explicitly care for coding, you may find that most Linux users are interested in coding/scripting. Thus, it'll be a good point of reference, to meet people of slightly like-minds. After which you may be able to start a group of sorts, that focuses on coding.

There are also places, such as www.hackervoice.org.uk and www.binrev.com, or www.2600.com which have regular meetings on a broad score of topics, ranging from programming to networking. From these sources, you may find people in your locale, or communities which are affiliated with them, that are.

EndUsr
A: 

Join your local LUG(Linux User Group) if you find yourself hard-pressed to find a bunch of people which explicitly care for coding, you may find that most Linux users are interested in coding/scripting. Thus, it'll be a good point of reference, to meet people of slightly like-minds. After which you may be able to start a group of sorts, that focuses on coding.

There are also places, such as www.hackervoice.org.uk and www.binrev.com, or www.2600.com which have regular meetings on a broad score of topics, ranging from programming to networking. From these sources, you may find people in your locale, or communities which are affiliated with them, that are.

EndUsr
A: 

The places where I found the discussions that you've been yearning for are:

  • Local user groups
  • Programming forums -- especially localized ones, ones that lead to real-life meet ups and events.
  • Programming events and conventions
  • Twitter (unorthodox, but following people like Jeff Atwood, Scott Hanselman, Phil Haack, etc was quite educational, at least for me)
Jon Limjap
A: 

Join your local LUG(Linux User Group) if you find yourself hard-pressed to find a bunch of people which explicitly care for coding, you may find that most Linux users are interested in coding/scripting. Thus, it'll be a good point of reference, to meet people of slightly like-minds. After which you may be able to start a group of sorts, that focuses on coding.

There are also places, such as www.hackervoice.org.uk and www.binrev.com, or www.2600.com which have regular meetings on a broad score of topics, ranging from programming to networking. From these sources, you may find people in your locale, or communities which are affiliated with them, that are.

EndUsr
+1  A: 

Join an open source software project -- ideally one that operations primarily if not entirely over IRC and uses CIA for live commit notifications. Check out OHLOH.NET to find a project that suits your interests.

You'll get the (virtual) face time. You'll find some of the best and worst coders on the planet, but everyone is generally contributing because they love coding and want to make things better.

It's often a very unforgiving environment at first, but you will learn very quickly if you listen. Many will be quick to tell you that you are wrong, and you very often will be wrong. The arguments will often wander into realms that you've possibly never even had to consider, with design discussions taking long-term maintainability, readability, and simplicity into account over being complicated and clever.

Many projects operate entirely over IRC, use CIA for live commit notifications, and rely heavily on interactive discussion. So you just have to find where they hang out. Find one that has core devs that use IRC (many are on Freenode). Also, don't just join IRC -- live on IRC and become a part of the community.

The best way to become a better coder is to write more code. Open Source provides you with a "code garden" that needs taking care of and development. IRC provides a realtime feedback loop and many-to-one communication path.

If you still have no clue where to start, check out the projects that are accepted into the Google Summer of Code. Those communities are generally already fairly well matured enough with the support infrastructure in place. CODE.GOOGLE.COM/SOC

brlcad