Amusement Park Methods

Facebook
Twitter
LinkedIn
Pinterest
WhatsApp
Sometimes you stumble upon amusement park methods. Remember the feeling when first going through the gates of a big amusement park? When you get a first glimpse of how vast it is? you see some rides close by and in the distance, you see the tall roller coasters. That’s the feeling I’m talking about. You start scrolling through the method. Just to understand what’s before you, you want to see how long it gets. You scroll and scroll and it goes on and on, and you start to go faster but it never ends. As Louis and Clark tried to find a path through the Rockies to get to the Pacific, you are making your way through this monstrous method, this fantastic creation. As you progress you discover gems and places you would like to have the time to appreciate. You see static methods, more and more of them, this one reaching the database, this one getting some configuration data, that one directly contacts some external interface. After clearing some dense string manipulation statements you see a variable that looks familiar. It is called “Type”. You decide to go back and indeed it is referred to throughout the method. You immediately think of polymorphism. You continue. Something new appears at the bottom of the screen but you’re still not sure. Could it be? You scroll down some more and it is revealed in its full magnificence. A colossal If-Else statement, something that shadows everything you ever knew. It goes on and on. Endless indentations with complex conditions. It must be the creation of generations upon generations of developers. Like stalactites, this is a magical creation of nature. You need to make a small change. You find the exact place. What will you do? Will you just make it and run the entire flow? That might work. It might work but it wouldn’t do. You are a professional. Would you miss all those great rides? You decide to tame the beast. It is just you and the machine. You want to handle it all together but you know it is too risky. The stakes are high. At any moment someone might come up with something more urgent to do and you will get stuck with nothing. So you extract a small part of the method, the area where you need to make the change, to a different method. Sometimes it will be to a different class. You replace all the static calls with objects that will make the static calls in production but in the test will return whatever it is you tell them to. You write one test to run the new method. To make it pass you compose the fake data. It passes. Once you have the basic infrastructure more and more tests are flowing through your fingers. You cleared the area for work. You have the method under a harness. Now you write the tests for the change you need to do and indeed it fails. You make the required change and the test passes. Feeling satisfied you look at all the good the method has yet to offer. You wink at it with a promise for another visit. You mount your horse, tip your hat and ride into the horizon.
Subscribe for Email Updates:

Categories:

Tags:

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