“The Invisible Man.” by Chaotic Good01 is licensed with CC BY-NC-SA 2.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/2.0/
Keeping people informed
Early in my career, I thought writing software is all about the outcome. Delivering something that works. I thought it didn’t matter how it was done. At the end of the sprint if you didn’t have a deliverable, it was a problem. This was true in companies which adopt a waterfall model of development.
But then how would you show your stakeholders - including your project managers or scrum master or product owner the progress you have been making in your software development. I have been one of the unfortunate software engineers who worked in a firm where agile was practiced incorrectly, scrum was done to tick boxes. This made it harder to escalate obstacles.
Sorcery or magic?
Much of Software development is invisible to those other than the development team.
Our job in software engineering is to make the development process visible. Make our stakeholders feel confident that we are moving in the right direction and would be able to deliver something that is valuable to them. I know I am talking about development methods that follow an Agile or Lean paradigm.
Problems with lack of transparency
I often hear software engineers say, “I’m 90% done, I hit an issue and I’m trying to debug it. It should be done today”.
If that is the case, and you have been debugging for a couple of days, are you still 90% done?
At that point, only the engineer stuck on the problem knows about the progress or the lack of. For everyone else, it is a mystery. That is a classic example of the invisibility of software.
Making the invisible - visible
There are many ways to make the process of software development more visible. We have several tools available to us. Some physical real world objects and others as software.
Using a simple board where the feature you are working on is clearly broken down and can be moved from Todo to Done, can provide visibility and inspire confidence.
Writing unit tests, or following Test Driven Development and finally making all your tests pass, is another way to make the development process visible. Every build with an additional successful test, shows progress.
Integrating these to the continuous integration pipeline and generating reports of the tests and coverage and make progress visible.
Why is this difficult
Software engineers, must learn from the start of our career, the importance of keeping the software development process as transparent as possible. This will help make software developers more open to conversation about progress and also about problems and obstacles they face on a daily basis. Else some engineers tend to view asking questions as a quality of a bad software engineer.
Visibility is often lost when a software engineer feels less confident about the work they are doing. They might feel insecure and avoid opening up about the actual impediment they are facing thinking, they might be perceived as stupid or incapable of solving something.
The best you can do as a fellow software engineer or manager is to create a safe space, an environment where every member in the team can have an honest conversation about ones vulnerability without fearing that they are going to be judged. That is the start a good software development journey.