The Professional
Software Engineer
Carlos Rodríguez Domínguez
Everyware Technologies S.L.
Tomás Ruiz López
/everywaretech @everywaretech
{tomas, carlos}@everywaretech.es
Everyware Technologies
Consulting
Everyware Technologies
Training
Everyware Technologies
Development
Kent Beck Robert C. Martin
Martin Fowler
Agile
Manifesto
The Agile
Manifesto
Individuals & Interactions
over Processes and Tools
Working Software
over Comprehensive Documentation
Customer Collaboration
over Contract Negotiation
Responding to Change
over Following a Plan
Software
Craftmanship
Well-crafted Software
not only working software
Steadily Adding Value
not only responding to change
Community of
Professionals
not only individuals and interactions
Productive Partnerships
not only customer collaboration
Professionalism
Do No Harm
The Hippocratic Oath
Perpetual Inexperience
Quality, Ethics and Chickens
Continuous Learning
Respond to Industrial Change
Practicing
Kata, Wasa & Randori
Mentoring
Teaching as a Learning Process
Saying NO
Discuss and negotiate
Saying YES
Say. Mean. Do.
Productivity
Pomodoro Technique
Working Week
Avoid working overtime
Leadership
Don’t confuse with despotism
Management
4 Variables
Quality, Time, Money & Scope
Planning
The Backlog of User Stories
Estimation
T-Shirts & Poker cards
#NoEstimates
Because we are really bad at estimating
The 20-80 Rule
Be able to manage your resources
Task Assignment
Accepted Responsibility
Meetings
200 € / (person-hour)
Engineering
Tools
Bigger doesn’t mean Better
IDE
Some help is always appreciated
Source Code Control
Always have a fallback
Clean Code
Commit to Coding Standards
Architecture
Clean, Hexagonal, Screaming, Onion, Ring…
S Singleton Invasion
T Tight Coupling
U Untestability
P Premature Optimization
I Indescriptive Naming
D Duplication
S Single Responsibility
O Open-Closed
L Liskov Substitution
I Interface Segregation
D Dependency Inversion
Refactoring
Eliminate Code Smells and Design Mistakes
Test-Driven Development
Making sure it works? NO
Test-Driven Development
Finding bugs? Well…
Test-Driven Development
Guiding the Design!
Pair Programming
Collective Ownership
Continuous Integration
Release quickly
Further
Reading
About Professionalism
The Clean Coder: A Code of Conduct for Professional
Programmers by Robert C. Martin
The Software Craftsman: Professionalism, Pragmatism,
Pride by Sandro Mancuso
Quality, Ethics and Chickens by Wendy Closson
(podcast interviewing Robert C. Martin)
About Agile Methodologies
Extreme Programming Explained: Embrace Change
by Kent Beck
Agile Software Development: Principles, Patterns and
Practices by Robert C. Martin
Test-Driven Development by Example by Kent Beck
About Architecture
Microservices by Martin Fowler (video)
The Clean Architecture by Robert C. Martin (video)
About Design and Development
Refactoring: Improving the Design of Existing Code
by Martin Fowler
Object Thinking by David West
Clean Code: A Handbook of Agile Software Craftmanship
by Robert C. Martin
Design Patterns: Elements of Reusable Object-
Oriented Software by Erich Gamma, Ralph
Johnson, Richard Helm & John Vlissides
About Test-Driven Development
Integrated Tests are a Scam by J. B. Rainsberger
(video)
467 tests, 0 failures, 0 confidence by Katrina Owen
(video)
The Deep Synergy between Testability and Good Design
by Tim Yann (video)
Making Making CoffeeScript by Kent Beck (video)
JUnit Recipes: Practical Methods for Programmer
Testing by J. B. Rainsberger
About Practicing
www.codingdojo.org
code.google.com/codejam
www.exercism.io
Thanks!
Questions?
{tomas, carlos}@everywaretech.es
/everywaretech @everywaretech

The Professional Software Engineer