69
Good practices to build good software at XXI A personal vision by Javier Martínez Álvarez (@jamaa)

Good practices to build good software

Embed Size (px)

Citation preview

Good practices to build good software at XXI

A personal vision by Javier Martínez Álvarez (@jamaa)

2

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

Organizations

“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

be small, flat

be small, flat, and agile

get talent

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

Team, code reviews

Team, code reviews,

openness

Team, code reviews, openness

and mission

Users

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

People

self-learning

self-learning, passion

self-learning, passion and soft skills

productivity

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

Use XaaS

Openstack, “Linux” of the cloud

IoT Platform

Process

What kind of methodologies do you use?

Scrum

Scrum, scrumban

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

Q&A