What to focus on in code reviews

There are several key aspects to consider during a code review. First and foremost, the code should effectively solve one specific thing. Whether it’s a diff or a file, it should have a clear and singular purpose. The diff description and the modified file should both represent one cohesive concept. Additionally, when examining the methods being maintained, they should also have a singular purpose. Ideally, the design intent should be evident and well-respected.

The second important aspect to focus on is naming. Good naming conventions are crucial. Terminology acts as a bridge for human understanding. If you introduce a term that can be interpreted in multiple ways, or worse, one that is misleading, it can cause confusion when others read and follow your code. A meaningful name conveys multiple threads of meaning. For instance, if you are retrieving details for an accountant in your system, it’s preferable to name your method ‘getAccountantById’ rather than ‘getUserById.’ The chosen name should align with the purpose of the code and make it clear that you are trying to retrieve an accountant, a name who is responsible for the financial aspects. Of course, this assumes that you are building some kind of ERP or system that will be used by accountants.

The last crucial aspect to consider is duplication. If you find yourself having to read code multiple times or come across copied and pasted code, it’s often indicative of incomplete articulation. If you encounter similar code in different places, such as three methods all hitting the database to fetch something, it might be worth considering whether this could be combined or if there’s a more appropriate technology to use, like GraphQL, which enables more articulate information exposure. It’s possible that the code lacks the right level of abstraction. Whenever you notice repetition, it’s likely that there is something fundamentally wrong with your code’s structure and thinking. Addressing these issues is essential.

So those are my thoughts on what to look for in a code review. This list is not comprehensive, but it highlights important aspects to consider. What are your own thoughts

Talk to me on my Twitter @jchex


How to approach bringing change to your org


In the realm of change management, achieving success requires more than just logical reasoning and data analysis. As leaders, we must understand the human side of change and master the art of storytelling to inspire and motivate our teams. In this article, we will explore the essential elements of successful change management and how crafting a compelling narrative can make all the difference.

Be Spork!:

Before embarking on any change initiative, it is crucial to lay a solid logical foundation. You should meticulously analyze the situation, for example, you can consider metrics such as developer productivity, commit frequency, or lines of code. This analytical approach ensures that decisions are based on a thorough understanding of the problem at hand and you will be able to know if your changes actually helped.

The Emotional Connection:

However, humans are not purely driven by logic. We require an emotional connection to truly embrace change. Merely presenting data and analysis to our teams may not yield the desired response. Instead, we need to recognize the power of storytelling and the impact it can have on motivating action.

The Power of Compelling Stories:

To gain adoption for change, leaders must become skilled storytellers. Rather than bombarding team members with spreadsheets and slides, we should focus on creating a narrative that captivates their hearts and minds. Imagine showing a chart that illustrates declining productivity over time or comparing it with successful organizations or really an iconic brand your people will understand.

Additionally, incorporating relatable stories or videos that showcase the benefits of change can enhance the emotional appeal.

The Two-Step Approach:

Successfully managing change involves a two-step process. Firstly, leaders must engage in thorough analysis and logical thinking to devise a solution. This step requires diving into the data, conducting research, and developing a well-grounded understanding of the problem. Once the solution is in place, the focus shifts to the emotional aspect—crafting a compelling story that resonates with team members.

Working on the Approach:
The key to gaining acceptance lies in the approach. Leaders should carefully consider how to present their findings and solution. By leveraging storytelling techniques, visual aids, and relatable examples, we can effectively communicate the benefits and potential outcomes of the proposed change. The goal is to create a narrative that not only informs but also inspires action and fosters a sense of shared purpose.

The Symbiosis of Understanding and Convincing:

For successful change management, leaders must ensure they have a clear understanding of their goals and objectives. This understanding serves as the foundation for developing a convincing approach. By combining logical analysis with emotional storytelling, leaders can inspire their teams to embrace change and work towards a shared vision of success.

How do you manage change in your own organization. Talk to me on my Twitter @jchex


Should you use a service Mesh?

One of the key advantages offered by Kubernetes is the elimination of the burden of maintaining individual services or containers. However, when it comes to handling potential errors or bugs during rollouts, additional measures are required. This is where a service mesh, such as Isto, comes into play, augmenting Kubernetes deployments with advanced traffic management and communication capabilities.

Where Kubernetes shines:

Kubernetes, known for its scalability and automation features, provides a unified platform for managing distributed applications. By virtualizing the underlying machines and intelligently distributing resources, Kubernetes relieves the need to manually allocate CPU cycles and RAM across services. This allows developers to focus on building resilient and scalable applications without worrying about the low-level infrastructure details.

The Role of Isto:

While Kubernetes excels at orchestrating services, it may fall short in handling certain scenarios. For instance, when a rollout encounters a non-fatal bug such that the pod doesn’t stop but users are affected, it becomes crucial to handle the situation effectively before rollout happens to all users. This is where Isto, a powerful service mesh, shines.

Traffic Management and Observability:

Isto facilitates traffic management, enabling fine-grained control over routing and distribution. With Isto, you can gradually introduce new features or updates by routing a fraction of the incoming traffic to a subset of servers. This allows you to observe the behavior and performance of the new release while minimizing the impact on the production environment. By leveraging Isto’s traffic management capabilities, you can confidently roll out changes based on your business policies and gradually expand their reach.

Enhanced Inter-Service Communication:

In addition to traffic management, Isto provides robust inter-service communication capabilities that go beyond what Kubernetes offers. With Isto, you can establish secure and reliable communication channels between services, regardless of their physical location or network boundaries. This opens up new possibilities for implementing advanced communication patterns, enabling seamless integration and cooperation among your microservices.

Analyzing Traffic and Production Cluster Integrity:

Another valuable use case for a service mesh like Isto is the ability to route and analyze traffic selectively. Suppose you want to inspect a portion of the incoming traffic for analysis or debugging purposes while ensuring that the majority of requests continue to flow through the production cluster. Isto empowers you to achieve this fine-grained traffic routing and analysis, facilitating in-depth monitoring and troubleshooting without impacting the overall system performance.

Have you used Istio or a similar service mesh when using Kubernetes Talk to me on my Twitter @jchex