I'm currently enrolled in Dev Bootcamp, an immersive software development course. Although I'm still in the early phases of learning Ruby and several other coding languages, I've already come to this conclusion:
No one really knows how to teach you how to code...yet.
I'm not saying this in criticism of Dev Bootcamp. I think they offer an excellent program, and I'm learning a lot. What I mean is simply this: in the very near future, programs like Dev Bootcamp will be able to teach students like me exponentially faster and better.
Software development, compared to other similar disciplines, shouldn't be the most inaccessible. The difficulty isn't in the subject matter; it's in the way it is taught. It is a very new field. The practice of teaching it is still in its infancy and has yet to be perfected. That is why learning how to code is so hard for so many people.
Think about the two other topics that are extremely difficult for some people to learn: language and math. Both subjects have been studied and taught for millennia. Over time, we've devised frameworks for teaching the topics that seem to work O.K. for most people, when they are properly implemented in the right atmosphere. We teach basic grammar and spelling before we introduce the novel. We teach addition and subtraction before we teach calculus. For the most part, these are proven teaching methods with proven learning results. Most people with at least average intelligence who have access to at least average teachers and educational materials can probably master at least some functional level of proficiency in basic language and math skills.
Of course, some students will always struggle to learn language, and some other students will always excel at math with little effort. But we usually don't assume that someone is completely incapable of learning the material. With few exceptions, we don't hear things like, "Some people just can't learn English," or "Some people just don't have the I.Q. to learn math." But you do hear people say things like that about coding. And I think they're flat out wrong. Others may disagree, and there are studies proving points on both sides of the issue, but I think that just about anyone can learn just about anything when given the necessary time, materials, and strategy.
One of the most important developments in the technology industry over the next few years will be innovation in coding education. The more we try to teach people how to code, and the more schools like Dev Bootcamp work to prepare new software developers to enter the job market, the more we'll learn what works for all kinds of different students. Just as we've determined that it is helpful to learn parts of speech before we write 12-page term papers, we'll figure out which components of coding should be broken out and studied independently of each other before we put it all together as piece of software. As we've learned to teach arithmetic before algebra and algebra before calculus, maybe we'll discover that we should teach basic logic before methods and simple methods before... well, I'm still too new to all this to know what the order should be, but I'm pretty sure there should be one.
As we perfect the art of teaching software development, I think we'll see exponential growth in the number of people who feel as comfortable crafting code as they do typing a tweet. That will change our world as swiftly and comprehensively as lingual and mathematical literacy ever did. Are you ready for that?