Session
Architecting Software without OverEngineering
Modern software systems often suffer not from lack of design, but from excessive and premature abstraction. This talk explores a pragmatic approach to software architecture that emphasizes simplicity, clarity, and evolutionary design over speculative complexity.
1. Structure by Feature, Not Layers: Organize code using package-by-feature to improve cohesion and align the codebase with business capabilities, instead of scattering logic across technical layers.
2. Enforce Modularity Pragmatically: Use tools like Spring Modulith and ArchUnit to define and enforce module boundaries, preventing architectural drift while keeping the benefits of a monolith.
3. Apply DDD Where It Adds Value: Focus on understanding the domain and apply Domain-Driven Design principles selectively, avoiding unnecessary complexity from overusing tactical patterns.
4. Avoid Designing for Hypothetical Problems: Resist the urge to overengineer for scale or flexibility you don’t yet need and defer decisions until real requirements emerge.
Attendees will gain practical strategies to design clean, maintainable systems without falling into the trap of overengineering.
Target Audience: Developers, Tech Leads, Architects
Preferred Session Duration: 1 hour
Siva Prasad Reddy Katamreddy
Developer Advocate at JetBrains
Hyderābād, India
Links
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top