The Art Of Creative Problem Solving In Programming: Thinking Beyond Algorithms
Published: 2023-12-06 17:58:32

by [Chioma Uche-Nwosu](https://blog.openreplay.com/authors/chioma-uche-nwosu)


<blockquote><em>
How can you solve problems creatively, thinking outside the box? This article will provide techniques so you can apply them to your situations.
</em></blockquote>


<div style="background-color:#efefef; border-radius:8px; padding:10px; display:block;">
<hr/>
<h3><em>Session Replay for Developers</em></h3> 
<p><em>Uncover frustrations, understand bugs and fix slowdowns like never before with <strong><a href="https://github.com/openreplay/openreplay" target="_blank">OpenReplay</a></strong> — an open-source session replay suite for developers. It can be <strong>self-hosted</strong> in minutes, giving you complete control over your customer data.</em></p>
<img alt="OpenReplay" style="margin-top:5px; margin-bottom:5px;" width="768" height="400" src="https://raw.githubusercontent.com/openreplay/openreplay/main/static/openreplay-git-hero.svg" class="astro-UXNKDZ4E" loading="lazy" decoding="async">
<p><em>Happy debugging! <a href="https://openreplay.com" target="_blank">Try using OpenReplay today.</a></em><p>
<hr/>
</div>


*The Art of Creative Problem Solving in Programming.* This is exactly what it says it is. It is simply solving problems in programming creatively. 

*What does it mean to solve problems in programming creatively?* 

This is simply thinking outside the box when solving problems in programming. Let's learn about people who have implemented creative problem-solving in programming. 

In the early 2000s, [Google's first employee](https://www.cnet.com/tech/tech-industry/googles-man-behind-the-curtain/), [Craig Silverstein](https://en.wikipedia.org/wiki/Craig_Silverstein), led a team that developed a revolutionary algorithm known as [PageRank](https://en.wikipedia.org/wiki/PageRank). The PageRank algorithm is the foundation of Google’s search engine. Rather than relying on keyword matching and other conventional methods, the PageRank algorithm effectively incorporates the analysis of the quality and quantity of links to pages. With this innovative idea, web pages can be ranked more efficiently, resulting in more relevant and accurate search results.

[Jeff Dean and Sanjay Ghemawat](https://www.newyorker.com/magazine/2018/12/10/the-friendship-that-made-google-huge) at Google led the development of [MapReduce](https://en.wikipedia.org/wiki/MapReduce). MapReduce is a programming model and software framework for processing data sets in a distributed computing environment. Instead of depending on monolithic data processing solutions, [Jeff](https://en.wikipedia.org/wiki/Jeff_Dean) and [Sanjay](https://en.wikipedia.org/wiki/Sanjay_Ghemawat) demonstrated creative problem-solving by addressing the challenge of processing large-scale data sets efficiently in a distributed computing environment, leading to significant advancements in data processing capabilities. 

The mid-2010s saw the introduction of [TensorFlow](https://en.wikipedia.org/wiki/TensorFlow). The [Google Brain](https://en.wikipedia.org/wiki/Google_Brain) team, including [Jeff Dean](https://en.wikipedia.org/wiki/Jeff_Dean) and [Rajat Monga](https://research.google.com/pubs/RajatMonga.html?source=post_page---------------------------), developed TensorFlow, an open-source machine learning library that was instrumental in growing deep learning and artificial intelligence applications. Rather than relying only on proprietary machine learning platforms, the TensorFlow library provided an open-source and scalable alternative, giving researchers and developers access to building and deploying machine learning models across various domains and encouraging collaboration and innovation.

*Creative, right?*

Honestly, how did they come up with this creative idea? This article is a guide that will help you solve your programming problems creatively. Whether you are a UI/UX designer, a machine learning engineer, or a front-end developer, this article will help you be your most creative self. 

## Analogy 
According to the [Oxford Dictionary](https://www.oed.com/search/dictionary/?scope=Entries&q=analogy), an analogy is a comparison between one thing and another for explanation or clarification. In the context of programming, it is a comparison between a new problem and a problem you are already familiar with. This approach is not only smart and time-saving but also creative. Let’s understand why.

The more we harness the power of analogy in programming, the more conversant we are at solving certain problems with our programming expertise. If you have had errors in achieving low-level memory management in Rust, you know the manual memory allocation method is a longer route, more prone to errors, and heavier, so it’s better to take the ownership-based approach. 

The beauty of analogy is that a lot of the time, it is unconscious! We don’t understand the power of what we’re doing. In the back of our minds, we know to use a `for` loop when iterating through an array in JavaScript because when we tried the `while` loop, it didn't produce the expected output. In subtle moments like these, we use analogy. 

*It's easy to figure out a solution when you've seen the problem a million times.*

This is because we’ve faced a certain solution so many times and have compared and contrasted different approaches to solving a problem. As you do so, you discover the best and most creative way to solve that problem. 

*As the saying goes, 'Insanity is doing the same thing over again and expecting different results'. Don’t be insane, please.*

If the concept of analogy is new to you, start practicing it today! A simple way to start is by outlining the sequential steps of the solution to a problem you face. Follow the steps meticulously and see whether you achieve your desired output. If this approach fails, draft an alternative step-by-step approach. Repeat this until you have a solution that works.

As a programmer, harnessing the power of analogy will save you time and make you a creative problem solver.

## Play 
Play in creative problem-solving in programming is simply trying different approaches to solving your problem. The goal is to find out what works and what doesn't by trying different solutions.

Often, when we solve a problem, we just accept it and say, "Oh well, at least I solved it and don't have to worry about it anymore.”

While leaving the code as it is tempting, it grows into a lack of creativity. A programmer who is afraid of trying different solutions is not creative. Little do they know that there will be times when they will be put in tough situations where they need to debug something beyond what they know. 

One way to curb this is to devise different solutions to the same problem. 

![-](https://blog.openreplay.com/images/thinking-beyond-algorithms/images/pexels-photo-4559959.png)

Programming education is remarkably accessible, thanks to platforms like YouTube, Coursera, and Udemy. Often, programmers follow these tutorials word for word, copying exactly what the tutor types. You have to play around with the code presented to you. Watch the video, pause it, and try to build it from scratch without help. This will challenge you and teach you how to think outside the box and play with your code to achieve the same results. 

At the end of the day, you will have two or more techniques for solving a single problem. 


<CTA_Middle_Basics />


## Collaboration 

![-](https://blog.openreplay.com/images/thinking-beyond-algorithms/images/pexels-photo-3184327.png)

Collaboration is simply another word for teamwork. It is when two or more people come together to achieve a common goal. Who doesn’t love a little collaboration sometimes? Collaboration can be enlightening and spark your creativity in numerous ways. 

*No man is an island.* 

When you’re stuck on a problem for a long time, and you just can’t figure out the solution, sometimes an extra pair of eyes can do the trick. You can relate to this, but I've been stuck on bugs for days, and when I show an extra pair of eyes, they figure it out right away. This doesn’t mean that we cannot solve it or that we are not capable at all. The truth is sometimes we just need an extra pair of eyes. 

There are more complex situations where we need a team of people to creatively solve a problem. For example, a group of programmers might all be Rust developers, but everybody has their own specialization.

You don’t need to have your entire team present in person. There are so many online forums, communities, Slack, and Discord channels that you can join today. A few include: 
- [EddieHub](http://discord.eddiehub.org/?kuid=85ebe5fe-ea58-4342-a82e-b1c32746a6bf&kref=pikSKecanGdT)
- [MillionJS](https://discord.gg/X9yFbcV2rF) 
- [Software Engineering Tech Community](https://twitter.com/i/communities/1699807431709041070)
- [The Arit Developer Circle](https://twitter.com/aritdevcircle)
- [Web3Afrika](http://discord.gg/YMJ49PDTym)
- [GenZtechies](https://join.slack.com/t/genztechies/shared_invite/zt-25g2gahh0-zMqNAlOHeHTF0kMeIG6N5w)

Additionally, join TechTwitter and follow [these Tech influencers](https://itsjustchioma.hashnode.dev/ten-things-i-wish-i-had-known-before-i-started-coding#heading-6-techtwitter), and feel free to reach out to them for help.

The power of collaboration isn’t only harnessed when you’re stuck on a problem; it can also be harnessed by working on projects with others. One way to do this is through open source. Open Source is simply software that is free for everyone to use. You can start by working with people on open-source projects on GitHub. To learn more about Open Source, check out [Eddie Jaounde](https://www.eddiejaoude.io/?r_done=1). 

When you’ve experienced working on a project with others, you learn more creative problem-solving techniques. In your experience, you will learn and see how people tackle certain challenges and how their thought process works, and you will also put your skills to the test. This equips you with the knowledge you need to be a creative programmer.

## Intuition
I describe intuition as the ability to know and feel something [without thinking about it](https://blog.openreplay.com/hacking-the-brain--neuroscience-for-web-design/) or explain it. Our intuition has gotten the best of us in our day-to-day lives. That gut feeling about the weather. The gut feeling about meeting someone new. How about the time you felt that the job offer was just right? These are all instances of our intuition leading us in the right direction. 

In programming, it isn’t any different. Sometimes, you just have to follow your gut! Take that weird route to solving that problem. Try using recursion to solve complex calculations in Python. Attempt extracting data using regular expressions in JavaScript! These examples are so unconventional, but what is the worst that could happen? 

*What if I fail?*

That leads us to the next point, which is failure. 

## Failure 
*What if I fail?*

![-](https://blog.openreplay.com/images/thinking-beyond-algorithms/images/pexels-photo-52608.png)

Well, you try again. You pick up where you stopped; you try another approach. You practice analogy, you continue playing with the code, and you join forces with others through the power of collaboration. It honestly isn’t the end of the world! Sometimes, we think failing is the end of everything, but it isn’t. 

*I am here to remind you that no one knows everything, and that’s okay.*

All the trials and tribulations, the experience of going through a bug for weeks equips you as a programmer. No programmer's solved a bug that's scarred them for weeks and can't fix it when they run into it again. 

So it’s okay to fail. It all makes you a creative problem solver.

## Takeaway
*Solving problems in programming creatively.*

This isn’t only a tongue-twister; it is something every programmer should know. This article highlights five powerful ways you can become a creative problem solver in your area of programming expertise. From harnessing the power of analogy to collaboration and trusting your intuition, this article equips us with the techniques that will make us stand out as programmers. 

Don’t just let this article be something you read and enjoy. Practice these key skills in your programming career!