Sunday, January 29, 2017

The Nuages of Django

I've finally finished my upgrade to Django 1.10, and, even though I've ranted a bit about the choice between maintenance programming vs. greenfield programming, it's worth taking a final look at the effort it entailed.

  • Here's the issue I used to track the work.  It took me about a month total to perform the work, though the vast majority of that was in relatively wide blocks of weekend time.  I'd estimate that the total effort required about 20-40 hours.  I did this in about 70 commits.  They aren't all independent, but they're as close to being side effect free between each other as reasonably made sense.
  • Using the issue to track my progress gave me a lot of advantages: it made me define clear (though imperfect) criteria for finishing the issue; it kept me disciplined in my tracking through short, relevant comments (although across 107 of them at this juncture, I'm sure there's repetition); it gave me a place to track articles and musings without having to worry about whether or not they were too trivial to put into something more 'official' like the wiki or this blog; and the aforementioned discipline helped me decide when other ideas should require additional issues.
  • I didn't hit every topic here during the upgrade, but I hit a lot of them.  Because a lot of the code was already available in the OpenEats project, much of the documentation served to be more tangential than it would be had I needed to learn things from scratch.  I think of this style of learning akin to learning the patterns of a foreign language via common phrases first before learning the rules of the grammar.  Greenfield development, to me, draws a common thread with attempting to learn how to conjugate all of the verbs in a given language before attempting to speak it.  In the former example, the constructs of grammar are important, but the ability to communicate, however imperfectly, outweighs the benefits of knowing all of the tenses of a limited domain.
  • The existing code gave me a strong launching ground for writing my own views.  OpenEats, as it stands today, favors a model where recipes are public by default and expected to be shared.  Because I'm more interested in simply having a site that's ad free and that allows me to view collected recipes and don't want to step on anyone's intellectual property rights, it's important that I keep the recipes private.  I was able to take an existing view and generate one that fit my needs, even though they were vastly different from the site from which they were derived.  
  • The other thing that an existing site does (even still somewhat within the context of the Django upgrade I started talking about), is provide straw men to help me decide my site strategy.  There's a lot that's part of the site that I want to keep, but there are some things that aren't as useful, and some that I found when they weren't there, provided a strong signal for a future idea.
There's probably a number of other things that I found valuable during this Django journey, but I'm happy leaving those musings for another post.

No comments:

Post a Comment