Airlift
 - the journey -

Team

Solution

simple CRUD

multiple CRUDs

a truckload of CRUDs

app

large app

large app & indian team

multiple apps

loopback & multiple apps

loopback & multiple apps

& libs

bugs & limited support work

plan for awesome infrastructure

actual implementation

indian app integration

Lessons learned
 - code -

Code is what we do

  • clean
  • readable
  • maintainable
  • pay attention

Root of (almost) all evil

  • copy - paste
  • code duplication

Pull Requests / Code review

  • slows you down
  • builds common knowledge
  • builds trust
  • enforces best practices
  • prevent hard to fix design flaws
  • pay attention when you review!!!
  • bad code is the reviewer's fault as well
  • takes time => plan

Bugs will happen

  • unit tests
  • continuos integration
  • manual QA

Testing

  • very important
  • too much mocking can lead to undetected bugs
  • tests are code
  • design good test cases
    • scenarios not coverage
  • don't test trivial things
  • make testing fun
    • angular directive testing => puke!
  • continuous integration
  • automated integration / UI tests
    • what can u say if u don't run them...

Read the requirements

  • read them again!
  • and again!
  • clarify the requirements
  • QA / BA helps (a lot!)
  • keep JIRA clean & searchable
  • bad requirements will kill you

Definition of ready

  • you are responsible for clarifying/contributing to the user stories' requirements together with the PO
  • break down the work:
    • parallelisable
    • people can work on what they want/know
    • better view of complexity
  • QA work is work as well => same rules apply
  • prioritise the story
  • priorities change

Definition of done

  • you are responsible of coding, testing & integrating
  • briefly manual QA your own code
  • take note of the code style
  • don't waste other people's time

Technology

  • make decisions late
  • don't let frameworks drive you
  • don't trade speed for cleanliness
  • don't be afraid to delete code / throw things away
  • must haves: build, run tests, debug
  • choose the right tool for the right job
  • infrastructure which supports you

We don't need that

  • you might never need it
  • you are not a psychic
  • investigate what are the costs of having that
  • make it possible to have it later
  • because you might need it!

The devil is in the details

  • loopback-context
  • continuation-local-storage & cls-mysql
  • async-listener (glue.js)

Lessons learned
 - process -

Teammates

  • share knowledge
  • ask for help
  • discuss / debate solutions
  • share responsibility
  • build trust
  • communication => be responsive

Teammates

  • we are all on the same team: DEVs, QAs, PO, PM, Scrum Master, etc.
    • we are all in this together
  • be as transparent as possible => saves time for everybody
    • let others know what you are doing
    • signal problems as soon as possible
  • attitude is very important

Other teams

  • be as decoupled as possible!
  • define APIs / contracts
  • respect them
  • defend against failures
  • reveal them (easily)
  • don't create headaches by yourself
    • TRAX
    • india

Support

  • empower people to do their job / to investigate
    • DEVs control DEV environment
    • QA investigates as much as possible
  • eliminate bottlenecks
  • help future you

Documentation

  • write once vs. repeat N times
  • everybody contributes
  • "nobody reads it"
    • promote it
    • improve it
  • it will not replace framework knowledge 

Estimations

  • people are depending on you
  • everybody has somebody to answer to
  • be transparent
  • be proactive
  • be realistic
  • subtile difference btw.:
    • ​how long will it take you?
    • how long should it take?
    • how long will it take?

Retrospective

  • identity problems
  • can you fix them?
    • yes => fix!
    • no => escalate
    • otherwise: not a problem.

Challenge the status quo

  • everybody likes improvements
  • people are afraid of change
  • show the benefits

Get attached

  • take pride in what you are doing
  • do it as best as possible
  • take ownership

Don't get (too) attached

  • you will be asked to do things which you think are stupid
  • express you opinion, politely :P
  • you are paid to do it, so...

Have fun!

hive-lessons-learned

By Horia Radu

hive-lessons-learned

  • 311