Learning to program is not easy, especially in my case coming from a non-technical, non-engineering background. The biggest boost to my entire process has been finding help directly from other people. In the age of the internet, you might think that all answers are already available online and we could simply cut out the human-to-human interaction.
Wrong!
If you’re looking for answers to simple questions or to very specific error messages, then a simple web search will be your best bet. But, in my experience, the ability to speak and work directly through difficult problems with another person, is the area where the greatest learning takes place.
The most difficult aspect is finding and seeking out the help. People won’t randomly stop by your blog or Facebook page, to ask if you have questions. You have to take a very proactive approach to learning from others. This step can be intimidating for many people. When you’re in the position of having less knowledge and asking for a favor for someone with greater knowledge, it can be scary.
There’s no need to be scared. Here’s the biggest lesson I’ve learned throughout this entire project:
When learning to program, most developers are happy to help – you just have to ask. < Tweet This>
With that mentality in mind, here are three tips to find the right people to ask and get help learning to program.
#1 Send a Tweet Asking for Help
Tweet to a specific person and not just out into the entire twittersphere. This method is great for people who’ve created online teaching tools. Twitter is a public forum and your question will bring exposure to their project. For example, I was working on the ‘Rails Deep Dive‘ from RubySource, and had questions so I went directly to the owner Glen Goodrich.
He responded directly to my question and created a gist on GithHub with a detailed explanation to my questions. Unprompted, he sent a message directly to Daniel Kehoe informing him about my self-guided learning to program project. Daniel reached out to me directly to let me know about his RailsApps Project, which is geared towards getting a new Rails project up and running very quickly. Daniel’s built an incredible resource for developers, and he’s also been extremely responsive and helpful to me. Keep in mind this entire chain of events with Glen and Daniel was kicked off by me sending a Tweet to a complete stranger. Isn’t the internet incredible?
#2 Find Online Communities
For specific technical questions, StackOverflow or IRC channels will likely be more helpful. However, to find help for the purpose of learning, you need to find individuals who’ll take a more personal interest in your progress. The best method to accomplish this scenario is to look for online communities specific to your language, where people develop relationships and look out for one another. Use Google Groups are online communities with a very specific focus. Search and you’ll find people talking about your language, answer questions, and providing guidance. Find Helper Hotlines I was overjoyed when I first discovered the Rails Hotline. The concept is that more experienced Ruby on Rails developers hold tutoring hours online, where students can call them directly. Unfortunately, my experience has been a miss to date. I’ve tried calling twice without a response.
But, that recent Tweet gives me hope that I’ll have better luck the next time I try. It is a free service, with donations excepted, so my expectations are tempered at this moment.
#3 Find Local Developers
Use meetup.com to find groups dedicated to the language you’re learning. There will be free meetings and you’ll learn from experts. But, the meetings can happen in several different formats, all of which can be helpful to meeting developers.
Social Gatherings
While you won’t be opening up your laptop to learn, social gatherings are a great place to meet lots of developers and find interesting projects that others are working on. The more developers you know the better. They may help you learn, introduce you to other developers, and perhaps help you get a job one day.
In Souther California, LA Tech Happy Hour and 106 Miles – Southern California are a good Social Gathering meetup.
Tech Presentations
Presentations by other developers are a great way to learn, especially about new technologies or techniques. For total newbies, they are probably too advanced, but you can still meet people. The networking time will be limited as compared to Social Gatherings.
In LA, LA Ruby on Rails Monthly Meetup is a great monthly Ruby Tech Presentations meetup.
Hack Nights
These are my favorite meetups, especially for learning. The basic concept is that everyone gets together to work individually on projects. These meetings are great for finding more advance developers to sit down with you in front of your project and work in tandem. Your brain will be stimulated during these sessions in ways you couldn’t have imagined.
In LA, Carbon Five Hack Nights has been amazing!
Regardless of the meetup type, you should always have genuine interesting in meeting and talking to developers. It will help you grow your network and you’ll likely find people willing to help. Do NOT go to meetings and start conversations by telling people you’re looking for a developer coach or tutor. You’ll appear insincere and will quickly scare away anyone from helping you.
Instead, show an interesting in getting to know the group members. Better yet, prior to your first meeting, contact the group organizer. Explain to him/her that you’re new, excited to get involved, and offer to help. By taking an interest the in the group, others will take an interest in you and your projects.
Help Learning to Program Conclusion
Help is available in many different forms. Never be afraid or embarrassed to ask for assistance. Most developers love to help for two reasons. First, people love appearing knowledgeable and sharing knowledge with others is an ego boost. Second, at some point in time, the developer was in the exact same shoes as you and can commiserate with the process you’re going through. This sense of shared experience instantly creates a bond between you, the learner, and the experienced developer.
Featured Image courtesy of K Nicoll