Slide 1

Slide 1 text

HOW ENGINEERING DRIVEs agility LEMi ORHAN ERGiN HAKAN ERDOĞAN SABRİ ONUR TÜZÜN

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Building software is a journey from complexity to generate business value

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

idea emerge feature, bug, improvement

Slide 6

Slide 6 text

problem identification f*ckups and lessons learned qualitative research methods (kpi’s, metrics, etc.) unstructured data analysis (interviews, surveys, etc.) funnel analysis user needs identification storytelling, brainstorming product backlog management idea emerge

Slide 7

Slide 7 text

idea prioritized idea emerge plan, schedule, order

Slide 8

Slide 8 text

prototyping proposed mvp / mvi cost of delay analysis sprint and release planning voting, poker planning portfolio planning (big room planning) idea prioritized idea emerge

Slide 9

Slide 9 text

development started idea prioritized idea emerge research, code, test, deploy

Slide 10

Slide 10 text

monoliths /microservices evolutionary architecture, emergent design hexagonal architecture / ports and adaptors branching mechanisms / trunk based development automated tests (unit, integration, functional, etc) pair & mob programming code review, team standards continuous integration design patterns & refactoring test driven development (tdd, bdd, atdd) development started idea prioritized idea emerge consumer driver contract testing transaction management static code analysis event handling / messaging non-blocking io, data streaming monitoring & traceability resilient architecture asynchronous communication cache management rest / grpc api management

Slide 11

Slide 11 text

harnessing development started idea prioritized idea emerge making ready to release

Slide 12

Slide 12 text

load and performance testing manual user acceptance penetration testing release and rollback procedures exploratory testing harnessing development started idea prioritized idea emerge

Slide 13

Slide 13 text

going live harnessing development started idea prioritized idea emerge deploy, release, test, monitor

Slide 14

Slide 14 text

deployment strategies feature flagging monitoring, tracing, profiling disaster recovery & chaos testing canarying & a/b testing journey tests going live harnessing development started idea prioritized idea emerge

Slide 15

Slide 15 text

idea PLAN DEVelop RELEASE going live harnessing development started idea prioritized idea emerge

Slide 16

Slide 16 text

idea prioritized development started harnessing going live idea emerge What business understands about agility

Slide 17

Slide 17 text

idea prioritized development started harnessing going live idea emerge What engineering understands about agility

Slide 18

Slide 18 text

idea prioritized development started harnessing going live idea emerge What agility is totally about

Slide 19

Slide 19 text

idea prioritized development started harnessing going live idea emerge Product development is based on fail fast, fail early and fail safe That requires discovery by doing fast experiments

Slide 20

Slide 20 text

AGILITY DEV-SEC-OPS CONTINUOUS DELIVERY LEAN STARTUP PROCESS TARGET ENABLER THE RIGHT WAY RIGHT PRODUCT THE MINDSET SOFTWARE CRAFTSMANSHIP

Slide 21

Slide 21 text

Agile doesn’t cure INCOMPETENCE. You can coach teams to be more engaged and collaborative, but NO Agile framework, method, or mindset can save you from BLATANT FAILURE if your development team is INCOMPETENT in basic engineering practices. Technical excellence is a MUST! Mike Beedle @mikebeedle 7:48 PM · Mar 21, 2018 https://twitter.com/mikebeedle/status/976500772438409216 Mike Beedle (died at March 23, 2018) Agile Manifesto co-creator proposed the term “agile” to manifesto co-creators introduced “Enterprise Scrum” and “Business Agility”

Slide 22

Slide 22 text

First-Aid Strategy: Hire A-class talents Stop overtime, push for productivity and efficiency Increase transparency with the whole company Stop adding new features, start fixing bugs Add new communication channels with business Establish on-call procedure for engineers (Batman, Robin, Alfred) Define a roll-out plan for big refactorings/replacements Define a strategy for technical excellence HTCtechnologY hiring culture

Slide 23

Slide 23 text

Phase 1: Well-Crafted Base Phase 2: Robust and Maintainable Phase 3: Continuously Delivering Value Mindset: Slow down to go faster Phase 0: Development Sucks!

Slide 24

Slide 24 text

Phase 0: Development sucks! Following best practices without knowledge and experience Following GitFlow or having long feature branches Microservice acting monoliths Too much technical debt Finish all steps and deploy at the very end No production release for months Complex deployment procedures Having silos, individual work is more valuable Developers are just code-monkeys Jira based Scrums, Scrum-fall sprints Micro-management with Scrum No/few tests, huge manual test cost No continuous verification/testing, no CI Definition of Done: Development done, and tested at local

Slide 25

Slide 25 text

Phase 1: Well-Crafted Base Realizing the reasons behind best practices Master-Feature branching mechanism Weekly releases Code reviews via pull requests CI/CD pipeline, deploy to production from the first day PreProd and production environments Manual preprod deployment with one click Pair programming Mono repository for easy refactoring Test driven development Hexagonal architecture for all microservices No Silo, Lunch & learn sessions (BBS) Definition of Done: Deployed to preprod

Slide 26

Slide 26 text

Phase 2: Robust and Maintainable Can define why good practices are better than the bad ones Common standards, efficient team work Multiple releases per week, blue/green deployment Automatic PreProd deployment after merge with master Consumer driven contract testing Anomaly detection, recovery from failures Mob programming Automatic functional testing Simulation testing, Load testing Quality assurance Domain Driven Mono-Repo Definition of Done: Complete testing at preprod

Slide 27

Slide 27 text

Phase 3: Continuously Delivering Value Believe no practice is better than others On-demand environment creation at merge requests Multiple releases per day, canary deployment Version control for everything, like db and infra More pairing and mobbing Code review sessions with team No branches, just master, feature flags Reliable, robust, resilient architecture Trunk-based Development, No pull requests Automatic acceptance tests Resilient architecture Continuous Delivery & Deployment Definition of Done: Deployed to production, and verified

Slide 28

Slide 28 text

Phase 4: No Framework What you do is your framework Highly customized for your team, your domain Empowered teams, de-scaled organization Able to introduce new stacks New team for governing architectural crosscuts Definition of Done: Metric based verification at production

Slide 29

Slide 29 text

Many Agile adoptions have treated technical practices as secondary compared to the management and team practices that some Agile frameworks emphasize. Our research shows that technical practices play a vital role in achieving these outcomes. Nicole Forsgren PhD, Jez Humble, et al. Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations https://www.amazon.com/dp/B07B9F83WM

Slide 30

Slide 30 text

@craftbaseio craftbase.io HAKAN ERDOĞAN LEMi ORHAN ERGiN SABRİ ONUR TÜZÜN @sotuzun @lemiorhan @hakanerdogan