Coding is playing with the abstract.
As a child I used to love playing with dolls. Playing with dolls opened up my child imagination to a world of endless possibilities - I could invent stories and make my dolls do anything I wanted. When I grew a little older I discovered the joys of role playing with friends - the thrill of directing stories where we could pretend to be anything we wanted and act our little hearts out.
It's interesting that as children, we love to play "adult". We pull from the things around us and turn everything into a game. We pretend to own a baking shop, or that we are fire fighters saving the world. We look at the world that the adults have and unlike them, we don't find it boring. We aspire to sound like them, to look like them, to become them, and so in our innocence we appropriate their actions and call it play.
Yet, as adults, we don't often view the mundane things we do to survive as anything delightful. We do many things because we have to and not because there's any fun in it. This piece is not to condemn you for whatever feeling you may currently feel towards your life, but rather, to share an insight which I'm finally able to articulate as clearly as I perceive it: something being fun has more to do with your own disposition than the thing itself.
Think about it, what's inherently fun about running around with a ball and shooting it in a basketball? Or what's inherently fun about playing a simulation game where you know that none of it is real? What makes fun things enjoyable ? I believe our imaginations, our heart posture, and our perceived benefit from an action or interaction is what allows us to find joy in the things we do.
Playing is more about the fun that we output into the world, than any given toy. That's why kids can play with anything and make anything fun. But as adults we forget that playfulness is something that can be cultivated and honed, just like any other skill. The benefits of playfulness, in case you're wondering what the ROI for reading this article is, is that it removes the friction that comes with the mundane. The less friction in your life, the more you feel like you're flowing and not being pushed around by deadlines and things you must do to survive. Cultivating a childlike wonder helps us do mundane things with a spark of joy.
And here's how this applies to coding, or this technical field. Coding can be either a dreadful task or an endless game. If you've had trouble understanding why some people enjoy it so much when you find it so tedious and boring, I invite you to see it as a game. But to see it as a game, you need to program your mind to view it as such. And let me suggest to you a few ways how:
Coding is similar to playing with lego-like toys or building blocks. When I code, it feels like I'm building a sort of miniature circuit in my mind. Miniature car circuit play-boards come with pieces of roads and components that you connect to build a fun circuit for your play cars. They tend to look like this:
As the circuit designer you get to decide the course the cars can take and therefore determine how you want them to more or flow in your system. You can build simple circuits with just a few toy pieces, but sophisticated building blocks give you the power to build more complex circuits, where you could potentially control more factors like traffic signals, how long what happens when a car gets to a specific location, or even how long cars should wait for the green light. Imagine being a child with all these cool toys that you can add to build the most beautiful and intricate circuit board - now how cool is that!
Building an application with code is very similar to playing this game. Just like the goal of the game is to use your building blocks to come up with a fun course that cars can follow, programming involves using code to build a system where information/data can flow. The code you write becomes the building blocks of your circuit. And as the programmer, or the designer of this master circuit, you connect the pieces of the ecosystem together you create the world in which your data flows.
The goal is to transport information around and make it to flow through the circuit to its many destinations. The information will go through the structure (software) that you come up with. As the data flows its course, you decide whether it will need to get stored up in little containers (variables), go through changes, enter repeated cycles that may or may not alter it (loops), and even at times self-destruct and alter itself. You can also control how you want to respond to specific changes and conditions. You decide what should happen and where!
So coding becomes fun when you realize that you're still playing - you're just playing a building game with abstract toys. Perceive that you are building a structure with your mind and infuse it with fun. You make it fun. Involve your imagination in your software engineering process and see where you end up. I'm sure it'll be a delightful place!
..... If you liked this article, follow me for more programming and tech related thought pieces ! And share in the comments what methods you use to make coding fun for yourself!