The concept of paradigm as described by Thomas S. Kuhn is quite profound, I have seen object-oriented software design authors quote him when illustrating the difference between other methods of software design. Yet, it is an illustration taken from another context and we software people should take care not to misinterpret it. (As we have done for example, with the concept of architecture as I have noted on several of my previous posts).
A paradigm is made of assumptions with deep roots inside our minds. I like to identify assumptions of this kind, controvert and open them to question, proposing arguments for and against; one could gain good learning experiences in doing so. As I often said: “How good it feels be wrong and to become aware of that”.
For example, I have been looking for a deeper understanding of the assumptions behind the typical notions about division of labor and work efficiency in general and how those assumptions are related with us in software development, the following has gave me more food for thought:
“Our intuition, having been tuned by the concept of the division of labor in manufacturing-like processes, is that the more stories we work on in parallel, the more efficient we are being. Agile proves otherwise for knowledge-based work. Try it – the team will work more efficiently with less parallelism, even if a few individuals do not. If you are familiar with the concepts of “Lean”, work-in-progress is waste until it is completed to the point where it has business value, so we should minimize work-in-progress rather than maximize it.” —Steven Gordon
More on Lean Development:
Lean Software Development: An Agile Toolkit
Implementing Lean Software Development: From Concept to Cash