Tradeoffs

53
TRADEOFFS Matthew Lehner @matthewpearse

description

As a developer, you need to know how to make the right tradeoffs to push business forward.

Transcript of Tradeoffs

Page 1: Tradeoffs

TRADEOFFSMatthew Lehner @matthewpearse

Page 2: Tradeoffs

Building Software Relies on Two Inputs:

!

Timeand

Money

Page 3: Tradeoffs

Businesses Have Money

!

You have time

Page 4: Tradeoffs

We have the best jobs on earth

!

We get paid to build things that help to the

world better

Page 5: Tradeoffs

First Assumption: We’re here because

we love building software

Page 6: Tradeoffs

Second Assumption: We wouldn’t mind higher salaries or a

greater level of autonomy over our

work

Page 7: Tradeoffs

I want to propose an idea: The ability to make

better business decisions makes you a

better developer. I’m not talking about straight up engineers, but people with jobs building software with

practical applications

Page 8: Tradeoffs

Better developers have more freedom

Page 9: Tradeoffs

WHY?

• Our salaries have to come from somewhere

• If our work is not creating more value than it costs the people who sign our cheques then they’re going to run out of money, and we’ll be unemployed

Page 10: Tradeoffs

WHY?

• Understanding the relationship between your work and the business value that it creates gives you a better ability to make decisions that will allow you to have more freedom over what you do (more money, or time off)

Page 11: Tradeoffs

A STORY 4 years ago I sent my first pull request

Page 12: Tradeoffs

The Problem

Page 13: Tradeoffs

The Solution

Page 14: Tradeoffs

I could build a webpage

Page 15: Tradeoffs

<html><%= weird_stuff %>

</html>

Page 16: Tradeoffs

<html><%= different_weird_stuff %>

</html>

Page 17: Tradeoffs

C++

Page 18: Tradeoffs

Ruby has a low barrier to entry

Page 19: Tradeoffs

Ruby

Page 20: Tradeoffs

We don’t pick languages because

they’re fast.

Page 21: Tradeoffs

We pick languages because we can be

productive with them

Page 22: Tradeoffs

Productivity happens when our brains are

free to solve problems

Page 23: Tradeoffs

Second Problem: Focus

Page 24: Tradeoffs

Managed Hosting vs.

Random Scripts + Docker Hacking

+VS

Page 25: Tradeoffs

Bare Minimum Setup• Application Server

• SSL Encryption

• Database Server

• Server Monitoring

• Automated Backups

Page 26: Tradeoffs

Should Also Have

• Load balancing

• Easy Horizontal Scalability

Page 27: Tradeoffs

At Face Value

EC2 Micro:$0.013/hour

Heroku Dyno:$0.05/hour

Page 28: Tradeoffs

At Face Value

EC2 Micro:$0.013/hour

Heroku Dyno:$0.05/hour

Page 29: Tradeoffs

A Deeper Dive

• Heroku set up time: 30 minutes

• EC2 set up time: ????

Page 30: Tradeoffs

A Deeper Dive

• Heroku set up time: 30 minutes

• EC2 set up time: 1 day (optimistic)

Page 31: Tradeoffs

How much does a developer cost?

Page 32: Tradeoffs

MATH TIME!• Average HK Dev Salary: $30,000/month

• Equipment, office space, utilities, benefits, taxes: $20,000

• Total cost per month: $50,000

• Per year: $600,000

• Per week: $11,538

Page 33: Tradeoffs

Developer Salary Math

Cost per hour:

$288

Page 34: Tradeoffs

A Deeper Dive

• Heroku set up time: 30 minutes

• EC2 set up time: 1 day (optimistic)

Page 35: Tradeoffs

A Deeper Dive

• Heroku set up cost: $144

• EC2 set up cost: $2,304

Page 36: Tradeoffs

• $1

Heroku cost per month

$111.50USD

Page 37: Tradeoffs

• $1

Heroku cost per month

:(

Page 38: Tradeoffs

$18USD

AWS cost per month

Page 39: Tradeoffs

:)

AWS cost per month

Page 40: Tradeoffs

Practically Speaking

SETUP COSTS

Heroku: $144 AWS: $2,304

MONTHLY COSTS

Heroku: $868 AWS: $139

Page 41: Tradeoffs

Monthly Breakdown

0

1500

3000

4500

6000

Sept Oct Nov Dec Jan Feb

Heroku AWS

Page 42: Tradeoffs

MERRY CHRISTMASI got you some traffic for your site

Page 43: Tradeoffs

Monthly Breakdown

0

1750

3500

5250

7000

Sept Oct Nov Dec Jan Feb

Heroku AWS

Page 44: Tradeoffs

If your primary responsibility isn’t managing servers,

this will to slow down forward progress.

Page 45: Tradeoffs

Servers are cheap, their resources are

unlimited. You are not cheap,

you have finite resources.

Page 46: Tradeoffs

Mythical Man-Month

Page 47: Tradeoffs

Mythical Man-Month

Adding manpower to a late software project makes it later - Brooks’ law

Page 48: Tradeoffs

We can’t add more people to projects

and finish them faster

Page 49: Tradeoffs

Adding people to a team increases complexity and

increased complexity lowers productivity.

Page 50: Tradeoffs

Developers are not horizontally scalable

Page 51: Tradeoffs

However, we can work effectively on individual parts of a

complex system

Page 52: Tradeoffs

To make the right choices we need to be aware of:

• The impact on the business’ bottom line

• The effect on our productivity

Page 53: Tradeoffs

Framework for maximum awesome

1. Work on things you like, and solve problems with technologies you’re excited about

2. Work towards mastery of the technologies you use every day

3. Evaluate how your day-to-day work creates value for your employer and focus on increasing this