Programming is by no means an individual pilgrimage; seeing what others are working on and helping/getting help from others can make learning much more fun and rewarding.

By Michelle Sun (Student, Hackbright Academy)

It’s the beginning of Hackbright Academy, working on Python.

There has been ups and downs, some days (and nights) of pure nightmares, literally (quoting one of my classmates, “I dreamed that a python ate me last night”!), and some days of awesome state of “flow”, when hours seem to fly by and lots get done.

I begin to realize I am approaching this 10-week course less as a syntax crash course, more of a training of the mind. Many hackers eventually build in other languages, but mastering one allows great agility in picking up new ones. The mental fortitude in a great programmer is highly a transferrable skill, one which I admire and aspire to achieve.

So far, I have observed a few mind, or life, hacks to learning to program.

  1. Take ambiguity in stride.“The art of programming is the skill of controlling complexity. The great program is subdued, made simple in its complexity.” – Marijn Haverbeke, Eloquent Javascript

    Earlier last week we worked on the Markov problem. Starting with the bare basics of lists and string manipulations, I was able to move step by step and eventually not only solved the problem. Some of the classmates even created several Twitter bots.

    Perhaps many beginner programmers, myself at least, have the tendency to think too far ahead, or to find the perfect, shortest solution. Focusing on one single small problem, tailoring solution to a single case first, actually provides more understanding of the problem itself and turns out to be much more effective in solving the bigger problem.

  2. Draw it out, talk it out.

    John Dewey was quoted to have said, “A problem well stated is a problem half solved”.

    I would take it further that stepping away from the computer (as suggested Rick Hickey’s Hammock Driven Development), and removing any digital distraction, is highly instrumental in attacking a problem. Social media and instant messaging on the phone reduces attention span; 18-24-year-olds are reported to send up to 110 texts per day, that is an astounding distraction of a text every 7 mins of waking hours!

    Most of the solutions take time to structure – I find it useful to stretch out on paper or whiteboard. Pair programming, a technique we use everyday in class, is another excellent practice. It ensures discipline (it’s hard to check Facebook or your email when your partner is looking at the same screen!), strong communication (describing clearly what you are doing) and collaboration (cross checking of errors real time).

  4. Keep shipping.

    “The computer programmer is a creator of universes for which he alone is responsible. Universes of virtually unlimited complexity can be created in the form of computer programs.” – Joseph Weizenbaum, Computer Power and Human Reason

    One of the best things about knowing how to program is the ability to make your own things. (Check out a few cool fun projects my friends did).

    Ex-Googler Pamela Fox dropped by to chat with us last Monday and shared about her extensive collection of mini projects. I particularly liked Translation Telephone, a web app that translates the message to 20 random languages using Google Translate and finally translates it back to the original language.

    I can see that programmers develop the eyes of spotting problems in daily lives. And what better way to get into the rhythm of spotting and solving problems than through getting feedback from users (even if just a few)?

  6. Be involved in the community.

    Like what I experienced in the overall startup community, giving and learning from the community is crucial. Not only is it highly motivating to see what fellow classmates did, be it a game or a TweetBot or a MUNI arrival notification app, hackers are strong believers of sharing what you make and your experiences. GitHub, Stack Overflow, Hacker News are all built upon the mindset of community credits.

    Offline, there are also many events that encourages collaboration and learning. I attended Women Who Code’s Hack Night and the LinkedIn’s first hackathon “DevelopHer”. At the Hack Night, I met many coders that a variety of projects/topics, including creating CSS/HTML tutorials, wireframing, picking up ruby on rails, Sinatra, JavaScript. Many participants also shared that they have picked up their programming skills through attending this type of gatherings.

Programming is by no means an individual pilgrimage; seeing what others are working on and helping/getting help from others can make learning much more fun and rewarding.

What are other tricks do you have to learn programming?

I’d love to hear your thoughts and experiences in the comments.

This post was originally posted at Hungry For Life.

Photo credit: Front Creative

About the guest blogger: Michelle Sun is currently a student at Hackbright Academy. She graduated from University of Chicago with an Economics major and has worked at one and founded another startup called Spotick. She spent her former life as an investment research analyst. When she is not busy coding away these days, she loves a good sweat in her vinyasa yoga studio and pins beautiful home decor pictures on Pinterest. She blogs at Hungry For Life. Follow her on Twitter at @michellelsun.