Computer Science vs Software Engineering

Computer Science vs Software Engineering

Sometimes the real world isn't black or white. Choosing the right tool requires context and trade offs. This was a lightning talk I gave for New Relic at Railsconf 2016.

Af54a0871600db7fbdbb5c558a6e29a3?s=128

Mike Perham

May 04, 2016
Tweet

Transcript

  1. Computer Science vs Software Engineering Mike Perham Contributed Systems

  2. None
  3. A Tale of Locking and Giving Advice

  4. @mperham: "Check out my locking API using Redis"

  5. None
  6. Context • He's both right and wrong. • What are

    you optimizing for?
  7. Computer Science • Formal Correctness • Algorithmic Complexity • Black

    and White
  8. Software Engineering • Welcome to the Real World™ • Cost

    of: • Maintenance • Operations • Getting Started • Performance, scalability, stability
  9. Zookeeper • Pros • Formally correct Paxos consensus algorithm •

    Distributed, so 100% uptime (theoretically!)
  10. Redis • Pros • Easy to get started • Fast

    and flexible • Widely available as SaaS • Cheap to operate
  11. Zookeeper • Cons • More $$$ to operate • Minimum

    of 3 servers • No SaaS
  12. Tony's View • Square • Deals with lots of $$$$$

    • 100% uptime critical • JVM a positive • Already have a big, experienced ops team • "Use Zookeeper"
  13. Mike's View • Sidekiq • Customers are from 1- to

    1000-person companies • JVM can be unwelcome to some Rubyists • Many customers == NoOps • Higher operational costs == unhappy customers
  14. Reality • No one is forced to use any API*

    • App developers decide what's important to them • Context is key
  15. Pro Tips • Advice isn't helpful without considering context •

    Empathy improves your advice and makes you a better engineer
  16. mperham {gmail,twitter,github}