Moving Fast & Staying Aligned: How Automation Powers Progress - Rick Ossendrijver

RickOssendrijver1 10 views 50 slides Feb 27, 2025
Slide 1
Slide 1 of 50
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50

About This Presentation

A presentation about moving fast and staying aligned. A focus from Picnic - the online supermarket - that allows us to build many new things and bringing them to the market quickly.


Slide Content

Rick Ossendrijver
Moving Fast and Staying Aligned
How Automation Powers Progress

2 • February-25
Understanding and reading code
“developers on average spend as
much as 58% of their time
comprehending existing source code”
- Felienne Hermans

3 • February-25
Bikeshedding discussion on GitHub

4 • February-25
Migrate!

5 • February-25
TestNG -> JUnit

6 • February-25
Your Product Owner…

7 • February-25
Automation is key

8 • February-25
Platform team1
Centralized Maven configuration2
Agenda
Shared libraries3
Static analysis tools4
Automation tools5
Alignment across the company6

9 • February-25
Picnic Tech
30
0
Engineers
35
Teams
5M
Lines of code

Moving fast and staying aligned
Building blocks for
developers

Multiplier effect

Convention over
configuration

Coding standards

Best practices

Centralized
configuration
AutomationDeveloper productivity Uniformity
Code quality

Reducing technical
debt

Migrations
9

11 • February-25
Our toolbox
40 modules
Shared libraries Developer tooling
CI / CD
Monitoring

12 • February-25

13 • February-25
Platform team1
Centralized Maven configuration2
Agenda
Shared libraries3
Static analysis tools4
Automation tools5
Alignment across the company6

14 • February-25
Maven Parent POM

Shared Libraries

Tools
Picnic Java support modules

15 • February-25
Plugins

16 • February-25
Maven license plugin
[WARNING] License: 'Affero General Public License (AGPL)'
used by 1 dependencies:
- Example dependency that uses AGPL.
(com.example.dependency:example:12.1.3 -
https://github.com/example/dependency)
[...]
[ERROR] Failed to execute goal
org.codehaus.mojo:license-maven-plugin:2.3.0:add-third-pa
rty (check-third-party-licenses) on project picnic-meta:
There are some forbidden licenses used, please check your
dependencies.
[...]

17 • February-25
Profiles

18 • February-25
Maven dependency management
Renovatebot / renovate
Universal dependency update tool that
fits into your workflows.

19 • February-25
Maven enforcer plugin
[ERROR] Rule 1: DependencyConvergence failed with message:
[ERROR] Failed while enforcing releasability.
[ERROR] Dependency convergence error for
com.google.guava:guava:jar:31.1-jre paths to dependency are:
[...]
[ERROR] +-tech.picnic.example:example-api:jar:0.0.0-SNAPSHOT
[ERROR] +-com.google.guava:guava:jar: 31.1-jre:compile
[ERROR] and
[ERROR] +-tech.picnic.example:example-api:jar:0.0.0-SNAPSHOT
[ERROR] +-com.google.truth:truth:jar:1.1.3:compile
[ERROR] +-com.google.guava:guava:jar: 32.1.3-jre:compile

20 • February-25
Maven dependency plugin
[INFO] --- maven-dependency-plugin:3.6.1:analyze-only
(analyze-dependencies) @ cache-support ---
[ERROR] Unused declared dependencies found:
[ERROR] com.google.guava:guava:jar:32.1.3-jre:compile
[...]
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-dependency-plugin:3.6.1
:analyze-only (analyze-dependencies) on project
cache-support: Dependency problems found

21 • February-25
Platform team1
Centralized Maven configuration2
Agenda
Shared libraries3
Static analysis tools4
Automation tools5
Alignment across the company6

22 • February-25
Shared Libraries

23 • February-25

24 • February-25

25 • February-25
Platform team1
Centralized Maven configuration2
Agenda
Shared libraries3
Static analysis tools4
Automation tools5
Alignment across the company6

26 • February-25
Static analysis
checkstyle/checkstyle
Helps programmers write Java code
that adheres to a coding standard.
SonarSource/sonarqube
Continuous Inspection.

27 • February-25
Automation
Google/google-java-format
Reformats Java source code to comply
with Google Java Style.

28 • February-25
ArchUnit
https://www.archunit.org
▪Architecture rules
▪API
▪Domain logic

29 • February-25
ArchUnit

30 • February-25
ArchUnit

31 • February-25
Platform team1
Centralized Maven configuration2
Agenda
Shared libraries3
Static analysis tools4
Automation tools5
Alignment across the company6

32 • February-25
Open-source static analysis
Automated bug fixing
500+ Error Prone checks
Refaster
Error Prone
Google/error-prone
Catch common Java mistakes
as compile-time errors

33 • February-25
Refaster rule

34 • February-25
Picnic open-sourced: Error Prone Support!
950+ Refaster rules
40+ Error Prone bug checks
Migrations
https://error-prone.picnic.tech

35 • February-25
Refaster

36 • February-25
Error Prone BugPattern

37 • February-25
OpenRewrite
Large scale refactoring

Recipes

Migrations

38 • February-25
OpenRewrite
https://docs.openrewrite.org/recipes/java/spring/boot3/upgradespringboot_3_0
To migrate to Spring
Boot 3.4, it can take
2,599 steps.

39 • February-25
Spring Boot 2 -> 3 migration
We migrated over 3M lines of code in 70+ repositories!

40 • February-25
Picnic x Moderne
+

41 • February-25
Platform team1
Centralized Maven configuration2
Agenda
Shared libraries3
Static analysis tools4
Automation tools5
Alignment across the company6

42 • February-25
Upgrades
Support 2 major versions

Smooth upgrades

43 • February-25
Error Prone Support @ Picnic
-Applying all rules

-Aligning
https://error-prone.picnic.tech

44 • February-25

45 • February-25

46 • February-25

47 • February-25

Moving fast and staying aligned
Building blocks for
developers

Multiplier effect

Convention over
configuration

Coding standards

Best practices

Centralized
configuration
AutomationDeveloper productivity Uniformity
Code quality

Reducing technical
debt

Migrations
9

49 • February-25
join.picnic.app

50 • February-25
Questions and feedback!
https://error-prone.picnic.tech
join.picnic.app
rickie
rick_ossies PicnicSupermarket/
error-prone-support
Error Prone extensions: extra bug
checkers and Refaster rules.
Tags