Programming: for the mindset, not just the job market

In the time since I’ve started this blog, teaching kids to code has gotten really…well, trendy. Yet, from what I’ve seen and heard, probing into the reasons people think we should teach programming are connected to the future of the job market.

But there’s a lot more to it than that. Getting students programming, when done well, helps them develop computational thinking, a set of skills and approaches that are relevant to just about any field of study or career. Computational thinking as a mindset is the ability to look at a problem and say, “I have the tools to solve this: I can break it into steps, and I can compare them to problems I know how to solve. I can evaluate my process, and I can find and fix errors. I can persevere when it’s tough. I can work with others who have different ideas, and I know that the best work often comes from collaborating with them.” In a nutshell, it’s the stuff math teachers are referring to when they say, “Look, even if you never solve a system of two equations again, the way of thinking you’re learning from algebra is useful later in life.”

Furthermore, though, and perhaps more importantly, that mindset is not just relevant to other content areas – it can be taught and/or reinforced there too. Based on that belief, two fellow members of the Minnesota Coding in the Classroom Cohort and I gave a presentation today at the MN STEM Network Conference entitled Computational Thinking as a Habit of Mind. And since I had intended to make #tooltimetuesday a regular feature on this blog a hundred million years ago, I thought I’d pass along the resource list we shared with attendees. It contains instructions for the four unplugged (meaning computer-free) activities we did as part of our session, a Padlet containing a graphic that breaks down computational thinking and participants’ thoughts on where those elements appear in their career or content area, and a list of further sources to explore.

If you check it out, note that it’s intended to be a living document – feel free to add resources of your own, favorite computational thinking activities, or ideas for how to adapt activities to be relevant to your content area! Alternatively, leave some love in the comment section: which aspects of computational thinking do you see in your own life or line of work?

The Prodigal Blogger Returns…With a Big Announcement!

It has been far, far too long since I actually managed to get something posted. Last November, I tried to challenge myself to post every day…and didn’t make it. Then, in December, I thought I could rally by posting something every day of Computer Science Education Week…and failed there too (although, no doubt, news of Prime Minister Cameron and President Obama‘s participation in an Hour of Code crossed your path without my interference).

Since then, I’ve been caught up in a deluge of new adventures, all of which will be expounded on at length in due time: I’m now teaching three after-school classes a week through Minneapolis Community Education and mentoring an assortment of high school students as they embark on the Technovation Challenge, as well as working on a couple of independent projects.

Most excitingly, though, I am beyond thrilled to finally be able to announce that plans are well underway for bringing a CoderDojo chapter to Northfield! Given students’ enthusiastic responses to a summer math/computing camp and this past December’s Hour of Code, we expect this 1:1-iPad district to have no trouble filling a room with kids eager to learn to create and not just consume software, and ACM chapters at both colleges will help supply mentors. I could not be more proud to be bringing this to the town of my alma mater, sharing what I’ve learned with the community in which I learned it, and am blown away by the number of things that have come together already. Stay tuned as we finalize details and nail down a date for our first event!

New Hour of Code Tutorial: Frozen!

I got an email this morning from code.org, unveiling their new Hour of Code tutorial: making snowflakes with Elsa and Anna of Arendelle! I was thrilled to see that this event has gained enough traction for Disney to take notice and to use their characters’ outrageous popularity to further something so important (…as opposed to what Mattel’s been up to).  I dove right in to testing it!

Overall, I think it’s a great idea and pretty well designed. I thought it made loops very comprehensible; the jump to nesting them was perhaps sudden but certainly not as scary as it was in my early Java days. I really appreciated being able to speed up the animation and to stop the results as soon as you realize they’re wrong. I’m also pleased to see a totally non-violent introductory tutorial, something to create that doesn’t involve breaking/shooting/killing/blowing up/destroying/fighting anything at all (last year’s favorites included Plants vs. Zombies and Angry Birds themes, which are both fairly innocuous but still about one group fighting another). It’s showing participants that not only is programming something they can do, but that it has uses other than games. I’m totally into that.

One thing I wonder about is the age of prospective participants. Based on watching students’ conversations, observing Halloween costumes, and anecdotes from my sister the professional Elsa impersonator (no, really), it’s looking to me like most of the kids who are still really into it are too young to have learned anything about the measure of angles. Will they get discouraged and be put off of things that look like block-based coding? Will they figure it out through trial and error and authentically learn both computing and geometric concepts? Will they just use brute force to try all the possibilities from the drop-down lists? When I worked with middle school students this summer on drawing parallelograms in Scratch, there was a lot of confusion about “turn __ degrees” versus the known interior angles of the shapes, but maybe that won’t be an issue for kids who haven’t yet learned anything else to get mixed up about. Anyone else who’s tried this (particularly with actual kids), I’d love to hear your thoughts!

Scratch: Your First Ten Minutes

scratchy

At CoderDojo this weekend, I gave a spiel about Scratch programs being like plays (stage, backdrops, costumes, scripts) to new students and flustered parents more times than I can count, so I decided for today I’d make a printable set of uber-readable instructions for getting familiar with those terms. Since it’s Tooltime Tuesday again, I’m sharing it here. I’d love some feedback as to how it could be written, use color, or balance whitespace and print more effectively!

Real talk time

I’d been contemplating a whole slew of post topics for this evening, but frankly, when it comes down to it, I don’t have the energy today to get fired up enough to write anything eloquent or impassioned. I’m being honest about that here, obviously, but I keep picturing myself trying to get up and teach classes in this funk, and I don’t love it. So I’m wondering what other folks – particularly teachers, but anyone in a high-intensity people-facing profession – do on those kinds of days: teachers dealing with grief/trauma/depression/anxiety/whatever else, how do you deal with bad days? Do you call in sick? Declare it a silent reading or movie watching day? Grit your teeth and check your personal life at the door? Level with your students about it and hope that being vulnerable helps them relate to you rather than take advantage of you? Lope along at half speed with no explanation?

Like anything else in education, I’m sure the “right” answer is case-by-case based on situation and personality rather than there being a universal best practice. If anyone can speak to being open with students in ways that build healthy trust rather than inappropriate emotional outlets, though, I’d love to hear what you think.

A fortuitous encounter and a tough conversation

Yesterday, at my first CoderDojo, I had the genuine privilege of chatting briefly with some unexpected allies: three middle school students. They told me about how they started learning Scratch in third grade, and now, four years later, they’re more than ready to move on. They want to learn Javascript and see the whole web world that it opens up, and they want to see their peers able to get jobs whether they can afford to go to college or not (an unsolicited comment, not my suggestion!). They talked about seeing programming skills as being like a ladder, and we decided that Scratch – as an educational tool, one professionals work on rather than in – isn’t the bottom rung. Rather, it’s more like a door that, once opened, lets you see that the ladder exists and that you can – and perhaps even want to – start to climb it. They came to the event to talk to teachers and engineers about what the first couple of rungs might be.

I’ve had vaguely related notions percolating in my head for a little while, our chat really brought the question into focus. A lot of what I’ve said here is starting to feel like old hat, and I have a sneaking suspicion that a lot of the things I tag “objection overruled” are straw man arguments anyhow. It’s not hard to convince people that programming is important and to try an hour of Scratch, really. The trouble now, though, is that we’re still thinking of that as the absolute cutting edge…and it’s not. Scratch has been around for nearly a decade, which means current middle schoolers have few (if any) memories of a world in which tools weren’t being developed to teach them to code. For us old folks (and there I refer, I think, to myself and anyone else who remembers life pre-touchscreen), the last decade is a small enough portion of our lives to feel relatively current, and it’s tough to confront that that may not be the case.

It’s also tough to confront that regardless of our best efforts, we’re going to be surpassed not just by a couple of prodigies, but quite likely by large groups of kids. What I’ve been thinking about lately (and shared with them) is that if I were to get my wish and see widespread quality computer science education beginning in kindergarten or first grade, at what age will my students know than I do? I’ve always thought I wanted to teach middle school, but will junior high programmers have more skills than I do? Certainly by high school, much of what I had to get a BA in computer science to learn will be routine for students.

Which leads us from ego stings to the actual pressing concern: who in the world will teach them? I suspect that part of the success of Scratch so far has been not only that it’s easy for students to catch on to, but for teachers as well. You don’t really need programming background to pick up enough to introduce kids to computational thinking and thereby to be doing enough to pat yourself on the back for offering a nifty STEM opportunity. And maybe that was the point: maybe the hope is that teachers who get that taste will go on to learn and then teach more programming the same way that their students are supposed to. That hardly seems like a scalable solution to me, though.

So I leave you, then, with the same question our conversation more or less derailed on: who will teach the ladder? As long as it’s still possible to work fewer hours and make more money as a software engineer, how in the world can schools hope to compete? By raising all teachers’ salaries to that level? (If only…). With some kind of TFA-style program where web devs agree to teach for two years? (errmmm…). By realizing that a changing world means changing solutions, and embracing some combination of flipped classrooms, MOOCs, and interactive web tutorials? I have some thoughts, but for today, it’s time to climb off the soapbox.

Boys, if you’re reading this, I hope you could see how infectious your enthusiasm and absolute earnestness were. We need people like you on this team – people who haven’t gotten jaded by years of red tape and legislation and budget cuts, whose solution to, “Not all schools can afford computers,” is “Well, we have fundraisers and stuff all the time!”, who remind me that programming not just my dream job to teach but also your dream class to take. I hope our paths cross again!

No, really, EVERYONE

Yesterday’s post talked about some programmer training for people who need to find new careers for a variety of reasons. Up next, perhaps, people who are ready to be retired but need to keep their minds working or be empowered to create things? At the coffee shop where I work, a regular customer – a photographer of advancing years who just got his first smartphone – routinely chats with me about how he wishes he could have learned to code while he was recovering from surgery a couple of years ago. He thinks it would be incredible to be teaching actual programming, not just how-to-turn-on-your-new-Mac, in retirement communities, rehabilitation centers, and nursing homes.

I’m with him – couldn’t Scratch be powerful not just for people who are too young to have learned to type but for people whose fingers are no longer dexterous enough? I’d like to try an Hour of Code with people who feel like the world no longer has time for them.

By everyone I mean EVERYONE

While I’ve primarily posted things so far about teaching programming to kids, I stand by my domain name: computer science is for everyone. Students being able to get first jobs is important…and so is other people being able to start new careers. Two news blurbs to highlight on the subject:

The first, from TechCrunch: Codecademy, one of the biggest names in online programming tutorials, is teaming up with a series of other organizations to create broader initiative ReskillUSA. Their focus, according to CEO and co-founder Zach Sims, is “making the pathways for people clear for how to get from zero to employed,” by assembling quality resources and working to convince employers that you don’t need a college degree to be competent. (Probably obviously, I am SO on board with that.)

The second, from Ars Technica: a groundbreaking initiative to spread California’s ever-expanding tech community into San Quentin Prison. Eighteen inmates are participating in a JavaScript immersion program: six months of eight hours a day, four days a week. Long-term effects remain to be seen; a major challenge so far is that inmates aren’t allowed internet access, so it would be difficult for program completers to consult with and get code out to potential clients before their release. Afterward, though, “[t]he education and training gained from the 7370 coding academy will instantly change the trajectory of my life. There is nothing like being self-sufficient and educationally astute after paroling from prison,” says participant Joseph Demerson.

Any readers with programming experience will likely join me in applauding these men for their dedication: working on a big project without being able to consult related forum discussions when you get stuck is no small feat!

Thanks are in order

So we’re gearing up for Thanksgiving around here, and I’ll no doubt post a slightly cheesy things-I’m-thankful-for essay later this month.

Escaping cheesiness by being less cliched, though, and more timely to me, I’ve got some thanking to do. As anybody who’s personally connected to me probably knows, my dad died four weeks ago, and in working both through the associated emotions there and on setting up this blog, I’ve come to realize there are a lot of connections to be recognized and appreciated.

My dad was a relatively early adopter of technology – some of my earliest memories are playing a computer game in ’93 or ’94 that involved manipulating animated rodents of some kind through a landscape of tree houses, and sneakily watching my parents puzzle their way through Myst and then Riven together. They had a car phone and then cell phones early, and I remember poking around with the text-based card games on their early cell phones, trying to think about how they must work.

More importantly, though, my dad taught me to use the internet, showed me how hotkeys worked, and gave me an introduction to algorithmic thinking by teaching me to beat the computer players in the Hearts game that came with Windows 98. He set up my first email, let me be part of my childhood church’s transition from slide projectors to PowerPoint, and bought the graphing calculator that gave me my first taste of writing code.

Eventually, I went to a STEM-focused charter school that was residential, a place among the 10% of American schools that teach computer science. It’s really only in the last little while that I’ve come to realize how hard that was on my dad – he wasn’t great at expressing feelings in words, but at the visitation a friend’s mom made a point of telling me about the time – shortly after I’d left – that she asked him how school was going for me, and he evidently told her, “I think she’s doing well…but I miss her.”

Both inside and out of the tech world, my dad was on my side: he’s the only member of my family who came to a high school swim meet, he went out of his way to see a truly dreadful school play I starred in, and he and my mom curtailed a conference and dashed down to my school to watch me give the talk I’ve been expanding on. I knew that no matter what I set my mind to, he’d have my back.

My dad made me feel like I could do anything, which was exactly what I needed to succeed as a woman in a male-dominated field. I am more grateful to him than I can say, and I only wish I’d taken the opportunity to let him know that while he was healthy. I miss him with every fiber of my being.

Being students as well as teachers

Okay, regular series resumes shortly, promise. Today, though, I’m just coming home from an introduction to Clojure event, a language I’d never seen before and that we wasted no time diving right into. And to be honest, I didn’t get that much of it…which was exactly the feeling I needed to remember. Teachers, I can’t stress enough how important it is to periodically experience material in your content area that’s in your own ZPD, if you will. There’s more than PD and PLCs! English teachers, pick out a challenging tome and force yourself to read twice as many pages in a setting as you normally would. Science teachers, dig up some challenging research or attend a seminar outside your own specialty. Phy Ed teachers, go try a sport you’re really not into! Refining your pedagogy is important, and so is discussing strategies with your peers…but remembering what it’s like to struggle in your discipline is also a key aspect of remaining effective.