How to always be excited about coding
“Don’t code for code’s sake!”
“The code doesn’t matter — only programs do…”
“Coding is not creative it’s logic…”
The thing is many programmers simply don’t see how coding can be creative or intrinsically interesting.
And you know it's not so easy to stay excited if your days revolve mostly around building apps that do little more than fetch data from a database and display it to the users for them to change.
That can become so repetitive after a while, even worse when you're using the same tech stack over and over.
Not any better when you find yourself constantly copying and pasting from StackOverflow -- programming becomes a little more than a routine chore, rather than an intensive exercise promoting genuine problem-solving and creativity.
And maybe your job demands that you act this way - with all the dry business requirements and the tight deadlines.
But this won't help you reap the great joys that abound in programming or experience the satisfaction and empowerment that come from solving complex problems and creating something from nothing.
To gain the maximum emotional benefits, you must focus on the process as much as the goal and realize that coding is more than just a means to an end.
"Personal" creativity and mental engagement
What if we see coding as a creative art form that allows abstract thoughts and concepts to materialize into tangible and functional systems?
Making a mark on the broad canvas of our code editor with the paintbrushes of our programming languages and frameworks.
It may be hard to see a connection between coding and creativity when there are now well-established algorithms for just about every logical/mathematical problem that could crop up during development. It seems like there's nothing new under the programming sun.
Yet I don't see why this should matter. From the perspective of personal enjoyment, the only creativity that matters is personal creativity. The knowledge brought forth from your mind, compared to what's already in there. Relative novelty: The difference what you're subjectively aware of and what you're not.
Just think of movies. Right now, Fast X is like the only Fast and Furious movie I'm yet to see.
And when I finally do get to see it, would it matter how many other thousands and millions of people have seen the movie? That they've had those new experiences doesn't rob *me* of them - as long they don't cough up spoilers.
What if you're tackling a math proof or proving a complex theorem and you come up with some astoundingly brilliant solution? Even if the theorem was already well-known in the math community and proven solutions have existed since time immemorial, the fact is *you* never knew it. You will still experience mental engagement and positive challenges as you immerse yourself in the task.
That fiery spark of mental engagement igniting the depth of your intellect, kindling a boundless flow, carrying you for hours, transcending the realms of time -- sleep becomes a distant memory. It's a mesmerizing force holding you at the edge of your seat, empowering passion and unwavering dedication to your craft.
Contrary to what we usually believe, moments like these, the best moments in our lives, are not the passive, receptive, relaxing times—although such experiences can also be enjoyable, if we have worked hard to attain them. The best moments usually occur when a person’s body or mind is stretched to its limits in a voluntary effort to accomplish something difficult and worthwhile. Optimal experience is thus something that we make happen.Mihaly Csikszentmihalyi, Flow: The Psychology of Optimal Experience
How to enjoy programming
To truly appreciate coding as more than just a mere job, but instead an exciting and fulfilling pursuit, it is important for us to find genuine pleasure and motivation in it, beyond the external rewards of monetary gain and fame.
1. Implement new algorithms
Yes you know quick sort and depth-first search but what about the thousands of other algorithms you've probably never heard of?
Read up on the high-level details of a particular named algorithm and try writing it yourself -- and don't use StackOverflow or any code completion tool for this one, because now the process matters as much as the goal.
Challenging yourself to learn and implement new algorithms keeps your brain active and promotes intellectual growth. It enhances your programming proficiency, providing you with a deep understanding of various languages and constructs.
By diving into the intricacies of algorithms, you're peeling back the layers of abstraction present in many coding libraries, promoting a profound grasp of these underlying tools' architectures and mechanisms.
This understanding and skill set encourage innovative thinking, enabling you to formulate new combinations or adaptations of these algorithms. Most importantly, the excitement and satisfaction derived from the successful execution of these complex codes can be quite exhilarating, adding pleasure to your programming pursuits.
2. Solve interesting word problems
It doesn't matter whether it's Math, Physics, or Programming.
Word problems are always an incredible way to challenge your cognitive functions especially as they test your ability to process all the information and convert it into software requirements and then into code.
You have to carefully break down various tasks into smaller, manageable components, and then identify the appropriate data structures, control structures, and operations needed to achieve all of them. Successfully going through all of these not only gives you a deep sense of accomplishment (which could vary depending on the complexity of the problem), but it also drastically improves your logic, abstraction, and critical thinking skills.
Where to find these types of problems?
Edabit is one with PLENTY of them - more than 10,000, as they aren't shy to let you know. 10,000+ solid coding puzzles of all difficulties to keep you mentally sharp.
3. Create your own game
There's no denying how cool they can be. Even addictive for some.
It's not uncommon to hear stories of how the beauty and splendor of games were what inspired people to go into programming in the first place. Some of us even had albeit unrealistic but passionately ambitious game development goals - like I remember how I wanted to create my own 3D football game by myself at age 9 with pure C++.
Whether it's a sci-fi movie or a hardcore game, there can be this magnificent technological blend of the most heartfelt art and the most sophisticated science, that intensely inspires you to absorb as much as you can about this marvelous world and be the most competent you can possibly be to create the most extraordinary creation you can ever imagine.
Apart from the beautiful virtual world that stands to emerge from your own mind with code, game dev is packed with a vast array of mathematical concepts, ranging from basic arithmetic to complex calculations in 3D space.
Game development demands unparalleled logical reasoning due to its complex system of interactions. We create comprehensive rules, anticipate design loopholes, safeguard player balance and progression, and sometimes much more. This rigorous logical exercise stimulates the mind and significantly enhances decision-making skills and logical competence.
The summary of it all is challenge, novelty, and creativity.
Embrace programming as a journey of continuous learning and intellectual discovery, rather than a predictable routine task. Find joy in the art of coding, make room for personal creativity, and imbue your craft with your unique touch. Implement new algorithms, solve word problems, create your own games and ensure the process matters as much as the result. Stay passionately curious, break the routine, and enjoy the thrill of innovation.
11 Amazing New Features in ES13
- The clever trick Google uses to track everything you search online
- 10 essential VS Code tips & tricks for greater productivity