Four Strategies for Organizing Code
Martin Sandin

Very nice summary of various organizations. It took me some years to move away from by-kind organization which is implicitly suggested by many enterprise architectures, frameworks, you can find it in examples, etc. Moving away from it takes some practice and understanding of the principles (SOLID, etc.). In enterprise Java the modularity topic is not well developed and accepted by masses. We still cut our logical components to layers and keep these layers together in JARs — which totally doesn’t make sense from the perspective, but it makes perfect sense when we begin.

I blame short-livedness of software developers that actually code and work with the code, lack of learning, etc. If we move after five years to architect position where we don’t code, we likely design the same stuff again and again and often don’t even get to know how our previous design worked out. Experience, mentorship, learning from past, really… this would all help tremendously with these things. Otherwise we just reinvent the wheel, but always in such a new way that it takes years to realize it.