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.