Cooperation powered by great development practicesΒΆ

Tags: plone

Wet feet

Rocky Burt wrote a good story about keeping client concerns separate . So, how to structure your code in such a way that the specific customisations for the customer don't bite the reusable parts. All made possible by a good sprinkling of zope 3 technologies.

I want to emphasise another thing: developer cooperation. Zope 3 makes it way easier to keep things separate than ever before. Some personal examples from the last few weeks:

  • I started work on the product that Rocky mentioned and did some initial testing with feedparser . I wrote a doctest along the way, describing the design issues and ways for solving them. When I went on my holiday, I could just hand over the unfinished work, point at the doctest and rest asured that Rocky could figure it out.
  • I come back from my holidays. After a week I've plowed through an email backlog and some customer meetings and I'm finally able to look at Rocky's endresult: everything works and everything is beautifully carved up in separate zope3 parts. And there are more doctests that explain what's going on, allowing me to grasp the architecture and the main parts of the program. Now, doctests aren't zope3-specific, but they are used a lot there.
  • I start off on a new piece of functionality, a new set of contenttypes. It only has one template, though. I start off with writing a basic template with exactly the data that's needed. In combination with a view class. That makes the template a piece of cake: iterate over view.categories, iterate over view.results that returns dictionaries with keys url, title, etc. I put in some sample data and hand it over to our local CSS hero Mirella.

    She gets to do her magic, I get to fill in the functionality. We both don't disturb eachother. Separation of concerns. Works like a charm.

  • The last example is basically what Rocky describes . He made the core feedfeeder functionality. For some special case, he made a separate product that did some customisations. Both didn't bite eachother. I had to finish up the work with some filtering and sorting. That took a bit more doing than I expected, but I got 90% of it figured out with unittesting, doctesting and reading Rocky's doctests.

    Because everything was so neatly separated, the two remaining bugs were also well-isolated from the rest of the code and thus findable. And even though we were customising things inside our own custom product, nothing felt hacky or so. Everything was so neat and clean: it made us all feel pretty good at the end of the week. Another piece of solid functionality that'll delight the customer!

Me is real happy to work in such a cooperative environment and such a cooperative community with such cooperative coworkers. Great!

 
vanrees.org logo

Reinout van Rees

My name is Reinout van Rees and I program in Python, I live in the Netherlands, I cycle recumbent bikes and I have a model railway.

Weblog feeds

Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):