Slide 1

Slide 1 text

Tactics and strategies on software development: how to reach a successful software

Slide 2

Slide 2 text

Task done? Deploy Fast? More code! Successful Application! How?

Slide 3

Slide 3 text

Technology as an end Failure? Hyper-Focused Planning And Design Unclear Or Undefined Client Expectations Unexpected Complexities Poor Collaboration Between The Product And Engineering Teams

Slide 4

Slide 4 text

Obstacles To A Successful Software Why? “It is common for developers to deliver a product that doesn’t align with the client’s perceptions.” By Forbes Technology Council

Slide 5

Slide 5 text

New technology as the solution Buzzword to the rescue! The solution is _______ to solve those issues. Put your favourite or new tech here. #Kubernetes #Java #Go #Rust #Python #JavaScript #Node JS

Slide 6

Slide 6 text

Etymology Do we understand engineering? From the Latin ingenium, meaning "cleverness" and ingeniare, meaning "to contrive, devise"

Slide 7

Slide 7 text

The Practical application of science Strategy vs Tactics 10 days 40,000 soldiers Caesar's Rhine Bridge, by Sir John Soane (1814)

Slide 8

Slide 8 text

Software Engineer Definitions? “Software engineering is the application of an empirical, scientific approach to finding efficient, economical solutions to practical problems in software.”

Slide 9

Slide 9 text

Strategy vs Tactics Architecture vs Design

Slide 10

Slide 10 text

Architecture The laws Everything in software architecture is a trade-off Why is more important than how

Slide 11

Slide 11 text

Code Design Tactics vs Strategic? Get something done Working code isn't enough Tactical tornado Strategic Tactical Time Total progress

Slide 12

Slide 12 text

DDD Strategy vs tactics Ubiquitous Language Bounded Contexts Context Maps Entity Value Objects Services Repository Aggregator

Slide 13

Slide 13 text

Documentation Trade-off Document what makes sense Fair Documentation PPT does not compile Over Documentation Blind code is Go horse None Documentation PPT does not compile Over Documentation Blind code is Go horse None Documentation Document what makes sense Fair Documentation

Slide 14

Slide 14 text

One server in a cluster not being updated. Developers reusing a flag that was no longer thought to be in use. Dead code coming back to life. Unusual messages from an application being ignored. How much? Documentation They'd just lost their company $460 million dollars. https://blog.microfocus.com/the-knight-capital-saga-how-to-go-out-of-business-in-45-minutes/

Slide 15

Slide 15 text

Code Changelog README API Documentation: Tactics The reader is the user

Slide 16

Slide 16 text

Utopia Self commented code

Slide 17

Slide 17 text

Because no one can read your mind README Short description Goal How to start API overview

Slide 18

Slide 18 text

CHANGELOG Changelogs are for humans, not machines. Types of changes The latest version comes first. Don’t let your friends dump git logs into changelogs.

Slide 19

Slide 19 text

Commit Step and track an activity [optional scope]: [optional body] [optional footer(s)] I. fix: II. feat: III. build: IV. chore: V. ci: VI. docs: VII. style: VIII. refactor: IX. perf: X. test:

Slide 20

Slide 20 text

C4-model Architecture’s map Tech-radar Technologies's view ADR Don’t repeat the error Communication A clear direction Documentation: Strategy Architectural perspective

Slide 21

Slide 21 text

C4-model Architecture’s map C1 = Context C2 = Container C3 = Components C4 = Code C4-model The Architecture overview

Slide 22

Slide 22 text

C4-Model C4-model Builder Structurizr

Slide 23

Slide 23 text

ADR Log4brains

Slide 24

Slide 24 text

DocOps Browser

Slide 25

Slide 25 text

Tests: Tactical Quality on the Code unit test mutation testing Test coverage

Slide 26

Slide 26 text

Tests QE and Pyramid https://martinfowler.com/articles/practical-test-pyramid.html

Slide 27

Slide 27 text

The god that Failed Cloud https://www.cio.com/article/404314/94-of-enterprises-are-overspending-in-the-cloud-report.html

Slide 28

Slide 28 text

Cloud Wasting money “The average enterprise wastes 35% of their cloud budget. For every dollar they invest, 35¢ is wasted.” https://info.flexera.com/CM-REPORT-State-of-the-Cloud

Slide 29

Slide 29 text

*Ops culture Not a rule Put your *Ops new word here #MLOps #Devops #DocOps #FinOps #DevSecOps

Slide 30

Slide 30 text

Cust and risk have a price Use managed service -- Please It is ok if you're not running Kubernetes Trade-off as service

Slide 31

Slide 31 text

Cloud: Tactical Health Application The Twelve Factor App I. Codebase II. Dependencies III. Config IV. Backing services V. Build, release, run VI. Processes VII. Port binding VIII. Concurrency IX. Disposability X. Dev/prod parity XI. Logs XII. Admin processes

Slide 32

Slide 32 text

Cloud: Strategy Focus vs Control services "Decreasing control and risk" "on premise“ container orchestration Platform-as-a-service Increasing focus on business logic Examples cloud family, openshit, deis, ,heroku Examples kubernates ,docker ,swam ,apache mesos Examples AWS lambda azure functions, CNCF Serverless Whitepaper v1.0

Slide 33

Slide 33 text

Context Software Engineering Code Design Documentation Cloud Context The first step DDD Test

Slide 34

Slide 34 text

Context The first step Software Engineering Architecture Design Code Design Get done Code is not enough for software DDD Entity, Repository Bounded context, Ubiquitous Language Documentation Code, Changelog, README, COMMIT C4-model, Tech-radar, ADR, communication Cloud The Twelve Factor App Delegate what you don't want to focus Test unit test, coverage test, mutation testing Pyramid Test

Slide 35

Slide 35 text

Simplicity as efficiency Fight against complexity

Slide 36

Slide 36 text

Simplicity as efficiency Fight against complexity “Simplicity is the ultimate sophistication.” Leonardo da Vinci

Slide 37

Slide 37 text

Simplicity as efficiency Fight against complexity Code complexity Starting to code "The simplest code = Ultimate sophistication Engineer" Oop everywhere Design patterns Abstractions interfaces “ I might need this later” this is what the experts do Years of programming

Slide 38

Slide 38 text

Otavio Santana Software Engineer & Architect @otaviojava Java Champion, Oracle ACE JCP-EC-EG-EGL Apache and Eclipse Committer Jakarta EE and MicroProfile Duke Choice Award JCP Award Book and blog writer Who am I?

Slide 39

Slide 39 text

Thank you! Otávio Santana Software Engineer & Architect @otaviojava https://twitter.com/otaviojava https://www.linkedin.com/in/otaviojava/ https://www.youtube.com/@otaviojava