Post on 15-Apr-2017
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.