KIS - Keep It Simple

 When I began my career in software development, my architect advised me to adhere to the KIS principle. He discouraged me from implementing complex logic or using design patterns unless they were necessary. As a newcomer, I often tried to showcase my skills and leaned towards complexity. It wasn't until I gained more experience that I realized how challenging it is to keep things simple. Designing a simple system can be difficult, but it is also highly rewarding.

What defines simplicity and complexity? The criteria for simplicity can be highly subjective. For example, writing a SQL query to obtain the top record in each category might be a straightforward task for one person, while another may find it complex. With experience and practice, we acquire skills that simplify tasks in our respective fields. However, there are certain areas that require careful attention, such as software teams.

When a team is forming, it's best to keep things simple. Defining simplicity for a team involves considering the number of variables that impact the team's performance. For instance, when conveying a phone number to someone, we group them into three or four numbers to facilitate easier recall. Similarly, in a development team, it's best to start with three or four variables. In the SCRUM framework, four variables are tracked - Duration, Effort, Value, and Quality.

SCRUM's success is attributed to its simplicity. However, over time, teams tend to complicate things with the addition of tools. For example, most teams use a ticketing system to track tasks, which has become mandatory with remote working. However, teams often introduce unnecessary complexity by customizing the ticketing system with numerous task types and workflows.

This approach introduces more variables and necessitates assistance for team members to use them, which delays work. A simpler, more streamlined approach would benefit teams, with a 'dumb' ticketing system that only handles ticketing. Complex workflows and excessive choices undermine team productivity.

In addition to software, it's critical to keep the development process simple to create better software.

Comments

Popular posts from this blog

Greedy computing with API

ChatGPT for cavemen

Event driven architecture for micro services