Work does not have to be toil, it can be play.
I recently read the article Play Makes Us Human V: Why Hunter-Gatherers' Work is Play by Peter Gray. Since then I have been reflecting upon what his findings mean for the modern software development workplace.
In our most primitive societies, hunter gatherer societies, play is extraordinarily important. Work is simply an extension of play and the societies have no real concept of toil (or negative unenjoyable work). Work (which in their case is hunting or gathering) is comprised of optional and collaborative ventures that involve mastery and purpose and a large degree of autonomy. They get no reward for this work other than the product of the work itself which they freely divide amongst the whole group. Their behavior really reminds me a lot of open source projects. In both open source projects and hunter gatherer societies, people are free to choose what projects to work on based on alignment with the larger goals of the project and the opportunity to practise and develop their skills. So, how can this knowledge be used to create a modern workplace which best matches our species predispositions?
Work should be play not toil. I think both employers and educationalists could learn a lot simply by contemplating this simple statement. As much as possible (and in the case of software development this is to a very large degree) work should be organized so as to minimize toil thus maximizing the sensation of play.
Developers should be encouraged to a large degree to make their own tools. If they need to automate something, or if they need to improve something they should be free to do this. They should be free to experiment and to constantly seek improvements. They should own their environment which will then make sure it is enabling for them and not restrictive.
Work should be collaborative. Hunters hunt in packs and humans still perform best when working in groups and not when isolated in small cubicles.
Work should to a large degree be optional. If it is possible make it optional to take part in a given project. If this is not possible at least make the distribution of work a matter for the teams themselves and thus make the actual work done by each developer optional.
This article gave me another perspective on why the practices and values I use and promote have worked in the situations I have seen. I think there is a strong alignment in the principles of people-focused organisations, management 3.0, agile development, etc. and the organisation of work in hunter-gatherer societies.