While you are reading this description you could have invoked some actions before which haven’t finished yet. For example: boiling water for a tea or downloading some file on your computer. You are doing it this way mostly probably because you don’t want to waste your time on things, that are independent of you and you are interested only in result of this processes.
This real life situation can happen also in your software systems by using asynchrony on many layers in your: code, components, server and architecture. Using it requires different thinking but it brings many interesting tools and methods based on asynchrony like: reactive programming, actor model, event sourcing, messaging servers, non-blocking architecture ect. It created also some terminology, patterns and anti-patterns around it. That’s what I want to present and talk with you on this lecture.
Has your water for tea already boiled ? :)
When we speak about orchestration we should think of conductor in philharmonic orchestra. Basically His role is to show rhythm to all musicians. In the other hand "Swan Lake" don't need conductor for dancers. They know when its their part, and which steps they need to do. Its all because of choreography.
You can find a lot of examples which use this two fundamental ways of keeping processes in correct order. You can find them in Event Driven Architecture, Microservices, CQRS, Hexagonal Architecture and so on. In my opinion we should talk about them a little bit more- to understand them and use them in correct and proper way.
Sometimes you need to do one step back to be able to do two steps forward. I would like to show you advantages and disadvantages of orchestration and choreography. I would like to show you when to use them and finally - how to do it effectively.
If you are one of those developers who write tests because they find them useful and you would like to improve, this presentation is for you.
If you are one of those who get irritated by tests or who considers tests a hindrance in your work, this presentation is also for you.
I will speak about how you can understand if your tests bring any value and how you can write tests that bring just the value you need.
I will present test design techniques basing on real-life example instead of academic explanations.
You will learn how to turn tests from annoying duty to a meaningful part of your work.
During the presentation, I'd like to share my experience & thoughts gathered during over 2 years of being involved in open-source projects. I will tell why programmers start to create their own projects, what is their motivation and what kind of benefits they can get as individuals and why it's good for the companies, which support such initiatives. I will tell about characteristics, which good projects should have and give the practical tips, which may be helpful during adjusting projects to the high-quality standards. It can be helpful during creating our own projects and during evaluation of the existing projects. I'll tell you, how to promote your projects and how to create a community of programmers, which will help us to develop our ideas. Most of my open-source projects are lightweight Java libraries and mentioned information will be based on the practical experiences. Developers involved in creating my projects are from different countries across the globe like Poland, USA, Japan, Russia, Wales and Brazil. Projects created by me were introduced e.g. in the mobile application of EERO company from Silicon Valley, which develops home WiFi system and in Toss.im company, which develops a mobile application for the consumer finance in Korea, in PAT Track app, which monitors buses time table in Pittsburgh, PA (USA) and much more. All of these projects were developed without my supervision, based on documentation, source code, tests, and sample apps.