8.31.2020

Testing inside an Agile Team


 Dear readers, 

...today I want to share with all of you, a beautiful experience I had during the last months. 

I'm participating in a software development project, for free, as volunteer. My role there is not Coach or Scrum Master, is Developer. 

For one side, I was always implementing small solutions and coding, during the last years. But to work in a project, from zero to launch, its been years since I don't do that. 

So for me was really exciting to do that. Honestly speaking, I was not sure if I could make it happens...but at the end, it worked well. Inside my limitations, of course, but it works. 

I will explain, now, my main happy surprises during this project.

Architecture 

For our surprise, our Architecture skills were powerful. I think that has to do with "collective intelligence". And the learning process that walk with you during the entire path. 

"Learning is part of the process"

We can find many different definitions of Architecture. One I love is: Architecture is the set of decisions, that are hard to change later. 

So in that way, Architecture is simple strategy. Is to prepare the territory for future changes. 

"Architecture, is the skill to split and differentiate"

Testing  Driven Development 

We implemented, until now, 351 tests adding all categories. Twas an amazing experience, that makes me believe, that a real developer cannot live without TDD. 

Twas my best professional experience, in a non-professional environment. I've never participated on a so well organized process. 

I've got the opportunity to implement many of my own theories, and conceptions, like the Business Tests.

Development Layers: how to remove excess of engineering

As we moved forward in development, one of the frequent obstacles or impediments we found, was related to complexity. But complexity is not a curst that falls from the sky because we are sinners. 

A big portion of the complexity, is created by us in the code. In the decisions. 

One of the key leranings was: too much quality, and too much engineering sometimes is a waste. Is a problem. 

To keep a "stupid simple" code is important. Some times we wanted to add a new field into a model, and we faced an issue with the "security token" that was blocking us to develop and test. 

After this experience I found out the importance of splitting the development process into different layers:
  • Layer 0
    • Test environments
    • Models and its relations 
    • CRUD scaffolding
  • Layer 1
    • User Graphic interface (usability)
  • Layer 3
    • Integration with other systems 
  • Layer 4
    • Security
    • Esthetics

Business Tests Driven Development 

I had

The Power of Unbalanced Teams 

We discover, the power of unbalanced Team.

The Power of Commitment and Agility 

The end of the path is on sight. 


WS24 stands for: Walking Skeleton 24. And cause of our commitment, we set up a deadline for 5th november. 

I can't believe that so much commitment and discipline we put into this project. We start with some codelines, a couple of objects, and now we have an entire application that integrates google login, a django backend, with google maps and many other components. 

So thanks for reading, and here you have my "take out" learnings. 

Keep safe at home! and keep coding! 

  • TDD and BDD are amazing, and they work well.
  • Unbalanced teams are powerful. 
  • Commitment is key 
  • Agile is about Flow, Team Work, Improvement and Commitment 
  • Keep it small, simple and ugly (beauty comes later)