Nate Neff

A blog by Nate Neff

Enrollio's UI Upgrade: Lessons Learned

Last week, I overhauled Enrollio’s user-interface. I’m happy with the improvements, but I haven’t merged the changes into the Main Branch yet. The new UI stuff is in a Separate branch, and they’re not doing any good there.

Wag of the finger

How’s this for test output:

1
2
3
4
>grails test-app -functional
Tests passed: 3
Tests failed: 55
{% endhighlight %}

Whoops! Well, those are functional tests, and this was a UI overhaul, so that’s to be expected. Let’s try integration tests:

1
2
3
4
>grails test-app -integration
Running 69 <Beavis Laugh> integration tests...
Tests passed: 56
Tests failed: 13

Meh. I can’t deploy at this point. I didn’t write those tests just to ignore them.

What did I do wrong?

Let’s identify some of the mistakes I made. Since I’m under the bus already, let’s not stop after the first axle.

  1. Too many things going on. UI Upgrade + New Screens + Navigation Overhaul = TOO BIG!-
  2. I should have used a prototype for the UI changes. A bunch of HTML/CSS files would have been perfect. I could’ve concentrated on look/feel and Jquery without messing with Grails code. It would have been easier to demo a prototype to the users, also. I could have cleaned everything up when integrating the prototype into Enrollio. Lesson learned.
  3. Not much refactoring. I would fix up a screen’s UI, then add functionality and never bother to refactor or run tests. Gack!
  4. Never thought about merge path. These changes have to go back into the main branch /sometime/. I should have gotten “Done Done” with smallish tasks, and merged quickly / often.

What’s Next?

I don’t want to compound/repeat my mistakes and blaze through this. The new functionality still doesn’t have any tests. Bad Monkey!! I want to identify small tasks, complete them, and merge them back to the master branch. The benefit is that Enrollio will see steady improvement, and not a giant leap with a bunch of bugs and ugly / half broken code and tests.

Rules for integrating new stuff into Enrollio:

  • Tests should stay at 100%
  • Keep merges simple and small
  • Merge changes into master branch ASAP

Plan

  1. Go back to the main branch of Enrollio. With Git this is very simple, and I can easily pull changes from the branch where this train-wreck started.
  2. Upgrade the UI first. Limit to just the CSS and /maybe/ navigation improvements. Don’t remove any functionality.
  3. Identify the new features that I put into Enrollio and do Test-Driven development.

I’ll post an update next week. May the Force be with me.