Tuesday, September 16, 2014

Django and Python

This was written in 2011.

I've been working on a website since September 1st of this year (2011). It's been slow going. I don't know why. Here I'm going to try and describe why I'm working so slowly.

Website design and development phases
1. Problem
2. Design
3. Code
4. Test
5. Deploy

Design work is hard! It shouldn't be so hard but it is. There are design principles, i.e. rule of thirds, for visual design but it's hard translating these guidelines into real pages. It takes years to be a good designer (let alone a great one) so it shouldn't surprise me that it's taking so long.

What is the problem space? I'm trying to build an auction using Python and Django. Auctions are relatively simple to comprehend. So for some reason I'm apprehensive about hacking the site together. I feel it has to be designed. I feel that I don't know the problem space well enough, or the tools well enough, to just jump in. I'm not intellectually ready.

Python and Django are great tools. I love them. But I don't know how to translate problems into Python and Django solutions. That's my problem. I'll give you a simple example. An auction like eBay allows you to browse products and services before you bid. So how would you do that in Django? Great thing about Django is that it automatically comes with an authentication system. An admin framework which allows people to add content quickly (while the other parts of the site are being built). I want to utilize this. I want my users to be able to browse first, login later. I want them to be able to post items (after a login). The Django user model describes, admins, 3rd party, users. 3rd party may update content through the admin site. My use case (auction) changes this user model. Why should I hack Django if it doesn't provide me what I need?
How do I re-define the user model? And I don't want to write one from scratch. I love the idea of a framework but the problem is most of these frameworks are not flexible enough to adjust to the problem domain.


No comments: