Year 2: *Not* an internship

Hello again, World.

Last time, I talked about my first years learning to program, mostly practicing syntax on codecademy.com and then writing some simple scripts, mostly in Python and R, to automate parts of my day job, which was teaching high school.

During these two years, I had not decided to become a computer programmer. I was playing with tools I found entertaining and sometimes helpful. This attitude had two effects: First, I had no stress. I didn’t expect the code to change my life, so if I got frustrated, I would just take a day off. Second, I learned very slowly. If you are bound and determined to learn programming right now, you can learn much more quickly than I did.

During year 2, I was talking to a friend in a bar. He told me that the company he worked had piles and piles of data in SQL servers that was plain English strings stored in ALL CAPS. THIS IS A BAD WAY TO STORE TEXT, BECAUSE EVERYONE THINKS YOU’RE SCREAMING AT THEM. The records in all caps were simply too numerous to pay someone to edit, so they were trying to make a program that would take all caps English and return normal English; this would lower the average blood pressure of people reading their search results, leading to customers with longer, happier lives, and a lower incidence of heart disease.

As I talked to my friend, I realized that I could describe, in fairly rigorous terms, the rules for when a letter is capitalized in English. I asked him whether I could intern for the summer and work on this problem. He asked his company, and they said “yes, but no interns.” Apparently someone had been sued for getting free labor out of over-stressed interns, so we couldn’t use that word. But it still worked out, and now I’m the only person I know with “Volunteer C# Programmer”  on my résumé. it makes me a little proud.

So how does this apply to you? You’re saying, “My friends don’t complain about their databases in bars, I don’t know of any problems to solve, and no one will give me an internship over a weird idea.” Well, first, if you lack friends who will complain about SQL problems with you in bars, make more friends; people are better at teaching you then blogs, books, or websites will ever be. Second, find a good problem. The capitalization problem was good for me because I knew everything about it except the code. I knew the rules for English capitalization. I was implementing a process I already understood. Look for a project like that. What do you know the rules of? Grammar? Tennis? Longboard manufacturing? Find a project that lets you take a set of rules you already know and represent them in code. Third, ask about the internship. Basically, I went up to this company and said, “my friend said you have a problem, and I think I can solve it. I will try to solve it for free, just for the learning experience.” Maybe you’ll run into a manager who thinks you’re an industrial spy or something, but in my case, they thought, “well hey, if this kid solves the problem, great! We got a free solution. If not, well, we didn’t lose any money.” From the company’s perspective, this is a pretty good deal. Just make sure you do a good job; when you try to get paid for programming, the company hiring you will want to hear good things from the internship company.

Have a good idea for a beginner project? Post it in the comments!

Happy learning!

-Will

Hello world, and Year 1 of Learning to Code

Hello,

Since this is a programming blog, it would be sacrilegious to change the title. (I did remove the exclamation point.)

Right now, I’m a high school teacher. In two days I’ll be unemployed, and three days after that I’ll be a full-time computer programmer. I mostly taught myself. This blog will be about how I did that: What worked for me, what didn’t work for me. Maybe I’ll be enough help that future self-taught programmers will have an easier time learning.

Year 0:

I spent a lot of time on codecademy.com. I think of this as year 0 because I wasn’t really programming yet – I didn’t know how to debug or compile, I didn’t even know what an IDE was, let alone how to use one. I was really just happy I could type away in Javascript or HTML or whatever and see immediate results. The courses there are very easy – they basically tell you what to type and then make you type it – but they do make you type it. And then you leave out a semicolon and they complain. The nicest part is that they complain specifically. They say, “hey genius, you left out a semicolon in line 5. That won’t work” instead of spitting out an incomprehensible, 300-line stacktrace and glaring at you with spartan disapproval.

Here’s the thing: Correcting you when you make stupid mistakes does you a huge favor. It keeps you from typing all day and then finding out nothing works. It keeps you from being one of those terrible, weirdly-written, incomprehensible Stack Overflow questions that gets downvoted into oblivion 5 seconds after it’s posted. It lets you practice double-checking some details before you’re in a position to really screw up. I recommend codecademy, I just don’t recommend it be used exclusively.

Year 1: Automating parts of my day job.

During the year after I did tons of random codecademy courses, but kept my day job as a high school teacher, I spent a lot of time automating things. My school uses Google Apps for Education, which meant that all my school documents and spreadsheets could be accessed by Google Apps Script. This used the same syntax as all the Javascript from codecademy, so I went to town and automated the creation of vocab quizzes and other rote tasks. I set up forms that email me when they’re submitted, or update the contents of the document. I saved a lot of time for myself as a teacher, but mainly, this was an important baby step. It was still a pretend IDE. I was still just typing in a web browser and hoping things worked. I still had fairly usable error messages and documentation. Also, Google Apps Script is a bit of a play pen – it has simple commands like MailApp.SendEmail() which are intuitive and simple to use, but which you don’t need to understand.

During Year 2, I started doing a lot more programming, so that year will need its own post.

Till then, happy learning!

-Will

Hello world.

Hello,

Since this is a programming blog, it would be sacrilegious to change the title. (I did remove the exclamation point.)

Right now, I’m a high school teacher. In two days I’ll be unemployed, and three days after that I’ll be a full-time computer programmer. I mostly taught myself. This blog will be about how I did that: What worked for me, what didn’t work for me. Maybe I’ll be enough help that future self-taught programmers will have an easier time learning.

Year 0:

I spent a lot of time on codecademy.com. I think of this as year 0 because I wasn’t really programming yet – I didn’t know how to debug or compile, I didn’t even know what an IDE was, let alone how to use one. I was really just happy I could type away in Javascript or HTML or whatever and see immediate results. The courses there are very easy – they basically tell you what to type and then make you type it – but they do make you type it. And then you leave out a semicolon and they complain. The nicest part is that they complain specifically. They say, “hey genius, you left out a semicolon in line 5. That won’t work” instead of spitting out an incomprehensible, 300-line stacktrace and glaring at you with spartan disapproval.

Here’s the thing: Correcting you when you make stupid mistakes does you a huge favor. It keeps you from typing all day and then finding out nothing works. It keeps you from being one of those terrible, weirdly-written, incomprehensible Stack Overflow questions that gets downvoted into oblivion 5 seconds after it’s posted. It lets you practice double-checking some details before you’re in a position to really screw up. I recommend codecademy, I just don’t recommend it be used exclusively.

Year 1: Automating parts of my day job.

During the year after I did tons of random codecademy courses, but kept my day job as a high school teacher, I spent a lot of time automating things. My school uses Google Apps for Education, which meant that all my school documents and spreadsheets could be accessed by Google Apps Script. This used the same syntax as all the Javascript from codecademy, so I went to town and automated the creation of vocab quizzes and other rote tasks. I set up forms that email me when they’re submitted, or update the contents of the document. I saved a lot of time for myself as a teacher, but mainly, this was an important baby step. It was still a pretend IDE. I was still just typing in a web browser and hoping things worked. I still had fairly usable error messages and documentation. Also, Google Apps Script is a bit of a play pen – it has simple commands like MailApp.SendEmail() which are intuitive and simple to use, but which you don’t need to understand.

During Year 2, I started doing a lot more programming, so that year will need its own post.

Till then, happy learning!

-Will