Masterclass: Design Patterns with Spring and Java8

The purpose of this course is to help developers design well-crafted code. Meaning expressive, concise design that is also flexible and testable. The course is a mix of theory, brainstorms and hands-on exercises designed to teach developers practical techniques they can immediately apply to real-world projects.

Date: 9 November 2018, Bucharest
Training fee: €265/participant plus VAT, only 20 seats available

To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

About the training

Design Patterns are a powerful weapon. So powerful that in the wrong hands it can get you to horrible overengineered code. Mastering the underlying principles and knowing why, how, the cost and nuances of applying a pattern can have a huge impact on code quality on the long run.

Since the classic GoF book, design patterns have evolved dramatically: many have died, a few amazing ones were born while others became incredibly simple to implement with Spring and Java 8. However, the underlying principles never changed. We will take a Software Craftsmanship approach to those principles, always aiming for clean, maintainable and testable design.

Designing simple code is hard! Redesigning existing code is even harder but often imperative when facing legacy, or when you aim for a minimalistic emerging architecture. You should attend to this workshop if you want to:

  • Design clean code that is simple, expressive, unit testable yet flexible
  • Become more proficient in the fundamental design concepts and principles
  • Grow your skills to refactor existing/legacy code
  • Learn more about Spring’s magic

By solving a series of exercises with Java 8 and Spring Framework, you will learn how to:

  • Break down complex problems in simple patterns
  • Avoid over-engineering and rigid code by keeping your design to a minimum
  • Recognize patterns in existing code to understand its intention
  • You will also discover many things you didn’t knew about Spring, even if this is not the main goal of the course

Content

  • Design Principles and Concepts: SRP, DRY, KISS, YAGNI, SOLID, Beck’s
  • Singleton, a stateful, burdened life, vs other lifestyles
  • Adapter, the anti-corruption Layer of DIP
  • Decorator  and Proxy, the “magic” of Spring
  • Facade, and an approach to evolutionary architecture
  • Observer, and event-driven Spring components
  • Iterator and Stream, as a concept
  • Strategy and Chain of Responsibility, an application of SRP
  • Command, and asynchronism
  • Template Method, and its death by…
  • Passing a Block, the best of functional programming
  • Anti-Patterns, and some workarounds
  • Final Test + awards.

The course is a mix of slides, brainstorms and a lot of exercises distilled from real problems, implemented with Spring and Java 8.

Audience

Enthusiast developers that have:

  • At least several years of experience with Java
  • Prior contact with Spring Framework is recommended, but not required
  • Basic understanding of the Java 8 lambdas and streams (nice to have)
  • Prior contact with Design Patterns would help skipping over the basics

Prerequisites

You must bring your own laptop with a development environment consisting of your favorite IDE, JDK 8+, working Maven (connected to central) and Git. You will be asked to clone a repository several days before the workshop.

The trainer

Victor is one of the most appreciated technical trainers in Bucharest (victorrentea.ro), well-known for the passion he puts in every minute of his classes. Today, he is regularly called by companies of all sizes to help bringing Software Craftsmanship ideology and eXtreme Programming practices to their technical culture. After 14 years of professional career, Victor is currently Lead Architect at IBM, where he practices and preaches eXtreme Programming, crafting code and coaching others each day. He is Associate Professor at Politehnica University (UPB) and a key community member, after organizing the largest 3 Bucharest JUG meetups in history. Victor is internationally renowned by his passion for Clean Code and Java 8 and is frequently invited to speak at many conferences around the world. He is personally committed to helping developers grow their passion for code.

Training fee: €265/participant plus VAT, only 20 seats available
To book your seats, please contact us by email ([email protected]) or phone (+40 741 103 133).

Lunch and Coffee Breaks included in the price of the Masterclass.

Browse more masterclasses here.

Visual Recognition Tutorial with IBM Watson and Python

visual recognition

In the era of digital cameras, with people sharing billions of photos and videos daily, it’s impossible to manage the content manually. Therefore the necessity of automatizing visual recognition has rapidly increased, proportionally with social networks. Image recognition can be used in numerous tasks, such as filtering out explicit content, labeling the content of images with meta-tags and performing image content search. Beyond social media, visual recognition can be used in various other domains: health, to trace visible symptoms on patients and contribute to the diagnostic, environment, to detect problematic areas, road traffic, to avoid accidents and build self-driving cars, and many others.

But while image recognition seems like a simple task for humans, a computer requires deep machine learning to perform this task. IBM Watson, a leader in cognitive computing, offers visual recognition service as API and uses deep learning algorithms to analyze images to give insights into visual content.

In this article, you will learn how to use Watson’s default classifiers for image recognition and create and manage custom classifiers which can analyze images according to the requirements of your application.

Read more about it here.

About ASSIST Software

ASSIST Software is a software outsourcing company based in Suceava, the largest city in the North-East of Romania. Founded in 1992, ASSIST Software is present on the international market, as a supplier of innovative solutions, being a reliable and trustworthy outsourcing partner for more than 230 clients worldwide.