Agile Workflow and Gobs of Stories
Over the course of the last few weeks I've tried very hard to embrace the Agile methodology of writing a bunch of stories for simple, isolated tasks, and putting them into PivotalTracker. This morning is no exception, but I wonder when they'll ask me to stop! After all, I just put in about 10 stories for different CouchDB views and visualizations based on those views, and while it makes perfect sense to have them as individual stories, it's also a lot of stories to wade through.
Lots of guys talk about a "scrollbar tax" with large methods - hence the "ruby way" of having methods with no more than 10 lines in them. But then they have the "scrollbar tax" with dozens of stories in Tracker all basically doing the same thing, but about different data and different views. So it's a bit of a head-scratcher.
Is scrolling bad? Or are you just looking for a reason to have exceptionally tiny methods in your exceptionally tiny classes?
I'm not saying that I prefer 200+ line methods in 1000+ line classes - there's a limit to be sure. But there's also a limit on the low-end as well. I've honestly seen this class in the codebase:
require 'pipeline' require 'pinned' require 'app_log' require 'json' class PinnerWorker def self.perform(data) merchant = data[:merchant] otcs = Pinner.pin(merchant) Pipeline.notify(self.name, data.merge(otcs: otcs)) end end
Excluding the two lines that define the class, and therefore must be there, the actual functional code is three lines! There are more require statements than that! Sure, I can see why they did it - because there used to be something here, and they didn't want to retrofit all the code if they removed this class. But that's just being lazy.
Anyway… I'm trying to be a Good Citizen and make all the stories and then check them off as I go. It's kinda interesting, but it's amazing how much work there is in the Agile Methodology that has nothing to do with coding. Make these stories, but then you can't use them in the documentation, it's in the tracker. You can use them in the docs - people don't make docs (except me), etc.
I'd be all for a scheme where making something meant that it stayed around!. Then there would be a reason for doing a good job of writing up the "need" initially as it'd be part of the eventual docs for the application of feature.
That would be nice!