Consultant, Trainer, Writer, Editor of 97 Things Every Programmer Should Know
Less is more. Less is also more effort. Is it worth it? We keep talking about incremental development, but we don't talk enough about decremental development. When we talk about refactoring, we often speak optimistically and vaguely about improving code and cleaner code. In the real world the main activity of any significant clean-up is throwing out and reducing. The less code you have, the less you will have to optimise, to secure, to debug, to rework, etc.; the more of a codebase you will be able to fit in your head and understand and reason about. What can you remove? Dead code, speculative generalisations and needless abstractions. What can you reduce? Accidental complexity, verbosity and first-draft thinking now that we know better. Welcome to the world of decremental development.
Chief Architect @ Headspring, Microsoft MVP, Creator of AutoMapper
Effective Microservice Communication and Conversation Patterns
Orchestration or Choreography? Sagas or process manager? REST, RPC or Events? Are we just making this all up as we go along? Once we move away from a single process to many services and processes, we immediately hit the problem that our services need to communicate with each other. The architect mandated REST! But then nothing worked in production. Then came events! And nothing ever completed. In this talk we'll look at the problem from a holistic perspective - take the fundamental property of autonomy for any microservice-based architecture, and design how services should communicate so that they can still achieve their purpose in the world. We'll cover basic communication patterns, where we run into problems with them, and how advanced conversational patterns can help. Finally, we'll look at some real-world scenarios for designing complex coordination and where conversation patterns can retain our autonomy and loose coupling.
Senior Software Engineer @ GitHub, Creator @ exercism.io, Co-author of 99 Bottles of OOP
Refactoring with Exuberance
When is it okay to build an orbital laser to destroy an ant-hill? Many cry "overkill" when design principles are applied to trivial problems. And for good reason: in the context of work, excessive embellishment gets us into trouble. Complexity costs us time and money. This talk explores how stepping outside of the realm of work and applying outrageous engineering practices to toy problems can deepen our understanding of the trade-offs that we make. Comically simple problems provide the perfect ground for developing actionable heuristics which can be applied to those monstrous complexities that we face in the real world.
Rights and Responsibilities of a Delivery Team
There is still a lot of frustration in software projects. Micro management, lack of autonomy, lack of trust, time pressure, personality clashes and lack of motivation are, among many, reasons for a general feeling of dissatisfaction. Behind all that there is an expectation mismatch between business, delivery teams, and individuals. This talk focus on the rights and responsibilities a delivery team should have in order to reduce frictions and increase the chances of a successful collaboration.
Principal Technologist @ VMWare, Trainer @ Bottega IT Minds, DZone's Most-Valuable Blogger
Unit Testing Done Right
Software Craftsman, Co-Founder, Developer @ Codeborne
The World Needs Full-Stack Craftspeople
Developers and IT people in general tend to specialize and become narrowly skilled. In the past there was always the conflict of DB developers vs application developers, or DBA vs developers vs testers. Nowadays developers split even more into front-end/back-end/Android/iOS/whatever else. This leads to inflated teams, inefficient communication, lack of each developer's responsibility, low team's truck factor, and inability to solve production/design problems once and for all instead of applying patches here and there. The term "full-stack" is often applied to developers being responsible for all aspects of their work, but XP/craftsmanship practices go further — we should also take our communication, requirements, operations, testing, etc. under control. True сraftsmen can be an order of magnitude more efficient than narrowly skilled developers. They not only write code, but solve problems. Surely you want to be one. Let's break it down and see why it works.
Founder and Developer @ CodeScene, Author of Your Code as a Crime Scene
Prioritizing Technical Debt as if Time and Money Matters
Many codebases contain code that is overly complicated, hard to understand, and hence expensive to change and evolve. Prioritizing technical debt is a hard problem as modern systems might have millions of lines of code and multiple development teams -- no-one has a holistic overview. In addition, there's always a trade-off between improving existing code versus adding new features so we need to use our time wisely. So what if we could mine the collective intelligence of all contributing programmers, and start to make decisions based on information from how the organization actually works with the code? In this presentation you'll see how easily obtained version-control data let us uncover the behavior and patterns of the development organization. This language-neutral approach lets you prioritize the parts of your system that benefit the most from improvements, so that you can balance short- and long-term goals guided by data. The specific examples are from real-world codebases like Android, the Linux Kernel, .Net Core Runtime, and more. This new perspective on software development will change how you view code.
Certainly Uncertain: Predicting Delivery Dates
As soon as you become a team lead or manager, you immediately become responsible for making vague things certain. When you have no idea what exactly shall be done, you are asked how much it costs and how long it will take. When you give an estimate and commit to delivering to your promise, scope creeps and enjoy estimation hell again. In this talk, you will learn how to estimate without screwing things up. I will be as practical as possible and will share the real Excel-spreadsheet that implements a simple statistical model of project estimation so you can use it for your projects the next day.
Elixir Mentor, Author of Elixir in Action, OSS contributor
The Soul of Erlang and Elixir
Whether you're developing a small web site or a large-scale distributed system, Erlang and Elixir are great tools for building server-side systems. Both languages can help you start quickly and deal with highly complex problems at a large scale. This talk aims to explain what makes Erlang and Elixir suitable for such tasks. We'll look past the syntax and the ecosystem, focusing instead on the concurrency model of these languages. Combining a bit of high-level theory and a couple of demos, we'll examine some important properties of Erlang/Elixir concurrency, with a special emphasis on why these properties are very relevant when building highly available systems. The talk targets experienced backend developers, but no knowledge of Erlang or Elixir is required. You will walk away from the talk with a better understanding of what distinguishes Erlang and Elixir from the rest of the pack, and why these languages are very compelling choices to power your next software system.
Developer Advocate @ MongoDB, ex-Technology Evangelist @ Atlassian
The Effective Developer
We’re agile, we’re doing DevOps, we work in cross-functional teams, and we use the latest developer pipeline tooling. With all those methodologies and technologies we should be highly effective, right? Probably not. Most of us still struggle with balancing coding speed and quality, working on the stuff that really makes a difference, and feeling constantly stressed by all the things we should learn. Effective developers don't just write clean, simple, and robust code. They also have a strong understanding of the entire development process and the problem that needs to be solved. They take time to learn, practice, and play. Learn how those developers build effective coding habits, use automations whenever needed, reserve time for deep work, and much more. You’ll walk away from this talk with lots of ideas on how to work smarter, not harder.
Senior Developer Advocate @ Octa, Microsoft MVP
Leadership Guide for the Reluctant Leader
Regardless of the technology you know, regardless of the job title you have, you have amazing potential to impact your workplace, community, and beyond. In this talk, I’ll share a few candid stories of my career failures… I mean… learning opportunities. We’ll start by debunking the myth that leadership == management. Next, we’ll talk about some the attributes, behaviors and skills of good leaders. Last, we’ll cover some practical steps and resources to accelerate your journey. You’ll walk away with some essential leadership skills I believe anyone can develop, and a good dose of encouragement to be more awesome!
Trainer, Consultant @ Bottega IT Minds, OSS contributor
Functional Domain Modeling – How to Make Your Architecture Scream
We might have heard that Domain Driven Design is Object Oriented done right. Is it, however, always true? Thinking of business processes as workflows and pipelines lets us map our problems into the concepts of functional programming, thus bringing our code to another level. During this session we will apply bits of functional programming into our Java application, discussing their impact, including security, testability, readability, and more.
Accidental Architects - How HR Designs Software Systems?
Who designs the architecture of your software systems? Conway's Law suggests that HR may be strongly shaping software architecture by deciding how teams are composed and interrelate. Do you want HR designing your software architecture? Organization architecture and software system architecture need to be co-designed to avid friction from Conway's Law.
CTO @ OpenValue, Netherlands JUG Lead
Mastering the Linux Command Line
TLDR: I'll show you everything you need to know about the Linux command line as a developer.
Senior Software Engineer @ Wycomco, OSS contributor
Things Every Developer Needs to Know About Database Indexing
This talk dives deep into a topic that I believe developers don't know enough about: database indexing. There are four sections to this talk: - What's an index? * How to create an index? * Understanding the execution plan * Common pitfalls What's an index In the first part we will learn what an index actually is. And we're talking data structures. How is an index actually represented internally and what are the implications of that. This is important because it makes certain characteristics of indexes much easier to understand.
Solution Architect, Developer and Mentor at Bottega IT Minds, ex-Head of Software Development @ 4Finance
User Stories Considered Harmful
Long time ago there was a role of a business analyst, who would discover and gather client requirements, then together with a system analysts, write them down. Next, they would meet an architect, where they would analyze the impact of those requirements on the architecture, and impact of architecture on business opportunities. This collaboration would provide new ideas for the business, but most of all, would create the analysis that went to developers. Then there were eXtreme Programming (XP). Then came Scrum and Kanban with Scrum Masters and Product Owners. Neither of them had any experience with XP, but since they loathed the old world, they have fired all the system and business analysts. And so, two working methods of requirement analysis were replaced by a single ineffective meeting called “grooming”, where a seven plus/minus three people, without any preparation, try to estimate something that nobody took time to understand. I’d like to show you how we came to this point, why the current situation puts developers in jail, and how to solve this madness.
VP of Developer Advocacy @ JetBrains
The Silver Bullet Syndrome
We love our silver bullets don’t we? Constantly chasing the dream that the next big thing will solve all our past problems. It doesn’t matter if it’s a language, framework, platform or library, we’re out there chasing it. Why? Well because it’s going to solve our needs, it’s going to solve the business needs. Well supposedly it will. And how much is it going to cost? Not that much, especially if we’re not the ones paying the bills. It’s about time we look at the hard facts and ask those difficult questions. Are we really looking for a silver bullet? Why are we constantly riding the technology bandwagon? Where is the churn going to take us? And at what cost?
We all have an opportunity every day to make a postive impact on folks around us. These are often called "soft skills," but they can be some of the hardest to learn! We could call them "people skills," "essential skills," or "core skills." But, how about "SKILLS OF AWESOMENESS?" Yes, what we all need is more ways we can be awesome to each other, and awesome together.
| David Neal
Senior Developer Advocate @ Octa, Microsoft MVP, #1 Speaker of 2019
Through a series of practical exercises, we will discover and discuss the most important and relevant topics you want to cover, so that you can get the most value out of this workshop!
Most of us have been working with some kind of legacy systems with lots of technical debt. How do we improve the codebase without The Big Rewrite and avoid creating yet another spaghetti monster? That’s what this workshop is about.
In this workshop, we will work together on a legacy system. We will approach the problem by creating a new, clean, and truly object-oriented model with modularity, cohesion, and testability in mind. We will introduce the model into the existing application in a secure manner, leaving ourselves an option to withdraw changes at any point in time. Fully automated tests will make sure that both models produce consistent results. EventStorming will help us set priorities right and understand the business impact of our changes.
Finally, we’ll get a solid, clean, and object-oriented code aligned with the company's goals and agile software development best practices.
| Bartłomiej Słota
Trainer, Consultant @ Bottega IT Minds, OSS contributor
In this workshop, I’ll take you through 3 different architecture styles. We will design a non-trivial system and find out the strengths and weaknesses of each approach. We will discuss the typical design errors, problems and solutions. We will finally learn how to create a hybrid solution, and how what to optimize our architecture for.
During this workshop we will be working with a C4 model. If you don’t know it, do not worry, it’s simple enough to master in 15 minutes. This workshop is technology agnostic, but we will focus on the backend architecture and services.
Surprising as it is, this workshop can also help Product Owners and Managers to communicate with their teams. At least that’s the experience we’ve had so far.
| Jakub Nabrdalik
Solution Architect, Developer and Mentor at Bottega IT Minds, ex-Head of Software Development @ 4Finance
This practical workshop will equip you with necessary skills for accomplishing more, with less stress and efforts, and bring you closer to the work-life balance on a win-win basis. After the training, you will know how to achieve more at work and personal life simultaneously (instead of conventional view: “one at the expense of another”).
NEW in 2020: How should one handle vague/unclear/huge projects? How to get into individual brainstorming mode and think unthinkable?
NEW in 2020: Distinguishing between good and bad procrastination and the practical session of group de-procrastination.
More than 50% of workshop time is devoted to practice, exercises and discussions. The workshop offers concrete, ready-to-use improvement recipes for daily work.
Effective software teams are essential for any organization to deliver value continuously and sustainably. But to achieve fast and continuous delivery, teams must be organized in a certain way.
Many companies grow ad-hoc. Others blindly copy the “Spotify Model” of team design. Not surprisingly, with every developer added, they face a significant decline in performance.To stay fast, the team structure must match the required software architecture; teams must be loosely coupled, but highly cohesive; teams’ cognitive load must be kept under control. In this training, you will learn the principles and best practices for organizing high-performance teams and organizations. After the training, you’ll be able to identify, explain, and fix bottlenecks that prevent your organization and team from being fast.
This practical workshop is for team leaders, architects, senior developers, engineering managers, and CTO/CIO-level leaders.
This a new, re-designed edition of the course (2020).
Every system has an architecture, whether accidental or intentional, and regardless of whether it was put in place by a nominated architect or whether it emerged from the decisions and discussions of a team. All too often the focus of what is often described as architecture is centred around a specific set of platform technologies, which forms only one part of the set of concerns an architecture should. And all too often architecture is seen as a separate concern from development process, whereas the two are intertwined — what you build is influenced by how you build it, and vice versa.
This course looks at the relationship between Agile processes and good architecture, taking in development process models, architectural styles, requirements techniques, sufficient modelling techniques, design patterns and testing practices. This course includes a number of practical exercises so that attendees can see how the different activities fit together.
| Kevlin Henney
Consultant, Trainer, Writer, Author of 97 Things Every Programmer Should Know
The course covers a wide range of topics through a number of practical exercises, with plenty of time dedicated to group discussion:
This course is designed to help developers get better at Test-Driven Development and write well-crafted code—code that is clean, testable, maintainable, and an expression of the business domain. The course is entirely hands-on, designed to teach developers practical techniques they can immediately apply to real-world projects.
Software Craftsmanship is at the heart of this course. Throughout, you will learn about the Software Craftsmanship attitude to development and how to apply it to your workplace.
Once you have an understanding of the principles at work, we will apply them to Legacy Code to help you gain confidence in improving legacy projects through testing, refactoring and redesigning. The course is fully hands-on and developers will be writing a lot of code.
Want to increase your company's visibility?
Become a sponsor