profile image

Piotr Stawirej

Expert Software Engineer/Trainer/Speaker

Follow

About Me

I am clean code enthusiast, TDD/BDD obsessed and agile methodology adherent. Passionate about professional attitude in every aspect of work. With over 16 years of experience with companies involved in creating maps, navigation, and transactional systems (TeleAtlas, TomTom), as well as tools for remote trainings (Beelday) and modern financial systems (Revolut). I cherish clean design regardless of used language or technology and I am strongly against cargo cult approach.

I am spending free time drumming (ex-KaAtaKilla) and playing chess.

Talks

Testing the untestable PART II – patterns, use cases and practices

During my journey as a programmer, trainer and mentor I have encountered multiple situations when my colleagues or myself encountered difficult to test code. Some of these situations were nearly identical for multiple people, some of them not. In this talk I will show how you can simplify your application and open it up for testing by analysing encountered use cases with applied solutions.

Watch conference version [PL]

Testing the untestable PART I - patterns and use cases analysis

During my journey as a programmer, trainer and mentor I have encountered multiple situations when my colleagues or myself encountered difficult to test code. Some of these situations were nearly identical for multiple people, some of them not. In this talk I will show how you can simplify your application and open it up for testing by analysing encountered use cases with applied solutions.

Watch conference version [EN]

Watch conference version [PL]

Clean code as business accelerator

Competition never sleeps. Companies compete to capture the market with new ideas. Others try to defend their current position. During a crisis, staying in the market can be a challenge for some. Delivering a satisfying product is all the more important. One of the factors that can determine long-term success is code quality. When creating a quick prototype, we may not feel the long-term consequences. Unfortunately, under the guise of a prototype, we often deliver what is actually an MVP (Minimum Viable Product) that we will develop further. What do we often forget, what mistakes do we make, and what should we remember?

Watch conference version (Developers Word Academy) [PL]

Watch conference version (Javeloper) [PL]

test && commit || revert (TCR) - alternative to TDD or eccentricity?

test && commit || revert (TCR) is an alternative programming workflow to Test-Driven Development. If the tests pass changes are committed, otherwise all changes since the last successful test run are discarded. TCR is a workflow which encourages you to make changes in tiny steps (smaller commits). As a result, changes will get out into production faster. TCR “enforce” doing one change at a time. This leads to learn and create good refactoring approaches during a development.

Watch conference version [PL]

Talk to me nicely - how to communicate your ideas and speed up your career

Are you frustrated because your ideas about new tools, frameworks, practices are not picked up by your fellow developers? Do you notice flaws in organization and your manager doesn't want to listen to you? You don't know why your mate behaves way he does? Are you angry because your code review remarks are considered nitpicky? 85% of your success depends on emotions. For some people sooner for some people later the way they handle other people will be a blocker for further development not only as developer/manager but also as a human. It is most probably that this will impact your career (promotion or even job lost).

Watch conference version [EN]

Watch conference version [PL]

Java 9 - beyond Jigsaw

Java 9 is coming and the Java Platform Module System is undoubtedly its flagship feature. However there is more than just Project Jigsaw! It is bringing a lot of small and “not-so-small” changes to the platform.

During the session I will talk about modularity, comparison to OSGI and Java 9 language changes itself.

Watch conference version [EN]

Watch conference version [PL]

Modern Agile Retrospectives

Agile methodology is attractive for many developers. However badly performed can demotivate and withdrew team from perform in a hypervelocity. One of scrum practices is retrospective. In this session you will see how to avoid common mistakes, use retrospective as a powerful agile tool to improve your teams and truly understand what you are doing. Ladies and gentleman I am giving you – Modern Retro!

Watch conference version [PL]

Clean Code

As software engineers we should act as professionals and deliver working high quality software which is easy to maintain. There is no shortcuts which will not hurt us in the future. We have to understand why should we care, how to apply basic clean code principles, how to make your code “tells a story”, be easy to extend and not create legacy systems.

Watch conference version [PL]

Podcasts

Implementation of backend tests and a testing-friendly architecture

If a project estimate is provided in two versions, one including testing and one without, it has little to do with software craftsmanship. It's akin to asking a surgeon if they can speed up the operation by skipping the sterilization of the scalpel. Quality should not be a negotiable element. Unless we're working on a proof-of-concept, but even such projects often smoothly transition into the protoduction phase... In this episode we talk about:

  • Organizational and technical challenges with implementing quality tests in the backend
  • Code-coverage metrics and their varying degrees of usefulness in the project
  • A professional approach to the "with tests or without?" problem
  • Best practices for selecting testing strategies
  • The gray area of testing by Kevlin Henney
  • Legacy issues, characteristic tests, seams, and carving out parts of the system for testing
  • Units, meaning code fragments with single responsibility, measured by cohesion
  • Implementation of a testing-friendly architecture
  • Eliminating issues with overusing mocks in the project

Listen to podcast [PL]

About CUPID, an alternative to SOLID principles

Presents a proposal for a set of CUPID rules by Dan North, designed to solve the problems of SOLID. In this episode we talk about:

  • CUPID rules and properties
  • How to interpret Composable, Unix Philosophy, Predictable, Idiomatic and Domain-based
  • How to implement those properties
  • What problems does the CUPID solve and what problems does it introduce

Listen to podcast [PL]

Law of Demeter, Clean Code and SOLID

There are many ways to create clean, simple, and maintainable code. In this episode we talk about:

  • Law of Demeter
  • SOLID principles and STUPID principles, which should be avoided
  • Clean Code of Uncle Bob
Additionally we will tackle General Responsibilities Assignment Software Patterns or LCOM metrics.

Listen to podcast [PL]