I've been programming for 27 years, and IMHO, The Reward is what it's all about. If you get a charge from that, you're in good shape no matter how far "behind" in learning you are. (I put that word in quotes, because the field is so vast now, we are all behind, no matter how much we know.)
"I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more." --Alan Perlis
I also work in a non-tech role at a startup (I run support at Twilio) and am teaching myself to code. My sentiments are quite the same as James's; it's fun and rewarding but there's so much to learn before you even know what you don't know, before you know what to Google to get help. It's like being illiterate and you don't even know enough to look up words in a dictionary.
I do think that knowing how to program and how computers work is a new form of literacy. Teaching kids programming is certainly more useful and stimulating than, say, long-division. One day people will (hopefully) say, "Wow, can you believe that in the past, only a tiny percentage of people knew how to program?"
Until then, I show my programmer friends my learning-to-program blog (http://reneecoding.blogspot.com), and they say, "This is so cool! It reminds me of what I did when I was twelve."
It's like being illiterate and you don't even know enough to look up words in a dictionary.
One of my friends in college compared it to Japanese 101: you can't read a character like 鳥, you can't sound it out, you can't look it up in the dictionary, and you lack words to describe what it looks like to anyone who could rectify any of these problems for you.
There is a trick for Japanese for looking those up in a paper or online dictionary (outside the scope of this post). Relatedly, to learn that particular character, you just write it on a piece of paper until your fingers bleed, and put it in your journal of words with some sample sentences, combinations, etc.
The programming journal thing is a good way to learn programming. My suggestion: if you're learning Japanese, you want Japanese people to critique your characters. Find the guys you want to be like and ask them to critique your programs. (For example, the programmers you want to be like would probably say that your solution for isDivisible will function but it would be quicker and easier to use the XOR operator, and as soon as you know "XOR" you can Google how to use it in Java.)
I'm surprised that support at Twilio is a non-tech role. Considering it's heavily targeted at developers, I would imagine most queries being fairly technical, no?
Good for you though! As you say, there's a lot to learn :) (but the good news is that you don't need to know everything to make something)
The vast majority of questions are non-tech (telephony-related, account issues, and other FAQ type stuff). The next largest set of questions is technical and that's what we have the evangelists for who are all working developers. reneighbor is also more technical than she gives herself credit for :)
The fact that he didn't know what a browser was and that the sidebar says "director of operations" threw me off into thinking the author was "older" and more advanced in his career before starting to learn programming last year.
It turns out that he finished college (Yale) last year and that this is his first job. (source LinkedIn)
I admit it doesn't change his point about keeping pushing to learn programming and that it can be done from scratch with perseverance. It's just that the late career-change would have added some "spice" to the story to me. :)
Probably because the founders (Yalies just out of college as well) knew him and trusted him, so they tapped him to be part of the team, which is just around 10 people now (based on this: http://images.businessweek.com/ss/09/10/1009_entrepreneurs_2...).
When I visited the Twitter HQ back in the summer of '08, the joke was that an 8 years old girl was the Director of Operations (she was actually the DoO's young daughter) :)
You may give too much importance to the job title, all in all YouRenew is still a small business -- and yet I salute the fact that he chose to join a startup (with a commendable goal at that) rather than rushing to Wall Street post graduation.
Only after months of trying to learn Django you run into a wall because you didn't know Python? I think your style of learning is very different from mine :-)
I think the author meant learning where Django ends and Python begins. MVC is one abstract concept built on another, OOP. I can see if someone comes from a non-programming background, it's daunting, outside in.
I could see that. For the past couple of months, I've been lazily trying to learn Ruby-on-Rails without knowing Ruby. I read a bunch of the doc about the framework itself (e.g. routes, RESTful aspects of RoR…), but I know I'll need to get back to some basics on Ruby at some point.
You missed the part where he took 6 hours to install MySql on Windows. It's literally Next -> Next -> Next -> Finish. I guess he probably meant, "Installed and working", ie, connected to it in a meaningful way, etc.
I found myself nodding in agreement as he described what it's like as a beginner.
I hacked in basic lightly for years in Jr. High and High School but i didn't seriously start picking up our craft until I was 18. Actually, it was January, 2001.
I started back-then with classic ASP and a (gasp!) Access database. I recently went to an old messageboard I used frequently and looked through my first questions:
I had a HECK of a time figuring out how to easily alternate row colors when I iterated thru a result set. I can't comprihend why it was so hard for me, but I remember for hours working on it before I posted the question. The answer I liked best, the 2-liner using modulus, is still the way I prefer to do it.
Another was actually writing a Login system. Having to validate both username and password, for some reason, boggled me. I said, in my question to the group, "Does this have something to do with arrays?"
And oh man the THRILL I got when I finally got these things working. It was a calling, no question about it.
One of the surprising things to me after doing that a couple months was that it felt like the way I think, the way my mind works, changed in a big way. I stopped being as interested in fiction books, I started thinking though things in a more... linear way.. more logical, and I used my first programming metaphor when my best friend had a baby, "congrats man, you forked your process." Hard to believe it's been 10 years ago now and I still get my mind blown sometimes. Now it's things like continuations instead of alternating row colors but the rush i get when I master a technique hasn't changed at all.
The project-based method of learning really appeals to me. It encourages goal setting and taking action, in this case writing code, and doing whatever is necessary to get stuff done. When you finally start dabbling on the academic side, you have "hooks" in your mind to hang bits of knowledge that some might gloss over. These are earned from past experiences.
Another benefit is that even when your earlier projects don't turn out the way you want, you have a visible path of progression that you can show your potential employers, potential co-founders, or even yourself just to reflect on.
In a way, my past projects are my programmers diary.
Great read, I'm in a very similar boat - I started learning to code about 10 weeks ago from scratch (http://www.7bks.com/blog/179001).
It's immensely rewarding, but then I really enjoy learning new things generally. I don't think programming is any different, all things are challenging and frustrating to learn at first but once you get the hang of it the feeling of being able to achieve things (coding, playing piano, solving maths problems) is wonderful.
"I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more." --Alan Perlis