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!