Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Young Lady's Primer to Technical Decision-Making

A Young Lady's Primer to Technical Decision-Making

Software is eating the world and probably your brain.

Over the last couple of years, we’ve seen an explosion of complexity in areas like polyglot storage, composable infrastructure, containerization and microservices, and coupling platforms (*aaS). Even five years ago, there were a set of fairly widely accepted best practices (virtualization, config management, RESTful services, and DBMS), but now every element of your stack is a never-ending rabbit hole of possibilities and questions.

Solid technical judgment is more important than ever. You can’t anticipate every problem, but you can identify and head off many of them in advance.


Charity Majors

June 23, 2016

More Decks by Charity Majors

Other Decks in Technology


  1. A Young Lady’s Illustrated Primer to Architecture and Technical Decision-Making

    Charity Majors, honeycomb.io @mipsytipsy
  2. None
  3. “Software is eating the world” ~pmarca “and your brain, probably”

  4. Making better choices with software.

  5. None
  6. 2000 “u can haz LAMP stack”

  7. 2005 “Would you care to come over and discuss service

    oriented architectures and REST APIs? Over tea, perhaps.” “Splendid! And have you heard of this ‘NoSQL’ oddity?” “I am sure tis but a passing fad.”
  8. 2010-2013ish Infrastructure Virtualization Config management RDBMS Services with REST APIs

    Continuous integration/delivery Agile “DevOps”
  9. 2016: welcome to the jungle even more logos

  10. Accelerating trends in 2016 Polyglot storage Composable infrastructure Containerization, microservices

    Coupling platforms (*aaS) Storing more and more data forever
  11. Cambrian Explosion of technical complexity

  12. the paradox of choice this is actually really hard on

  13. None
  14. tips for making better technical decisions

  15. Technology serves the mission

  16. Software is the enemy • Every piece of software adds

    fragility and points of failure • Everything you write will need to be debugged and maintained • It is easy to add software, and hard to remove it
  17. Resist software sprawl. Can you solve the problem with your

    existing tools? h/t @jessitron: http://blog.codeship.com/growing-tech-stack-say-no/
  18. Optimize globally, not locally If you pick the perfect language/storage

    solution for every local problem, you will have an unmanageable mess.
  19. Have a gating process for major new components • What

    is the relative gain? • Manufacture friction if necessary • Don’t micromanage outside the critical path
  20. Choose boring technology! • Failure modes are well understood •

    Rich library support for languages • For databases, extensive production hardening • Tooling and support for observability, debugging h/t @mcfunley, http://mcfunley.com/choose-boring-technology
  21. Understand your appetite for risk • Early startups have massively

    greater tolerance for risk. • Use that risk! But spend it on your core differentiators.
  22. more considerations: • Can you pay someone to do it

    better, for cheaper? Value your own team’s time. • Replacing a thing? Great: define a timeline and get rid of the old thing. • You *should* give preference to things your team has expertise with. • Fuck hacker news.
  23. Are they friendly and welcoming? Do they have a code

    of conduct, do they deal with assholes effectively? Do they value new contributors or are they tribal and snobby? It is totally legitimate to make software choices that are influenced by the quality of the community.
  24. Operational Impact The more mature your company becomes, the more

    your technical choices must be driven by operational impact. Corollary: make as many ops problems as possible not your problem.
  25. Celebrate the engineers who remove code, deprecate, and refactor, as

    much as those who add features.
  26. Manifesto: 1. Technology serves the mission. 2. Reuse solutions. 3.

    Create friction for adding new components. 4. Choose boring technology, when you can. 5. Spend your risk tokens on key differentiators. 6. The longer you survive, the more operational impact trumps all.
  27. None
  28. remember, it’s gonna be worse by 2017. <3

  29. thanks kids! enjoy #velocityconf! thanks to@jessitron, @mcfunley and @ferlatte ~