SlideShare una empresa de Scribd logo
1 de 86
rmoug.org
Code with Honor
on the importance and beauty
of software programming
Lucas Jellema – AMIS | Conclusion
Lucas Jellema
CTO for AMIS | Conclusion
Cloud Solution Architect
RMOUG Training Days 2021 | Code with Honor
lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema
2
8 hours
RMOUG Training Days 2021 | Code with Honor 3
Quiz time
RMOUG Training Days 2021 | Code with Honor 4
1202
RMOUG Training Days 2021 | Code with Honor 8
RMOUG Training Days 2021 | Code with Honor 9
PR
PRofessionalPRide
PR
PRofessionalPRide
Public Relations
Public Responsibility
PRoof Periodic Review
Pull Request
Peer Review
Production Ready
oPeRate
Put to Re
PuRpose
PR oductive
Push-button Release
PRofessional
RMOUG Training Days 2021 | Code with Honor 14
RMOUG Training Days 2021 | Code with Honor 15
We are Proud Craftsmen
RMOUG Training Days 2021 | Code with Honor 16
RMOUG Training Days 2021 | Code with Honor
The Business
17
RMOUG Training Days 2021 | Code with Honor
Development
Production
scale,
performance,
security,
stability,
recoverability,
monitoring
18
0
1
2
3
4
5
6
7
3 months 2 months 1 month 0 months minus 1 month minus 2
months
Value of Software vs Production Date
Cost Value
MVP and incremental value delivery
RMOUG Training Days 2021 | Code with Honor
go
live
no value!
19
Lifetime of a software application
RMOUG Training Days 2021 | Code with Honor
Paid Lip Service
• Testing
• QA
• CI/CD
• Automation
• Scalability
• Production-like testing environments
• Security
• Architecture | Design Patterns
RMOUG Training Days 2021 | Code with Honor 21
RMOUG Training Days 2021 | Code with Honor
The Brake System is
powered by Software
The quality of the brake
software is similar to the
code that you (or your team)
committed last week
Your mother-in-law is
about to get into the car
Your mother-in-law is
about to get into the car
Your kids are about to
get into the car
22
RMOUG Training Days 2021 | Code with Honor
why not?
what is your software good enough for?
for a demo, a PoC or a strictly controlled
prototype?
good enough to go to ACC (and let them find the
bugs)?
how do you know?
how do you know for sure what your
software does and how it deals with real
life?
23
Quiz time
RMOUG Training Days 2021 | Code with Honor 24
What would you prefer:
 We have no failing tests
 We have some failing tests
RMOUG Training Days 2021 | Code with Honor
What would you prefer:
 We have no failing tests
 We have some failing tests
RMOUG Training Days 2021 | Code with Honor
What would you prefer:
 We have 10% failing tests
 We have 17.61 % failing tests
RMOUG Training Days 2021 | Code with Honor
About me
RMOUG Training Days 2021 | Code with Honor 28
• About you as well?
• A software professional who wants to
be proud
of the professional software
that you craft
take responsibility
towards society
RMOUG Training Days 2021 | Code with Honor 29
source: https://www.futuristgerd.com/2016/05/my-presentation-at-innotown-2016-in-alesund-the-next-5-years-in-technology-and-innovation/
My Central Heating Guy
• Functioning system: heating and shower get water with requested
temperature (fast enough and in sufficient volume)
• Within reasonable boundary conditions (-20° to 30° outside
temperature)
• Safe & According to regulations
• Limited noise production, limited gas
• Lasts a while (10-20 years) – robust, limited wear & tear
• Not often failures, after failure system can be started again
quickly
• Can be adapted to (small) changes in circumstances
such as renovation of the house
• Maintenance: not too often and not too expensive
• CV technicians that can work with the system are widely
available, as well as spare parts: the system is not very outlandish
RMOUG Training Days 2021 | Code with Honor 32
My Central Heating Guy
• Functioning system: heating and shower get water with
requested temperature (fast enough and in sufficient volume)
• Within reasonable boundary conditions (-20° to 30° outside
temperature)
• Safe & According to regulations
• Limited noise production, limited gas
• Lasts a while (10-20 years) – robust, limited wear & tear
• Not often failures, after failure system can be started again
quickly
• Can be adapted to (small) changes in circumstances
such as renovation of the house
• Maintenance: not too often and not too expensive
• CV technicians that can work with the system are widely
available, as well as spare parts: system is not very outlandish
RMOUG Training Days 2021 | Code with Honor
*) We expect a professional to offer
suggestions and bring up relevant items
that I am unaware off as a layman
33
My Software Guy
• Functioning system: proof of working according to
specifications – under all foreseeable conditions
• Satisfies non-functional requirements
(performance, availability, recovery of data & service)
• Safe & According to regulations
• Known and reasonable TCO
• Lasts a while (10-20 years) – robust, limited wear & tear
• with regular technical maintenance at normal costs
• Can be adapted to changes in functional and non-functional
requirements (scale, availability, performance, security, …)
• Maintenance: not too often and not too expensive
• Software can be operated and maintained by regular IT staff
• no rare super specialists need to be flow in
• support and upgrades are easily available
RMOUG Training Days 2021 | Code with Honor
*) We expect a professional to offer
suggestions and bring up relevant items
that I am unaware off as a layman
34
Do most systems live up to these
expectations?
Does your software?
Does mine?
RMOUG Training Days 2021 | Code with Honor 35
Code with Honor
• Be proud
• Take responsibility
• Hone skills and craftmanship
• Focus on longevity
• Be honest
• Be productive
• Realize value
• Team up
• Step up
• No concessions to my professionalism
RMOUG Training Days 2021 | Code with Honor 36
Code with Honor
• Be proud
• Take responsibility
• Hone skills and craftmanship
• Focus on longevity
• Be honest
• Be productive
• Realize value
• Team up
• Step up
• No concessions to my professionalism
RMOUG Training Days 2021 | Code with Honor 37
Productivity as function of time and code quality
RMOUG Training Days 2021 | Code with Honor 38
Productivity as function of time and code quality
RMOUG Training Days 2021 | Code with Honor
source: https://martinfowler.com/articles/is-quality-worth-cost.html
39
RMOUG Training Days 2021 | Code with Honor 41
Working Software
• What work does it do?
• How can you tell?
Working Software
RMOUG Training Days 2021 | Code with Honor 42
Small step for mankind…
RMOUG Training Days 2021 | Code with Honor
FROM WORKING
SOFTWARE
TO PROFESSIONAL
SOFTWARE
43
Professional Software is ABLE Software
• Verifi
• Test
• Oper
• Read
• Evolv
• Maintain
• Observ
• Scal
• Recover
• Prov
• Afford
• Deploy
• Audit
• Impenetra
RMOUG Training Days 2021 | Code with Honor
ABLE
44
What is software?
RMOUG Training Days 2021 | Code with Honor 45
What is software?
Any instruction executed by a machine!
RMOUG Training Days 2021 | Code with Honor 46
Not all code is created equal
• Demo in presentation or workshop
• Explorative / R&D / Doodles
• Assignment in study or training
• Snippet in a blog-article
• Proof of Concept
• Prototype
• MVP
• Alert Condition evaluation
• Product with a very short time to live (several weeks, not any longer)
• Contribution to open source project
• (internal) Reusable Library
• Operating system for guided nuclear missile/ SpaceX vehicle
• Unit-test for code component
• Healthcheck/smoketest
(potentially) Production : Professional Quality Software
Not Production Ready: not (necessarily) Professional Quality Software
RMOUG Training Days 2021 | Code with Honor 48
Case in point
RMOUG Training Days 2021 | Code with Honor
old
not modern
legacy
business critical
custom software
50
Case in point
RMOUG Training Days 2021 | Code with Honor
end of scale
low on expertise
fragile
no tests, no specs, no docs
expensive TCO
high technical debt
no evolution
51
high incident rate
not modern
legacy
business critical
custom software
end of scale
little expertise left
on applications and tech stack
fragile
no tests, no specs, no docs
expensive: high TCO
high technical debt
no evolution
monolith
unattractive technology stack
for young talent
unsupported
inflexible
security-challenged
modern
longevity
business critical
buy before build
scalable
full command
of applications and technology
resilient
automation everywhere
pay per use, business value for money
controlled technical debt,
moving to technical solvency
continuous everything
agile architecture
appealing technology stack
for young talent and experienced staff
supported technology (N or N-1)
agile
as secure as needed
business  IT gap
productivity
robust
old
cloud
well aligned business & IT
RMOUG Training Days 2021 | Code with Honor 52
RMOUG Training Days 2021 | Code with Honor 53
Working Software
Working Software
RMOUG Training Days 2021 | Code with Honor 54
Working => Professional Software
Working
Software
Professional
Software
RMOUG Training Days 2021 | Code with Honor 55
https://www.youtube.com/watch?v=5p8wTOr8AbU
RMOUG Training Days 2021 | Code with Honor
Working => Professional Software
Working
Software
Professional
Software
RMOUG Training Days 2021 | Code with Honor 57
Stages in Software Lifecyle
Functional Specification
Behavior & Unit test
Working Software
Professional Code
Built Software
Deployable Software =
DONE
Professional &
ABLE:
Live Software
(under Ops)
Developer
Team
Production
Preparation
Team
DoR
DoaD
DoD
RMOUG Training Days 2021 | Code with Honor
PRoof
Pull Request
Peer Review
Production Ready
oPeRate
Put to Rest
58
Working
• according to functional specifications and technical interfaces
• proven
RMOUG Training Days 2021 | Code with Honor
Working Software
59
Behavior Test
• The required
behavior as
experienced from
the outside
• specify
• document
• verify
RMOUG Training Days 2021 | Code with Honor
Functional Specification
Behavior test
Working Software
Team
DoR
60
RMOUG Training Days 2021 | Code with Honor
Unit Test
• Verify behavior of
• APIs & Interfaces
• Reusable elements
• Algorithms
• Aspects
• Functionality
• Non Functionality
• Happy & Non-Happy
• not: dependencies
61
Test is many things
RMOUG Training Days 2021 | Code with Honor
Functional contract (specification and documentation)
Quick (REPL) feedback cycle for developer
Proof of “working”
Insulator that allows
refactoring and code optimizations
technical upgrades
Regression detector
for things changed
and things unchanged but impacted by changes
Health indicator & Smoke detector
Reference for (re)using code
62
• Who creates the test?
• and at what time?
• Who (or what?) executes the test
• at what moment | trigger?
• what is the outcome
• Who checks on the tests?
• specification coverage
• code coverage
• [real world] condition coverage
• timely execution of test and handling of
result
RMOUG Training Days 2021 | Code with Honor 63
Definition
• functional specifications
clear, unambiguous and understood
• boundary conditions, non happy
cases and exceptional situations are
covered in specifications
• non-functional requirements are clear
• business value of feature is defined
• TCO budget
RMOUG Training Days 2021 | Code with Honor 64
Test Trophy
RMOUG Training Days 2021 | Code with Honor
Live
65
Application Architecture
Business Logic
API/
Public
Interface
Frontend
(web, chat,
public REST)
Persistence
(of state) – pluggable
persistence providers
External
Systems
External
Systems
External
Systems
RMOUG Training Days 2021 | Code with Honor 69
Application Architecture
Business Logic
API/
Public
Interface
Frontend
(web, chat,
public REST)
Persistence
(of state) – pluggable
persistence providers
External
Systems
mock
mock
mock
External
Systems
External
Systems
RMOUG Training Days 2021 | Code with Honor 70
QA: Static Code Analysis
• According to coding standards
• Consistent
• Readable (naming, formatting, length, …)
• Maintainable (Code Smells)
• Limited complexity
• Code Coverage (of tests)
• Vulnerabilities (in dependencies)
• Automatic improvements
RMOUG Training Days 2021 | Code with Honor 71
RMOUG Training Days 2021 | Code with Honor
Refactoring
73
Refactoring towards Clean Professional Code
• Compliance with
coding standards
• Reducing complexity
• Increasing readability
• Testable & test coverage
• Operable
• logging
• metrics
• configuration settings
• Life cycle management of technology stack &
technical debt
• Needed: Local build pipeline and runtime environment to quickly and frequently do
code analysis, pull & merge from master, build & automated test
RMOUG Training Days 2021 | Code with Honor
Working Software
Professional Code Developer
DoaD
Unit tests & QA
(Behavior Tests)
Refactoring
74
RMOUG Training Days 2021 | Code with Honor
private void calculatePayroll (SpecialList<Employee> employeeGroup) {
while (employeeGroup.HasMore()) {
Employee employee = employeeGroup.getNext(true) ;
employee.updateSalary() ;
Payroll.distributeCheck(employee) ;
}
}
private void process (SpecialList
g) { while (g.
HasMore()) { e =
g.getNext(true) ; e.
updSal
() ; /* discard check for temp workers */ Prl.
disChk(e) ; }
}
75
RMOUG Training Days 2021 | Code with Honor
Clean
Code
Guidelines
76
Team
• That story is in Janet’s area
• Sorry, Tom is on leave so we cannot work on X
right now
• Our tester is working on running all automated
tests
• Ellen is the only one on our team who can work on
the Python components
• Thomas knows how the CI/CD pipelines work
• I am not sure what business feature Sophie is
working on this sprint
• Bob built it, he knows how to demo it
• This [one year] old code is hard to maintain
because the person who built it has left the team
RMOUG Training Days 2021 | Code with Honor 78
RMOUG Training Days 2021 | Code with Honor
Metamorphosis – the miracle of the PR
79
PR
Pull Request
Peer Review
Production
Ready
Metamorphosis – the miracle of the PR
RMOUG Training Days 2021 | Code with Honor 80
Pull Request == Please Review ?!
RMOUG Training Days 2021 | Code with Honor
Professional Code Developer
Team
DoaD
Appreciate my work
and learn from it
Help me improve it
and become a better developer
Take co-ownership of this code
81
Peer Review completes the Pull Request
• Peer Review completes (only) when
• Code is ABLE
• and beautiful
• the code is merged from the branch to the trunk
• and the tram may roll in
• because the peer considers the code their own
• Give priority to Peer Review!
• respond ASAP to Pull Request
• a proper Peer Review takes
real commitment and substantial time
(proportional to the complexity of the story)
RMOUG Training Days 2021 | Code with Honor
Professional Code Developer
Team
82
Definition of Almost Done
• Code on trunk
• ABLE
• Compiles | Can be Built
• Satisfies
• QA
• Test (behavior & code)
• Non-functional characteristics (absolute & trend)
• Vulnerability
• Guidelines and Standards
• Automated CI/CD pipeline
• (covered by) Smoketest
• Technical Debt management
RMOUG Training Days 2021 | Code with Honor
Professional Code
Built Software
83
Deployable == Done (as far as team is concerned)
• Deployable – but not yet deployed
• deploy decision is up to business
• CI/Continuous Delivery =
fully process up to deployability
• Continuous Deployment: automatic roll
out when DONE
RMOUG Training Days 2021 | Code with Honor
Professional Code
Built Software
Deployable Software =
DONE
DoD
84
Deploy
• Business decision
• Automated – no touch
• Smoketest post deployment
(and periodically to check on health)
• Operations activated
RMOUG Training Days 2021 | Code with Honor
Built Software
Deployable Software =
DONE
Professional &
ABLE:
Live Software
(under Ops)
Production
Preparation
85
RMOUG Training Days 2021 | Code with Honor
Canary
87
Observe the canary
RMOUG Training Days 2021 | Code with Honor 88
Professional Software – Generating Value for the Business
RMOUG Training Days 2021 | Code with Honor 90
RMOUG Training Days 2021 | Code with Honor 91
Software Wears Down
RMOUG Training Days 2021 | Code with Honor 92
Life Cycle Management – Technical Maintenance
• Ensure the up-date-ness of
the application and all its dependencies
RMOUG Training Days 2021 | Code with Honor
Periodic Review
93
Life Cycle Management – Technical Maintenance
• A CEV vulnerability (CVE database https://www.cvedetails.com/)
• Release (or patch) of 3rd party library/framework
• New or deprecated (feature in) PaaS Service
• Custom pricing in used or unused service
• New specification from the business
• New non-functional requirement
• Incident/bug – functional or non-functional
• Technical debt assessment
• New version of platform component:
• e.g. Docker, Kubernetes, Java, Node
• New/custom architecture
choice/guideline
• New/custom coding standard
• New tool, new version of tool
• Law & Regulation, Ethical Insights
• Mere Progression of Time
Triggers for technical change – proactively monitored by the DevOps Team
RMOUG Training Days 2021 | Code with Honor
Periodic Review
94
What Time can Do…
RMOUG Training Days 2021 | Code with Honor
PR
PRofessional
PRide
Public Relations
Public Responsibility
PRoof Periodic Review
Pull Request
Peer Review
Production Ready
oPeRate
Put to Re
PuRpose
PR oductive
Push-button Release
RMOUG Training Days 2021 | Code with Honor 96
Thank you
for your attention
I hope
this was
useful
RMOUG Training Days 2021 | Code with Honor
lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema
97

Más contenido relacionado

La actualidad más candente

Model-Based Testing for ALM Octane: Better tests, built faster
Model-Based Testing for ALM Octane: Better tests, built faster Model-Based Testing for ALM Octane: Better tests, built faster
Model-Based Testing for ALM Octane: Better tests, built faster
Curiosity Software Ireland
 
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
Radu Marinescu
 

La actualidad más candente (19)

Yoda debunks the top 5 challenges of continuous testing in the cloud
Yoda debunks the top 5 challenges of continuous testing in the cloudYoda debunks the top 5 challenges of continuous testing in the cloud
Yoda debunks the top 5 challenges of continuous testing in the cloud
 
Try: Fail, Try: Succeed by Tim Grant
Try: Fail, Try: Succeed by Tim GrantTry: Fail, Try: Succeed by Tim Grant
Try: Fail, Try: Succeed by Tim Grant
 
Classification of Advanced AI and ML Testing Tools - DevOps Next
Classification of Advanced AI and ML Testing Tools - DevOps NextClassification of Advanced AI and ML Testing Tools - DevOps Next
Classification of Advanced AI and ML Testing Tools - DevOps Next
 
Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile World
 
Is BDD Worth It? Considerations for Advanced Test Automation
Is BDD Worth It? Considerations for Advanced Test AutomationIs BDD Worth It? Considerations for Advanced Test Automation
Is BDD Worth It? Considerations for Advanced Test Automation
 
MuCon 2019: Exploring Your Microservices Architecture Through Network Science...
MuCon 2019: Exploring Your Microservices Architecture Through Network Science...MuCon 2019: Exploring Your Microservices Architecture Through Network Science...
MuCon 2019: Exploring Your Microservices Architecture Through Network Science...
 
Model-Based Testing for ALM Octane: Better tests, built faster
Model-Based Testing for ALM Octane: Better tests, built faster Model-Based Testing for ALM Octane: Better tests, built faster
Model-Based Testing for ALM Octane: Better tests, built faster
 
Webinar: “Continuous Delivery: il tuo primo passo verso il DevOps”
Webinar: “Continuous Delivery: il tuo primo passo verso il DevOps”Webinar: “Continuous Delivery: il tuo primo passo verso il DevOps”
Webinar: “Continuous Delivery: il tuo primo passo verso il DevOps”
 
Webinar: “Mai sentito parlare di Continuous Delivery per il database? Ecco co...
Webinar: “Mai sentito parlare di Continuous Delivery per il database? Ecco co...Webinar: “Mai sentito parlare di Continuous Delivery per il database? Ecco co...
Webinar: “Mai sentito parlare di Continuous Delivery per il database? Ecco co...
 
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
 
DevOps case study (Telco & Retailer)
DevOps case study (Telco & Retailer)DevOps case study (Telco & Retailer)
DevOps case study (Telco & Retailer)
 
Integrating SDLC, DevOps, and ITSM
Integrating SDLC, DevOps, and ITSMIntegrating SDLC, DevOps, and ITSM
Integrating SDLC, DevOps, and ITSM
 
Implementing WCAG 2.2 into Your Digital Strategy
Implementing WCAG 2.2 into Your Digital StrategyImplementing WCAG 2.2 into Your Digital Strategy
Implementing WCAG 2.2 into Your Digital Strategy
 
Making the Move to Behavior Driven Development
Making the Move to Behavior Driven DevelopmentMaking the Move to Behavior Driven Development
Making the Move to Behavior Driven Development
 
Advancing the State of The Art in AI and Testing - DevOps Next
Advancing the State of The Art in AI and Testing - DevOps NextAdvancing the State of The Art in AI and Testing - DevOps Next
Advancing the State of The Art in AI and Testing - DevOps Next
 
Closing the Requirements and Testing Loop Webinar
Closing the Requirements and Testing Loop WebinarClosing the Requirements and Testing Loop Webinar
Closing the Requirements and Testing Loop Webinar
 
Artificial intelligence for faster and smarter software testing - Galway Mee...
Artificial intelligence for faster and smarter software testing  - Galway Mee...Artificial intelligence for faster and smarter software testing  - Galway Mee...
Artificial intelligence for faster and smarter software testing - Galway Mee...
 
About Agile Testing Alliance (ATA)
About Agile Testing Alliance (ATA)About Agile Testing Alliance (ATA)
About Agile Testing Alliance (ATA)
 
Critical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right WayCritical Capabilities to Shifting Left the Right Way
Critical Capabilities to Shifting Left the Right Way
 

Similar a Code with Honor – on the importance and beauty of software programming - RMOUG 2021 Training Days

Code with Honor – on the importance and beauty of software programming
Code with Honor – on the importance and beauty of software programmingCode with Honor – on the importance and beauty of software programming
Code with Honor – on the importance and beauty of software programming
Lucas Jellema
 
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Lucas Jellema
 
Code with Honor – on the importance and beauty of software programming (Oracl...
Code with Honor – on the importance and beauty of software programming (Oracl...Code with Honor – on the importance and beauty of software programming (Oracl...
Code with Honor – on the importance and beauty of software programming (Oracl...
Lucas Jellema
 
Avoiding the Pitfalls of Capitalizing Software in an Agile World
Avoiding the Pitfalls of Capitalizing Software in an Agile WorldAvoiding the Pitfalls of Capitalizing Software in an Agile World
Avoiding the Pitfalls of Capitalizing Software in an Agile World
LeadingAgile
 

Similar a Code with Honor – on the importance and beauty of software programming - RMOUG 2021 Training Days (20)

Code with Honor – on the importance and beauty of software programming
Code with Honor – on the importance and beauty of software programmingCode with Honor – on the importance and beauty of software programming
Code with Honor – on the importance and beauty of software programming
 
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
 
Quality in Project Management
Quality in Project ManagementQuality in Project Management
Quality in Project Management
 
Quality engineering in DevOps... Why? How? (TestBusters Day&Night))
Quality engineering in DevOps... Why? How? (TestBusters Day&Night))Quality engineering in DevOps... Why? How? (TestBusters Day&Night))
Quality engineering in DevOps... Why? How? (TestBusters Day&Night))
 
Production-Ready Kubernetes: It's Not About Technology
Production-Ready Kubernetes: It's Not About TechnologyProduction-Ready Kubernetes: It's Not About Technology
Production-Ready Kubernetes: It's Not About Technology
 
Code with Honor – on the importance and beauty of software programming (Oracl...
Code with Honor – on the importance and beauty of software programming (Oracl...Code with Honor – on the importance and beauty of software programming (Oracl...
Code with Honor – on the importance and beauty of software programming (Oracl...
 
Enhancing the Power of Salesforce with DevOps & Copado Webinar | SoftClouds D...
Enhancing the Power of Salesforce with DevOps & Copado Webinar | SoftClouds D...Enhancing the Power of Salesforce with DevOps & Copado Webinar | SoftClouds D...
Enhancing the Power of Salesforce with DevOps & Copado Webinar | SoftClouds D...
 
TMAP Quality Engineering workshop on A4Q congress by Rik Marselis
TMAP Quality Engineering workshop on A4Q congress by Rik Marselis TMAP Quality Engineering workshop on A4Q congress by Rik Marselis
TMAP Quality Engineering workshop on A4Q congress by Rik Marselis
 
Avoiding the Pitfalls of Capitalizing Software in an Agile World
Avoiding the Pitfalls of Capitalizing Software in an Agile WorldAvoiding the Pitfalls of Capitalizing Software in an Agile World
Avoiding the Pitfalls of Capitalizing Software in an Agile World
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
 
Key items for a digital enterprise
Key items for a digital enterpriseKey items for a digital enterprise
Key items for a digital enterprise
 
Introduction of TMAP to representatives of ISTQB boards in the GA week in Mar...
Introduction of TMAP to representatives of ISTQB boards in the GA week in Mar...Introduction of TMAP to representatives of ISTQB boards in the GA week in Mar...
Introduction of TMAP to representatives of ISTQB boards in the GA week in Mar...
 
Software Quality as a Competitive Differentiator
Software Quality as a Competitive Differentiator Software Quality as a Competitive Differentiator
Software Quality as a Competitive Differentiator
 
My DevOps Experiences and Lessons learnt as a Program Manager
My DevOps Experiences and Lessons learnt as a Program ManagerMy DevOps Experiences and Lessons learnt as a Program Manager
My DevOps Experiences and Lessons learnt as a Program Manager
 
Quality Engineering in today's cross-functTeams with TMAP
Quality Engineering in today's cross-functTeams with TMAPQuality Engineering in today's cross-functTeams with TMAP
Quality Engineering in today's cross-functTeams with TMAP
 
To successfully deliver your IT project: build your team, build your Agile it...
To successfully deliver your IT project: build your team, build your Agile it...To successfully deliver your IT project: build your team, build your Agile it...
To successfully deliver your IT project: build your team, build your Agile it...
 
DevOps - Orientation Session
DevOps - Orientation SessionDevOps - Orientation Session
DevOps - Orientation Session
 
MuleSoft Surat Virtual Meetup#17 - Automated Code Review
MuleSoft Surat Virtual Meetup#17 - Automated Code ReviewMuleSoft Surat Virtual Meetup#17 - Automated Code Review
MuleSoft Surat Virtual Meetup#17 - Automated Code Review
 
Quality engineering & testing in DevOps IT delivery with TMAP
Quality engineering & testing in DevOps IT delivery with TMAPQuality engineering & testing in DevOps IT delivery with TMAP
Quality engineering & testing in DevOps IT delivery with TMAP
 

Más de Lucas Jellema

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Lucas Jellema
 

Más de Lucas Jellema (20)

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 

Último

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 

Último (20)

WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 

Code with Honor – on the importance and beauty of software programming - RMOUG 2021 Training Days

  • 1. rmoug.org Code with Honor on the importance and beauty of software programming Lucas Jellema – AMIS | Conclusion
  • 2. Lucas Jellema CTO for AMIS | Conclusion Cloud Solution Architect RMOUG Training Days 2021 | Code with Honor lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema 2 8 hours
  • 3. RMOUG Training Days 2021 | Code with Honor 3
  • 4. Quiz time RMOUG Training Days 2021 | Code with Honor 4
  • 5.
  • 6.
  • 8. RMOUG Training Days 2021 | Code with Honor 8
  • 9. RMOUG Training Days 2021 | Code with Honor 9
  • 10.
  • 12. PR PRofessionalPRide Public Relations Public Responsibility PRoof Periodic Review Pull Request Peer Review Production Ready oPeRate Put to Re PuRpose PR oductive Push-button Release
  • 14. RMOUG Training Days 2021 | Code with Honor 14
  • 15. RMOUG Training Days 2021 | Code with Honor 15
  • 16. We are Proud Craftsmen RMOUG Training Days 2021 | Code with Honor 16
  • 17. RMOUG Training Days 2021 | Code with Honor The Business 17
  • 18. RMOUG Training Days 2021 | Code with Honor Development Production scale, performance, security, stability, recoverability, monitoring 18
  • 19. 0 1 2 3 4 5 6 7 3 months 2 months 1 month 0 months minus 1 month minus 2 months Value of Software vs Production Date Cost Value MVP and incremental value delivery RMOUG Training Days 2021 | Code with Honor go live no value! 19
  • 20. Lifetime of a software application RMOUG Training Days 2021 | Code with Honor
  • 21. Paid Lip Service • Testing • QA • CI/CD • Automation • Scalability • Production-like testing environments • Security • Architecture | Design Patterns RMOUG Training Days 2021 | Code with Honor 21
  • 22. RMOUG Training Days 2021 | Code with Honor The Brake System is powered by Software The quality of the brake software is similar to the code that you (or your team) committed last week Your mother-in-law is about to get into the car Your mother-in-law is about to get into the car Your kids are about to get into the car 22
  • 23. RMOUG Training Days 2021 | Code with Honor why not? what is your software good enough for? for a demo, a PoC or a strictly controlled prototype? good enough to go to ACC (and let them find the bugs)? how do you know? how do you know for sure what your software does and how it deals with real life? 23
  • 24. Quiz time RMOUG Training Days 2021 | Code with Honor 24
  • 25. What would you prefer:  We have no failing tests  We have some failing tests RMOUG Training Days 2021 | Code with Honor
  • 26. What would you prefer:  We have no failing tests  We have some failing tests RMOUG Training Days 2021 | Code with Honor
  • 27. What would you prefer:  We have 10% failing tests  We have 17.61 % failing tests RMOUG Training Days 2021 | Code with Honor
  • 28. About me RMOUG Training Days 2021 | Code with Honor 28
  • 29. • About you as well? • A software professional who wants to be proud of the professional software that you craft take responsibility towards society RMOUG Training Days 2021 | Code with Honor 29
  • 31. My Central Heating Guy • Functioning system: heating and shower get water with requested temperature (fast enough and in sufficient volume) • Within reasonable boundary conditions (-20° to 30° outside temperature) • Safe & According to regulations • Limited noise production, limited gas • Lasts a while (10-20 years) – robust, limited wear & tear • Not often failures, after failure system can be started again quickly • Can be adapted to (small) changes in circumstances such as renovation of the house • Maintenance: not too often and not too expensive • CV technicians that can work with the system are widely available, as well as spare parts: the system is not very outlandish RMOUG Training Days 2021 | Code with Honor 32
  • 32. My Central Heating Guy • Functioning system: heating and shower get water with requested temperature (fast enough and in sufficient volume) • Within reasonable boundary conditions (-20° to 30° outside temperature) • Safe & According to regulations • Limited noise production, limited gas • Lasts a while (10-20 years) – robust, limited wear & tear • Not often failures, after failure system can be started again quickly • Can be adapted to (small) changes in circumstances such as renovation of the house • Maintenance: not too often and not too expensive • CV technicians that can work with the system are widely available, as well as spare parts: system is not very outlandish RMOUG Training Days 2021 | Code with Honor *) We expect a professional to offer suggestions and bring up relevant items that I am unaware off as a layman 33
  • 33. My Software Guy • Functioning system: proof of working according to specifications – under all foreseeable conditions • Satisfies non-functional requirements (performance, availability, recovery of data & service) • Safe & According to regulations • Known and reasonable TCO • Lasts a while (10-20 years) – robust, limited wear & tear • with regular technical maintenance at normal costs • Can be adapted to changes in functional and non-functional requirements (scale, availability, performance, security, …) • Maintenance: not too often and not too expensive • Software can be operated and maintained by regular IT staff • no rare super specialists need to be flow in • support and upgrades are easily available RMOUG Training Days 2021 | Code with Honor *) We expect a professional to offer suggestions and bring up relevant items that I am unaware off as a layman 34
  • 34. Do most systems live up to these expectations? Does your software? Does mine? RMOUG Training Days 2021 | Code with Honor 35
  • 35. Code with Honor • Be proud • Take responsibility • Hone skills and craftmanship • Focus on longevity • Be honest • Be productive • Realize value • Team up • Step up • No concessions to my professionalism RMOUG Training Days 2021 | Code with Honor 36
  • 36. Code with Honor • Be proud • Take responsibility • Hone skills and craftmanship • Focus on longevity • Be honest • Be productive • Realize value • Team up • Step up • No concessions to my professionalism RMOUG Training Days 2021 | Code with Honor 37
  • 37. Productivity as function of time and code quality RMOUG Training Days 2021 | Code with Honor 38
  • 38. Productivity as function of time and code quality RMOUG Training Days 2021 | Code with Honor source: https://martinfowler.com/articles/is-quality-worth-cost.html 39
  • 39. RMOUG Training Days 2021 | Code with Honor 41
  • 40. Working Software • What work does it do? • How can you tell? Working Software RMOUG Training Days 2021 | Code with Honor 42
  • 41. Small step for mankind… RMOUG Training Days 2021 | Code with Honor FROM WORKING SOFTWARE TO PROFESSIONAL SOFTWARE 43
  • 42. Professional Software is ABLE Software • Verifi • Test • Oper • Read • Evolv • Maintain • Observ • Scal • Recover • Prov • Afford • Deploy • Audit • Impenetra RMOUG Training Days 2021 | Code with Honor ABLE 44
  • 43. What is software? RMOUG Training Days 2021 | Code with Honor 45
  • 44. What is software? Any instruction executed by a machine! RMOUG Training Days 2021 | Code with Honor 46
  • 45. Not all code is created equal • Demo in presentation or workshop • Explorative / R&D / Doodles • Assignment in study or training • Snippet in a blog-article • Proof of Concept • Prototype • MVP • Alert Condition evaluation • Product with a very short time to live (several weeks, not any longer) • Contribution to open source project • (internal) Reusable Library • Operating system for guided nuclear missile/ SpaceX vehicle • Unit-test for code component • Healthcheck/smoketest (potentially) Production : Professional Quality Software Not Production Ready: not (necessarily) Professional Quality Software RMOUG Training Days 2021 | Code with Honor 48
  • 46. Case in point RMOUG Training Days 2021 | Code with Honor old not modern legacy business critical custom software 50
  • 47. Case in point RMOUG Training Days 2021 | Code with Honor end of scale low on expertise fragile no tests, no specs, no docs expensive TCO high technical debt no evolution 51
  • 48. high incident rate not modern legacy business critical custom software end of scale little expertise left on applications and tech stack fragile no tests, no specs, no docs expensive: high TCO high technical debt no evolution monolith unattractive technology stack for young talent unsupported inflexible security-challenged modern longevity business critical buy before build scalable full command of applications and technology resilient automation everywhere pay per use, business value for money controlled technical debt, moving to technical solvency continuous everything agile architecture appealing technology stack for young talent and experienced staff supported technology (N or N-1) agile as secure as needed business  IT gap productivity robust old cloud well aligned business & IT RMOUG Training Days 2021 | Code with Honor 52
  • 49. RMOUG Training Days 2021 | Code with Honor 53
  • 50. Working Software Working Software RMOUG Training Days 2021 | Code with Honor 54
  • 51. Working => Professional Software Working Software Professional Software RMOUG Training Days 2021 | Code with Honor 55
  • 53. Working => Professional Software Working Software Professional Software RMOUG Training Days 2021 | Code with Honor 57
  • 54. Stages in Software Lifecyle Functional Specification Behavior & Unit test Working Software Professional Code Built Software Deployable Software = DONE Professional & ABLE: Live Software (under Ops) Developer Team Production Preparation Team DoR DoaD DoD RMOUG Training Days 2021 | Code with Honor PRoof Pull Request Peer Review Production Ready oPeRate Put to Rest 58
  • 55. Working • according to functional specifications and technical interfaces • proven RMOUG Training Days 2021 | Code with Honor Working Software 59
  • 56. Behavior Test • The required behavior as experienced from the outside • specify • document • verify RMOUG Training Days 2021 | Code with Honor Functional Specification Behavior test Working Software Team DoR 60
  • 57. RMOUG Training Days 2021 | Code with Honor Unit Test • Verify behavior of • APIs & Interfaces • Reusable elements • Algorithms • Aspects • Functionality • Non Functionality • Happy & Non-Happy • not: dependencies 61
  • 58. Test is many things RMOUG Training Days 2021 | Code with Honor Functional contract (specification and documentation) Quick (REPL) feedback cycle for developer Proof of “working” Insulator that allows refactoring and code optimizations technical upgrades Regression detector for things changed and things unchanged but impacted by changes Health indicator & Smoke detector Reference for (re)using code 62
  • 59. • Who creates the test? • and at what time? • Who (or what?) executes the test • at what moment | trigger? • what is the outcome • Who checks on the tests? • specification coverage • code coverage • [real world] condition coverage • timely execution of test and handling of result RMOUG Training Days 2021 | Code with Honor 63
  • 60. Definition • functional specifications clear, unambiguous and understood • boundary conditions, non happy cases and exceptional situations are covered in specifications • non-functional requirements are clear • business value of feature is defined • TCO budget RMOUG Training Days 2021 | Code with Honor 64
  • 61. Test Trophy RMOUG Training Days 2021 | Code with Honor Live 65
  • 62. Application Architecture Business Logic API/ Public Interface Frontend (web, chat, public REST) Persistence (of state) – pluggable persistence providers External Systems External Systems External Systems RMOUG Training Days 2021 | Code with Honor 69
  • 63. Application Architecture Business Logic API/ Public Interface Frontend (web, chat, public REST) Persistence (of state) – pluggable persistence providers External Systems mock mock mock External Systems External Systems RMOUG Training Days 2021 | Code with Honor 70
  • 64. QA: Static Code Analysis • According to coding standards • Consistent • Readable (naming, formatting, length, …) • Maintainable (Code Smells) • Limited complexity • Code Coverage (of tests) • Vulnerabilities (in dependencies) • Automatic improvements RMOUG Training Days 2021 | Code with Honor 71
  • 65. RMOUG Training Days 2021 | Code with Honor Refactoring 73
  • 66. Refactoring towards Clean Professional Code • Compliance with coding standards • Reducing complexity • Increasing readability • Testable & test coverage • Operable • logging • metrics • configuration settings • Life cycle management of technology stack & technical debt • Needed: Local build pipeline and runtime environment to quickly and frequently do code analysis, pull & merge from master, build & automated test RMOUG Training Days 2021 | Code with Honor Working Software Professional Code Developer DoaD Unit tests & QA (Behavior Tests) Refactoring 74
  • 67. RMOUG Training Days 2021 | Code with Honor private void calculatePayroll (SpecialList<Employee> employeeGroup) { while (employeeGroup.HasMore()) { Employee employee = employeeGroup.getNext(true) ; employee.updateSalary() ; Payroll.distributeCheck(employee) ; } } private void process (SpecialList g) { while (g. HasMore()) { e = g.getNext(true) ; e. updSal () ; /* discard check for temp workers */ Prl. disChk(e) ; } } 75
  • 68. RMOUG Training Days 2021 | Code with Honor Clean Code Guidelines 76
  • 69. Team • That story is in Janet’s area • Sorry, Tom is on leave so we cannot work on X right now • Our tester is working on running all automated tests • Ellen is the only one on our team who can work on the Python components • Thomas knows how the CI/CD pipelines work • I am not sure what business feature Sophie is working on this sprint • Bob built it, he knows how to demo it • This [one year] old code is hard to maintain because the person who built it has left the team RMOUG Training Days 2021 | Code with Honor 78
  • 70. RMOUG Training Days 2021 | Code with Honor Metamorphosis – the miracle of the PR 79
  • 71. PR Pull Request Peer Review Production Ready Metamorphosis – the miracle of the PR RMOUG Training Days 2021 | Code with Honor 80
  • 72. Pull Request == Please Review ?! RMOUG Training Days 2021 | Code with Honor Professional Code Developer Team DoaD Appreciate my work and learn from it Help me improve it and become a better developer Take co-ownership of this code 81
  • 73. Peer Review completes the Pull Request • Peer Review completes (only) when • Code is ABLE • and beautiful • the code is merged from the branch to the trunk • and the tram may roll in • because the peer considers the code their own • Give priority to Peer Review! • respond ASAP to Pull Request • a proper Peer Review takes real commitment and substantial time (proportional to the complexity of the story) RMOUG Training Days 2021 | Code with Honor Professional Code Developer Team 82
  • 74. Definition of Almost Done • Code on trunk • ABLE • Compiles | Can be Built • Satisfies • QA • Test (behavior & code) • Non-functional characteristics (absolute & trend) • Vulnerability • Guidelines and Standards • Automated CI/CD pipeline • (covered by) Smoketest • Technical Debt management RMOUG Training Days 2021 | Code with Honor Professional Code Built Software 83
  • 75. Deployable == Done (as far as team is concerned) • Deployable – but not yet deployed • deploy decision is up to business • CI/Continuous Delivery = fully process up to deployability • Continuous Deployment: automatic roll out when DONE RMOUG Training Days 2021 | Code with Honor Professional Code Built Software Deployable Software = DONE DoD 84
  • 76. Deploy • Business decision • Automated – no touch • Smoketest post deployment (and periodically to check on health) • Operations activated RMOUG Training Days 2021 | Code with Honor Built Software Deployable Software = DONE Professional & ABLE: Live Software (under Ops) Production Preparation 85
  • 77. RMOUG Training Days 2021 | Code with Honor Canary 87
  • 78. Observe the canary RMOUG Training Days 2021 | Code with Honor 88
  • 79. Professional Software – Generating Value for the Business RMOUG Training Days 2021 | Code with Honor 90
  • 80. RMOUG Training Days 2021 | Code with Honor 91
  • 81. Software Wears Down RMOUG Training Days 2021 | Code with Honor 92
  • 82. Life Cycle Management – Technical Maintenance • Ensure the up-date-ness of the application and all its dependencies RMOUG Training Days 2021 | Code with Honor Periodic Review 93
  • 83. Life Cycle Management – Technical Maintenance • A CEV vulnerability (CVE database https://www.cvedetails.com/) • Release (or patch) of 3rd party library/framework • New or deprecated (feature in) PaaS Service • Custom pricing in used or unused service • New specification from the business • New non-functional requirement • Incident/bug – functional or non-functional • Technical debt assessment • New version of platform component: • e.g. Docker, Kubernetes, Java, Node • New/custom architecture choice/guideline • New/custom coding standard • New tool, new version of tool • Law & Regulation, Ethical Insights • Mere Progression of Time Triggers for technical change – proactively monitored by the DevOps Team RMOUG Training Days 2021 | Code with Honor Periodic Review 94
  • 84. What Time can Do… RMOUG Training Days 2021 | Code with Honor
  • 85. PR PRofessional PRide Public Relations Public Responsibility PRoof Periodic Review Pull Request Peer Review Production Ready oPeRate Put to Re PuRpose PR oductive Push-button Release RMOUG Training Days 2021 | Code with Honor 96
  • 86. Thank you for your attention I hope this was useful RMOUG Training Days 2021 | Code with Honor lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema 97

Notas del editor

  1. https://www.slideserve.com/ayala/se-3910-real-time-systems
  2. https://www.futuristgerd.com/2016/05/my-presentation-at-innotown-2016-in-alesund-the-next-5-years-in-technology-and-innovation/
  3. https://dev.to/bosepchuk/the-one-chart-every-developer-must-understand-2db9 Capers Jones with co-author, Olivier Bonsignour titled The Economics of Software Quality.
  4. Mergeable Granularity/unit of… delivery/build/ Code analysis Structured (declarative)
  5. not extraordinary! Old, not modern 5TB in RDBMS, 50 applications, 2000 components/programs, 1.5M “lines of custom code” fragile/issues end of scale stagnant / no innovation or evolution (SoR) Expensive TCO Critical to business No test sets, no specifications, no documentation Low on expertise: with tech stack, functionality, development and ops pile of tech debt – business always in a hurry, IT caved in; no budget to technical upgrades/maintenance Vulnerable
  6. not extraordinary! Old, not modern 5TB in RDBMS, 50 applications, 2000 components/programs, 1.5M “lines of custom code” fragile/issues end of scale stagnant / no innovation or evolution (SoR) Expensive TCO Critical to business No test sets, no specifications, no documentation Low on expertise: with tech stack, functionality, development and ops pile of tech debt – business always in a hurry, IT caved in; no budget to technical upgrades/maintenance Vulnerable
  7. technical erosion slowly eating away
  8. Jesús Quintero tells what happened to him when he went to work at a chiringuito in Chipiona and they sent him to clean some paella pans in Ratones Coloraos, Canal Sur. use first 2 minutes
  9. Test can only be created when story is ready DoR functional specifications clear, unambiguous and understood boundary conditions, non happy cases and exceptional situations are covered in specifications Non Functional Requirements are clear Business Value of feature is defined TCO budget Reference architecture Design & implementation guidelines Technical Debt
  10. https://www.tiobe.com/tics/ Tiobe Quality Indicator: https://www.tiobe.com/files/TIOBEQualityIndicator_v4_6.pdf
  11. Caterpillar to Butterfly From personal code to team treasure From branch to trunk From mine to our
  12. Caterpillar to Butterfly From personal code to team treasure From branch to trunk From mine to our
  13. ultimate test is production controlled production roll out is one way to perform (final) test
  14. log analysis (splunk, elastic, azure or OCI log analytics) metrics analysis real time and trends
  15. Elk event leidt tot technical debt en/of actie/user story DevOps team houdt status bij van applicatie-componenten en platform-onderdelen en tools (functioneel, non-functioneel en technisch
  16. Elk event leidt tot technical debt en/of actie/user story DevOps team houdt status bij van applicatie-componenten en platform-onderdelen en tools (functioneel, non-functioneel en technisch
  17. technical erosion slowly eating away