Slide 1

Slide 1 text

Computer Science vs Software Engineering Mike Perham Contributed Systems

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

A Tale of Locking and Giving Advice

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Context • He's both right and wrong. • What are you optimizing for?

Slide 7

Slide 7 text

Computer Science • Formal Correctness • Algorithmic Complexity • Black and White

Slide 8

Slide 8 text

Software Engineering • Welcome to the Real World™ • Cost of: • Maintenance • Operations • Getting Started • Performance, scalability, stability

Slide 9

Slide 9 text

Zookeeper • Pros • Formally correct Paxos consensus algorithm • Distributed, so 100% uptime (theoretically!)

Slide 10

Slide 10 text

Redis • Pros • Easy to get started • Fast and flexible • Widely available as SaaS • Cheap to operate

Slide 11

Slide 11 text

Zookeeper • Cons • More $$$ to operate • Minimum of 3 servers • No SaaS

Slide 12

Slide 12 text

Tony's View • Square • Deals with lots of $$$$$ • 100% uptime critical • JVM a positive • Already have a big, experienced ops team • "Use Zookeeper"

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Reality • No one is forced to use any API* • App developers decide what's important to them • Context is key

Slide 15

Slide 15 text

Pro Tips • Advice isn't helpful without considering context • Empathy improves your advice and makes you a better engineer

Slide 16

Slide 16 text

mperham {gmail,twitter,github}