Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tactics-strategies-software-development.pdf

Otavio Santana
May 11, 2023
25

 Tactics-strategies-software-development.pdf

Otavio Santana

May 11, 2023
Tweet

Transcript

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

    View full-size slide

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

    View full-size slide

  3. 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

    View full-size slide

  4. 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

    View full-size slide

  5. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. Strategy vs Tactics
    Architecture vs Design

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. 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

    View full-size slide

  14. 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/

    View full-size slide

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

    View full-size slide

  16. Utopia
    Self commented code

    View full-size slide

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

    View full-size slide

  18. 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.

    View full-size slide

  19. 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:

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. C4-Model
    C4-model Builder Structurizr

    View full-size slide

  23. ADR
    Log4brains

    View full-size slide

  24. DocOps
    Browser

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  28. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  31. 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

    View full-size slide

  32. 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

    View full-size slide

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

    View full-size slide

  34. 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

    View full-size slide

  35. Simplicity as efficiency
    Fight against complexity

    View full-size slide

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

    View full-size slide

  37. 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

    View full-size slide

  38. 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?

    View full-size slide

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

    View full-size slide