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!
A blog about helping young people (and teachers) to learn about programming and computer science.
Sunday, 15 September 2013
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.
Ph.D Progress!
My doctorate at CEMP in Bournemouth seems to be gathering momentum. I've just handed in my initial review which is a great milestone to get out of the way, and my supervisors seem happy. The last month was more of a headache than the previous months as I went round in circles (infinite loops) with methodology and research methods. It seems some doctoral students take to this side of their Ph.D easier than others, and I didn't take to it that easily if I'm honest. It's one of those things that you spend hours reading, writing, iterating (that sounds like action inquiry doesn't it?) and end up with far too much stuff, which your supervisors then ask you to rip back to the bones. I spose 'growing up' at Ultralab always stuck me in a mentality of wanting and trying to be ahead of the curve, whereas this part of my studies involves grounding myself in existing research.
One of the best things about my studies so far has been working with and talking to my fellow students at CEMP. What a bright bunch they are - no wonder many of them are wondering what to do post doctoral study, they've all loved doing their research so much.
One of the best things about my studies so far has been working with and talking to my fellow students at CEMP. What a bright bunch they are - no wonder many of them are wondering what to do post doctoral study, they've all loved doing their research so much.
Wednesday, 13 March 2013
DronePhone
So there I was, thinking out loud with my mate at Makerspace, RichardR about what you could do with a Parrot AR.Drone that might teach kids something. The brief was brief (aren't all the best ones?) - we need to have a more 'active' computer science activity to engage our knowledge hungry local cub scouts, as they love running around and doing things. We've got a Parrot AR.Drone (The BananaDrone) and another on the way, and we've all got phones. We want to get a GPS chip for the Drone, so what about if the cubs went outside to the big field behind their scout hut (also home of Makerspace), plotted some kind of route on their phones, upload it somehow to the Drone which will then follow the route. After all, all cubs love a bit of pathfinding!
The missing link is the thing that transfers the route from the phone to Drone, but that can't be hard can it? Between myself, the cubs and the makerspace folk, we should be able to do it in an evening I reckon.
Activities like these are great for kids because it teaches them how you'd program a device (you create the program by walking around, and the program needs to make sense at the very least), and then install that program into the memory of the thing that then runs the program. There is a bit of a challenge to it, and some anxiousness as you watch it act out your instructions. it's like BigTrak, but flying and very much in the 21st Century, using the latest technology.
Once the cubs (or other kids) have done the routing and flying bit, we can sit down and show them how the simple program that transfers the instructions between the devices works, and hopefully teach them a bit of programming along the way. If you've got some less technically-inspired kids, then the fact this is a physical and fun activity should still engage them with the task.
The above concept and the BananaDrone is very much the approach I think you need to take to teach kids computer science in the 'teenies' - it's fun, realtime, technically bang up to date and it has that tiny bit of danger/doubt that all good hacking should have...
We'll get some code up once it's written ;-)
(Oh, and when I get my AR.Drone GPS module - hopefully I'll get one very soon)
The missing link is the thing that transfers the route from the phone to Drone, but that can't be hard can it? Between myself, the cubs and the makerspace folk, we should be able to do it in an evening I reckon.
Activities like these are great for kids because it teaches them how you'd program a device (you create the program by walking around, and the program needs to make sense at the very least), and then install that program into the memory of the thing that then runs the program. There is a bit of a challenge to it, and some anxiousness as you watch it act out your instructions. it's like BigTrak, but flying and very much in the 21st Century, using the latest technology.
Once the cubs (or other kids) have done the routing and flying bit, we can sit down and show them how the simple program that transfers the instructions between the devices works, and hopefully teach them a bit of programming along the way. If you've got some less technically-inspired kids, then the fact this is a physical and fun activity should still engage them with the task.
The above concept and the BananaDrone is very much the approach I think you need to take to teach kids computer science in the 'teenies' - it's fun, realtime, technically bang up to date and it has that tiny bit of danger/doubt that all good hacking should have...
We'll get some code up once it's written ;-)
(Oh, and when I get my AR.Drone GPS module - hopefully I'll get one very soon)
Subscribe to:
Posts (Atom)


