Django is one good web framework. It is the easiest portal into programming “Flow” I’ve found in ages. Programming for Django rapidly sucks me into an extremely rapid and engaging code-test-next cycle.
Flow = Productivity
There is an often quoted statistic in the programming world. A good programmer will outperform a mediocre one by a factor of 10:1. These numbers are pretty accurate in my experience, and I’ve long considered the reasons why this is so. My observation is that great programmers are not necessarily immensely more intelligent than their slower companions, rather they are more talented at entering Flow.
If my theory is correct, then anything which enables the programmer to get into this state is to be encouraged. The work done in a Flow state will be done much faster and with fewer errors than any other work. Perhaps more importantly for the programmer, it will be more enjoyable.
But what is Flow?
Mihaly Csikszentmihalyi has written two books about this topic, Flow, the Psychology of Optimal Experience and Finding Flow. I think the best summary of the experience is found in the first paragraph of Chapter 4 in Flow.
We have seen how people describe the common characteristics of optimal experience: a sense the one’s skills are adequate to cope with the challenges at hand, in a goal-directed, rule-bound action system that provides clear clues as to how well one is performing. Concentration is so intense that there is no attention left over to think about anything irrelevant, or to worry about problems. Self-consciousnes disappears, and the sense of time becomes distorted. An activity that produces such experiences is so gratifying that people are willing to do it for its own sake, with little concern for what they will get out of it, even when it is difficult, or dangerous.
How Django encourages Flow
- It allows a Python programmer to use clear rules to create a data model and to apply it to the task at hand. It doesn’t require a lot of context-switching between Python and SQL, which helps maintain flow.
- It breaks down the problems into clear, testable chunks, which means that one is not “programming out on a limb” for a long while, like I often find Java encourages me to do.
- It uses Python to configure Python, which is a refreshing change from the increasingly XML-heavy frameworks found elsewhere, especially in the Java world. Not only is that “refreshing”, it is one less context-change that is likely to drop the programmer out of Flow.
- It automatically produces “the boring parts” of the application. Unenjoyable drudgery such as creating admin pages is one sure way of dropping the programmer from the Flow state.
- It is so quick to program in, problems are solved so rapidly, that it encourages you to do “just one more part”, thus making time fly by.
[tags]flow, python, django, webapp, productivity[/tags]
No related posts.
Comments