The code was ... like ... nested functions within functions, if-else mountains, and our first thought was "Omg, we gotta refactor everything". Well, we just wanted to add some User Interface and customize a few things. It was a constant trial+error, and because the Repo came without a single Unit Test, we broke the app countless times. Well, we accomplished our goal and the app now does what we wanted.
Our approachWe had a vision and some ideas and just "nerded it". No upfront planning, no upfront design - we simply decided to pair up and do something spiffy. I started navigating, trying to get my ideas across of "how to do it". I don't consider myself much of a developer, so Navigator was totally fine.
What happened nextI started telling him specifically which line of code to go to. That helped. A bit. Next, I started telling him which variables to use. And which code to write. He became my secretary while I was dictating the code.
I had lost my temper.
What I did about it
What I learned
- Define clearly what a Navigator is allowed to do and what not
- Define clearly what the Driver does
- Hold each other accountable to staying in role
- Define driver-switch intervals. Don't let the Navigator get all jittery over a prolonged time
Meta-Learning: I have tremendous respect for navigators working with learning developers on messy legacy code. I didn't even last half an hour before I lost my patience.
I now consider Navigator a significantly more difficult role than Driver. Kudos to all who navigate well.