clean code refactoring design best practices software craftsmanship java design patterns unit test tdd spring functional programming architecture extreme programming lambda evolutionary architecture onion architecture mock java 8 training microservices spring framework tips single-responsibility principle pure functions pragmatic design code smells unit testing learning culture ethics integration tests performance exceptions dependency inversion principle test driven development jpa devoxx live coding simple code stream api uncle bob rest distributed systems timeout retry circuit breaker resilience consistency testing pitfalls spring webflux project reactor reactive programming insights tuning java flight recorder jvm profiling websso oauth2 social login threats security oauth modules monolith professional philosophy agile hibernate aspect oriented programming software development software testing immutable objects professional development engagement online teaching webinar behaviour-driven-development cucumber mutation testing agile software development programming rename inline object-oriented programming feature envy emerging angular javascript promise callback asynchronous frontend typescript decorator aop conclusions hands-on entity adapter pattern separation by layer of abstraction simplicity transaction propagation dependency injection transactions declarative transaction aspect java8 passing a block template method elegant code craftsman conference barcelona enterprise development voxxeddays workshop slides pragmatic java enterprise
Mehr anzeigen