Waiting for It To Sink In
I type a lot of things I don’t understand at this point in my process of learning to code. It’s a very strange sensation — like mouthing words in a language I don’t understand after having memorized those words phonetically. It’s also a familiar sensation; I remember it from learning HTML in 1995. I had a book — Learn HTML in 21 Days — and I would laboriously retype the HTML of a web page from the book. (The book was the first gift I ever received from the man who has since become my husband. It was a whirlwind romance: it was supposed to take 21 days, but it only took 7). I see my kids do this too, writing and rewriting things as they learn. I don’t actually try to understand each line of code as I write it; I assume that each time I come back to it, I’ll have a deeper level of understanding. My kids and I are doing the same thing: practicing, writing it out, and waiting for it to sink in.
I type a lot of things I don’t understand at this point in my process of learning to code.
It’s a very strange sensation — like mouthing words in a language I don’t understand after having memorized those words phonetically.
It’s also a familiar sensation; I remember it from learning HTML in 1995. I had a book — Learn HTML in 21 Days — and I would laboriously retype the HTML of a web page from the book. (The book was the first gift I ever received from the man who has since become my husband. It was a whirlwind romance: it was supposed to take 21 days, but it only took 7).
I see my kids do this too, writing and rewriting things as they learn.
I don’t actually try to understand each line of code as I write it; I assume that each time I come back to it, I’ll have a deeper level of understanding.
My kids and I are doing the same thing: practicing, writing it out, and waiting for it to sink in.
I’m excited because I want to change the structure of my business, and learn how to bust code’s ass.
Here is my lighthearted plan:
1. Don’t Fear the Internet: http://www.dontfeartheinternet.com/
2. Finish up at www.codeacademy.com
3. Find other Designer/Coders out there to create a mini network
4. Check out the GirlDevelopit.com group and hop in on a class for PHP/MySql
5. Jet over to Skillshare.com and sign up for some Ruby on Rails classes.
6. Check out iPhone & Android Dev
8. Be awesome and refine.
“Know Someone Who Makes $555,900 An Hour?” Great HTML5/Django app comparing you — the 99% — against the 1% the country is being run by and for.
Programming, journalism, and bullshit
The last link I posted, “Seven Things You Should Know if You’re Starting Out Programming,” by Guardian journalist-turned-programmer Jonathan Richards, starts out with:
programming was a task undertaken done by awkward guys in loose-fitting T-shirts who rarely saw the sun.
This is the same kind of reflexive stereotyping one sees the media here in the US engaging in when they characterize Occupy Wall Street protesters as unwashed trust-fund hippies.
Like most stereotypes, these are, in fact, bullshit. In his book “On Bullshit,” Princeton philosophy professor defines bullshit as an utterance that isn’t false — it’s an utterance that the speaker makes without caring whether it’s true or not:
It is just this lack of connection to a concern with truth—this indifference to how things really are—that I regard as of the essence of bullshit.
Now, journalism is - I think - intended to be a profession based on critical thinking, and in particular on truth, so in a way bullshit is more dangerous to journalism than flat out plagiarism or even fabrication, because bullshit isn’t just wrong, it robs the journalist (and the public) of the opportunity for fresh thinking and witness that is the core of the profession, substituting it instead with some warmed over crap.
Like most programming stereotypes, it also erases the idea that there might be any women involved, or indeed even a role for women in programming. You might say, “But Lisa, it’s only one line — not even a whole sentence! — in an article you admit yourself is otherwise excellent.” That’s true too: but it’s a little like saying that there’s only one mouse turd in this otherwise excellent extra large pizza with peppers and sausage.
People often tend to defend stereotypes by insisting that they do know people who fit that stereotype. This, sadly, is also bullshit.
I am married to a programmer — in fact, a top-shelf programmer who works at Google who I am inordinately proud of — and I dated more programmers before I married. I could tell you a lot of things programmers are not: not lacking in hygiene, not indifferent to clothes, not all men, not 98-pound weaklings, not antisocial or lacking in social skill. But I’d rather go with something affirmative, so I’ll say this: the programmers were better lovers.
“Program or Be Programmed,” Doug Rushkoff. Scary, even for someone like me who is learning to program…my first thought is: how do I get my kids to learn so they don’t end up as serfs in America’s diminished, winner-take-all society? I immediately went to download Hackety Hack, an all-in-one application with built-in lessons to teach kids how to code in Ruby.
On the hunt for the next project
After launching Journalism Conference Bingo at ONA11, I’m on the hunt for my next development project — I have to find an idea that I love, at a difficulty level that will challenge me (yet isn’t impossible).
It’ll come. My ideas are like the subway: there’ll be another one along in five minutes.
Complete with descriptions of different languages to help you pick where to start, and links to tutorials. Nice!
Women coming back to technical professions
Anna Lewis, writing at the Fog Creek Software blog (Joel Spolsky’s series of four articles entitled Painless Functional Specifications had a big impact on me, and I still teach it in groups):
Computer science has always been a male-dominated field, right?
In 1987, 42% of the software developers in America were women. And 34% of the systems analysts in America were women. Women had started to flock to computer science in the mid-1960s, during the early days of computing, when men were already dominating other technical professions but had yet to dominate the world of computing. For about two decades, the percentages of women who earned Computer Science degrees rose steadily, peaking at37% in 1984.
In fact, for a hot second back in the mid-sixties, computer programming was actually portrayed as women’s work by the mass media. Check out “The Computer Girls” from the April 1967 issue of Cosmopolitan magazine. It appeared between pieces called “The Bachelor Girls of Japan” and “A Dog Speaks: Why a Girl Should Own a Pooch.”
…And then the women left. In droves.
From 1984 to 2006, the number of women majoring in computer science dropped from 37% to 20% — just as the percentages of women were increasing steadily in all other fields of science, technology, engineering, and math, with the possible exception of physics…the most common explanation is that the rise of personal computers led computing culture to be associated with the stereotype of the eccentric, antisocial, male “hacker.” Women foundcomputer science less receptive professionally than it had been at its inception.
Why do we care about a long-gone moment in early computing history when the presence of women was unexceptional?
Because it looks like women are now returning to computer science.
In the past year, the number of women majoring in Computer Science has nearly doubled at Harvard, rising from 13% to 25% (still nowhere near the 37% of 1984). And — because Harvard is not actually the center of the universe — it’s nice to know that the trend has been spotted elsewhere. In the past three years, the number of female Computer Science majors at MIT has risen by 28%. And, at Carnegie Mellon, the portion of Computer Science majors who are women has moved from 1 in 5 in 2007 to 1 in 4 last year.
Getting beyond exercises and tutorials: your first programs
I’m at the point where I can do my own “beginner projects” now. Most of the time I’ve spent learning to code has been spent working my way through a series of exercises that showed you how to build a database-backed website for a travelog — but now I’m ready to make some of my own stuff.
The challenge here is to find an idea that meets these two criteria:
- It has to be simple enough for me to do it at my current level of skill (Read: really effing simple).
- It has to be interesting enough to me to want to expend the effort on it.
Finding something that meets both those is a nontrivial problem for many people, but I am the queen of the Cheap, Stupid, Yet Weirdly Appealing Idea.
Right now I’m working on a room-share matching app for an upcoming conference. After that I have another idea that I like a lot more, but I want to take my time on that one.
You know what’s great about making web apps from scratch? You can make design decisions, like: ”I think I’ll write the entire interface in LOLCAT.” O HAI ROOMIE!
Can you get there from here? Choosing an entry point when you want to learn to program
I think one of the concerns that people have about learning to program — especially if they’re a busy person with a day job — is: ”What if I invest a lot of time in it and never get to the point where I can build stuff I actually want to make?”
I do think that’s a real concern. I’ve previously worked my way through a number of books, online classes, and tutorials that dropped me off well short of doing what I want to be able to do, namely, be able to produce simple, one-trick-pony web apps (as a starting point).
So it does matter *where* you start and *how* you do it. If you want to learn to program, pick a book/course/community that’s at least going to teach you the following:
* How to create simple forms where a user can fill in information (a blog entry would have “Title” and “Body,” for example)
* How to write a program that reads information from and writes information to a database.
* How to set up a simple development environment using MAMP, WAMP, or XAMPP. Those are pre-packaged (and free) “stacks” of software that let you set up a self-contained web server on your laptop or desktop. That should include learning how to take what you’ve built in your local sandbox and transferring it onto a live server on the Web so others can see it.
* How to write a program that will read an RSS feed or flat file from one site and put it into your site in a way that others can search and sort. (Example: using the freely available information published by the US government to make an app that lets people see how, say, the federal government spends tax dollars).
These are the building blocks of the simplest web apps. As you look for starting points for learning to program, see if the book/class/tutorial will teach you at least these before you’re done. There are lots of valuable things you could add — getting some grounding in fundamental concepts, understanding models, learning how to use a code repository — but if you learn these four things, you can make a web app.
We are entering the summer, the perfect time to improve yourself, you could go running or swimming, you could learn a new foreign language or perhaps you could learn to program. Self-learning is not as hard as it sounds, and it’s much easier than self-learning Spanish or French. There are really…
I want to talk about what a big role faith plays in learning something new.
Whenever I’ve committed to learning something substantial (or really, doing anything substantial) I’ve come to a point where I really didn’t know if I could do it.
What do you do then? What do I do then?
You must plow forward blindly. You must advance without assurances, without information. You must keep going. I must keep going.
This is a profoundly *uncomfortable* place to be in. It’s especially uncomfortable if a lot of your personal and professional identity is based on being The Smart One, because you will most assuredly feel very, very stupid. Stupid because you haven’t learned it already, and stupid for choosing this particular thing to learn or do.
I am not a believer (I regret this and miss the religious faith I once had, as God was a most excellent box in which to place such worries), and so I must simply bull my way through that stage. What does really help is the encouragement of others. So? Ask for it. If you’re stuck, and you don’t know if you should go forward but you don’t want to give up, ask for encouragement. You’ll get it. People all over the place will tell you not to give up, and you can and you must treat their voice as the voice of God, redirected through the mouths of ordinary people.
A really great post by Paul Graham. It’s great advice about learning how to *think* about being a programmer.
Paul mentions using version control and testing as a beginner. Speaking as a rank beginner, I would love to use version control, but most of the documentation and tutorials I found weren’t aimed at the beginner, and I never really got it working. I’m not sure how to write a test, either, but I have a suspicion if I Googled it there’d be some helpful code out there I could use to get started. I’m at the point where I really don’t know how to get started writing one from scratch. I’m still very early on, though — I’ve only been trying to teach myself for the past 30 days in whatever spare time I could grab after work and being with my kids.