There is an interesting paradox in teaching: the better you know a subject, the harder it is to talk to beginners. Experience means you have forgotten what tripped you up when you were a beginner.

    Consider typing. Or division. Or even reading this sentence. Easy now, right? Looking back, it's hard to remember why they were hard. Looking back, the stumbling blocks are invisible.

    Let's consider a sophisticated concept you know and love: variables.

    Variables are so fundamental that it is impossible to write useful code without them. I bet you think about them about as much as you think about breathing. But they weren't always that easy. Consider the following code:

    >>> myValue = 5
    5
    >>> myValue + 3
    8
    >>> myValue
    

    What will this third command print? The answer is 5, but many beginners will say "8."

    Why? Most misconceptions are the brain enthusiastically applying previous knowledge to new situations. If you can figure out what rules and knowledge your students are bringing to the table, you can start to anticipate their misconceptions and design lessons and error messages accordingly.

    For example, in basic arithmetic, adding two numbers yields a third number. It is not at all obvious to students that addition does not come bundled with assignment. And from your perspective this is an invisible stumbling block, because this is knowledge you know so well you didn't even remember it was there to be learned.

    Before we go on, take a moment to write down everything you know about variables, or know how to do with variables. Try to state the "obvious."

    Nice! Now check your list against this one and see if there are any invisible stumbling blocks missing from your list. (The specific bullet points will, of course, depend on the programming language you have in mind, but the purpose of this list is to help you spot invisible concepts.)

    • why they are so hugely important for writing software
    • how to change the value of a variable
    • how to perform operations on a variable without changing its value
    • how to check the value of a variable, both on the interpreter and in a script (crucial for debugging)
    • variables can store any data type, including strings, objects, and in some languages, functions
    • variables can refer to other variables
    • multiple variables can point to the same thing
    • variables can have no value, or an undefined value, and this is different from a value of '0' or ""
    • changing the name, and even capitalization, means a totally different variable to the interpreter.

    Want more practice? Try unpacking some other "obvious" concepts, like printing (with a printer, right?), strings (let's make a sweater), and functions (this is a hard one—make sure to practice on a real human).

    Crucially important note: this does not mean that you should try to explain all of these things to a beginner, but it is very important to remember that they exist so you don't blithely run your students over rough terrain.

    So how can you help students around these stumbling blocks?

    1) State the "obvious." It's only obvious once you already know it.

    2) Plan to spend 2x-4x more time on the basics than you think students will need. Regardless of the elegance of the explanation, students need time to wrap their heads around new concepts.

    3) Iterate on feedback. Put your lesson in front of students and ask them to think out loud as they take it. Asking probing questions will help you uncover their misconceptions, but don't jump in with explanations. Tweak your lessons, then rinse and repeat.

    Share your thoughts and collaborate with other teachers and course creators in our course creator forum.

    Thanks to E.O. Stinson and Kyle Conroy for their insightful draft feedback.

    Today we're rolling out an improved look and experience for tracks.

    Tracks are series of courses grouped to help you master a topic or language. We first introduced them a few weeks ago, following the release of our first HTML and CSS courses. Since then, we've listened closely to your feedback and cooked up a little design upgrade to make tracks even easier to use.

    <img src="http://dl.dropbox.com/u/77358750/Blog/2012-05-03%20Tracks%20Announcement/new_tracks.png" alt="New tracks screenshots">

    Here are a few of the key changes:

    • View all the courses in a track at once, rather than drilling down into units
    • Clearer visuals for different course types (projects, challenges) and progress
    • More focus on guided content—the "Learn" tab now lists all tracks

    We hope these design changes make it easier to overview your progress, work through tracks, and most of all—get you learning to code!

    Check out the new tracks! »

    JavaScript is one of the fundamental programming languages of the internet. It serves as a great introduction to general programming principles, and it shows the power of programming.

    Yet, as important as Javascript is, you need to know more than Javascript to create a website. For web development, HTML and CSS are as important as JavaScript is. Since one of the most frequently requested tutorials on Codecademy is one around how to actually create a website, we're launching a new set of courses on HTML/CSS. Best of all, with these courses, you can see what your code is doing in one click. It's the best of learning by doing - write your code out and see what happens instantly!

    I learned to write HTML and CSS this way, and we hope that our new tutorials let you learn the same way. We're starting slow - you'll be building a basic webpage. After that, you'll learn how to use JavaScript to spruce up webpages and to create your own personal homepage. Join us!

    Codecademy has always been the easiest way to learn to code. Today, we're becoming much more - we'll also be the easiest way to teach programming.
    The past few months, our team has focused on building great content for our users - we've pushed out new courses every week since the beginning of 2012 with Code Year, and we've added awesome new features. Some of them we haven't even announced yet! Those of you that have been watching the site closely have probably noticed we changed the editor - we're now showing you where your errors are occurring (you'll see a little "x" next to them). We've also redesigned our interface to show you lessons, projects, and challenges, a new organization framework we've developed and will explain in more detail now.

    Today, anyone can create their own Codecademy lesson. We're also expanding beyond JavaScript - lessons can be created in Ruby or Python too! The lessons are just as interactive and exciting as the ones that Codecademy itself has created. We'll be featuring the best lessons prominently on the site as well.

    This is part of our mission to teach the world to code. We're excited for everyone to join us in this mission by creating awesome tutorials for anyone to learn to code.

    Check out more coverage from the Wall Street Journal, TechCrunch, GigaOM, and VentureBeat.

    We’ve been blown away by the response to Code Year, our latest initiative. In less than 7 days, more than 300,000 people pledged to learn to code in 2012 (you can still sign up!). We were thinking about how to further spread the word about coding literacy when Aneesh Chopra, the CTO of the United States, called last week with an interesting proposal. We thought the proposal was in line with what we’re trying to achieve here at Codecademy so we agreed to partner up!

    Today, we’re proud to announce that we will be working with the White House to get more kids and adults learning to code. With their Summer Jobs+ program, the White House has been working on finding jobs for hundreds of thousands of people over the summer. We think learning to code is an integral part of finding a job in the 21st century economy, so we’ll be helping out by rolling out a course called Code Summer+. This will be a shorter course than Code Year that aims to teach people the basics of programming. You can find a bit more on the White House’s blog.

    alt text

    More importantly, we’re pleased to announce that we’re moving Codecademy from being a strictly online learning platform to something you can do offline as well. Users all around the country and the world are getting together to talk about Code Year and to support each other as they learn. We’ve seen them get together in New York and elsewhere. Today, we’re launching meetups for Code Year and Codecademy participants worldwide. Anyone can sign up to host their own meetup or to attend another one at codeyear.com/meetups. You can meet weekly to discuss each Code Year lesson or whenever you’d like. We’re asking for companies to get involved by hosting meetups or creating Codecademy lessons by emailing us at contact@codecademy.com.

    All of this wouldn’t be possible without the help of some awesome partners. Today, we’re pleased to announce that Code Year is now endorsed by the Kauffman Foundation, Startup Weekend, Launchpad LA (hosting LA Codecademy meetups!), AngelPad, Teens in Tech, Ladies Learning to Code (in Canada), Women Who Code, Quanta (an accelerator in Kosovo), Open Network Lab (an accelerator in Japan). Companies like Foursquare, Sailthru, Skillshare, and Twilio have signed on to support our effort to get the world to code as well. We’re working with dozens more partners not included in this post (but who will be included in a forthcoming site just for partners). If you’re interested in helping out, please email contact@codecademy.com.

    We’re constantly trying to improve Codecademy for all of our users. This week, we launched new Q&A forums as well - if you look at any lesson on the site, you’ll notice you can click “Q&A” to ask questions and get answers from fellow users. We're grateful for all the user feedback and we're working as hard as we can to deliver a good experience for you all.
    Thanks for using Codecademy!

    alt text

    Monday was not only the first day of Code Year, but it was a great day for the Codecademy team. We are super happy to welcome Allison House to the team as our Lead Designer.
    We had been looking for a designer for a few months - Ryan and I really place a premium on design and we hadn't quite found someone we thought could help to shape the company's design thinking. We had interviewed dozens of designers when we saw the subject line "Hey Zach and Ryan! Let's talk design" pop in our inboxes. We read into it and discovered that Allison was incredibly talented, well regarded in the industry, and passionate about education.

    After a quick Skype, we had a great feeling about Allison. We flew her out to New York for a few days and she proved to be even better in person. We spent a few days redesigning a few aspects of the Codecademy site. Allison's work spoke for itself - she's amazingly talented and will bring a whole slew of awesome new ideas to Codecademy.

    The best part though, was hanging out when we weren't working. Ryan, Allison, and I spent an afternoon exploring downtown Manhattan and walked over the Williamsburg bridge to spend some time in Brooklyn. We ended up at the Standard Hotel dancing at 2am (and Ryan and I don't even dance…).

    We're thrilled to be able to work with Allison on a daily basis. You'll see her work appearing on the site immediately. Want to come work with us? Check out our jobs page.

    alt text

    Today's a special day for us at Codecademy for two reasons.

    First, we're excited to officially welcome Amjad Masad to the team. In a way, you could say that Amjad has always been a part of Codecademy. Ryan and I first got in touch with him after stumbling across his open source console project, jqConsole, this August. We were just beginning to hack together our first iteration of the site, and needed a console for people to interact with. As it turns out, jqConsole was just what we needed (it still powers the Codecademy console today).

    But we soon realized that, while his project was great, Amjad was even better. So far, we've interviewed hundreds of engineers as part of our search to find the next awesome additions to the Codecademy team (if think you could be one of them, check out our jobs page), but none have stood out as much as Amjad. He is incredibly talented, experienced, and as dedicated as we are to advancing education online. Not to mention he's just a cool guy (which we found out when we flew halfway across the world to Jordan, his home country, to spend a few days with him).

    Second, we're also excited to announce one of the first (of many!) projects that Amjad has worked on with us: Codecademy Labs, the easiest way to play with JavaScript, Ruby, and Python online. Now, after you learn with Codecademy courses, you can use Codecademy Labs to create your own programs, share them via Twitter and Facebook, and show your friends what you've learned. Another special thing about Labs is that it runs entirely on the client side, meaning you can use it when your computer is disconnected from the internet.

    (You'll probably notice, too, that we've included Ruby and Python in Codecademy Labs but we don't have any courses for those topics yet. Know that it's just as big of a priority for us as it is for you, and stay tuned for some news on that front soon)

    This is the start of an awesome next few weeks for us at Codecademy, full of more courses, more features, and more learning. Check back soon for more and, as always, let us know what you think!

    Many of you have sent us emails and tweets over the last few weeks wondering what we've been up to. The answer is that we've been up to a lot, and we're thrilled to (finally) be able to share some of it with you.

    Since we launched in August, we've been focused on building a roadmap for making sure Codecademy is a project that lasts not just for weeks, but for years. Today, we're proud to announce our first step toward achieving that goal. We've raised a Series A round of financing from some great investors and entrepreneurs, including Union Square Ventures, O'Reilly, SV Angel, Yuri Milner, Social+Capital Partnership (Chamath Palihapitiya), Thrive Capital, CrunchFund, Collaborative Fund (Craig Shapiro), Founder Collective (Chris Dixon), Joshua Schacter, Vivi Nevo, Naval Ravikant, Sam Altman, and several others. This is the first of many awesome developments for Codecademy.

    We're Hiring

    We're ready to bring more developers and designers on to the Codecademy team. You can find more about the openings on our jobs page, but we think there are few opportunities that offer you the chance to make a difference in the lives of hundreds of thousands of people. We're creating an educational revolution and improving equality of access to education and we want you to be a part of it. If that sounds awesome, send us an email and check out our jobs page.

    New Courses

    Expect an update soon, but to celebrate this progress, we're launching our first user generated course. Albert Wenger, a partner at Union Square Ventures, is the author of "Functions in JavaScript," a new course available today.

    What Else?

    Expect a lot of changes the next couple of weeks - more content, more features, more everything. Ryan and I are incredibly grateful for all of the emails, feedback, and users who've worked with us thus far. We're starting an educational revolution, and we're glad we have some incredible people along with us.

    Thanks for bearing with us as we try to get Codecademy up to speed. We have some updates to share with everyone about our progress and how you can help.

    More Courses

    We've heard you and we're working as hard as we can to get new courses up. You may have seen a few new JavaScript lessons - we created these and you should expect more over the next couple of days. We'll have another post in a few days about some of the other stuff you can expect to learn!

    New Languages

    JavaScript is only the beginning of what we'll offer on Codecademy - we're working on bringing new languages on board as fast as we can. Look out for a poll in the near future where you can vote for new languages.

    Want a Feature?

    If you have any feedback or want something added to Codecademy, send mail to contact (at) codecademy (dot) com.

    We're Hiring!

    If you want to help educate the world about the wonders of programming, check out our jobs page. We're looking to make a few full time hires!

    Thanks!

    We've been overwhelmed by the amount of support we've gotten from everyone. We hope you'll join us in educating the world.

Subscribe to the Codecademy Blog

Never miss a new feature and always know about scheduled maintenance.