I want to be an efficient developer - APIdays Barcelona version

Preview:

DESCRIPTION

some practices to be a more efficient developer

Citation preview

I WANT TO BE A MORE EFFICIENT DEVELOPER TALK BY

@WAXZCE – QUENTIN ADAM

AT APIDAYS BARCELONA 2014

MY DAY TO DAY WORK : CLEVER CLOUD, MAKE YOUR APP RUN ALL THE TIME

And learn a lot of things about your code, apps, and good/bad design…

KEEP YOUR APPS ONLINE. MADE WITH NODE.JS, SCALA, JAVA, RUBY, PHP, PYTHON, GO…

AND LEARN A LOT OF THINGS ABOUT YOUR CODE, APPS, AND GOOD/BAD DESIGN…

DEVELOPERS ARE MORE AND MORE CREATIVE

DEVS LEADS A LOT OF BUSINESS

SHIP QUICKLY WORKING APPS

VALUE IS ON PEOPLE MARKET KNOWLEDGE, TEAM MANAGEMENT, PRODUCT OWNERSHIP…

HOW MAKE THEM BE MORE EFFICIENT ?

DEVELOPER HAPPINESS IS KEY

HAPPY PEOPLE PRODUCE BETTER WORK

OPTIMIZE CODE AND PROCESS TO BE HAPPY OF WHAT YOU ARE DOING

OPEN SOURCES WORK PROCESSES ARE BETTER

PEOPLE WRITING CODE BECAUSE THEY JUST WANT TO DO IT

THINK ABOUT

BECAUSE THEY CAN SOLVE PROBLEM OF THE WORLD

OPEN SOURCES SHOW A VERY SUCCESSFUL TRACK RECORDS

BUILD A FRAMEWORK TO PRODUCE CODE EASILY AND SHOW IT EASILY

RELEASE EARLYRELEASE OFTEN

YOU HAVE TO REMOVE ALL DISTURBING / DISTRACTING ACTIONS

FOCUS ON YOUR OWN ADDED VALUE

BE FOCUS WHEN YOU CODE

RELEASE EARLYDEPLOYOFTEN

DEPLOYMENT HAS TO BE EASY !

GIT PUSH <YOUR_FAVORITE_HOSTING_PROVIDER> MASTER

GIT PUSH <YOUR_FAVORITE_CONTINUOUS_INTEGRATION_SYSTEM> MASTER

ALL THE TEAM HAVE TO BE READY TO DEPLOY

YOU HAVE TO DEPLOY YOUR APP SEVERAL TIMES A DAY

SPLIT YOUR APP

SPLIT THE CODE : MODULES

SMALLEST CODE BASE POSSIBLE FOR EACH PROGRAM

EACH MODULE IS VIEWED AS A SERVICE BY OTHERSHTTP OR AMQP COMUNICATION

OR AS A CLIENT

USE EVENT BROKER TO MODULARIZE YOUR APP• AMQP

• Celery

• 0MQ

• Redis

• JMS

• Some case : hadoop, akka…

• …

CRON is not an event queue

FOCUS ON THE BEST TOOL TO SOLVE YOUR PROBLEM

DON’T BE THAT GUY

DO NOT USE A TECHNOLOGY BECAUSE YOU <3 IT OR BECAUSE IT’S HYPE : USE IT BECAUSE IT FITS YOUR NEEDS

BALANCE YOUR LEARNING CURVE WITH THE TIME SAVED

DO NOT CREATE MONSTERS

SCALE YOUR TEAMMODULARIZE YOUR TEAM

LEAR NEW THINGS & INNOVATE

{P, DB, S} aaS

USE OPS FREE SOLUTION TO LEARN AND START

USE ONLINE DATABASE / BE READY TO TEST IN JUST A FEW MINUTES NO NEED TO TRASH YOUR COMPUTER

Statelessness everywhere

AVOID HOST SPECIFIC THINGS

DO NOT USE FILE SYSTEM TO STORE SOMETHING • It doesn’t scale

• It’s hard to expose as a service

• It’s a SPOF

• There is ALWAYS a better option

TIME WILL TRASH YOUR CODE

SOMETIMES YOU NEED TO CLEAN UP

THE POWER OF REWRITE EVERYTHING

SMALL CODE BASE + MULTIPLE TECHNOLOGIES = LEGACY KILLER

REWRITE IS QUICK BECAUSE YOU KNOW ALL THE PROBLEMS BEFORE IT HAPPENS

HAPPY DEVELOPER WORKS BETTER : ARE YOU HAPPY WHEN YOU START YOUR IDE?

VERSION EVERYTHING !Data & API

USE HTTPAND ALL THE GOODNESS IT BRING ON YOUR APP

200 OKBODY : { TYPE : ERROR, MESSAGE : I CAN’T FIND THE FILE }

REALLY ?

WRITE EVERYTHING

PUT SOME TOOLS IN YOUR CODE

USE BUILD MANAGER

LET PEOPLES FREE TO CHOOSE THEIR IDE

USE A CONFIGURATION MANAGER / LIBRARY

LEARN GIT “LIKE A BOSS”

I MEAN : USE GIT WITH CLI

FOCUS ON CODE READABILITY

AVOID EARLY PERFORMANCES OPTIMIZATION

YOU HAVE TO THINK IT’S YOUR FIRST DAY ON THE CODE BASE

DO YOU WORK LIKE THIS ?

EXAMPLE : HOW DOES CLEVER CLOUD WORK ?

SOME OF TECHNOLOGY WE USE

C

ALL TOGETHER USING HTTP & AMQP

THE FAST DEVELOPER WAY

• Statup weekends

• Hackatons

• Coding dojo

• Lean startup machine

I’m @waxzce on twitter

I’m the CEO of

A PaaS provider, give it a try ;-)

THX FOR LISTENING & QUESTIONS TIME