August 28, 2011

...Learn TDD with Codemanship

A Blog Post For Your Kids - Why I'm Very Glad I Learned To Program

Computers are everywhere.

I'm not just talking about those things with screens and keyboards and mice that you have at home, or in the classroom, or at your Dad's office.

There are computers in your mobile phone, translating 1's and 0's that are sent through the air into your grandmother's voice reminding you that grandad's birthday is coming up, and telling you not to buy him socks again this year.

There are computers in your TV sets, translating 1's and 0's that have been beamed from a transmitter, or sent down a fibre-optic cable under the street outside your home, into moving pictures of Matt Smith telling us that "bow ties are cool" (which they are, by the way.)

There are computers in the engine of your Mum's car, continually monitoring how it performs and making decisions about how much petrol to inject from moment to moment. It's computers that help your Mum get more miles to the gallon - which means less pollution and destruction to the environment, and more money for Wagon Wheels. (Wagon Wheels are cool.)

There are computers on board the airliner that takes you to an exotic faraway holiday destination (like Coventry, for example), carefully controlling thousands of different flight parameters many times a second to help ensure a safe and comfortable journey.

There are computers in your local supermarket - thousands of them - continually updating stock information every time an item is scanned at the checkout, automatically reordering items from suppliers when they run out, and doing a thousand other things that need to be done every day to run a supermarket.

There's a computer inside your CD player, your toaster, your microwave oven, and many other household electronic and electrical items.

There are computers in hospitals, tirelessly watching over critically ill patients day and night to ensure doctors know as soon as their heart rate, or their blood pressure, or their temperature becomes abnormal, and alerting medical staff as soon as something appears to be wrong. They also have computers that can see right through you, building accurate 3-dimensional models of your internal organs - brain, heart, lungs, kidneys, bones, muscles, blood vessels, shoes etc - so doctors can diagnose problems without having to cut you open, and can plan operations with life-saving precision in advance.

There are computers in recording studios that capture and store your music, and can allow producers to manipulate sounds - vocals, guitars, keyboards, drums - in ways that were totally unimaginable 30 years ago. And the finished music can be distributed as 1's and 0's to anywhere in the world almost instantly and for free, thanks to computers.

There are computers on film sets, controlling the motion of cameras so that every zoom, every dolly, every pan can be replayed with pinpoint accuracy over and over again, which is what gave us Star Wars and virtually every major blockbuster movie since. And computers are used to capture performances of actors that can then be applied to completely digital characters like Gollum in Lord Of The Rings, King Kong, and every single character in the new Tin-Tin picture. Thanks to computers, an average-height London actor can convincingly play a giant gorilla who climbs the Empire State Building.

There are computers in science laboratories, that store data from experiments and perform extremely complex calculations that have revealed a whole world of things that were impossible to see before. We can only detect planets circling distant stars thanks to the immense number-crunching power of computers. We can only catalogue the hugely complex human genome thanks to the extradordinary data storage and retrieval power of computers. We could only ever hope to detect a message from an intelligent alien civilisation using computers to process the billions of radio signals streaming down to us from deep space, and pick out that one artificial signal from all the natural ones. In the last 50 years, we have made more scientific advancements than we did in the previous 4,000 years, thanks largely to the power of computers.

Thanks to computers, our power to collect, create, analyse, search and share information - in all its different forms, from text to sound to pictures to movies, and a thousand million other kinds of data - has doubled every couple of years, and will continue to expand at that rate for decades to come.

You hold more computing power in your hand when you use a smartphone than was used to make the dinosaurs in Jurassic Park just two decades ago. In 1992, your smartphone would have been called a "supercomputer". In twenty years time, your smartphone will have more computing power than was used to create all of the computer-generated scenes in Avatar.

Imagine what you could do with that kind of computing power!

That's what I do. I'm a computer programmer. I write the programs that these computing devices run. I spend my life imagining ways to apply this ever-increasing computing power to solving people's problems and making their lives better.

I've written all kinds of programs, for all kinds of computers.

I've written programs that help people to design better electronic circuit boards and even to make better computers (yes, we use computers to design computers, which is one of the reasons why computers keep getting better and faster and smaller.)

I've written programs to help people find jobs over the Internet. I've written programs for banks, for supermarkets, for mobile phone companies, for TV and film companies, for law practices and even for software companies (yes, programmers use computer programs to write computer programs - and as those programs get better, we get better at writing programs, which is why programs keep getting bigger and more sophisticated.)

In my spare time, I've written programs just for myself that anyone can download and use for free, and, if they want, they can add to these programs to make them better. Many computer programmers just want to help people, and we are famously keen on sharing our own programs with anybody that wants to use them.

Millions of people have used programs I've contributed to; all kinds of people from all around the world. Programming is a great way to touch lots of people's lives, and to change the world just a little bit for them - hopefully making it better!

Think about the programs you use and enjoy. Perhaps you love to play games on your XBox or Nintendo Wii. The people who wrote those programs take great care and pride in entertaining you while you play the game. They create amazing and fantastical worlds for you to explore and enjoy, and it's all generated from inside a little box that most of us have in our homes or classrooms or offices.

That's what I love most about being a programmer - anyone can do it. If you have access to a personal computer, you can write your own programs. You can create your own games, your own worlds, and then share them with friends around the world. A generation ago, this was unimaginable.

That's why I started programming. I was at school when the first home computing revolution happened in the early 1980's. Computers like the Sinclair ZX81 and ZX Spectrum, the Commodore 64 and the BBC Micro - the BBC had their own brand of computer back then - started appearing in people's homes. These were very simple, basic computers compared to what we have today.

In my house, we had a Commodore 64, which boasted a tiny 64 kilobytes of usable memory - that's about 50,000 times less memory than your home computer probably has today. But, with a bit of cunning and a lot of hard work, people were able to write pretty fun and interesting programs using just those 64KB of Random Access Memory - especially games. Lots of games!

The thing was, you didn't have to just play games on your Commodore 64, you could write games, too. And lots of kids did. Some of the games kids wrote for their home computers were so good that they sold them, and built their own computer game empires right there from their bedrooms.

Many of those kids are programmers today. We got bitten by the bug of writing our own programs, and have been in love with programming ever since. And although many of us aren't writing games today, we are writing programs that are changing the world in all sorts of other ways.

And that's why I'm very, very glad I learned to program.

Posted 9 years, 6 months ago on August 28, 2011