How to Combine Good Ideas to Get the Best Solution to a Problem

Often the most groundbreaking solutions and innovations don‘t spring forth from a single brilliant insight, but rather from creatively combining existing ideas and concepts in novel ways. By merging different notions, you can often achieve a result that is greater than the sum of its parts.

As a full-stack developer, I frequently face challenges that seem daunting at first. But by stepping back and considering how I might remix proven approaches, I‘m often able to efficiently arrive at an effective solution. The ability to combine ideas is an invaluable skill for problem-solving in any domain.

The Power of Idea Combinations

History is full of examples of how combining ideas has led to revolutionary breakthroughs:

• Trigonometric functions emerged from the combination of geometry and algebra, enabling the precise calculations needed for engineering, physics, and more. Persian mathematician Muḥammad ibn Mūsā al-Khwārizmī‘s book on algebra, written around 820 CE, was instrumental in spreading these groundbreaking idea combinations.

• Smartphones arose as a mashup of communication devices and computers, leading to an explosion of new capabilities and possibilities. IBM‘s Simon, released in 1994, is regarded as the world‘s first smartphone – a pioneering combination of touchscreen, email, calendar, notepad, and more.

• CRISPR gene editing builds on a combination of genome sequencing technology and a bacterial defense mechanism, opening up transformative potential to treat disease. Since the seminal 2012 paper revealing CRISPR‘s utility for gene editing in living cells, the number of CRISPR-related publications has grown nearly exponentially:

CRISPR publications by year
Source: The Scientist

In the realm of mathematics, idea combinations have spurred many key innovations:
• The Poincaré conjecture, a famous topology problem, was solved using ideas from geometry and physics. Mathematician Grigori Perelman used the Ricci flow, a concept from differential geometry, to prove the conjecture in 2003.

• Modern cryptography emerged from combining number theory, computational complexity, and information theory. Public-key cryptography, the foundation of secure online communication, was born when Ralph Merkle, Whitfield Diffie, and Martin Hellman combined ideas from these disparate fields in 1976.

• Fractals arose from the mashup of classical geometry and recursion in mathematics. Benoît Mandelbrot coined the term in 1975 to describe the intricate, infinitely self-similar shapes generated by simple recursive rules.

Fractal generated via recursion
Source: Bill Gilbert, University of Waterloo

Remixing ideas isn‘t just for paradigm-shifting innovations though. A 2004 study found that teams produced more creative solutions when they were explicitly instructed to combine their individual ideas compared to groups that lacked those instructions. Exposure to a diverse range of ideas fuels the creative process.

In the tech world, idea combinations power many of the products and services we rely on:
• Ridesharing apps like Uber and Lyft combine GPS, smartphones, and online payments to create a seamless transportation experience. As of 2021, Uber alone boasts over 118 million monthly active users globally.

• Cloud computing merges the ideas of virtualization, distributed computing, and web services to enable the on-demand delivery of IT resources. The global cloud computing market is projected to exceed $1 trillion by 2028, showcasing the immense value of this idea mashup.

• Streaming media services marry compression algorithms, content delivery networks, and user experience design to provide instant access to vast libraries of audio and video. As of Q2 2022, Netflix has nearly 221 million paid subscribers worldwide, highlighting the demand unlocked by this idea combination.

Strategies for Combining Ideas

So how can you get better at combining ideas to solve problems, especially as a developer? Here are some key strategies:

Engage in Interdisciplinary Learning

Widely-read developers can draw on a rich repository of concepts when tackling challenges. Make a habit of studying topics outside your immediate domain. Some ideas:

• Learn about data structures and algorithms from other fields. For example, biologists use k-mer bloom filters to efficiently search massive genomic datasets – a technique that could be adapted for many big data applications.

• Study design patterns and architectures from different programming paradigms and languages. Functional programming concepts like immutability and pure functions can bring more clarity and predictability to object-oriented codebases.

• Read up on user experience (UX) design and human-computer interaction (HCI) research. Understanding the psychology of how people interact with technology can inspire new approaches to your own projects.

As Steve Jobs famously said, "Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn‘t really do it, they just saw something."

Ask Generative Questions

When faced with a problem, ask questions that spur idea combinations:
• What if we apply a technique from a different layer of the stack?
• How would a popular web framework or game engine approach this?
• Can we adapt a solution from a separate domain like mobile, security, or cloud computing?

For example, when working on a machine learning model, you might ask: What if we apply a computational technique from genetics to feature selection? This line of inquiry could lead you to adapt algorithms used in gene sequencing to winnow down variables for your ML model.

Prototype and Experiment

Build rapid prototypes to test out idea combinations. Use tools like CodePen, Replit, or a basic GitHub repo to quickly mock up examples.

Don‘t aim for perfection right away. Create a minimum viable product (MVP) that blends a few key concepts. Observe what works and what doesn‘t. Gather feedback from colleagues or users.

Based on what you learn, iterate and refine the idea combination. Add or remove elements. Tweak parameters and experiment with new mashups.

As LinkedIn co-founder Reid Hoffman put it, "If you are not embarrassed by the first version of your product, you‘ve launched too late."

Overcoming Idea Combination Challenges

Combining ideas comes with challenges, especially in software development:

Integrating Disparate Systems

Mashing up ideas often means making distinct systems interoperate. Different paradigms, data models, and communication protocols can pose tricky integration challenges.

When connecting diverse components, look for opportunities to:

• Encapsulate and abstract away implementation details. Create clean interfaces that hide underlying complexity.

• Use adapter and facade patterns to translate between different architectures. Write lightweight glue code that lets systems communicate.

• Agree on shared data formats and schemas. Leverage open standards like JSON, Protocol Buffers, or OpenAPI to establish a common language.

• Deploy messaging queues and event-driven architectures to decouple systems. Let each component operate independently and react to changes as needed.

Managing Cognitive Load

Combining multiple ideas can lead to increased complexity and cognitive overhead. Developers must juggle more concepts, code, and moving pieces.

To keep things manageable:

• Ruthlessly modularize your codebase. Break ideas down into focused, reusable components. Use techniques like dependency injection and the single-responsibility principle.

• Write clear, concise documentation. Include high-level overviews of how disparate ideas fit together. Document interfaces and expected behavior.

• Invest in developer tooling and automation. Use tools like TypeScript and linters to catch errors early. Automate testing, builds, and deployment to lighten cognitive load.

• Continuously refactor and simplify as the idea combination evolves. Don‘t let accidental complexity accumulate. Be proactive about pruning dead code and excess abstraction.

As John Ousterhout, creator of the Tcl language, wrote in "A Philosophy of Software Design," "The most fundamental problem in computer science is problem decomposition: how to take a complex problem and divide it up into pieces that can be solved independently."

Overcoming Resistance to New Ideas

Organizations and team members may be hesitant to embrace idea combinations that disrupt the status quo. Developers can be especially resistant to change given the costs of reworking code.

To bring people on board:

• Clearly articulate the benefits of the idea combination. Show how it advances project and company goals. Use concrete examples and demos to illustrate the potential.

• Listen to concerns and incorporate feedback. Acknowledge potential downsides and risks. Involve key stakeholders early to get buy-in.

• Start small and iterate. Run experiments and collect data to prove out the concept before pushing for broader adoption. Celebrate quick wins to build momentum.

• Cultivate a culture of creativity and risk-taking. Encourage developers to question assumptions and explore new approaches. Make it safe to fail and learn.

As Amazon CEO Jeff Bezos remarked, "If you double the number of experiments you do per year, you‘re going to double your inventiveness."

Conclusion

In the words of Pixar co-founder Ed Catmull, "Creativity is not a linear process, ideas come from combining other ideas." By mastering the art of idea combination, you can unlock novel solutions to thorny problems and push the boundaries of what‘s possible in your software projects.

To cultivate your idea combination skills as a full-stack developer:

• Constantly expose yourself to new programming paradigms, tools, and architectures
• Participate in hackathons and game jams to rapidly prototype mashups
• Contribute to open-source projects to collaborate with developers from diverse backgrounds
• Read voraciously both inside and outside computer science, always looking to adapt concepts
• Mentor and teach to master the fundamentals and see ideas through fresh eyes
• Reflect on your projects and brainstorm new ways to remix the components

Combining ideas is equal parts art and science. Stay curious, tinker relentlessly, and don‘t be afraid to experiment. The next groundbreaking software solution could be a mashup away.

Similar Posts