Sunday, October 7, 2012

Why I care

In my last year of high school, I wrote a TED talk-like speech for my school which outlined some conclusions I had drawn up throughout my 6-year programming career as a sore thumb. I have little to support the conclusions I make here beyond my own experiences, but people still seem to agree with me sometimes, so I'll keep making them. I'll insert an excerpt of the speech here as a starting block for the exploration I hope to do through this blog.

As a disclaimer (and one I mentioned before I started the speech), this was directed towards the majority of the population that hasn't programmed before. It's difficult to phrase a speech like this without insulting someone's intelligence, so I can only beg for forgiveness. When I use the word 'probably,' I use it literally, as most of the general audience has probably never played with code before. Practically, however, it's probably going to be the programmers who will read this, so I'll just go ahead and dig my own grave here:

Technology is everywhere. It’s what travels in our pocket, what helps us learn and procrastinate, what characterizes our era. Between NASA, Google, and Intel, you know I hardly need to tell you how important technology is nowadays, so isn't it at least a little weird that you probably can’t answer the next question? 
What is computer science?
The past fifteen years may have seen the rise of the internet, Facebook, iPhones, paired with their own movies and memorials, but it’s also been witness to a constant decline in high school CS education. Every year, fewer and fewer high schools are teaching programming; right now, less than 40% of high schools offer a programming course, let alone anything beyond the introductory level, let alone one with a teacher with a grain of experience. It’s bad, really bad.
You know it’s bad because you probably don’t know anything about computer science.
I know it’s bad because the fact that I was taught by a competent teacher for multiple years makes me a huge exception in the programming community. I've done frontier-pushing things in high school, not because of some inherent genius talent, but because it’s a new field and I've programmed for more years than most college students. I have my teacher and Viewpoint School to thank for that.

The current state of CS, through the eyes of a silly high school student:
·         Taught almost only in college. 
That’s four years, max. Imagine a poet teaching a class of 18-year-olds English for the first time, and give them four years to do it. What’s the learning experience like? The students would think all of English is all alphabet and grammar, would find it boring, technical, and random. They probably won’t even reach close to the interesting parts of English, reading literature and writing poetry, because it’s hard for people as old as 18 to learn totally new tricks. Same goes for programming—we’re teaching almost grown adults the necessary but boring basics, and it’s all they ever experience in computer science. That’s why so many say programming is boring; they never got past learning the alphabet. They never even got close to poetry.
·         Programming should be predominantly self-taught.  
This is a fairly accepted idea, and it’s what’s happening right now. In high school, basically no alternative exists. In college, most classes are structured to make students spend a ridiculous amount of time experimenting on their own. Forcing a student to learn without a teacher goes against the entire point of education, especially for a discipline so conceptually different than others. Some programs do work, but in my experience, the number is low.  
Anyways, who would do their math homework if they had no teacher or assign or check it? Answer:
·         Antisocial Engineers. 
That stereotype. What's sad is I can’t deny that it’s totally untrue, and I am sure that’s because of the inaccessibility of programming to most developing minds. It's not that only the Zuckerbergs of the world can program, but that they are the few that are attracted to the field despite its reputation as inaccessibly, impossibly hard and somehow un-human. While these individuals have done incredible good for the field and our world, I think that the lack of more diverse minds really constrains not only future innovations in computing, but also the future of human thought.
I personally never connected to the stereotype. When I think of programming, I don’t think of developing apps or solving complex puzzles. I think of articulating the dynamics of society and the world better than books can, and of bytes of code that hold more power than paper words. There's a brilliance to the field that seems unappreciated and unexploited by most minds, which I believe could mold and inspire so many more people than those who would consider themselves programmers. 
Every other discipline has a fair argument for how misrepresented or badly taught they are on a mass scale, but few have such a good argument as computer science. 
 
These are the problems I see in the world as it stands. How to fix it? I want to see how I can create an online curriculum for CS that can later be applied on a much larger scale. My aims are to convey a seemingly esoteric discipline to unorthodox (ie, non-engineering) students, which will explore education in a much deeper level than just teaching syntax. There are good CS teachers out there and good teaching websites are emerging, so this is a well-timed enterprise, or so I hope.