Apologies if I have repeated what anyone else has said, or if some of these comments aren't directly related, but here's my two cents worth.

And remember, rapid development isn't always about the different pieces of software or frameworks that you use, so hopefully some of the below comments give some food for thought.

   * Make sure your workflow is sensible for the size of the project
     you are working on. For example, there's no point putting
     significant time into enterprise grade unit testing, if the app is
     not business critical, or the client doesn't want to pay too much.

   * If the project is in-house (i.e. its one of your own projects),
     then these are the best times to experiment with new methods and
     solutions, because then you are not putting your clients product
     at risk, and you learn from mistakes the easy way. (we've all been
     there!)

   * It is nice to use isolated Python environments where ever
     possible, but remember, they will need to be maintained manually
     (for security patches etc). This does have its benefits, for
     example if your Django app has dependancies for a specific version
     of a module, and the sys admin upgrades Python, and thus breaks
     your app.

   * Before you even touch anything, make sure you have a spec from the
     client first. This is absolutely crucial if you want an easy life.
     Again, if this is your own project, you may choose to either draw
     up a spec to give you a good idea as to how one should look
     (you'll learn along the way), or think up the spec as you go
     along. Some clients will say there is no spec, and that they are
     thinking of things off the top of their head. In these cases, you
     must *insist* that you work on a daily rate, no exceptions,
     otherwise clients will take you for a ride (again, we've all been
     there before).

   * It's good to start with the database models first, to make sure
     that the underlaying foundations of your application are sound.
     Try to anticipate future modifications, and don't bother too much
     with tuning to begin with. As long as you have some decent skills
     in the database you have chosen to use, then it is an easy enough
     task to create indexes along the way etc.

   * If you want to test work flow, then try and make good use of the
     "manage.py shell" and also the ability to create management
     commands. This will allow you to quickly test code changes,
     without having to do app restarts, or going through login
     processes. I know this sounds like a minimal amount of time saves,
     but when you're doing 200-300 test runs a day, it soon adds up!
     Again, use your own discretion as to whether this approach is
     sensible for the size of the project.

Also, as a side comment, I haven't used either buildout or fabric, so I can't offer much advice on these.

On 22/12/2010 18:40, Dana wrote:
I've been bashing my head against a wall lately trying to determine
the best (highly subjective, I know) workflow for developing Django
projects.

What I have gathered so far is:

* Buildout -- For building and packaging your projects.
* Fabric -- For easy deployment/testing of code on devel/staging/
production servers
* PIP -- For installing Python packages into your project.
* virtualenv -- For creating an isolated Python environment.

... but what I am having trouble figuring out is how the workflow
should be between these tools.

* What's the relationship between PIP and buildout in development vs.
deployment?
* Is buildout used solely for installing/packaging stuff for
deployment?
* Do you use fabric to run buildout on a server?
* What role does PIP requirements file play in all this? Is it used?
* Are you using setuptools or distribute?

I know this is a very broad and subjective topic but I'd love to hear
what you guys and gals are doing out there to develop rapidly and to
deploy efficiently and predictably.

Cheers


--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to