If you've read any of my previous posts, you'll know that I have been taking a lot of MOOC (Massive Open Online Course) classes from many different sites. It's literally amazing the information that is out there for free. The latest one I've been going through has been on Udacity for Intro into Computer Science. While it's basically videos, there are a lot of quizzes that make sure you're paying attention.

Unfortunately I've been slacking and the reason why is that on the last set of tests/quizzes, they'd asked some optional questions that I'd failed miserably. Couldn't even get started basically. And I had no where to turn to ask for help or guidance. So I checked out.

Even a lazy person is busy.

While browsing on reddit one day, I came upon a post offering a free live streamed intro into python course from RMOTR. I had looked up on this before a few months ago, but didn'nt get into it as it seemed to be teaching from a different perspective than what I was learning. I didn't want to confuse myself. But this time, I said why not. Maybe a little bit of a "back to the basics" would make me feel better and get my desire to learn going again.

Of course I could help. How could I not?

Again, week one was great for new people. I listened to the stream and read all of the questions people asked. I felt bored as I understood everything already and would help answer some questions from others. Surfing, I found the assignments for each weeks lessons. I jumped and I completed week one in about 20 minutes. Started on week two and got most of it done easily enough. I found that I was answering a lot of questions on logic and flow. It actually made me think a lot more about the code than I expected. I mean, I know how I understood it, but now I had to try and explain it in a way that someone else would. This was cool, I was learning more.

If you want to learn more, teach.

If you're learning or have learned how to program, you've read that helping others really helps you understand more. I found this to be true as well. I completed week's one and two and began week three, which is over containers like lists (think list comprehension). This was a weak spot for me because the liberal uses of '[ ]' and '( )' confuses the hell out of me. In the RMOTR slack channel, a guy from Venezuela but living in Ireland (yeah, I don't get it either), was stuck bad. His time zone was about 6 hours ahead of me. He was still on like the 7th item in week one's assignment. He asked for help. How could I not?

users = search_database('gmail.com')
  for user in users:
  name = get_name(user)
  subject = "Hey {}, you're using gmail".format(name)
  send_email(user, subject)

We worked through all of his problems step by step and finished them. We went through a few more and he got stuck again. And we worked through it again. When I'd ask to see his code, he would post a picture with is phone. I asked why he didn't just do a screen cap and he said he was doing all of this on his phone. His phone. Not his computer. Wow. This made me rethink about how I would explain things because he didn't have a full keyboard like I did. He had several steps, compared to my one. This really made me rethink not only about the code that worked, but also how could the code be prioritized so he would have to type less. Eye opener. This kid was coding on a cell phone, and it was about 3am his time. I'd of given up already.

So this is what they call an 'infinite loop'? Whats the big deal?

Then another gent saw us talking and also had questions. And again, I saw a different way that someone saw the logic of coding. The problem this time was he was actually trying to write the test function calls to test his code. It took me a few times to get him to understand Just write your code. Don't worry about the tests, the website will run its testing. I guess this is how some programmers will read another's code and has to understand what the first guy was thinking.
I looked at this and realize that these guys are in the same boat. That sometimes you'll have a personal touch to help you, but most of the time you're talking in an empty room. Unless you're shelling out the $$$, you're on your own. This is a good way to make sure you learn quickly and more thoroughly, but its also the quickest way to become discouraged and to give up. Programming is not easy.

I've went through the assignment for week 3 and got everything done except the last 2 items. With the help of the Oracle (think google) I finished the first one, which left me for the big one. I completed all of it that I could. Took a moment, and went back at it and Hey look! This is called an infinite loop. haha

Of course, debugging it line by line really helped me understand more than I did going in. I fixed the infinite loop I created, found missing colons, fixed misspellings, and all the good stuff. While my code completed, the output was wrong. List comprehension is not my friend. In time, I walked through the code line by line, chased my tail, etc. I eventually found that while I didn't know what was causing the problem, I could still fix the code to have the output that was correct. Typical beginner.
This week I learned that in helping others, I'm helping myself. And I really enjoy that feeling of learning and accomplishment. I think I'll keep it up when I can. And I found my love of understanding code. I want it again.

Oh, for what its worth:

variable1 =+ variable2

is NOT always the same as

variable1 = variable1 + variable2

This weeks 'byte' is from Ira Glass called The Gap. Its a short video, but its really good. I think it takes a lot of pressure of being great, or even good, from people that think they have to immediately be a rock star.