This is an interesting post for me. The reason why is because for me, the starting point for this renaissance of computing in schools that I'm interested in, came from an industry need. Actually, that isn't strictly true as it would dismiss the work of people such as Computing at School, whose work is nothing short of stellar, and precedes the two milestones I am going to mention now, but let me digress for a moment and explain. Those milestones I speak of were the Gove BETT speech of 2012, and the Hope and Livingstone Next Gen report, which arguably informed Gove (along with Eric Schmidt). Those two events changed the teaching of ICT in schools in the UK, the latter directly. The change was to remove the old ICT curriculum that focussed on using software, and introduce one that had the creation, and the understanding of the creation, of software at its forefront. The Next Gen report makes a big point that the reason we need to teach things like coding, is because industry can't employ enough young, talented, qualified graduates with these digital creation skills. Now, this is an interesting one as the old ICT curriculum did teach and assess digital creation, but this wasn't explicitly coding or programming. Also, when I studied for my undergraduate degree, we did learn programming (albeit Visual Basic) and animation (albeit Flash (anyone remember that?)) but it was probably miles behind what industry were doing. My University at the time, Anglia Ruskin also had a successful game creation degree, so why can't industry employ these graduates? I guess what we've all come to agree though is that doing this stuff at Uni is too little, too late. So it's great that we are doing this in schools again, and thank you Michael and Ian.
The point of this post then? Well, I have been to a number of employer symposiums and the like via my networks at Essex County Council (who support my research in this area; thank you ECC, sorry I don't pay council tax as a student). Lots of these employers hop up and down and say they can't recruit graduates as they aren't qualified enough or can't function in business due to this irrelevant education (their words, not mine, and I have plenty of soundbites to back this up!) so from an industry perspective it seems that all would fit with the conclusions in Next Gen. Yet, I hear different things from Universities who think they give their students a well-rounded and high quality education, which by its nature has to be more generic than the employers would ideally want. Then I hear from students who say that there aren't the jobs out there to apply for, and if they do apply, they get knocked back. McDonalds and the Apple Store never knock them back though and I hate that some of my previous students are still in McJobs, and are very very capable.
So... My plan is to embed myself into a large local engineering and technology firm and ask the folks there (the old hands and the graduate trainees especially) what gives? I need to find out what industry wants, what industry can do to align itself with schools and universities in terms of STEM, and try and answer something that appears not to add up in my head. I will try and use the full armoury of social science research tools to try and find out more. After all, I am now connected in schools, government and industry in the area, and will need to leverage these links to reality check my creation of an artefact and associated practice for schools, children and parents to use.
CodeED
A blog about helping young people (and teachers) to learn about programming and computer science.
Monday, 16 September 2013
Programmer types part 2
Last night as I was drifting off, I kept thinking about the post I had made below, which was something I just wanted to put pen to paper about - an observation that didn't feel right just being internal. Perhaps from the post it wasn't clear why I was making a point about your personality or learning style in the context of teaching programming (something I do quite a lot). The point of it I guess is that if I'm trying to research whether really young programmers (or really green programmers) can best learn how to program, which is, I believe what I'm trying to do* then one needs to get them programming in the most inclusive way possible, regardless of what type of person they are. Who you are shouldn't make a difference, your differences will be characterised not in your ability, but in the individuality that you bring to your learning or creations. Inclusive, accessible programming that has a linear learning curve, is powerful and flexible would be brilliant. I know a lot of schools I've been working with would find the introduction of the new Computing Curriculum less of a struggle if it was.
* I think it's quite normal to not know exactly what you're trying to achieve in a PhD until you've done it! The conclusions are emergent and all that..
* I think it's quite normal to not know exactly what you're trying to achieve in a PhD until you've done it! The conclusions are emergent and all that..
Sunday, 15 September 2013
Programmers and character/learning styles...
I'm writing this down because like many phenomena I come up against in my PhD journey, I think a question needs to be answered, most likely by myself, but also by others who may stumble across my blog, or that I point here. Therefore I welcome comments and discussion, as indeed I always do.
Ok, so this is based on my own experience, but on the whole, I think computer programmers (or coders) are a certain type of person. In that they're a 'Myers-Briggs type' of person (not that I completely agree with M-B, but that's another matter). I've met a lot of coders in my time, and indeed I'm one myself, and to me it seems that to be interested in programming or computers, be it your hobby or enjoyable, fulfilling career, you need to be a certain type. Words that I use, tentatively, are: patient, obsessive, introverted, detail-driven, inquisitive, logical and more I'll add to this list... Years ago at Uni, we were shown the CBS documentary "Triumph of the Nerds", which is about the folk like Bill Gates and Steve Wozniak that were instrumental in the creation of the PC in the 1970s and 1980s. I can't remember why we were shown it, but what remained with me was the realisation that I was a nerd, and these people were like me, only significantly richer and more successful! The people that created computers, and programming languages were the kind of people that seem to still be attracted to, and successful with computers. I know that programming languages were created the way they were more out of necessity, and history, rather than being a secret club for introverted nerds, but even so, they seem to suit the type of folk I describe above.
When growing up with, and later working with children who were interested in computers and coding, they again seem to be same type of detail-oriented, patient, quiet kids who like to get on with their programming challenges on their own, challenging themselves and tinkering for hours improving their code and then sticking that out there for the world to admire, rather than themselves. They don't want to be centre of attention, and often hide behind personas and handles that are as obscure as the complex hacks they have created.
So what is it about coding that appeals to coders? And what is it that makes some people completely disinterested by writing computer programs? Is it personality type, or some deeper cognitive ability or suitability? Attention span? Linguistic ability? (I've some theories about second language acquisition and linguistic ability and programming too for another space)
In all of this I think very much about traditional, text-based, abstracted programming, because actually visual programming tools such as Scratch, or physically programmed things like Beebot robots are far more accessible for more people (again, in my own personal experience). I'd argue though that these are not real programming, in that they're not software development tools with which you could create an executable application or Web application, and the paradigm in which they operate is quite different and over simplified. Lower-level programming is far more challenging cognitively and it seems that this challenge, more than the abstraction or flexibility is what appeals to programmers. If you were a hacker, it certainly seems that the challenge is what drives you to complete the task, and to create your program or hack.
So, a hunch, a theory, or a bark up the wrong tree? Maybe I'm reading people wrong! Interestingly, whenever I've been personality profiled, I've often been identified as an introvert-extrovert. Equally, I'm not the world's best coder, as much as I love computers and hacking!
Ok, so this is based on my own experience, but on the whole, I think computer programmers (or coders) are a certain type of person. In that they're a 'Myers-Briggs type' of person (not that I completely agree with M-B, but that's another matter). I've met a lot of coders in my time, and indeed I'm one myself, and to me it seems that to be interested in programming or computers, be it your hobby or enjoyable, fulfilling career, you need to be a certain type. Words that I use, tentatively, are: patient, obsessive, introverted, detail-driven, inquisitive, logical and more I'll add to this list... Years ago at Uni, we were shown the CBS documentary "Triumph of the Nerds", which is about the folk like Bill Gates and Steve Wozniak that were instrumental in the creation of the PC in the 1970s and 1980s. I can't remember why we were shown it, but what remained with me was the realisation that I was a nerd, and these people were like me, only significantly richer and more successful! The people that created computers, and programming languages were the kind of people that seem to still be attracted to, and successful with computers. I know that programming languages were created the way they were more out of necessity, and history, rather than being a secret club for introverted nerds, but even so, they seem to suit the type of folk I describe above.
When growing up with, and later working with children who were interested in computers and coding, they again seem to be same type of detail-oriented, patient, quiet kids who like to get on with their programming challenges on their own, challenging themselves and tinkering for hours improving their code and then sticking that out there for the world to admire, rather than themselves. They don't want to be centre of attention, and often hide behind personas and handles that are as obscure as the complex hacks they have created.
So what is it about coding that appeals to coders? And what is it that makes some people completely disinterested by writing computer programs? Is it personality type, or some deeper cognitive ability or suitability? Attention span? Linguistic ability? (I've some theories about second language acquisition and linguistic ability and programming too for another space)
In all of this I think very much about traditional, text-based, abstracted programming, because actually visual programming tools such as Scratch, or physically programmed things like Beebot robots are far more accessible for more people (again, in my own personal experience). I'd argue though that these are not real programming, in that they're not software development tools with which you could create an executable application or Web application, and the paradigm in which they operate is quite different and over simplified. Lower-level programming is far more challenging cognitively and it seems that this challenge, more than the abstraction or flexibility is what appeals to programmers. If you were a hacker, it certainly seems that the challenge is what drives you to complete the task, and to create your program or hack.
So, a hunch, a theory, or a bark up the wrong tree? Maybe I'm reading people wrong! Interestingly, whenever I've been personality profiled, I've often been identified as an introvert-extrovert. Equally, I'm not the world's best coder, as much as I love computers and hacking!
2 minutes - Reminder on what my PhD is and some thoughts on programming tools for beginners
I'm looking at understanding better how we can prepare newbie coders for a potential education/career in programming. I am awkwardly using the term newbie rather than really young kid at this stage as you could be learning this at 50 and still want an entry point into it. iPads work as well for mature digital immigrants as they do for babies as a way into new tech, just ask my mate Leonie Ramondt who does iPad workshops for all ages. So this preparing yourself for learning to code when you don't know much about computers could work for all ages potentially.
I've been working with children from the ages of around 3 up to 13, and their teachers on learning programming using hardware and software such as BeeBots, BigTrak, Scratch, Python and more. I've always found the progression from one to another tricky though. You start with a physical robot which you program in a very linear space, and it's quite limited in it's capabilities. That's fine, it must start simple, and being playful and physical helps too I'm sure. You then dump out of there into Scratch quite often, or perhaps Daisy the Dino on an iPad. Scratch is a great piece of software, and anyone new to coding finds themselves at home really quickly and can program Scratch (rather than the computer per se) to do stuff. You get involved in a software development cycle where you have an idea, you then plan and build and debug it iteratively and rapidly and end up with something close to what you originally imagined, or perhaps quite different, and have a lot of fun doing so. Your finished product might end up different to what you started with due to you not completely understanding what is available in Scratch, or maybe just your idea changed, or perhaps the software isn't capable of what you wanted to achieve. More on that later... At this stage in your programming journey, it's all still quite fun and the assessment isn't terribly rigid in a lot of cases, so the limitations of Scratch are outweighed by its accessibility and relative power to create. As I said, more on this in another post where I'll evaluate some of these common tools in more detail.
Assuming you graduate from Scratch with flying colours, a lot of schools and coding academies/clubs move you onto Python - a traditional, text-based, powerful programming language. Python is great, and as programming languages go, very accessible. The problem is that Python is a massive jump in complexity from Scratch. It wouldn't be such a jump from Logo or Basic, but from Scratch it is. Children feel often like they are disempowered in Python compared to Scratch - where they were wizards and could create sophisticated games with powerful logic based behaviours using loops and variables, and they could do it in minutes, in PyGame (A game development library for Python), they get caught out by syntax, lose that instant feedback they were used to and produce games that just will not run rather than not working quite right. In a lot of cases they get over the hump and really learn to fly with Python, but I see many more that just end up copying what they need to out of the book to do enough to pass their class. I'm not knocking Python though, and if you want to go into industry as a coder, being a Python wizard will mean you are a C wizard and a Java wizard too.
Where I'm going is that I think the progression needs to be looked at, and the programming environment you use needs to increase in complexity in a linear, staged fashion, getting progressively more complex yet powerful, whilst still remaining constant and familiar. After all, aren't most things you learn (at school) structured like that? Certainly the new National Curriculum for Computing resembles this kind of model, yet Beebot/Roamer -> Scratch -> Python doesn't in my opinion or that of many children and teachers I've worked with.
I've been working with children from the ages of around 3 up to 13, and their teachers on learning programming using hardware and software such as BeeBots, BigTrak, Scratch, Python and more. I've always found the progression from one to another tricky though. You start with a physical robot which you program in a very linear space, and it's quite limited in it's capabilities. That's fine, it must start simple, and being playful and physical helps too I'm sure. You then dump out of there into Scratch quite often, or perhaps Daisy the Dino on an iPad. Scratch is a great piece of software, and anyone new to coding finds themselves at home really quickly and can program Scratch (rather than the computer per se) to do stuff. You get involved in a software development cycle where you have an idea, you then plan and build and debug it iteratively and rapidly and end up with something close to what you originally imagined, or perhaps quite different, and have a lot of fun doing so. Your finished product might end up different to what you started with due to you not completely understanding what is available in Scratch, or maybe just your idea changed, or perhaps the software isn't capable of what you wanted to achieve. More on that later... At this stage in your programming journey, it's all still quite fun and the assessment isn't terribly rigid in a lot of cases, so the limitations of Scratch are outweighed by its accessibility and relative power to create. As I said, more on this in another post where I'll evaluate some of these common tools in more detail.
Assuming you graduate from Scratch with flying colours, a lot of schools and coding academies/clubs move you onto Python - a traditional, text-based, powerful programming language. Python is great, and as programming languages go, very accessible. The problem is that Python is a massive jump in complexity from Scratch. It wouldn't be such a jump from Logo or Basic, but from Scratch it is. Children feel often like they are disempowered in Python compared to Scratch - where they were wizards and could create sophisticated games with powerful logic based behaviours using loops and variables, and they could do it in minutes, in PyGame (A game development library for Python), they get caught out by syntax, lose that instant feedback they were used to and produce games that just will not run rather than not working quite right. In a lot of cases they get over the hump and really learn to fly with Python, but I see many more that just end up copying what they need to out of the book to do enough to pass their class. I'm not knocking Python though, and if you want to go into industry as a coder, being a Python wizard will mean you are a C wizard and a Java wizard too.
Where I'm going is that I think the progression needs to be looked at, and the programming environment you use needs to increase in complexity in a linear, staged fashion, getting progressively more complex yet powerful, whilst still remaining constant and familiar. After all, aren't most things you learn (at school) structured like that? Certainly the new National Curriculum for Computing resembles this kind of model, yet Beebot/Roamer -> Scratch -> Python doesn't in my opinion or that of many children and teachers I've worked with.
Back blogging again..
I admit I've been bad about updating my blog recently. I'm guilty of moving around Web platforms depending on a completely unscientific set of criteria - what has the sexiest app, what is on my browser quick links bar, what has the most hackability, etc etc. Also, audience seems to have a big impact, and sometimes blogging seems like you're just typing away into the ether where no one will really read it. It's always nice to think you're being heard, even if you are just rambling. I'm just that kind of person, I thrive on feedback and interaction, and blogging doesn't give me the same feeling as Twitter or GitHub does. The problem with Twitter (although equally its strength) is that 160 chars is just too little to write anything meaningful about my research (discuss!) although I do think it's a authentic research tool, and it's great for meeting and interacting with folk (in fact unparalleled as LinkedIn can frankly do one!)
Anyway, whilst talking to my lovely girlfriend and a very old and learned mate (both who have much better blogs than me!) last night, I have decided to make more of an effort to blog in relation to my PhD. Why? Well, the answer is twofold really. Firstly, in a recent supervision with the Prof, he warned me to not fall into the trap of not documenting and sharing (with him and the academic community) my PhD journey, especially the stuff that would actually be of interest to the community. I'm often getting asked things on Twitter and have nowhere to show people what I'm up to (like this). If I've got a longer-than-160-chars point to make, it makes sense to make that point on T'blog and then 'advertise' it on Twitter. I think this dual space model will work, and it's certainly worth a try, my only reservation will be whether people make longer-than-160-chars responses on my blog or stuck to just quote-tweeting me with 'I agree' or more likey 'meh' afterwards ;-)
The second related point is that some of my mates are quite interested in the young children and coding space, and as I'm one of the few people investigating that area, and they'd like to know where my research is taking me now, rather than waiting til I finish my PhD. Especially with all the changes in the curriculum in UK schools. So, here is somewhere they can check into rather than mailing me and asking what I'm up to. They can of course still do that, but perhaps here everyone benefits.
Anyway, enough waffle already. I'm about to get a couple of points off my chest here.
Anyway, whilst talking to my lovely girlfriend and a very old and learned mate (both who have much better blogs than me!) last night, I have decided to make more of an effort to blog in relation to my PhD. Why? Well, the answer is twofold really. Firstly, in a recent supervision with the Prof, he warned me to not fall into the trap of not documenting and sharing (with him and the academic community) my PhD journey, especially the stuff that would actually be of interest to the community. I'm often getting asked things on Twitter and have nowhere to show people what I'm up to (like this). If I've got a longer-than-160-chars point to make, it makes sense to make that point on T'blog and then 'advertise' it on Twitter. I think this dual space model will work, and it's certainly worth a try, my only reservation will be whether people make longer-than-160-chars responses on my blog or stuck to just quote-tweeting me with 'I agree' or more likey 'meh' afterwards ;-)
The second related point is that some of my mates are quite interested in the young children and coding space, and as I'm one of the few people investigating that area, and they'd like to know where my research is taking me now, rather than waiting til I finish my PhD. Especially with all the changes in the curriculum in UK schools. So, here is somewhere they can check into rather than mailing me and asking what I'm up to. They can of course still do that, but perhaps here everyone benefits.
Anyway, enough waffle already. I'm about to get a couple of points off my chest here.
Wednesday, 8 May 2013
The Future is already here..
I had the pleasure of being asked to be one of the judges at Chelmsford Makerspace's #CMJam Game Jam last weekend. The Game Jam was a 72 hour (ish) codeathon where the participants had to program an original computer game (or mod to an existing engine) whilst incarcerated in the concrete walls of the Ideas Hub community space in Chelmsford, Essex.
Of course, plenty of Pizza and Coke was available to feed the hungry minds and stomachs of the attendees. We ended up with six teams, and each showed off a surprisingly complete game, especially Makerspace Co-founder Ben Orrin who wrote a particulary addictive HTML5 platformer in an impressive 140-odd lines of code!
All the entrants were young men, I believe all under the age of 18, and none of them had learnt any coding in school, in fact all of them were essentially self taught, or taught by their peers at the Makerspace or online. Producing a video game was of course a good motivator for them as they were all avid gamers, but the interesting thing was that these young, talented coders were unhappy with just playing games, and were driven to create their own. As I said, the standard was very high, and judging was tough with only five points separating the top four entrants. Everyone came away with a prize, with the top prize being a Raspberry Pi which will hopefully get warm as the winner compiles their game onto it!
With fear and trepidation evident from some (many) UK teachers about having to teach coding in the National Curriculum, I sat there thinking that there were plenty of budding Computing teachers sitting in the room, presenting their wares in a confident and compelling manner. I think I learnt more about coding from some of the CMJammers than I had in the last ten years!
Ben Orrin and Richard Raybould from Chelmsford Makerspace and Leonie Ramondt from the Ideas Hub Chelmsford
Of course, plenty of Pizza and Coke was available to feed the hungry minds and stomachs of the attendees. We ended up with six teams, and each showed off a surprisingly complete game, especially Makerspace Co-founder Ben Orrin who wrote a particulary addictive HTML5 platformer in an impressive 140-odd lines of code!
All the entrants were young men, I believe all under the age of 18, and none of them had learnt any coding in school, in fact all of them were essentially self taught, or taught by their peers at the Makerspace or online. Producing a video game was of course a good motivator for them as they were all avid gamers, but the interesting thing was that these young, talented coders were unhappy with just playing games, and were driven to create their own. As I said, the standard was very high, and judging was tough with only five points separating the top four entrants. Everyone came away with a prize, with the top prize being a Raspberry Pi which will hopefully get warm as the winner compiles their game onto it!
With fear and trepidation evident from some (many) UK teachers about having to teach coding in the National Curriculum, I sat there thinking that there were plenty of budding Computing teachers sitting in the room, presenting their wares in a confident and compelling manner. I think I learnt more about coding from some of the CMJammers than I had in the last ten years!
Ben Orrin and Richard Raybould from Chelmsford Makerspace and Leonie Ramondt from the Ideas Hub Chelmsford
Wednesday, 24 April 2013
What am I studying for the next two years?
I got asked for my Ph.D elevator pitch the other day when talking with colleagues at CEMP:
So what is mine? Well, the idea is to evolve an artefact (artifact for my American chums) that allows us to research really young children's (think pre-school, pre-notational) understanding of computer science before they come slamming up against it in the National Curriculum. Teachers are worried enough about teaching it, and although we know children can understand it (think back to Papert in 1980), who's helping them to show their understanding? Now I'm not proposing that toddlers will be banging out a few hundred lines of Ruby on Rail between episodes of Peppa Pig, but it would make their teacher's lives a bit easier if they knew what a greater than or less than did when playing with their toys before they're asked to explain an algorithm at age seven.
The really exciting bit is how we capture and synthesise the data. Think pattern and colour matching and smartphone cameras (or Google Glass?!) which sets up an interactive 'code play' area where the children's toys (or even themselves) become part of the program. Watching and recording their learning and then recognising their learning styles could be immensely powerful and insightful. Back many years ago, we used to let children program themselves by putting a cardboard box over their heads. The amazing thing was how much more careful, considered and cognitive their play became - after all you don't want to send your sister stumbling into the village pond, no matter how much you think she eats spiders.
So what is mine? Well, the idea is to evolve an artefact (artifact for my American chums) that allows us to research really young children's (think pre-school, pre-notational) understanding of computer science before they come slamming up against it in the National Curriculum. Teachers are worried enough about teaching it, and although we know children can understand it (think back to Papert in 1980), who's helping them to show their understanding? Now I'm not proposing that toddlers will be banging out a few hundred lines of Ruby on Rail between episodes of Peppa Pig, but it would make their teacher's lives a bit easier if they knew what a greater than or less than did when playing with their toys before they're asked to explain an algorithm at age seven.
The really exciting bit is how we capture and synthesise the data. Think pattern and colour matching and smartphone cameras (or Google Glass?!) which sets up an interactive 'code play' area where the children's toys (or even themselves) become part of the program. Watching and recording their learning and then recognising their learning styles could be immensely powerful and insightful. Back many years ago, we used to let children program themselves by putting a cardboard box over their heads. The amazing thing was how much more careful, considered and cognitive their play became - after all you don't want to send your sister stumbling into the village pond, no matter how much you think she eats spiders.
Subscribe to:
Posts (Atom)