Archive for the ‘Learning’ Category

Programming for Health: A Reflection

Tuesday, August 11th, 2009

I’m on ‘staycation’ –annual leave from my normal day job at Natcoll. Staycation because I’m not actually vacating where I am: I’m still at home in Wellington.

I’ve been volunteering at Catalyst IT working with Brenda Wallace to work on projects of her choice. She assigned me to work on Laconica (an open-source version of Twitter that works in a distributed fashion). In order to do so I’ve had to learn a little about many different technologies, like PostgreSQL, the weirdness of Apache+PHP on MacOS X 10.5, and overall, how to checkout and contribute code to an open source software project with Git.

I’ve now had three code merges into Laconica, albeit very minor ones, mostly fixing bugs.

I don’t even use Laconica. (Twitter is working just fine for me, thanks.)

But I feel great.

Computer programming is something some have described as the most complex thing humans have invented — it’s all abstract, there are few corollaries to it in nature. Probably the only thing more complicated is quantum mechanics (but that is, in fact, nature).

My job is to explain, demonstrate, and encourage people who have never programmed a computer in their life (let alone their VCR) to create rather complicated things we call websites.

Why have I enjoyed contributing patches so much to an project I don’t use or much care about? A couple of reasons:

The Zone

The elusive Zone has many names; Wikipedia refers to it as “flow“. It’s that state of being you get when they’re so intensely focussed in the task at hand that time and reality become irrelevant because you’re so energised and focussed and involved at what you’re working on, and having good success at doing it. You come away feeling elated and energised that you’ve completed something of value.

I haven’t been in The Zone for nearly four years. I’ve been teaching people how to program for nearly four years now, and nary the mind to knuckle down and flex my coding muscles. I’m too worked up with office politics, helping my workmates with the technology, and thinking that I wasn’t good enough to be in the industry.

Learning

It’s good to know that I can do it, though to do it professionally, I’d just need to learn more about the processes involved.

I’ve had to learn how to use Git, how to create PostgreSQL users and databases, and submit my finished code to the project administrators for merging with the mainline version of the program’s code.

I don’t normally get to be a learner. I’m a full-time teacher, and what I have to learn is usually because I need to teach it.

It’s nice to learn things for me and me alone. I may never get to teach what I’m learning here, but what I’ve learned is helping fulfill me (more on that later)

That old adage “Those who can, do. Those who can’t, teach”. It’s lies.

Actually I’m a tutor, but that’s just a particular kind of teacher. Not meaning to blow my own horn, but according to my student evaluations I am actually a really good tutor. Sure, I have my weaknesses, but overall, apparently I rock at it.

And I really enjoy teaching. It’s rewarding when the metaphorical light-bulbs turn on above the student’s heads. Some of them slowly brighten, some just pop on, and some of them shine more powerfully than others, but the lights do turn on. To know that a learner now understands one of the most complicated things there is to know,

I was at Wordcamp New Zealand here in Wellington over the weekend, and Nicki Gemmell was talking about using blogs at primary schools around New Zealand. She related how uploading an image to a blog was something a principal got excited about: “I uploaded a photo to our school blog today; how cool is that?!”.

As a programmer who has written photo upload functionality, I forget how far I have come and how valuable the skills I have really are. The challenge of teaching people to do things is fun and rewarding. Teaching students to do this even more complicated stuff is the same but even more challenging.

Teaching programming, from my own experience, is the ability to communicate the concepts and foster the understanding and use of them. I was told by a trainer there were four levels of competency:

1. Unconscious Incompetence – you are unaware that you don’t know how to do X.
… awareness brings:
2. Conscious Incompetence – you are aware that you don’t know how to X.
… learning brings:
3. Conscious Competence – you can do X, and you are thinking about it when doing it.
… practice brings:
4. Unconscious Competence – you can do X, but you do not have to think about it when doing it.

I say that there’s a fifth level: where you have become once again conscious of what it is you are competent at. And that’s the level where you’re ready to teach it.

To be able to teach, you must be able to learn, and then go further so you can show others the way.

Those who can teach, do teach.

People

Okay, I’ll be honest: being around Brenda and the other like-minded geeks at Catalyst IT has been a really energising experience. Being able to vent frustration at code and technology, bounce ideas off each other and have fun while doing it has been great.

But working on Laconica and spending some time reading other peoples code and improving it, and learning the technical, and social aspects of doing so has been fun and very enlightening.

My motivation for staying a teacher has been pretty simple: Hell is other people’s work. Most of the employment in the industry has been creating websites for companies; wish fulfilment for others. I could change the world one organisational website at a time, or I could change the world 20 web students at a time.

But working on an open source project has let me use my programming skills to directly improve, ever-so-slightly at this stage, the lives of people around the globe. By making the software they use better.

Having that sense of purpose in what I are doing is really important to me. I don’t want to just be working to collect a pay check: working to live. And I don’t want to be living to work either. I just want to do what is worthwhile while I’m alive: live life to the fullest. Use the abilities I have to do things worth doing.

I am a teacher. I am a programmer. I’ve been neglecting the programmer side of me.

“Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends – commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. Larry O’Brien and Bruce Eckel

Save Icon Confusion is reverting?

Thursday, July 24th, 2008

What shall we do with the drunken save button?

So floppy disks are totally redundant. Very few new computers are coming with floppy drives. Ask a five-year-old kid what each of these things is:

floppy diskcompact diskSD Card

In my totally unscientific research, I asked a mother of a six-year-old if her little boy would know what these three things were:

CDs: Yes.
Memory Card: Yes.
Floppy Disk: Probably not.

So what did software developers do? Look for a new replacement.

The past

Microsoft Office X for Mac (2001) has used a ZIP disk:
Excel save icon

NeoOffice 2.x for Mac took me a while to figure out… Something akin to the Windows and OSX icon for Removable Drive?

NeoOffice save icon

Why did they have to confuse me?

The Steam Train Comparison

My reaction to this confusion was ‘why change it?’

In New Zealand, and as it turns out, Italy and Sweden, our road signs that say ‘railway level crossing’ look like this:

Railway Crossing sign for New Zealand

(courtesy ltsa.govt.nz)

But hold on, that’s a STEAM train! These trains are not around any more except for in museums and… children’s books. Of course, we all know that this sign is a train. Digging further, it turns out here in New Zealand we have a sign for ‘light rail level crossing’:

Light Rail level crossing

(courtesy ltsa.govt.nz)

What the hang is that… I guess it kinda looks like a train, but it’s electric, but it could be a tram.. huh… *SMACK!* Your car just got hit by an oncoming TRAIN. Talk about confusing and potentially fatal. Luckily, I’ve only got my learner driver’s licence, and I haven’t ever seen this sign in use.

My point is why change something that works?  Luckily, developers have caught on that the floppy disk is an international symbol:

The Present

OpenOffice 3.0 Beta has a floppy disk:

OpenOffice 3.0 Save Icon

And thankfully, Microsoft Office 2008 for Mac has switched back to a floppy disk:

Excel 2008 save icon

Here’s the cincher: Google Docs, a web application that doesn’t even have access to your local computer still uses the floppy disk for its save button:

Google Docs save icon

Curious and Curiouser

Looking for further examples, I dug around. It turns out many applications don’t even have save buttons any more. Apple’s iWork doesn’t have a save button in any of their applications tool bars; you can’t even customise the tool bar to put one there either! I guess these applications are expecting you to memorise the more universal shortcut of Command+S or Ctrl+S

Conclusion

I think that we should stick with the floppy disk. It’s recognisable by all us old timers, but I think that young ones who haven’t seen a floppy disk will still know that it means ‘Save’.

But then again, isn’t just using the keyboard a lot quicker?

The Age of Expertise

Thursday, September 6th, 2007

After reading Andy Oram’s post on O’Reilly Radar What comes after the information age, I was struck by the fact that because I’m a tutor, I might be in the right industry!

Andy makes a case that because we have ubiquitous free documentation, in the form of text-files, wikis, videos, how-to websites, screencasts and readily available specialist books (from O’Reilly no doubt), information is no longer the problem any more. Expertise is the new scarcity. Mentors and tutors and guides and people who know how to do things is the problem now.

I have a lot of industry contact in my tertiary level tutor role at Natcoll, and I keep an eye out on the jobs available in the web development industry in Wellington that my students can go into. That’s all well and good, but we’ve had organisations like mine are having a hard time finding highly skilled staff to relieve classes and even take on full time roles, and I understand it is the same at our different campuses around New Zealand — there are just not enough people who want to get into upskilling people up. There’s no shortage of people wanting to learn the ins and outs of design and development though, with no sign of slowing.

Teach NZ is always advertising on TV and on the Wellington buses for graduates who might want to take up Secondary School teaching (high school age for you non-kiwis). Now teaching in a secondary school is not for the faint-hearted, guaranteed. But what about universities? You’d probably need to have a Masters before you could get a good job teaching at a university.

There are other ways we learn other than attending institutes too: one-on-one mentoring, attending short courses, night classes, special interest groups (SIGs) including software user groups. And then there’s the communities on line too!

So why is teaching not a popular choice?

Why aren’t many people taking up the challenge of teaching? Do the people who think they want to be a teacher end up going to teacher’s college and having the life force sucked out of them? One friend of mine has a science degree and went to a teacher’s training college here in Wellington to become a teacher, went into a high school to teach physics and science and then after doing that for a year or so, switched careers! The challenges of high school teaching aside, he said he didn’t like it. Why? I don’t know, but I’ve got some ideas.

Teaching is a selfless job. You’re there as a servant. You serve the students concepts and information, challenging their pre-conceptions and assumptions, with the goal of them ‘getting it’; seeing the cogs in their heads suddenly mesh, and switch into gear and take off!

At least, that’s why I do it. And I’m not even formally trained as a teacher. All I have is a few years industry experience and a passion for being the best I can be at what I do. And I teach so that I can change the world I live in.

The internet is sometimes called the largest and most successful collaboration between individuals and organisations in the history of the human race. The internet was created so people could communicate over long distances. So they could share ideas and discuss the implications of what they were working on or what they themselves had discovered.

Specifically, I teach web development so that it can make the internet a better place. If that previous paragraph doesn’t sound like something to spend time understanding and improving, then let me know why you think so.

I could get a career as a web developer out in the industry tomorrow; there are plenty of jobs for the people who can do things out there.

But there aren’t enough people shaping those ‘do’ers.

There aren’t enough ‘teach’ers.

There aren’t enough specialised teachers. Well at least in the web industry there’s not. Not enough people teaching the hard stuff that requires masses of prerequisite knowledge. Even though the Web is just under 15 years old, the amount you need to know to make a successful website, or even a successful online community is tantamount to experience.

If you want to create a website these days, you have to know HTML, CSS, Javascript, a server side language such as PHP, Ruby, Perl or *shudder* ASP or similar. You need to understand the design and implementation of databases and how to use SQL. You need to have an eye for design, usability. You need to have a mind for communication and writing. You need to understand the human-computer interface and it’s strengths and weaknesses and how to wield these things.

Being a web guy is hard work. Still, web developers, even ones who are good at what they do, don’t get the industry recognition they deserve: a web developer or web designer (but not a ‘web decorator‘) will get paid less than a traditional ‘software developer’ who is making applications for Windows or services for the back office. But a web developer or web designer might have to a lot more than a traditional ‘programmer’.

And that prerequisite knowledge stack is only getting larger by the day! The most published thing online (other than cat pictures and pornography) is in my opinion information about the internet itself. There are tons of sites out there detailing the technologies I allude to above.

There’s lots of information online about what we web developers do. Freely available, just waiting for you to read it, if you so desired. But I believe there’s not enough people who are making it their life’s mission to mentoring and teaching and guiding individuals through this jungle of things out there waiting to be discovered.

You can go to Te Papa by yourself and see the Britten motorcycle. But that doesn’t mean you can go to Te Papa by yourself and learn about the fascinating story behind it.

But if you have a guide, they might be able to point you in the right direction.

Can I are be turning Japanese, I rly think so?

Monday, August 13th, 2007

So I’ve got this goal of working in Japan for at least 6 months by 2014. That’s the big goal.

To take a big step like that is a bit much, so to break it down a little:

  • Read, write and converse in Japanese at an intermediate level by the end of 2010.
  • Visit Japan for a holiday at some point between 2010 and 2014, and visit Tokyo (especially Akihabra), Kyoto and Osaka, and do tourist-stuff. Also the Studio Ghibli Museum is a must.
  • Find a job, preferably teaching web development, maybe teaching English so I can get a work visa.
  • Work in Japan for at least 6 months by the end of 2014.

Not so bad a plan, eh?  It’s quite flexible, and subject to change, but it’s the current target.

Why you might ask? Well, I’ve always wanted to learn a language, and the Japanese culture, history and lifestyle really interests me, and I’m single so I don’t have anyone holding me back.

So I’ve bought a book (Japanese Step by Step by Gene Nishi), and am keeping an eye out for beginner’s Japanese courses, so I can sign up for one that’s running at a good time for me.

I have a friendly workmate who spent a long time in Japan a few years ago who is encouraging me along. We go for lunch at Japanese restaraunts around town; he’s got many of us at work hooked on katsukari (pork fillet curry with rice)… mmm katsukari! Damn, I’m hungry now…

So I think in the short term, I’m pretty sussed. I’ll be signing up for a beginner’s Japanese course after September, and I’ve got a friend or two who I can practice with.  Maybe I’ll make friends with some cute Japanese girls in Wellington, who knows? I’m pretty open minded about the whole thing.

What is kind of weird is being 26 right now, I’ll be 33 in 2014. But you’re as old as you feel, and with me, that currently can range from 21 to 35 right now, -_-;

Anyway, does anyone out there in the world wide tubes have any suggestions on learning Japanese? Tips and tricks? Must have resources? Must visit places?

Also, anyone know how to get my Mac so I could type katakana and hiragana with a Dvorak keyboard layout? It wants me to use QWERTY instead :(

Friday, February 24th, 2006

Today at work, we were visited by someone from The Open Polytechnic of New Zealand‘s Adult Education and Training department. Apparently, I can become a qualified teacher and get a “National Certificate in Adult Education and Training” through a correspondence course, and Natcoll will pay for it. Woot! And it turns out I can cross credit some of my unit standards from my Electronic Multimedia course I finished in 2000. :D

I’m actually pretty excited about learning more about teaching. I read this article yesterday which quoted Raph Koster’s definition of fun:

Fun is learning in a safe-environment.

The reverse “learning in a safe-environment is fun” isn’t always true, but taking risks to practice something new and exciting and not having to pay huge consequences is fun.

Not to mention getting paid to get a qualification — that’s pretty sweet.