Officially certified as a Microsoft Technology Associate in HTML5 Application Development Fundamentals!

Pleased to say a few weeks ago I undertook the exam and achieved my Microsoft  Technology Associate certification in HTML5 Web Application Development.

This certification taught and tested the following skills:

  • Understanding the platform fundamentals
    • Packaging and the runtime environment: app package, app container, credentials/permission sets, host process, leverage existing HTML5 skills and content for slate/tablet applications
  • Managing the state of an application
    • Managing session state, app state and persist state information; understanding states of an application; understanding the differences between local and session storage
  • Debugging and testing a HTML5-based, touch-enabled application
    • Touch gestures; understanding which gestures you test on a device
  • Choosing and configuring HTML5 tags to display text content
  • Choosing and configuring HTML5 tags to display graphics
    • When, why and how to use Canvas; when, why and how to use scalable vector graphics (SVG)
  • Choosing and configuring HTML5 tags to play media
    • Video and audio tags
  • Choosing and configuring HTML5 tags to organise content and forms
    • Tables, lists, sections; semantic HTML
  • Choosing and configuring HTML5 tags for input and validation
  • Understanding the core CSS concepts
    • Separating presentation from content (create content with HTML and style content with CSS); managing content flow (inline versus block flow); managing positioning of individual elements( float versus absolute positioning); managing content overflow (scrolling, visible and hidden); basic CSS styling
  • Arranging UI content by using CSS
    • Using flexible box and grid layouts to establish content alignment, direction and orientation; proportional scaling and use of “free scale” for elements within a flexible box or grid; ordering and arranging content; concepts for using flex box for simple layouts and grid for complex layouts; grid content properties for rows and columns; using application templates
  • Managing the flow of text content by using CSS
    • Regions and using regions to flow text content between multiple sections (content source, content container, dynamic flow, flow-into, flow-from, msRegionUpdate, msRegionOverflow, msGetRegionContent); columns and hyphenation and using these CSS settings to optimise the readability of text; using “positioned floats” to create text flow around a floating object
  • Managing the graphical interface by using CSS
    • Graphics effects (rounded edges, shadows, transparency, background gradients, typography and Web Open Font Format); two-dimensional (2-D) and three-dimensional (3-D) transformations (translate, scale, rotate, skew and 3-D perspective transitions and animations); SVG filter effects; Canvas
  • Managing and maintaining JavaScript
    • Creating and using functions; jQuery and other third-party libraries
  • Updating the UI by using JavaScript
    • Locating/accessing elements; listening and responding to events; showing and hiding elements; updating the content of elements; adding elements
  • Coding animations by using JavaScript
    • Using animation; manipulating the canvas; working with images, shapes and other graphics
  • Accessing data by using JavaScript
    • Sending and receiving data; transmitting complex objects and parsing; loading and saving files; App Cache; datatypes; forms; cookies; localStorage
  • Responding to the touch interface
    • Gestures, how to capture and respond to gestures
  • Code additional HTML5 APIs
    • GeoLocation, Web Workers, WebSocket; File API
  • Accessing device and operating system resources
    • In- memory resources, such as contact lists and calendar; hardware capabilities, such as GPS, accelerometer and camera

The skills learned through completing this certification, built on the skills gained during my year-long industrial placement in web development. Ultimately increasing my interest in web applications development and the development of micro-services and APIs.

Overall, the certification has provided me with a wide range of new skills that I can apply to a range of different applications and platforms, ranging from back-end services to cross-platform mobile apps and progressive web apps.

Find out more about the certification here


My weekend at Lincoln Hack 2018, featuring websockets, pixelated Lancaster Bombers and winning 24 cans of Red Bull

Hackathons are an absolutely brilliant way to improve skills, meet and talk with like-minded individuals and experiment with all the random/quirky/unimaginable/silly tech ideas that you could ever dream of. Whether it’s hacking together various bits of hardware to build something bigger, mashing up APIs with other APIs to create swarms of meaningful data, or simple exploring a brand new technology to create something new and applicable in the real world, you’ll definitely find it at a Hackathon. If someone has an idea, then developers + coffee + no sleep for 24 hours is an equation that will make it possible.

I spent this weekend at Lincoln Hack 2018, a Hackathon run by Digital Lincoln; a local group which brings together a diverse range of people with an interest in digital technology and the online world. I entered the “freestyle” challenge, with the primary requirement being that the hack had to be somehow related to Lincoln.

The idea

My idea for the Hack was to create an interactive game, which could be played across multiple mobile phones that were positioned next to each other in a row. This game would involve holding and releasing a button on a master device to keep some object in the air and avoid hitting the bottom or top of the screen, then once the object has made its way to the end of one phone screen it would then move onto the next phone’s screen, and so forth. My hope was this game could be played across 20+ phones. Easy right…


Lincolnshire has a great RAF heritage, with a high number of the UK’s most prominent RAF bases being located in and around Lincolnshire. With the 617 squadron, famous for being involved in the Dambusters Raid, being formed at RAF Scampton; an RAF base roughly only 5 miles away from where the Hackathon was taking place.

Therefore, I decided to give my game a Dambusters theme. There’d be a little introduction about Lincoln’s 617 squadron, then the object the user would keep in the air would be a Lancaster Bomber, and each mobile phone would be labelled with the name of a location that was on the route in the Dambusters operation. A score would increment to add an edge of competition to the game.


Socket.IO (a popular JavaScript library for building real-time web applications) was something that I’d been wanting to get into for a while, so when it came to choosing a technology I’d use to communicate between the devices, it was the clear winner. This would run off of a Node.js + Express server. I’d style the application up and create my sprite animations of the plane using LESS, and manipulate the DOM with JQuery. I’d also use Nodemon so I wouldn’t have to restart the Node.js server upon every change.


The build went quite well! Socket.IO worked really great, and the pixel-style 8-bit artwork of the application looked good too. Overall I was pleased with what I’d built. I even won 24 cans of red bull, being awarded the “Best use of 4 £1000 iPhones” award! However there were a number of issues, as detailed below.

Snapshot of the game in action


One of the main challenges I faced in building this was how to move each pixel on the screen in such a way that was seamless, transitioned well and could easily be communicated across to other devices via Socket.IO. Initially I implemented this using JavaScript’s setInterval() function which repeatedly increased the x-position and y-position of the object until the interval was cleared. Although this looked good and transitioned well, it could maybe have functioned better, as inter-screen transitions could sometimes be a bit jittery and there were often issues with the collision detection in the game.

Another challenge was born out of the need for the phones to move the object across a portrait screen that was in the real-world actually set as landscape mode, I initially did this through increasing the object’s position from the top of the screen, rather than the left, to appear as moving sideways when presented on a landscape device, again this could have maybe been done better, and maybe ensuring the game was only playable in landscape mode would have made things easier; as every calculation done had to take into consideration that the game would actually be played rotated by 90 degrees.

The most difficult challenge in this Hackathon project was in communicating between server and all the mobile screens in such a way that was quick, efficient and appeared seamless to the player. A number of things had to be taken into consideration in the communications, including emitting the last known x and y positions of the plane from each device back to the server and then back out to the next device along, as well as working out which particular device in the row to move onto. However this was made a bit easier by Socket.IO’s; function which allows you to communicate with an individual client (device) via its ID, as well as the socket.broadcast.emit() which allowed me to broadcast a message to all devices connected except for the sender.


Using a new technology such as Socket.IO was quite challenging to begin with, however it quickly became apparent how powerful this technology is. Being able to communicate between devices in real-time is a feature could be implemented across such a wide variety of applications in a huge number of contexts, from real-time chat/messaging web applications to real-time interactive games like this project, there’s such a huge potential of things that can be achieved by using this technology. Socket.IO is definitely a technology that I’ll be building more projects with and looking into in more depth!

Overall, a successful and fun Hackathon, with a nice exposure to yet another interesting and new technology. Many lessons were learnt and many bugs were fixed (and created). If you’re in the technology industry, or just simply looking to get started in it, Hackathons are such a great way of mingling and working with like-minded developers, designers, students, entrepreneurs, hobbyists and tech addicts in an incredibly fun yet productive manner.

Won 24 cans of Red Bull!

How to build an Geolocation Weather Forecast app in React Native in 30 minutes

Part 2 of my “Let’s Build” series of blog posts has arrived, with a new  guide on “How to build an Geolocation Weather Forecast app in React Native in 30 minutes”.


This is a follow up guide to part 1 of the series entitled “How to build an image recognition app in React Native in 30 minutes” which can be found here

Feel free to take a look and any feedback is appreciated!



How to build an image recognition app in React Native in 30 minutes

As part of a new “Let’s Build” series of blog posts, I’ve published a guide on “How to build an image recognition app in React Native in 30 minutes”.

For a few months now I’ve been fascinated by React Native, and having already done some development in the Ionic framework I was excited by how well an app that renders through native components rather than a webview performs.

Feel free to take a look and any feedback is appreciated!



Presenting an award at the 2018 Lincolnshire Technology & Innovation Awards! (and why you need to leave your comfort zone)

A couple of weeks ago I was asked if I wanted to present an award at the 2018 Lincolnshire Technology & Innovation Awards, an annual event that took place at the Lincolnshire Showground during a jam packed Lincolnshire Tech week that recognised the achievements, contributions and innovations of both new and established technology businesses across Greater Lincolnshire.

Now I’m a firm believer that growth only really happens when you step out of your comfort zone and take opportunities that initially seem daunting and intimidating, so naturally I said yes.

After all, besides potentially embarrassing myself in front of hundreds of the leading tech directors, business owners, developers, designers and creatives in Greater Lincolnshire, what did I have to lose…

Taking on daunting opportunities and stepping outside of your comfort zone is such an valuable and  underrated tool when it comes to personal development and growth. It develops your self-confidence, it broadens your horizons, it gives you new experiences, it allows you to make new mistakes and learn new lessons, and ultimately it is the single greatest catalyst when it comes to your growth as both a person and as an individual.

If we stick to the same old routine, and the same old experiences over and over again then naturally we as humans begin to stagnate. We get used to things, we become good at them, and then we never really grow from there. But if every now and then a curveball comes our way, and we do things we’ve not done before then we really do begin to grow. As humans we’re built to do things, we’re built to grow and better ourselves, and stepping outside of our comfort zone is a sure-fire way to take a step closer to becoming the best version of ourselves .

“But what if I fail?” or “what if I don’t like it?” is the excuse so many people use when it comes to trying new things and new experiences. But so often a shift of perspective from focusing on the negative outcomes of the situation to focusing on the potential positive outcomes is all it takes to realise the significant benefit that comes when trying new things. If you don’t like it, then you can say you’ve tried it, and you’ve learnt not only the context of the situation but you’ve also learnt about yourself, and what you as an individual like and dislike. You don’t lose out from finding out you don’t like something, you only gain as you now know something that you didn’t before. You’ve actually gone and gained a bit of knowledge. 

I don’t know about you, but I’d much rather regret the things that I did, than regret the things that I didn’t do. Don’t pay the price for your fear.

It’s also worth mentioning that as well as the opportunity to present an award, the team I was in were nominated for three awards; Innovation in Education, Digital Innovation, and Software Product of the Year and we were delighted to win the Digital Innovation award for a complex communications system that the business designed and built for one of Lincolnshire’s biggest companies. Over 120 award entries from 60 technology businesses across Lincolnshire were considered, and it was great for the team to be recognised for all their hard work in developing this product and their overall contribution to the tech industry.

It was a great honour to walk on stage and present both the winning award and the highly commended award for the Online Retailer of the Year, in front of a room packed full of Lincolnshire’s tech leaders, champion innovators and top creatives, as well as be present on stage for the presentations of the Digital Campaign of the Year award and the Creative Agency of the Year award.

Standing on stage and seeing the eyes of hundreds of prestigious tech leaders and digital giants staring back at me was definitely an experience I’ll never forget, and one that I’m incredibly grateful for, and one that truly took me out of my comfort zone and thus one that grew me as an individual.

So next time you feel daunted by an opportunity, or have the option to try something new, I ask you to grasp the bull by the horns and step out of that comfort zone, realise the potential growth of the situation and ultimately realise that nothing worth having comes easy.


What I’ve learn in the first six months of my first internship.

I’ve officially been at my internship as a Junior Web Developer for six months now, which ultimately means that I’m roughly halfway through, before I return to University to complete my final year of my BSc (Hons) in Computer Science next year.

It’s been an amazing journey. I’ve learnt so much, not only just about technology, but most importantly; about life and how the world works. So below I outline the most important things I’ve learnt.

You need to be out of your comfort zone to grow

Quite possibly the hardest, yet most valuable lesson I’ve learnt in my first internship is that things are hard, and things are easy, and things will continue to be hard, and things will continue to be easy. For me, being a software developer is a continuous cycle of being outside of your comfort zone, learning and finding your way back into your comfort zone, heading out of your comfort zone as you learn the next thing, and then repeating the cycle. Sound familiar? This is such a core concept of software development, and quite frankly career development within any technical industry; learning.

There were times where I felt horrible. Stressed out about projects, deadlines, concepts and theories that I wasn’t quite understanding, I often felt confronted with the fight or flight dilemma. I recall one particular instance when I arrived at work at 8am to find something that had launched the day before was discovered to have some bugs that had somehow survived through testing, and some amends needed to be done. Being a Junior Developer without much live project experience, I naturally panicked and stressed. Chugging coffee and stressing, sat on the edge of my chair, heart-pound as I’m clicking and typing at incredible speed. Ultimately, spending all morning stressing out and rushing to fix the bugs, panicking that it was live, feeling at fault. But what I later realised was that if I stayed calm, breathed and not took it to heart so much then I would have A) saved myself a hell of a lot of stress, imposter syndrome and frustration and B) probably fixed the bugs more effectively and efficiently.

But it was in these scenarios where I grew the most. Looking back now, this was the most valuable lesson I learnt of all, and the one that I’m most truly grateful for. I’ve learnt how to deal with and react to stressful situations, how to remain calm and keep myself in check; a valuable lesson that is guaranteed to be a useful one for the future. Especially in a world where imposter syndrome can be met at every corner.

I’ve learnt that it’s not the end of the world if something goes wrong, yes it may potentially have repercussions, but just breathe and stay calm, it will all be okay. To become a good runner, you need to run, to become a good violinist, you need to play the violin, to become good at handling stress, you need to experience stress. For me, a bit of tough love and the exposure to stressful and anxious situations has not only grown me up, but it’s allowed me to gain the experience to deal with stress.

You NEED to take care of yourself, physically and mentally

This is something I’ve always been an advocate of, even before I started working 40 hours a week full-time, but it was once I started churning out 40 hours a week, getting up at 6am and often getting back at 6pm that I realised the importance of this; you need to take care of yourself. Your body and your mind should always come first.

As a developer, it’s easy to sit at your desk all day, hack away, and then head home and sit yourself in front of the TV for the evening. To be honest, if you drive into work, it’s easy to go for days without any real form of exercise and to not reach your advised 10,000 steps a day. This goes for eating right too, a healthy balanced diet too is also so easy to ignore.

Generally for me, staying physically healthy and eating right makes me so much more productive, it generally makes me more confident in what I do, it makes me feel great and more energised, and all together this equates to an increased performance in my job. I find that even little things such as staying hydrated is something that people rarely do, yet seems to work for me. I always aim to get up every hour, and have a glass of water at my desk at all times. It’s these little things that matter.

Burnout is a real thing. I’d gone a while without any form of significant break from work and it’s only really when I was on a week-long break did I realise that actually, I was pretty burnt out. I  felt like, as J.R.R Tolkien put it, “like butter scraped over too much bread”. I was finding things quite difficult that previously I’d been comfortable with, my ideas weren’t the greatest, and generally I was exhausted, fatigued and the 3pm slump was now a 3pm plummet as my mind became blocked and my energy levels dropped.

Mental health is a serious thing, I’m a firm believer that you should treat your mental health with as much, if not more, care as your physical health. To me it all starts in the mind. For me, things such as taking regular breaks at work, having a laugh, going outside for a walk and listening to music on my lunch break were all things that got me refreshed and set me back on the right course at work. At home, things such as shutting off notifications and putting my phone on ‘do not disturb’, taking time to pursue my hobbies and interests, escaping into a game, book or TV series and getting enough sleep were all things that I’ve found help deal with burnout, and generally keep me relaxed. As well as these, mindfulness is something that also works wonders. It’s definitely something worth checking out.

To me, health is something that so many people ignore, they let life take over and get into a routine where it’s easy to neglect yourself. I’ve experienced this, and it’s very easy to do. But really, you are the first thing that you should take care of. Wellness comes from within, and ensuring this is something that has had benefits within every aspect of my life, not just within my career, but my relationships, family, friends and education have all benefited from this. Treat your body like a temple, and you’ll be amazed at the increase in productivity, energy and well-being that you’ll be rewarded with.


I’d always been a driven and ambitious individual, after two years of college and two years at University, my CV is stocked full of extra projects and experience that I’ve absolutely loved doing. But this internship gave me an even bigger drive boost I didn’t even know was possible.

As soon as I started working with and using modern, industry standard, technologies on a day-to-day basis I suddenly wanted to know EVERYTHING. From little things such as reading up on tech blogs and tech news over my breakfast coffee, to taking part in extra online courses and programs to mop up my development skills, I suddenly became incredibly career driven. I constantly had twenty tabs open relating to things such as tech blogs, courses, LinkedIn discussions, networking events, articles on random tech topics I found interesting, an endless goldmine of things that I wanted to know and read about. Suddenly I felt so involved, I quickly became active in the tech community. I began to write and blog, showcasing my own thoughts and ideas into the tech community. I wanted to be involved and I wanted to talk to like-minded people.

Do it properly, the devil is in the detail

At University, many of my projects didn’t involve coding with other people, no collaboration. So when spaghetti code was written and little hacks or hot fixes here and there were implemented, it didn’t really have that many repercussions. In industry however, 90% of the time I was working in a team, and 100% of the time I knew somebody, someday would pick up my code and read it and add to it.

On a day-to-day basis I was collaborating with others to build systems, that had to work, and had to work well. At the beginning of my internship, my coding skills weren’t that great, I’ll stand up and admit that. I mean, the stuff I wrote worked, but often the code could have been better. Later down the line, when I knew others would be reading and adding to my codebase I realised that I need to be detailed in my approach, my code needed to be refactored well and it needed to be efficient, readable and well documented. Things mattered here, and I couldn’t be lazy, it needed to be done properly. Industry standard and organised.

You can’t hide in industry. No hacks or quick fixes. No quickly getting things built. They needed to be done correctly, because you never know who will pick the codebase up in X number of months. Do it properly, take your time, be detailed. If it takes time, then it takes time, but it’ll be so much more worth it when you end up writing a solid, organised and efficient codebase that you can be proud of.

This is the same for version control (one of the most important technical skills I’ve gained from working in industry), I quickly discovered how great version control was for collaboration. The process of branching off from production, writing code, merging back in and pushing, and potentially getting merge conflicts was something that taught me the values of teamwork, communication and it made it evident how much can actually be achieved when working as a team.

Imposter syndrome is real, and boy it can be dangerous

Now this is a lesson that I learnt the hard way. Software developers are notoriously famous for experiencing “imposter syndrome” or feeling “like you’re a fraud and the whole world is going to find you out.” Often, I was thrown in the deep end with my internship. Especially early days when I was still adjusting to the 40 hour week. In my opinion University just doesn’t prepare you for the working world well enough. But the deep end was where I grew the most, yes it took time to get afloat, but as previously stated, nothing makes you grow like being outside of your comfort zone.

Often I was thrown into projects that I found difficult, an array of new technologies, concepts and methodologies that I was expected to learn and build a successful and well-functioning system with, and often this was difficult for a twenty year old intern to take in. Especially when deadlines and time constraints were thrown into the mix. Often thoughts such as “am I cut out for this?” and “do all interns feel like this?” popped up, and sometimes these would spiral out of control into a whirlwind of self-doubt, unconfidence and anxiety. There were days when my confidence was absolutely shot, I felt stuck and I felt like I wasn’t getting anywhere. I just didn’t feel good enough. But then next day, all it’d take was some success with a project and suddenly it was gone, it flipped over and suddenly I’d become more confident in my abilities and aware of myself.

Eventually I learnt to deal with this better, through reminding myself of my skillset, reminding myself how far I’d come and how much I actually did know. I won’t lie, I’ve still not figured out how to completely avoid imposter syndrome, but to be honest I don’t know if I ever will. I think it’s just a part of life, in any career path. However little things such as explaining concepts to other people, looking back at old projects to see how far I’ve come, doing something I know I’m good at all helped. Another thing worth mentioning is how supportive the tech community is of this. So many times I looked towards blog posts and articles on imposter syndrome within software developers for help and advice. This was probably the best thing I could have done to deal with imposter syndrome. It was comforting to know that I wasn’t alone in this feeling, and that it’s a common occurrence not only in Junior Developers, but also experienced Senior Developers. It’s important to stay calm, and remind yourself how great you are, and how far you’ve come.

I find that confidence is key here, it’s important to be confident, it may be hard, but be confident in your abilities. It’s gotten you this far after all, hasn’t it?

To make the best of your internship, you need to get an all-round experience

I’ve been exposed to so much in my internship, from the initial design of front-end interfaces through wireframes and PSD files, to building complex database queries with more than four joins, to using version control within a team environment, to micro-managing my own projects and conforming to deadlines. Everything that I got exposed to has helped advance my career, knowledge and skillset in some way or another. I began the internship having only University and freelance project experience, but six months in an agency with developers, designers and a manager has taught me so much, across such a broad spectrum of things. With a broad foundation of knowledge across multiple areas of software development, I now know that I can specialise in a certain area and still be able to work with someone who specialises in another area. For example, having designed some wireframes for a particular interface in my internship, I now know that in X amount of years, if I’m building an interface myself, I can talk to a designer about the wireframes and design behind it. Not only does this improve communication between teams and individuals, but it also results in an increased development of whatever it is that is being built.

A key piece of advice I’d give to any interns, or anyone that is starting out in software development is to gain exposure to as much as possible. Even if you don’t see yourself going into that area in the future, or even if you don’t particularly enjoy that specific area; learn and experience it. It may even give you the edge over other candidates in a job application. You’re young, so try to see it all, and try to fill your head with as much knowledge as you possibly can, an internship only lasts so long, so make the most of it.

An internship is hard, especially when it’s your first. But stick with it, it’ll all be worth it. Nothing worth having comes easy.

Why kids should learn to code

Steve Jobs once said “Everybody in this country should learn to program a computer, because it teaches you how to think”.

But why?

Kids in school today are taught a wide variety of things, from core mathematics to Biology to Spanish to English, there are absolutely dozens of subject areas that each generation of the future’s minds are being taught and then tested on each year. But when you actually think about it, through this are we teaching them the right skills? What do kids actively learn from this? Now (DISCLAIMER) please don’t get me wrong, I’m not saying “Hey, let’s change up the national curriculum, because I have an opinion on something”, very far from it even. I believe what we currently teach is great, but I simply believe that Computer Science and Information Technology subjects are being ignored and are lagging behind, and I believe we need to start kids on these sort of courses earlier. For me this all comes down to one question, are we teaching kids the right skills? Not knowledge in the form of facts and recallable information, but skills. Actual applicable abilities and capacities that people know how to use.

If you go out today, and ask a child “what is the powerhouse of a cell?”, I bet they could answer. “Mitochondria” they quickly fire back at you. You think great, this child knows their Biology, and could potentially make a great Biologist one day. But however, give them a problem domain relating to Biology and then ask them to solve this problem and I bet this test is more challenging for them, they might take more time, they might have to give multiple attempts or they may even give up completely.

This is because the ability to solve problems is significantly different and varied from the ability to recall knowledge. After all, the human memory supposedly has an infinite capacity to store knowledge for potential later use, it even has Psychologist George Miller’s 7 (plus or minus 2) concept for storing short term information for quick-fire recollection. However, using knowledge to solve problems is a much more complicated neurological process, involving a multitude of electrochemical signals formed within neurons that move along axons to jump from one neuron to another across synapses through neurotransmitter chemicals being released. Sounds much more complicated, right?

When you think about it, in school, how often were/are you challenged to solve a problem. But first, when I say solve a problem I mean the following:

  1. You are given a problem domain, that is essentially, something to solve.
  2. You have an initial state, that is where you currently are.
  3. You have a goal state, that is where you want to be/a desired outcome.
  4. The means to get from the initial state to the goal state are unknown, and you are required to reach this goal state through forming a bunch of intermediate states, or instructions. With each intermediate state taking you one step closer to the goal state and one step further away from the initial state.

So to me, problem solving can simply be defined as the arrow in the middle of the following statement:

Initial State -> Goal State

(With the arrow being potentially a lot of frustration, pain and Stack Overflow, although with a significant amount of learning)

So back to the point, problem solving can be difficult, and effectively, programming can be seen as problem solving.

At the start of any programming project, small or large, you are given a problem domain, or something to solve. For example, “write a program that outputs the Fibonacci sequence” or “write a program that outputs the names of every string in an array but without any vowels in it”. Essentially, you are required to think about how to approach each problem, and then using a variety of programming concepts such as flow control, variables, input and output, structures, objects, strings, arrays, mathematics, functions (etc) to create/construct a solution to the problem. That is, you use core programming concepts to reach a desired outcome.

Now we’ve made the link between programming and problem solving, let’s talk about the real question I’m answering; why kids should learn to code.

When kids learn to code, they are learning to solve problems. They’re actively being given initial states and goal states, and they are being made to think up ways to create the intermediate states in between, to eventually reach the desired outcome. I do not believe one gets exposure to this sort of practical, theoretical and significantly challenging thinking from any other subject, maybe mathematics or physics, but with this you are implementing other people’s solutions to problems, instead of creating your own. So surely challenging the younger generation to become better at thinking in this way will result in more problems in the future being solved, right? I believe that instead of teaching kids a whole bunch of information that in a job they are required to simply recall and apply to scenarios, how about we teach them how to create their own solutions to scenarios, and we teach them how to think rather than how to recall information.

Ultimately, I believe that Computer Science, and any educational subject that gives exposure to programming and coding teaches an immense range of skills that no other subject at school even remotely touches upon; practically solving problems and creating solutions to problems. In essence, programming makes you think, and boy does it make you think hard. So through pushing the benefits of learning to code, let’s make kids think in a way that is practical, theoretical, productive, active, engaging, stimulating, creative and also, pretty damn fun.