Alain is a passion driven software developer with more than fifteen years of professional experience. He also worked previously as a technical trainer for Java/JEE and .Net technologies. He loves sharing amazing technologies in seminar, conferences and evangelism events. Alain regularly contribute to awesome open source projects on github (https://github.com/alainlompo) and helps developers everywhere to solve their problems via [stackoverflow](www.stackoverflow.com). Due to his contribution to technical communities, Alain was twice awarded the MPV (Microsoft Most Valuable Professional) title in 2006 and 2007. Alain is a MCSD .Net (Microsoft Certified Solution Developer), MCT (Microsoft Certified Trainer) since 2004. He is also a Certified Java Programmer and an Oracle Certified Web Component Developer (OCWCD). Alain is the initial architect and main developer of the meodes solution (www.meodes.com) and was, from 2006 to 2009 the technical expert for both .Net and Java/JEE platform for the European Union project MEDA 2.
— TOPIC —
Designing Function Families and Bundles with Java's Behaviours Parameterization and Lambdas
User requirements are sinking sands: should we care or should we leave it to the business managers? Java’s behaviour’s parameterization and lambdas help shift paradigms from business to design: here the audience will learn how to efficiently deal with the issue and make their customers smile.
Sometime the user requirements are obviously not sufficiently detailed. At other times the underlying complexity is hidden until the initial implementations. It is then a Mary-go-round between the DOING team and the business stakeholders. Yet at other times the customer simply wants more, better or finer implementation than what he initially considered: without a good design this could be a developer’s nightmare, at best it could demotivate some of them and making them lose interest in the project.
Correctly designing our softwares using functional programming can greatly shrink or even completely remove this issue. In this presentation the audience will learn how to design families of functions using functional programming, behaviour’s parameterization and the expressive lambdas of java. It’s a way to shift – left user requirements change issues and ensure that the top 20% of user requirement changes that cause 80% of the necessary code rewriting, retesting, and redelivering will be proactively avoided: it will be as tough they never existed as each one of them will simply match a particular set of functional parameters. In other words each case will match at least one function in our function family.
Our starting illustration will show case the necessity for code that is more flexible to changing requirements. We will then teach the audience how to evolve rigid code to flexible and change-sensitive code before deep diving into behaviour parameterization with a real world example. We will then refine our use case via the powerful expressivity of java’s lambdas to turn our code into beautiful, non – verbose and concise functional code: the audience will of course learn how and when to use lambdas in this particular case but also what pitfalls and bad practices to avoid.
By applying the lessons learned in this session, audience members will be able to drastically reduce the user requirement changes issues and build much more stable releases with reduced, checked and managed change lifecycles. As a direct consequence the global release cycle will also be positively impacted.
Plenty resources awaits the audience at the end of the session so that they can experience the concepts for themselves and use them in productive environments.