Clients: National Geographic, PBS, Redbeacon, Nasuni, ...
These 2 tasks will compete for your attention.
Prototype driven development based on 2 week sprint cycles.
Typical project phases:
...and iterate until you are done
Iterate on this virtuous cycle:
At the conclusion of each phase you should have new working features and code you're proud of.
Developing in iterations helps keep project metrics in check (you know, the things that always get abandoned):
Developing in iterations helps keep project metrics in check (you know, the things that always get abandoned):
Repeatable Deployments
Developing in iterations helps keep project metrics in check (you know, the things that always get abandoned):
Keep stakeholders involved and aware as much as possible. Enforce regular meetings PM should make sure tickets, questions get answered.
Tools :
First you build a raw estimate
Continuously refine your estimate Demo finished features on a fix schedule
Pin down early on what the most complex aspects will be. Make sure you are chipping away at them rather than pushing everything back until the end.
Two opposing factors to consider:
Plan ahead:
A convenient way to migrate your data is very important because you will need to run it often. No matter how much time you spend to optimize this.
Optimize the ease of run rather than the speed...
Your new data model will evolve and you will need to run this often
You'll probably encounter many of these problems:
Dataset
Django-specific
Sanity must haves for your tool(s):
It is easy to create a system that is completely "unDjango-ish" due to external constraints and influence from legacy system.
Study up on Best Practices (Google It!)
Avoid trying to exactly recreate the legacy workflow/UI in your new system.
UX has evolved. Look for ways to optimize work flow now that we have better tools and paradigms.
Learn from existing open sourced projects - the patterns solve your problems even if the features aren't exactly what you want:
Our philosophy is to favor 3rd party components but not be afraid to fork early. Pick out the best parts and use those.
Shoehorning out-of-the-box solutions on large project might be more hassle than it's worth.
This community is composed of the most knowledgeable people in this domain.
A good connection will enable you to:
Embrace the project:
Assume a minimum effort of:
Even still, a little more effort may be required:
Help them to help you...
To fork or not to fork?
Pros
Cons
Django is particularly well suited for these types of projects. (It was born in a newsroom afterall)
However, like any tool you use, you need to be aware of the tradeoffs in order to maximize your productivity and minimize mistakes. We hope that you have a better idea of how to make best use of Django.
Thank you for your attention.
Brian Luft - @unbracketed
Yann Malet - @gwadeloop