Good practices to build good software at XXI
A personal vision by Javier Martínez Álvarez (@jamaa)
Developer
Manager
University Professor
Researcher
Eternal learner
+20 years of experience in 5 different companies
4
I learning, fell in love
and good , enjoy design
,support the best
Crazy about
and fan of almost all stuff.
and .
Head of Development of Telefonica I+D
Lead the adoption of technologies, architectures, sw development practices
and tools across all product areas.
Design and build TI+D development service
platform.
Promote that CCDO products are developed with
the best architectures, practices, people and tools.
Report and manage software development status (code metrics, practices, technology
adoptions) across multiple products.
Help company in main strategic technical
decisions.
What are the key elements to build good software?
Organization
Technology & tools
PeopleProcess
Users
0
10
20
30
40
50
60
Organization Users People Technology Process
Project successful keys
What does a developer look like more? To an engineer or to a
painter or a writer?
software developers are like artists
understand what software development is
“Any organization that designs a system (defined more broadly here than just information systems) will inevitably
produce a design whose structure is a copy of the organization’s communication structure.”
Conway’s Law. Melvin Conway Datamation magazine in April 1968
“If you have four groups working on a compiler, you’ll get a 4-pass compiler.”
Eric S Raymond in The New Hacker’s Dictionary
be small, flat, and agile
get talent, freedom
get talent, freedom and hacker-centric culture
Do the right things is important…
..however there is something even more important
Doing the right thing
Team, code reviews
Team, code reviews,
openness
Team, code reviews, openness
and mission
It’s not what the software does. It’s what the user does
Eat your own dog food
Eat your own dog food,
exploratory test
Eat your own dog food,
exploratory test and metrics
self-learning, passion
self-learning, passion and soft skills
productivity, gamification
work, family, body and soul
Technology & Tools
Better few bad than many good
It takes approximately 10,000 hours of deliberate practice to master a skill = 5-6 years of 8h day work
Elite = 10000 hours
Good = 8000 hours
Average=4000 hours
The 10,000 Hour Rule. Malcom Glassgow form an study of K. Anders Ericsson
Openstack, “Linux” of the cloud
What kind of methodologies do you use?
Scrum, scrumban and
Kanban
Stakeholders
Development Team
Demos and Releases
Feedbackand Requests
Delivery frequency = Speed of learning
Release seldom
Release is big
Release is hard
Release is a drama!!!
Release often
Release is small
Release is simple
Release is a routine!!!
Code & Commit
Build
Test & Integrate
Deploy to staging
Not functional
tests
Test: is everything
OK?
Deploy to production
Maximize Value, not Output
Coding Styles, TDD and BDD
Measure process and applications