TL;DR When I was a junior developer, I wish I knew about Internet Relay Chat. Use IRC to get fast answers to tricky problems. If you haven't used it before, please read the etiquette guide below.
IRC stands for Internet Relay Chat. It's a protocol, like HTTP. IRC is designed to send text (not binary data like images) between clients through a central server. However, when someone says "IRC," they usually mean a chat room on Freenode.
Freenode is the name given to a network of privately maintained servers that you can connect to using the IRC protocol. It's funded through a non-profit entity and user donations. Anyone can create a "channel" (chat room) on Freenode, but the hosts prefer chat rooms be focused on open source projects. Rooms focusing on closed, for-profit technology may be shut down.
Where Should I Ask My Questions?
For developers, there's countless channels to choose from. Every channel starts with a hash tag, such as
#three.js. Most major open source projects have IRC channels, making them great places to go for help. Have a question about React? Try
#reactjs. Have a more general web development problem? Try
##physics! There's usually a channel that can help you with whatever problem you're having.
Some rooms, like
##physics, start with a double hash. This is just a strange Freenode convention, meaning the channel is about a broad topic or subject. Rooms starting with single hashes are for specific projects.
Usually searching Google for "[Project] IRC", such as "Ruby on Rails IRC" will return a result for the IRC channel name of that project.
How Do I Join a Channel?
I recommend choosing a program to connect to the Freenode IRC network.
For Mac, there's Adium which handles IRC as well as other protocols like Google Chat. Or there's LimeChat which is for IRC only. For Windows, there's mIRC or HexChat. If you're using Linux, you probably aren't reading this article.
Then search for "how to connect to Freenode with ______" to get full instructions for your program. It will basically involve choosing a nickname and connecting to the server
Some channels (such as
#rubyonrails) require you to register your information with the Freenode network. There are many good tutorials on how to do this, but it may not be necessary depending on what channel you join.
If you've never used IRC before, please read this!
Don't join a channel and say something like "hello?" or "is anyone here?" or "can anyone help me with x? or "does anyone know about x?"
Everyone is on IRC voluntarily, and users generally leave chat rooms open for long periods of time and return periodically to check for unanswered questions. Asking "hello?!" is demanding the attention of everyone in the channel. Worse yet, you haven't asked any question that can be answered!
A better approach is to just join and ask your question. Don't ask to ask, just ask! If someone knows the answer, they'll help you. If not, be patient. Regular users of IRC generally like helping others. Being friendly and respectful means you're likely to have a positive interaction.
Do be specific about your problem. Don't ask "my code isn't working, what's wrong?" The only possible response is that someone hand holds you and asks for more details.
It's similar to StackOverflow: Do provide details about your problem, including a link to code if you have one. You're more likely to get a helpful response if you explain your problem up front instead of waiting for someone to ask for more details.
Don't flood the channel. This may seem obvious, but it means things like don't post large blocks of code to a channel. Try to keep your questions to one or two paragraphs at most. It's a public space, and messages are generally no longer than a few sentences.
If you become an IRC regular and discover you like helping people, treat newcomers respectfully:
When a newcomer asks an obvious question, if your first urge is sarcasm, and (importantly) you can't control that urge, don't help newcomers. @andrewray
If you're stuck on a development issue, IRC can be a great tool to get personalized help fast. I use it regularly
If this post helped improve your developer knowledge, consider following me on Twitter or buying me a coffee :).