Tuesday, October 28, 2014

Leave School Now While You Still Know It All

Interesting questions appear on Twitter all the time. Sometimes addressed to individuals and sometimes addressed to the Twitterverse as a whole. One earlier today has me thinking a lot. And chatting with people on Twitter and Facebook.

This is a tough question if only because it raises many more. What does it mean to be “programming at a high level?” What is the value of a degree? How does one invest their time and money to make the most of their talents?

People regularly ask about moving into a career in software development right from high school. I never hear anyone asking about moving into a professional career in architecture, engineering, medicine, biology, chemistry or the like. If computer science is one of the hardest HS courses students can take (based on how many are afraid to take it) why is is seen as so easy to turn pro at?

In part this is because of the stories we tell. Bill Gates, Mark Zuckerberg and more made billions without finishing their degrees.  But wait, LeBron James makes millions of dollars and he jumped to the NBA right from high school. Being Bill Gates is probably about as much a long shot as being the next LeBron James. but While a lot of high school seniors think they are ready for the NBA and are wrong they at least know they have to be found before they can turn pro. Young software developers have the ability to “turn pro” at very little cost or risk these days. The temptation is great to try because the risk appears so low.

There are many people with very successful careers in software development who don’t have degrees so there is that. Why don’t we see that in other fields? Is it because we don’t do well teaching people professional level skills in high school in those fields or is it because there are artificial barriers to entry in those other fields or is there just too much more to learn? Possibly a bit of all three.

There is also a real anti-degree feeling among some software developers one could point to as well.

This is far from new. In the late 1970s I had a hiring manager tell me he was initially against bringing me in for an interview because I had a university education in computing. It’s hard to imagine another professional field were there are practitioners who see a university education in the field as detrimental.

One thing that makes computing, or perhaps more specifically software development, different from other fields is that it is easier to learn a lot without a formal education. Between MOOCs, freely available software, shared resources, online forums, and more there seems to be a virtual smorgasbord of resources for autodidacts.

One can quickly learn, on their own, enough to start making apps and applications and even make money. Once in the field one can bootstrap their learning though hard work and online resources to keep improving and growing. This is not really possible in many other fields. Not these days. There was a time when doctors and lawyers and other professionals learned on the job though internships and apprenticeships but those days are long gone. They have been replaced by professional degrees.

So to get back to the question that started this epic long post – degree or not? I’m a big fan of the degree. I think that people benefit from a guided learning experience. It forces one to broaden their knowledge and helps them to learn some things they don’t know that they need to know. There are some who can succeed without it but not as many as think they can.

If you are going to skip the degree you need some way of demonstrating that you really know your stuff though. You need significant projects that have been completed that you can show off as samples of your ability. That can be a profitable app for phones or tablets. I suspect that the students who created YikYak for example will have little trouble showing that they understand phone apps and cloud computing. People looking to get into game development need (and I’ve been told this time and again by hiring managers) to have a significant game project under their belts.

A degree, for good or for ill, is validation that you “know something” and if you don’t have that degree you need to be able to convince people you know as much.

One last thought, if a student says he doesn’t need a degree because Bill Gates doesn’t have one remind them that Bill Gates completed two years at Harvard. Then ask them if they can get into Harvard. It may get them to think a bit.

A late thought from someone on Facebook. A good degree includes a lot of courses that are not part of the major but which make for a more well-rounded and complete person. There is some real value in that.

Two States–the Highs and the Lows

I found this image on Facebook last week and it really rang true for me.

Two States

I experienced both sides of this recently. On one hand I wrote a program on the spur of the moment and pushed it out in 20 minutes with no struggle at all. On the other I started a program I thought should have been just as easy and spend a couple of frustrating hours as nothing I did seemed to work. I put part of it aside to come back later when I was calm again. Why does this happen?

The same is true with teaching as one of my friends on Facebook pointed out. One day you thrill to the sight of students “getting it’ and executing projects smoothly and with great pleasure. The next day you hear a lot of “I don’t know where to begin” and “I’m confused.” And you ask yourself, if I explained things so well one day why was my talk a complete failure the next?

Well I expect that some teachers will blame the student for not paying attention or not having what it takes. And of course there are students who don’t pay attention or who are lazy. But I feel some responsibility to be interesting enough for them to want to pay attention as well. Probably we, students and teachers, share some of the responsibility in most cases.

In the case of my frustrating program what I realized is that I was rushing things. I was not thinking things out enough before writing code. This is something I warn students about all the time. I need to sit down and work out the algorithm on paper before I revisit the code. Likewise with my teaching I need to sit back and honestly evaluate how I taught a lesson (or three).

Did I try to cover too much too quickly? Were my examples not as helpful as I’d like? Did I really plan the lesson well or did I rush it out assuming it would be easy or just the same as some other topic that went well? Was I insensitive to the state of the students? Were they paying attention or did I push them to where their eyes glazed over and they stopped listening? Most of all, how can I help them learn what I am trying to teach? I’m never going to become the teacher I want to be if I assume that a failure to learn is all on the students shoulders.

You know, teaching coding makes actually writing code seem REALLY easy some days.

Monday, October 27, 2014

Interesting Links 27 October 2014

What a week. I teach at a private school and one of the things we do is have open houses for prospective students and parents. Last week we had two which meant some extra time at school. Honestly though I really enjoy talking about the school and especially the computer science program. For students who are interested in CS there are not a lot of great options in high schools. I heard last week that New York state is going to let computer science meet a graduation credit. I hope that helps there.

And let’s not forget the lower grades either. Why Teach Computer Science in K-8? I Want Every Kid to Code by @mraspinall

Only a few more days to vote for my lesson on Binary numbers so I can get some computers for my school. http://aka.ms/omvote You can vote once a day so as they say “vote early and often.” I thank you for your support. BTW I have blogged about using the Office Mix tool a couple of times. Well worth checking out.

A couple of competitions for students are wrapping up soon. Check the deadlines and encourage students to enter.

Introducing teens to open source software development with the Google Code-in contest

Know high school girls who love computing? Award for Aspirations in Computing applications are open until Nov. 2nd.

Have your students entered the 2014 We Are the Faces of Computing Contest for students?

A little topical humor to end with. Perhaps the single most terrifying Halloween pumpkin ever carved.

Embedded image permalink

Thursday, October 23, 2014

Instructions and Removing Ambiguity

Recently I found the following image on Facebook. I plan to use it with my students this semester as a starting off point for conversation.

spagetti

This is a perfect description of someone dealing with ambiguous instructions. Context and assumptions come into play as does words that mean different things to different people. To some people “put some spaghetti on the stove” implies a multi-step process that results in cooked spaghetti. Or failing that at least spaghetti that is cooking when the wife gets home. To someone not used to cooking the obvious request is the literal one shown in this picture.

This brings to mind the old programming joke about the need for a “do what I mean” instruction that many of us have wished for from time to time.

When we ask people to do things we have a certain level of expectation that ambiguity and missing steps will be handled by the person we are talking to. Things like shared experience, known training, and common vocabulary and idiom are a big help here. Computers don’t (yet?) have much of this. We have to be very clear about what we want them to do.

BTW one of my friends, I have some geeky friends, suggested on my Facebook posting “Depends on if those were primitive operations or if it was a method call with anticipated output of cooked spaghetti.” A good point which also suggests that the method call could be better named to more clearly indicate what was happening in the method. Smile

All in all I am hoping for an interesting classroom discussion around this image.

Tuesday, October 21, 2014

Picking Good Variable Names

Actually picking any sort of name is important in programming but we can focus on variable names for a bit. The CS Teaching Tips team tweets and posts a lot of great suggestions. Today they send out a tip about variable names.

Avoid using x and y as variable names to prevent students from confusing variable assignments with mathematical expressions.

CS Teaching Tips Logo

I’ve been working on my variable naming for demos and sample code this semester. The x and y confusion is part of it. It’s tough because I learned in an era where short, even one character, names were the rule not the exception. Memory was expensive and long identifiers took up room in memory. Plus there was a certain amount of laziness on many people’s part. Well at least on mine. None of this is true anymore. Well that part about needing to save room with short variable names is no longer true.

Loop control variables in FORTRAN were almost always I, J, K, L, M, and N back in the 1970s. Variable names that started in those letters were automatically integers and so this was easy. Old habits die hard and I still tend to use those variables for FOR loops. I’m trying to get away from that in class.

I find that using “index” as a loop control variable, especially when the loop is iterating through a string or an array, makes things a bit more clear to students. It also helps reinforce the idea that variable names should have meaning. It’s hard to tell students, “yes I am using x, y, and I but you should all use meaningful names.” and be taken seriously. Using meaningful variable names in demos may take a little bit of extra effort but in the long run I think everyone is better off when teachers model the practice they try to teach.

CS Teaching TipsThere are lots more teaching tips at http://csteachingtips.org/ and you can also see tips from there on the side bar of this blog if you read it in a web browser. Follow @CSTeachingTips on Twitter too!

Monday, October 20, 2014

Decision Trees–Possible Interesting Coding Project

I found this interesting flowchart for determining where one should eat Thanksgiving. It’s pretty complete which also means it’s complicated. I guess if you know the answers it is not too bad to follow. If you just want to see the paths it is complicated. As I was wondering though it I thought “I’d rather have a computer program ask me the questions and spit out an answer.” Naturally the next thought was that I should ask students to write such a program.

And maybe I will. Probably not this particular flowchart but if I can think of something more relevant to teens I may just do it. Anyone have any ideas?

thanksgiving_final-1

Interesting Links 19 October 2014

You know those school weeks with lots of interruptions, strange schedules and little normal routine? Yep, had one last week. I also managed to record a good number of Office Mixes on various programming topics. I’ll post a list of them as soon as I have a few more under my belt. One of my earlier Mixes is a finalist for a contest Microsoft is running. The winners are chosen by community voting, so if you are willing to help me get some computers for my school, please vote for my mix at https://mix.office.com/Gallery/Category/vote 

Now for a few links I collected last week. Lets start with a couple of good articles addressing the question of why CS should be in schools.

I backed Notable Women in Computing Card Deck on @Kickstarter I signed up to get a deck of cards and a matching poster showing all 52 cards with information about women in computing. It will go up on the wall in my computer lab when it comes in.

The Null Professor a post by Crista Lopes   via @cristalopes  in which she shares some thoughts on CS education prompted by Mark @guzdial's recent posts.

Creating Surveys using OneDrive is a post by Rob Miles about a tool I’ve also been using a good bit in my classes.

I ran across this Ultimate List of UK Education Blogs last week. A lot of education blogs there that will probably be useful for educators in the United Kingdom and else where.

Thursday, October 16, 2014

Help Me Win Surface Pro 3s for My School

OK so the good news is that I am one of 15 finalists to win 15 Surface Pro's for my favorite school. The winners are chosen by community voting, so please vote for my mix at https://mix.office.com/Gallery/Category/vote Mine is the one on Binary Numbers.
Each person can vote for one mix per day, now through October 30th. You have to sign in (only one vote per person per day) using a Facebook, Google, Microsoft or Office 360 organization account. You can vote once every 24 hours. Note that the sign in is at the top of the web page not the button under each entry.
Please vote and ask your friends to vote.Thank you for your support.

Wednesday, October 15, 2014

Idea vs Implementation–Using What We Learn

You’re at a great conference and you are hearing all sorts of great ideas. It’s exciting! You hear about tools and techniques that are working wonders in the presenter’s school or in the schools the researcher or vendor repeats stories from. You love it. It could make a world of difference in your class. And you get home and never use it. Has that ever happened to you? It has to me though I am embarrassed to admit it.

What happens to us? Lots of different things. Sometimes the tech is too expensive. Even when it is free perhaps we don’t have hardware capable of running it. Most likely though we start our planning for the year and it looks hard to find a place to use the tools. We may not have gotten a good idea of how the presenter uses it. It’s cool but what does it really teach? Perhaps we get push back from other teachers who are more resistant to change than we are. Or perhaps we just don’t have as much time as we’d like. Taking the idea/tool we heard in a conference and translating it into our own curriculum and style can be hard, at least in part, because we don’t know enough about who to teach with the tool. What does it teach? How well does it teach? When/where in the curriculum does it belong?

So much of what we hear at conferences is presented as how to use a tool with implementation in the curriculum left up to the teacher. Scott McLeod has a great post on Wasting opportunities at ed tech conferences that puts a lot of the blame (largely correctly) on the sessions presented at conferences. There are 78 comments there as I write this BTW. .

This problem isn’t limited to conferences though. How often do we teach tools to students where the focus is more about how to use the tool (this is how to format in Word, this is how you create a graph in Excel) without teaching them how to use the tool to solve problems or do useful things or learn other things?

One of the things we’re focused on in my school in our first course in the CS department is teaching with context. That is to say solving problems with the tools and learning more than the mechanics. We’re trying to make it more about the concepts and the ways you can learn things than about the tools themselves. I feel good about that but we still have a ways to go.

Two of the tools I learned about over the last year (Code Hunt and Office Mix) are relatively new. Teachers, especially including me, are still figuring out how to use them to teach better. I’m off to a slow start. I planned on creating a whole bunch of Office Mixes over the summer – I made two. I introduced Code Hunt late when I should probably have introduced it early. Currently I am working on a couple of Office Mixes that incorporate Code Hunt. I’m excited about seeing them in action but they’re not ready.

I bring this up in part because over the weekend I was thinking that I’d wished I’d submitted a proposal to the CSTA Conference to present on these tools. After all I think they are really cool. But then I read Scott’s post and realized that I am really not ready to present them. I don’t know yet how well they work with students or how I am going to fit them into my curriculum. Oh I have ideas and I have excitement. but how will they work in reality? That I don’t know yet.

While I hope (assume) they will be good and have some tentative plans I will not have real (or even good anecdotal) evidence until the spring. So while I might have a great talk for the summer it is not a sure thing. I may be missing an opportunity to present or have saved myself embarrassment. Fortunately I have a blog and I will be able to share what works and doesn’t work that way. Not the same perhaps but I think the important thing is that sharing goes on and that it is more about how to teach than how to use the tool for its own sake. That’s my goal anyway.

Related posts: