“Think Globally, Act Locally.” I recall first hearing this phrase in my youth, applied to connecting our personal choices to environmental impact. I’m thinking about it today in the context of Agile teams: having the bigger picture in mind is an important piece of our overall success. I’ve seen this recently with several team interactions…
Cleaning the code
I was recently working with several team members to add new functionality to a body of code that had been created by a different team. Inserting our new functionality (without breaking existing functionality) kept bringing us back to a single, complex method. Every time this method appeared on the screen, we spent 10 minutes trying to figure out what it was doing, and why. Finally, we decided to refactor this code to bring it into one level of abstraction and to separate intention from implementation. By performing this work, we not only made our immediate work easier, but we paved the way for easier additions and maintenance in the future. Perhaps in this case the “bigger picture” impact was not our first goal, but over time, hundreds or thousands of such choices make an application or system significantly more maintainable.
Key takeaway: Leave code in a clean state: future success depends on being able to read, understand, use, and modify your code.
The business context
I was in a meeting with a key business stakeholder, several POs, and a domain expert. The topic was “what to do about new stories” that had been surfaced by an analysis activity. The “new stories” were not particularly welcome as they added challenge to an already tight timeline (driven by external / business factors). What was valuable was the conversation that followed – a reminder of the specific goals we were trying to meet and the reasoning behind them. This provided the business context needed to help identify those stories that were most important or valuable, vs. the stories that could be prioritized after the near-term releases.
Key takeaway: Context, including the “why” behind targets and goals, helps individuals and teams make better decisions.
One of several teams working in a shared codebase added new features to the codebase using previously-unused (by us) libraries, features of the build tools, and features of the source code management tools. The unanticipated impact was development environment difficulties encountered by developers in other teams. Through cross-team collaboration, developer-by-developer issues were resolved and plans were put into motion to change how these tools were being used. What occurred that I thought was most valuable, however, was a cross-team request for a working agreement that would help keep such issues from slowing down the teams in the future. This heightened sense of awareness of cross-team impacts will be valuable for a long time to come.
Key takeaway: Recognizing the potential for cross-team impact of decisions, and mitigating that impact, helps everyone move forward smoothly.
Think Globally, Act Locally
Being successful as an organization depends in part on each person and team being aware of and taking responsibility for the bigger picture – whether that be other developers, other teams, or the business context in which work and decisions are made.
What steps can you take today that will make this a greater force in your organization?
Originally published November 2nd, 2017 on the Innovative Software Engineering blog. Republished with permission.