The only thing that matters
And 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 matters
And 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 feature
2. How our work is evaluated
3. How we can bridge the gap
4. What’s next
Agenda:
1. The tale of a product feature
2. How our work is evaluated
3. How we can bridge the gap
4. What’s next
Product features come from 2 sources:
1. Product Manager ideas
2. Customer requests
Let’s see how it happens
Product Manager ideas:
1. Think about something in shower
2. Make sure it’s beneficial for customers
3. Make sure it supports company goals
4. Add it to roadmap
Customer requests:
1. Customer complain: “%@&^%$#@!#$”
2. Put yourself in customer position
3. 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 feature
2. How our work is evaluated
3. How we can bridge the gap
4. What’s next
Who’s evaluating or interacting with our
work:
1. Future us and other developers
2. 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 feature
2. How our work is evaluated
3. How we can bridge the gap
4. 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 feature
2. How our work is evaluated
3. How we can bridge the gap
4. 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 feature
2. How our work is evaluated
3. How we can bridge the gap
4. What’s next
Takeaways #1
1. Release early
2. Make something people want
3. Make it work, then make it better
4. Dream in years, plan in months, ship in
days
5. It’s not done until it ships
Takeaways #2
1. Know your domain, knowledge is the key
to success
2. Take a look at your competitors
3. Participate in product discussions
4. Come up with ideas & suggestions
5. Use your product
Build the right thing
Thank you!
Share this with your friends
if you find this useful.

The only thing that matters