Seeing the Big Picture: A Key Skill for Software Engineers
Tags: powerskills, bigpicturethinking, problemsolving, criticalthinking
Published: 2023-11-17 22:00:13

## Introduction

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ef1ms6d3gc0trfgu75q.jpg)
Have you heard the expression "missing the forest for the trees" ? It's a classical example of not being able to see the big picture, to put all your attention and focus on just a small part of a larger situation. _Big picture thinking refers to a thinking strategy that focuses on the entirety of a concept or idea instead of on each individual detail_[1](#sources).

Being able to appreciate the big picture is an essential skill for any professional, but I think it is particularly important for IT consultants. We, as software engineers, quality engineers, project managers, SREs and all other IT professions, are usually part of a complex ecosystem of technologies, processes and business rules and decisions. **Nobody is an island**.


> Once, in a project, a seemingly simple change needed to be implemented. The task involved adding a "tag" to the objects within a system. This "tag" was obtained from another system. The change itself was straightforward: adding an extra field to the object, making a call to the service, and storing the data in the object. The ticket was rated at 1 story point.

> The tagging system was maintained by a team in a different time zone, and it took a couple of days to adjust the integration. Subsequently, validating and testing the change took a couple more days. Thus, what was initially a 1-point change ended up taking almost two weeks and at least 3 teams working on it, needless to say, our stakeholders were not pleased with the delay.

> This serves as an example of how overlooking the bigger picture can hinder progress. Considering the problem holistically and making accurate estimations allows for better planning and task coordination. In an alternate scenario, identifying all actors and actions during estimation could have reduced the time. Timely notifications to the involved teams and individuals would have contributed to a more efficient integration. While the task estimation might be more than a single story point, it would have taken less time than the other scenario, and the stakeholders would have been reassured by seeing that everything went smoothly and without delays and the integration would have been carried out more efficiently.

Developing big picture thinking allows us to see how our work fits into the overall system, understand the balance of trade offs, improve our communication and collaboration, and be more productive and innovative.

## Understanding the Big Picture
In software development big picture thinking goes way beyond just code. Is about understanding or, at the very least, being aware of the relationship between the different parts of a software project. For example:
* **The needs of the users and other stakeholders.** Oftentimes we work on isolated teams/services/areas and it's easy to lose perspective and make decisions that we think are the best for our context, but sometimes what is the best for a part of a system, is not the best for the system as a whole.
* **The overall architecture of the system.** We need to be able answer the questions: what are the main components of the system? How do the components interact with each other? How's the system deployed and operated? What are the non-functional requirements of the system, such as performance, security, and scalability? 
These  are not the only questions to answer, but you have the idea. If you don't have the answer for these questions, you better start asking for answers.
* **The business goals and objectives that the system is intended to support.** By keeping the business goal in mind, we can design and implement new systems/processes/features that are more likely to succeed.

These are not the only points we can or should consider, but are a good starting point. 

## Benefits of Big Picture Thinking
Developing big picture thinking can give us great benefits, for example: knowing the goal of your project, what services to consume, the technologies used in the system, can help us **make better decisions** about the design and implementation of our code and be prepared about how future changes might impact the system or the project. It can also help us be more productive by helping us to identify the most important tasks, detect dependencies and estimate the effort to complete and prioritize them. **Innovation** is also easier once we start to understand the big picture, you start thinking in broader solutions, foreseeing future problems and start taking measures to mitigate them.

When you can understand the big picture, everybody benefits from it. You can help others understand it, you can justify and communicate better your decisions and understand the ones taken by your stakeholders.

> In the early 1990s, Apple was on the brink of collapse. The company was facing increased competition from IBM and Microsoft, which had both released successful operating systems and computer products. Its bloated product lineup and ineffective marketing led to a deteriorating relationship with customers.

>Key Decisions:
>In 1997, Steve Jobs returned as CEO, focusing on innovation and simplifying the product lineup to two desktops and two laptops. He improved the marketing strategy and restored customer relations, stating, "Innovation distinguishes between a leader and a follower."

>Results:
>Under Jobs, Apple introduced the iMac in 1998, followed by successful products like the iPod, iPhone, and iPad. Today, Apple, valued over $2 trillion, reflects the power of big picture thinking and bold decisions in turning around adversity.

## How to Develop Big Picture Thinking?
Although some people are able to see it at first glance, naturally, being able to see the big picture is a skill that can be learned and honed. The following are some techniques that can help you to improve your ability to think:
* **Have a "think" checklist.** Whenever you have to start working in something ask yourself a couple of questions like:
    * Who's going to use it?
    * Which other entities (services, teams, actors) will be involved?
    * What is most likely to change over time?
* **Practice Second-Order thinking.** This is a technique of strategic thinking that is, thinking in terms of interactions and time. Second order thinkers ask themselves the question “And then what?” [2](#sources) this exercise will help you conceptualize the consequences of your decisions over time.
* **Make it a habit.** Practice makes perfect, right? Making habits is hard, but not impossible. First, you need to make time for thinking, you can start blocking some time out of your calendar to make time to think, or you can introduce this "thinking time" into your daily routine and multitask and do it while doing a mechanical task (like walking, showering, doing the dishes). The important thing is to think.[3](#sources)
* **Create To-Focus-On Lists.** Where should your attention be concentrated?
* **Consider the future and the past.** Consider past successes, post mortems / case analisys, and future trends while making decisions.
* **Capture your ideas.** Take notes, and review them regularly.
* **Ask for feedback.** Nobody is an island, remember? You need to sync and talk with people, so you don't end up misinterpreting anything important.

## Conclusion
Big picture thinking is a critical skill for IT professionals, particularly software engineers, quality engineers, project managers, SREs, and others involved in complex technological ecosystems. It allows us to understand the context of our work, see how it fits into the overall system, and make informed decisions that align with business goals and objectives.

Developing big picture thinking takes practice and effort, but it is well worth it. By cultivating this skill, we can enhance our productivity, innovation, and communication, ultimately leading to greater success in our careers.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xai8dniog7if0rfmmzl5.jpg)

### Remember:
* Big picture thinking goes beyond code and encompasses the entire software ecosystem.
* Understanding the needs of users, system architecture, and business goals is essential.
* Big picture thinking brings significant benefits, including better decision-making, improved productivity, and enhanced innovation.
* Develop big picture thinking skills through techniques like having a "think" checklist, practicing second-order thinking, and regularly reflecting on past experiences and future trends.

And the most important thing to remember: **Big picture thinking is an ongoing journey, not a destination.**

## Do you want to know more?
Here's some recommended reading.
* **Thinking in Systems.** by **Donella H. Meadows**: This book offers a framework for understanding how systems work and how to make effective interventions.
* **Range: Why Generalists Triumph in a Specialized World** by **David Epstein**: This book argues that generalists are often more successful than specialists, as they are able to see connections across different domains.

## Sources:
[1] [Big Picture Thinking: Definition, Strategies and Careers](https://www.indeed.com/career-advice/career-development/big-picture-thinking-strategies)
[2] [Second-Order Thinking: What Smart People Use to Outperform](https://fs.blog/second-order-thinking/)
[3] [Strategic Thinking (2017)](https://www.linkedin.com/learning/strategic-thinking-2017/welcome-to-strategic-thinking?u=100838786)