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