Dev and Test, Sitting in a Tree: K-I-S-S-I-N-G

Facebook
Twitter
LinkedIn
Pinterest
WhatsApp

When I was a kid cars didn’t have seat belts in the back seat. We used to fly to and fro all over whenever the car took a turn. These days my kids shriek with horror if we forget to buckle them up and the car starts moving. That’s the mindset.

Some time ago I led a code retreat event. In the first session, I asked the teams to try and build a simulation of Conways’ Game of Life. Immediately they started coding the simulation.

That was odd.

You see, I usually don’t write any code before I have a test ready to run it. What’s the point? I like it when one key press runs all the tests. It makes me feel safe. It’s the same as when I’m getting into my car I wear the seat belt.

When the people at the session were done with coding, they wanted to see if it works. So they wrote a short main and started debugging.

“They wanted to see if it works.” I’m familiar with this. I also used to write code and then just wanted to make sure it works. These days I have a concrete objective in front of me: a test that should pass.

When I started TDDing (Test Driven Dedign/Development) it was strange. I wanted to write code and I felt messing around with the tests was a waste of time. But as I did more and more of it something changed. It made me feel safe.

On the second session of the aforementioned Code Retreat I asked the people to do the same exercise, but this time the test first. They didn’t understand. So I showed them: I take a blank project and write a test. I start with the assert statement. I use in the assert a Class that I still don’t have and also probably a Method that I don’t have. Then I write the code in the test that comes before it. Then I use the IDE to generate the missing classes and methods. Enlightenment!

In the same way that you don’t build a house without scaffolding, you don’t write code without tests. When you start with the tests, you write code that is more testable. When you build a car, you build it so you could have a proper place to anchor the seat belt. It comes together.

(And it works as well with Legacy code. Read Michael Feather’s Working Effectively with Legacy Code. We will also write about it here.)

It is true for a single developer doing unit tests and it is true for QA people running System Tests: Testing and Development comes together.

Dev and Test
sitting in a tree,
K-I-S-S-I-N-G.
First comes learning,
then comes practice
then comes software in a baby carriage… 
:-O

Subscribe for Email Updates:

Categories:

Tags:

A Kanban System for Software Engineering
Games and Exercises
Scrum Primer
Lean Risk Management
Manage Budget Creation
Coaching Agile Teams
Retrospectives
System Integration Environments
SPC
Nexus vs SAFe
Agile Contracts Best Practices
Engineering Practices
RTE
Jira admin
Advanced Roadmaps
Continuous Integration
Kanban Basics
Releases Using Lean
SA
Certified SAFe
Jira
transformation
Agile Development
Scrum Master Role
Release Train Engineer
Software Development
Risk Management in Kanban
WIP
Agile Risk Management
Managing Projects
Agile Testing Practices
Daily Scrum
Risk-aware Product Development
Agile Project
GanttBan
Planning
User stories
Value Streams
ROI
Scaled Agile Framework
chatgpt
Agile India
System Archetypes
Continuous Improvement
Agile Basics
Large Scale Scrum
Professional Scrum with Kanban
Agile Release Planning
Legacy Code
Elastic Leadership
System Team
Kaizen Workshop
Agile Games and Exercises
Test Driven Development
ATDD
Managing Risk on Agile Projects
Story Slicing
Spotify
EOS®
Keith Sawyer
Scrum Guide
SAFe DevOps
Lean and Agile Principles and Practices
Introduction to Test Driven Development
Process Improvement
Scrum Master
Agile and DevOps Journey
Pomodoro Technique
Agile Assembly Architecture
Portfolio for Jira
Certification
The Kanban Method
Perfection Game
Agile Delivery
Introduction to ATDD
Kanban 101
Agile Community
Agility
Confluence
Continuous Deployment
POPM
Tips
Nexus
Lean Agile
Scrum With Kanban
Risk Management on Agile Projects
Quality Assurance
Continuous Planning
Agile Release Management
Lean Startup
BDD
Kanban Kickstart Example
Agile Exercises
Agile Project Management
speed at scale
Principles of Lean-Agile Leadership
Business Agility
Scrum.org
Limiting Work in Progress
Agile Outsourcing
Presentation
Program Increment
ATDD vs. BDD
SAFe Release Planning
Lean Agile Leadership
Scrum Values
Continuous Delivery
PI Objectives
The Agile Coach
Code
PI Planning
Rapid RTC
IT Operations
Agile Israel
Lean Agile Basics
predictability
Software Development Estimation
AI Artificial Intelligence
Tools
speed @ scale
An Appreciative Retrospective
Covid19
Agile in the Enterprise
ART Success
Agile
Lean and Agile Techniques
TDD
Product Management
Frameworks
Achieve Business Agility
Kaizen
Slides
Acceptance Test-Driven Development
Nexus and Kanban
Implementation of Lean and Agile
Hybrid Work
ScrumMaster Tales
Lean Agile Management
QA
Reading List
Lean Budgeting
Webinar
Amdocs
Operational Value Stream
RSA
Video
Sprint Iteration
Kanban
Effective Agile Retrospectives
Professional Scrum Product Owner
Enterprise DevOps
RTE Role
Agile for Embedded Systems
DevOps
Jira Plans
Accelerate Value Delivery At Scale
Kanban Game
Sprint Planning
Lean Agile Organization
Scrum
SAFe
Built-In Quality
Agile Mindset
Self-organization
Team Flow
AI
Rovo
Atlaassian
Legacy Enterprise
Lean Software Development
Iterative Incremental Development
Agile Marketing
LeSS
NIT
Agile Product Development
Entrepreneurial Operating System®
Agile Program
Product Ownership
agileisrael
Jira Cloud
Agile Product Ownership
ARTs
ALM Tools
LAB
Artificial Intelligence
Lean-Agile Budgeting
Agile Games
Development Value Streams
Lean-Agile Software Development
Sprint Retrospectives
What Is Kanban
Change Management
LPM
Scrum and XP
Nexus and SAFe
Applying Agile Methodology
Atlassian
Professional Scrum Master
Agile Israel Events
Implementing SAFe
Nexus Integration Team
lean agile change management
AgileSparks
Systems Thinking
AgileSparks
Logo
Enable registration in settings - general

Contact Us

Request for additional information and prices

AgileSparks Newsletter

Subscribe to our newsletter, and stay updated on the latest Agile news and events

This website uses Cookies to provide a better experience
Shopping cart