development metrics you should use (but don’t) – live blogging from qcon

Development Metrics you should use (but don’t)
Speaker: Cat Swetel @CatSwetel
See the list of all blog posts from the conference

Breakfast is good. You should eat breakfast. So Fruit Loops?
Metrics are good. You should have metrics. So bad metrics?

Metrics should fall into four baskets: quality, responsiveness, productivity and predictablilty. Value isn’t called out because this is about development metrics.

“The RIGHTER we do the WRONG thing, the WRONGER we become”

Definitions: (in this presentation)

  • start – when pulled work into team (not when requested)
  • finished – when customers can user

Metric: Time in process

  • Units of time for one unit of work
  • Display as a satter plot to see trends over time
  • Can look at average and 90% line (likely worst case). Would you rather hear 90% of the time it will just under two months or on average 20 days. Either way will be 53 days.
  • Display as a bar chart frequency distribution. See mode (entry with most items). Also see if long tail pattern. Tells a story about predictability
  • Weibull distribution – fat toward zero but tail trickles into infinity. This is like your commute. It usually takes X minutes but then sometimes something happens. (Remember from phrase: Weibull wiggle and they wobble but they don’t fall down)
  • Figure out story from data. In this case, determined that thought all work was the same, but really two distinct types. Were able to detect that high priority items were rushed and everything else waited.
  • Learned really had a multi-modal curve. Like two separate bell curves
  • This covers responsiveness and predictability

Metric: Throughput

  • Units of work per unit of time
  • Team cares about total capacity
  • Customer cares about how many new features
  • Cover range so cn see high and low
  • Ok to see dip while make improvements and then it goes up after. Expect productivity to drop before normalize around the change
  • Can display as range (hard to read
  • Can display bar chart showing probability for each number of requests
  • This covers productivity and predictability

Metric: Time in state

  • Need to collaborate across teams so wasted time waiting.
  • “Touch time” is a very small percentage of the total time
  • Helps determine where work is stuck
  • Good if see trend that getting better/worse. Look at more recent data. Are ueues growing or shrinking.
  • Do not make the bars red and green. Don’t want to avoid investing in improvement. Also, red/green colorblindness
  • Can stack within bar to display work in different states
  • Can display cummulative flow diagram as line graph
  • Little’s Law – average time in system
  • If arrival and departure rates don’t match, should affect expections
  • This covers predictability

Provided warning about this being number in context,not an estimate. Statistics are just answers/numbers. A person needs to provide the story/context around them.

I really liked this talk. Going deep on why a few metrics are useful is great!

The Paved PaaS to Microservices – live blogging at qcon

The Paved PaaS to Microservices
Speaker: Yunong Xiao @yunongx
See the list of all blog posts from the conference

Yunong is from Netflix. Talked about how serving multiple types of devices. Can innovate faster if not worrying about infrastructure

Scale. 1K+ microservices. JavaScriptfront end; Java back end.

Client teams own microservices for front end/client devices. Edge API is server based/back end API

Standardized Components

  • Common set of components – ex: metrics, logging, alerts, dashboard, configuration
  • Don’t want everyone picking RPC mechanism. Invest in one set of tooling
  • Benefits of standardizing: consistency (ease of troubleshooting/support), leverage (more time for business problems with platform team focused on components), interoperability (easier integration so faster velocity and less cognitive overload), quality (more investment so higher chance of quality), support (greater knowledge base)
  • “But I’m a Snowflake” – Netflix has culture of freedcom and responsibility. Helps with innovation. If works, re-integrate into ecosystem. Be concious of talking to the others and the cost to other teams of your choice.

Pre-assembled platform

  • Starting a new project, there isn’t velocity yet nor stats on reliability.
  • Putting components into a pre-assembled platform so can just add business logic. Less likely to be missing things like metrics because in pre-assembled platform.
  • Guarantees standard and consistent metrics. Reducs MTTD (mean time to detect) and MTTR (mean time to recover)
  • Maintenance vs convenience – easier for platform team to include just basics. Easier for app team to have more included. The solution is layers and favors. Having a base platform and add ons.
  • Testing – running other team’s microservices tests when upgrading a platform tests the platform upgrade
  • Design for configuration and hooks
  • API Semantic versioning (like what Maven versions do)
  • Use conventional changelog to automatically creat changelog

Automation and Tooling

  • Provide CLI for common dev experience – allows scripting and consistent environment each time. Ensures can run locally and in the cloud
  • Local development fast – use local debugger and curl. Can still test with container so mirrors prod config
  • Provide first class mocks for components in pre-assembled platform. Facilitate determining where the problem lives. Easier to write reliable automated tests.
  • Provide facilitate to generate mock data
  • Need a testing API so different groups can work on mocks. Component teams create mocks against standard APIs
  • “Production is war” – different levels of experience in ops. Use tools to avoid shooting off own foot. Ex: pipelines for deployment/rollback, automated canary analysis
  • Dashboards provide a consolidated view for ops. Having platform generate dashboard and alerts standardizes them. Also allows for automate analytics and tooling.

Provided warning about not just copying Netflix. PaaS is for certain use cases. Components help regardless.

the top 5 secrets to improving team communication – live blogging from qcon

Top Five Secrets to Improving Team Communication so that you can Scale your Tech Team without Failing
Speaker: Debbie Madden @debbiemadden200
See the list of all blog posts from the conference

Works for Stride – an agile development consulting company – co-locate with team to improve code and team

“We back a good team and a team is the most important criteria for investment” – venture capitalists

Communication gets harder as number of people grows. Plus teams you need to interface with.

Books Referenced

  • The Advantage by Patrick Lencionoi – why organizational health trumps everything else in business
  • No Man’s Land – what to do when your cmpany is too big to be small but too small to be big – Doug Tatum

#1 Recognize chaos

    1. Recognize status quo
    2. Much easier to see someone else’s mess than your own
    3. All teams go through alternating periods of calm and chaos
    4. Greiner Curve – 6 periods of calm/chaos as company grows/time goes on.
      • Start with creativity
      • Leadership crisis – who is in charge
      • Then get direction
      • Autonomy crisis – who is empowered to do what
      • Then get Delegation
      • Control crisis – c-suite fighting
      • Then get Coordination
      • Red tape crisis
      • Then get Collaboration
      • Growth crisis
      • Then get alliances
    5. Chaos looks like hard things, unhappy people,procedures in the way and misaligned management
    6. Your engineers didn’t get dumber. You scaled to the next level of chaos
    7. Peers are most accurate gauge of understanding where team is – don’t hae to be peers on team

#2 Change it up

    • Chaos doesn’t happen overnight; creeps up on you.
    • “Implementing these changes won’t be easy; we’re pretty set in doing things the wrong way”
    • Change meeting rhythms: ex: people/roles/length/cadence/agenda
    • Kill/combine/keep retrospectives on meetings every 6 month
    • Verbally decline to attend meeting
    • Create a spreadsheet of all meetings you (or your team) attend. Which can you get rid of completely? Which meetings have same people and can be merged?
    • “It’s not that people hate meetings; it’s that they hate bad ones”
    • Fist of fives – all rate meeting on scape of 1-5 with finger voting. 1 is waste of time and five is best meeting ever. If didn’t vote five, have opportunity to say what would makeit a five. Can see opportunities for improvement and trends. Did something change?
    • Wipe the slate clean and identify what roles are needed. Figure out most ideal role for team members amongst current team members. People work best if passionate about role. See what gaps remain. Big companies struggle when keep people in wrong seat. [seems scary to have to worry about whether “right person for job” every 6 months. she framed it as setting people up for success, but it still seems scary]
    • People are more productive when have right values more so than having right skills. The people with great skills and bad values are the toxic ones because they have influence
    • As you grow your team, standards increase. This means people who used to be “A players” now aren’t and they don’t want to pair/mentor/etc because struggling.
    • Hard to recognize your own mess. A coach can help. Everyone has own view and can share.

#3 Communicate the why

  • Feel the meaning
  • Understand the why/how/what of what doing
  • Repeat the why – it takes time to “take”
  • Need employees to believe in the “why”

#4 Prioritize team productivity

  • vs individual productivity
  • Referenced the Google article from the previous session
  • On a good team, people speak in same proportion. Encourage people to speak at meeting. Suggest quieter people email thoughts the next day so have time to think
  • Disagree and commit – silence is disaggreement)

#5 Protect team health

  • Without a team that trusts each other, none of the above matters
  • Trust has capability (skills) and desire (want to be there) aspects
  • Healthy conflict – don’t want to avoid conflict entirely

This was a higher level presentation than I thought. I expected more about teams all less about company wide topics. [I double checked the abstract and confirmed it says team]. She ran out of time for #4 and #5 so they were rushed despite importance

She also went on a rant about telecommuters not collaborating. That’s not always true. Just because YOUR team doesn’t do Google Hangouts well doesn’t mean remote people don’t contribute. I don’t telecommute often, but my co-workers do. And they are effective. She also dismissed remote pair programming and telecommuting being about saving a 30 minute commute and being in your PJs.