The only thing that matters

Post on 15-Apr-2017

916 views 0 download

Transcript of The only thing that matters

The only thing that mattersAnd it’s not code quality

Imagine the following situation

Product: Hey John, please take a look at user story #714

Developer: Sure

User story #714:“Japanese Hedge funds want to know about every transaction of more than $10M against their local currency. Therefore, we’ll send an email alert every time such a transaction happens”

User story #714:“Japanese Hedge funds want to know about every transaction of more than $10M against their local currency. Therefore, we’ll send an email alert every time such a transaction happens”

Developer: Cool, I’m on it

Product: Thanks buddy

Our developer, John, is working, and produce the following code:

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}Do you see anything wrong with this code?We will get back to it later.

The only thing that mattersAnd it’s not code quality building the right thing

Hi, my name is Adir Amsalem,

I like to build things,

And I think most of you evaluate your work by the wrong metrics.

Agenda:1.The tale of a product feature2.How our work is evaluated3.How we can bridge the gap4.What’s next

Agenda:1.The tale of a product feature2.How our work is evaluated3.How we can bridge the gap4.What’s next

Product features come from 2 sources:

1.Product Manager ideas2.Customer requests

Let’s see how it happens

Product Manager ideas:

1.Think about something in shower2.Make sure it’s beneficial for

customers3.Make sure it supports company goals4.Add it to roadmap

Customer requests:

1.Customer complain: “%@&^%$#@!#$”

2.Put yourself in customer position3.Understand the case and transform

“want” to “need” (a.k.a “faster horses”)

4.Repeat steps 2-4 from previous slide

Great, let’s continue

Agenda:1.The tale of a product feature2.How our work is evaluated3.How we can bridge the gap4.What’s next

Who’s evaluating or interacting with our work:

1.Future us and other developers2.Customers

What might come up?

How developers evaluate our work:

1. Is this readable?2. Is this flexible?3. Is this scalable?4. Is this testable?5. Is this simple?

How customers evaluate our work:1. Is this useful?2. Is this makes me feel good?

Developers

1. Is this readable?2. Is this flexible?3. Is this scalable?4. Is this testable?5. Is this simple?

Customers

1. Is this useful?2. Is this makes me feel good?Do you see any difference similarity?

We’ve been developing products for years, and we evaluate our work completely different from our customers

Now, you might step up and say:

But hey!I’m just a developer.That’s the Product Manager role.

So...

1. You’re not “just a developer”

2. That’s your role as well

There is no “my role” and “their role”.There is “our role”.And our role is to build a kickass product.

So let’s do it

Agenda:1.The tale of a product feature2.How our work is evaluated3.How we can bridge the gap4.What’s next

“Usually, the riskiest aspect of new products is not technology (whether it can be built) but market (will people use it and pay for it)”

Doing the right thing is only possible by releasing features early and receive feedback from users.

“Building something nobody wants is the #1 company killer"

First-mover advantage is the advantage gained by the initial (“first-moving”) significant occupant of a market segment.

“If you're not embarrassed by the first version of your product, you've launched too late"

Work estimation of 12 months is ridiculous, it never ends as planned.

You don’t need to release everything at once.

Release small chunks by splitting work to phases.

Nobody cares that you work on your product for over a year and you’ve already coded 90% of it.

For your customers, 90% of nothing is still nothing.

But most importantly...

Know your domain

Knowledge is the key to success

Remember the code from the beginning?

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}The problem here is easily recognized by anyone with knowledge in financial systems.

Let’s review it again

User story #714:“Japanese Hedge funds want to know about every transaction of more than $10M against their local currency. Therefore, we’ll send an email alert every time such a transaction happens”

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

Anyone?

if (transaction.currencyA === ‘YEN’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘JPY’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

if (transaction.currencyA === ‘JPY’ && transaction.usdEquivAmount >= 1e7) { // send email alert}

If John understood what he was doing, instead of just coding what he has been asked to, this mistake would not happen

Be smart. Know your domain.

Agenda:1.The tale of a product feature2.How our work is evaluated3.How we can bridge the gap4.What’s next

Curious what else you can do?

1. Take a look at your competitors

2. Participate in product discussions

3. Come up with ideas & suggestions

4. Use your product

The possibilities are endless

But what about all the engineering qualities...Am I saying they’re not important?

But what about all the engineering qualities...Am I saying they’re not important?NO! They’re super important.

As long as you build the right thing

Agenda:1.The tale of a product feature2.How our work is evaluated3.How we can bridge the gap4.What’s next

Takeaways #11.Release early2.Make something people want3.Make it work, then make it better4.Dream in years, plan in months, ship

in days5. It’s not done until it ships

Takeaways #21.Know your domain, knowledge is the

key to success2.Take a look at your competitors3.Participate in product discussions4.Come up with ideas & suggestions5.Use your product

Build the right thing

Thank you!

Share this with your friends if you find this useful.