95
Product architecture by Royi Benyossef Failures and lessons learnt

"Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Embed Size (px)

Citation preview

Page 1: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Product architectureby Royi Benyossef

Failures and lessons learnt

Page 2: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Android developer since 2009Tech community activist, speaker and founderMentor at * acceleratorGoogle expert since 2013Developer relations manager Samsung Next Tel-Aviv

Introduction Royi Benyossef

Page 3: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Introduction Samsung Next Tel-avivCommunity (free-for-all, no strings attached) Investment:

Early stage SW & SaaS startupsSeasoned entrepreneursDeep tech - IoT, AR/VR, cyber, DL, ML, CV,

bots, cloud etc.

Page 4: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Community (free-for-all, no strings attached) Investment (SW & SaaS startups & entrepreneurs) For more information:- samsungnexttlv.com- [email protected]

Introduction Samsung Next Tel-aviv

Page 5: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

Page 6: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

Vidmind:Introduction

Page 7: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

Vidmind:- End-to-end OTT TV

platform

Introduction

Page 8: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

Vidmind:End-to-end OTT TV platform- Standard backend & clients

Introduction

Page 9: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

Vidmind:End-to-end OTT TV platform- Standard backend & clients

+ AOSP STB

Introduction

Page 10: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

Vidmind:End-to-end OTT TV platform- Standard backend & clients

+ Android “based” set-top box

Introduction

Page 11: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

AOSP STBMe @ Vidmind:

Introduction

Page 12: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

AOSP STBMe @ Vidmind:

- From Android tech. leader

Introduction

Page 13: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

AOSP STBMe @ Vidmind:

From Android tech. leader- To Android clients

group manager

Introduction

Page 14: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

AOSP STBMe @ Vidmind:

From Android tech. leader- To Android clients

group manager(In charge W/ design, dev, arch. & prod.)

Introduction

Page 15: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

See what we didAgenda

Page 16: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

See what we didTalk about what went wrong and why

Agenda

Page 17: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

See what we didTalk about what went wrongSay what we learned from our issues

Agenda

Page 18: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

See what we didTalk about what went wrongSay what we learned from our issuesShow how we attempted to “fix it”

Agenda

Page 19: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

See what we didTalk about what went wrongSay what we learned from our issuesShow how we attempted to “fix it”Disclose how that panned out

Agenda

Page 20: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Prolog

See what we didTalk about what went wrongSay what we learned from our issuesShow how we attempted to “fix it”Disclose how that panned outRepeat

Agenda

Page 21: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1To be young and hopeful

Page 22: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

One app (launcher) What we did

Page 23: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

One app (launcher)Each “screen” was in a transparent activity

What we did

Page 24: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

One app (launcher)Each “screen” was in a transparent activityRoot app handled video and OpenGL gallery

What we did

Page 25: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

One app (launcher)Each “screen” was in a transparent activityRoot app handled video and OpenGL galleryOn-prem and manual build machine

What we did

Page 26: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

One app (launcher)Each “screen” was in a transparent activityRoot app handled video and OpenGL galleryOn-prem and manual build machine Using proprietary APIs for “special” features

What we did

Page 27: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous What we later found

Page 28: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)

What we later found

Page 29: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers asked

What we later found

Page 30: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers askedCodebase became an unmanageable mess

What we later found

Page 31: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers askedCodebase became an unmanageable mess:

> Builds took time and manpower

What we later found

Page 32: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers askedCodebase became an unmanageable mess:

Builds took time and manpower> No QA automation

What we later found

Page 33: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers askedCodebase became an unmanageable mess:

Builds took time and manpowerNo QA automation> Stability was terrible

What we later found

Page 34: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers askedCodebase became an unmanageable mess:

Builds took time and manpowerNo QA automationStability was terrible> Runtime memory was too

much

What we later found

Page 35: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers askedCodebase became an unmanageable mess:

Builds took time and manpowerNo QA automationStability was terrible> Runtime memory was too

much

What we later found

Max runtime =

~2 hours

Page 36: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

Apk size was enormous (mostly bad for dev)UX did not work as the designers askedCodebase became an unmanageable messQA was impossible

What we later found

Page 37: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

We can’t look at this as a normal application

What we learned from it

Page 38: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 1

We can’t look at this as a normal applicationWe need to seek other implementations

What we learned from it

Page 39: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 2Throwing a tantrum

Page 40: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 2

One appWhat we (almost) did

Page 41: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 2

One app Implemented entirely in OpenGL

What we (almost) did

Page 42: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 2

OpenGL development is long and hard

What we later found

Page 43: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 2

OpenGL development is long and hardOpenGL wrappers are meant for games

What we later found

Page 44: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 2

We have to go back!!!What we learned from it

Page 45: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3Minimum changes

Page 46: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Activities became apps What we did

Page 47: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Activities became apps (1 per screen + launcher)

What we did

Page 48: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Activities became apps (1 per screen + launcher)Added a “sticky” service

What we did

Page 49: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Activities became apps (1 per screen + launcher)Added a “sticky” service Communication (w/ interfaces):

- App to service

What we did

Page 50: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Activities became apps (1 per screen + launcher)Added a “sticky” service Communication (w/ interfaces):

App to service- Service to app

What we did

Page 51: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Activities became apps (1 per screen + launcher)Added a “sticky” service Communication (w/ interfaces)Pseudo MVC

What we did

Page 52: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Activities became apps (1 per screen + launcher)Added a “sticky” service Communication (w/ interfaces)Pseudo MVC* Still using OpenGL gallery

What we did

Page 53: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3What we didActivities became apps (1 per screen + launcher)Added a “sticky” service Communication (w/ interfaces)Pseudo MVC* Still using OpenGL gallerySTB HW and FW updated to improve UX

Page 54: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3What we didActivities became apps (1 per screen + launcher)Added a “sticky” service Communication (w/ interfaces)Pseudo MVC* Still using OpenGL gallerySTB HW and FW updated to improve UX (Incl. Android API upgrade)

Page 55: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live foreverWhat we later found

Page 56: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forever (= instability)

What we later found

Page 57: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development process

What we later found

Page 58: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development process

(= 10 files to add a method)

What we later found

Page 59: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development processAll proprietary APIs changed behavior

What we later found

Page 60: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development processAll proprietary APIs changed behavior

(= needed massive code changes)

What we later found

Page 61: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development processAll proprietary APIs changed behaviorCode maintainability issues

What we later found

Page 62: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development processAll proprietary APIs changed behaviorCode maintainability issues+ builds (still) took time and manpower

What we later found

Page 63: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development processAll proprietary APIs changed behaviorCode maintainability issues+ builds (still) took time and manpower+ No QA automation

What we later found

Page 64: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

Services do not live forevercomplex development processAll proprietary APIs changed behaviorCode maintainability issues+ builds (still) took time and manpower+ No QA automation

= QA was impossible

What we later found

Page 65: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

No more OpenGLWhat we learned from it

Page 66: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

No more OpenGLWe need to work with Android, not against it

What we learned from it

Page 67: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

No more OpenGLWe need to work with Android, not against itWe need a great UX that works on Android

What we learned from it

Page 68: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

No more OpenGLWe need to work with Android, not against itWe need a great UX that works on AndroidBuild and QA automation are a must

What we learned from it

Page 69: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

No more OpenGLWe need to work with Android, not against itWe need a great UX that works on AndroidBuild and QA automation are a mustFeature encapsulation is a must

What we learned from it

Page 70: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 3

No more OpenGLWe need to work with Android, not against itWe need a great UX that works on AndroidBuild and QA automation are a mustFeature encapsulation is a mustEffective code sharing is a must

What we learned from it

Page 71: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4This has to work!

Page 72: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Maven + jenkins based build machine

What we did

Page 73: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Maven + jenkins based build machineAppium + Espresso + JUnit automation

What we did

Page 74: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Maven + jenkins based build machineAppium + Espresso + JUnit automationHAL

What we did

Page 75: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Maven + jenkins based build machineAppium + Espresso + JUnit automationHAL (Hardware Abstraction Layer)

What we did

Page 76: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Maven + jenkins based build machineAppium + Espresso + JUnit automationHAL (Hardware Abstraction Layer) Func. based encapsulation

What we did

Page 77: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Maven + jenkins based build machineAppium + Espresso + JUnit automationHAL (Hardware Abstraction Layer) Func. based encapsulation App dependency management

What we did

Page 78: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationWhat we later found

Page 79: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependency

What we later found

Page 80: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependency allowed us to:

- Increase group size to ~35

What we later found

Page 81: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependency allowed us to:

Increase group size to ~35- Work in 5 locations (4

countries)

What we later found

Page 82: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependencyDesigners were happy with the UX

What we later found

Page 83: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependencyDesigners were happy with the UXImproved performance and stability

What we later found

Page 84: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependencyDesigners were happy with the UXImproved performance and stabilityImproved work cycle and transparency

What we later found

Page 85: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependencyDesigners were happy with the UXImproved performance and stabilityImproved work cycle and transparencyHW&FW agnostic product:

What we later found

Page 86: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependencyDesigners were happy with the UXImproved performance and stabilityImproved work cycle and transparencyHW&FW agnostic product:

> Faster integ. for demos -> easier sale

What we later found

Page 87: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Chapter 4

Far faster implementationReduced inter-team dependencyDesigners were happy with the UXImproved performance and stabilityImproved work cycle and transparencyHW&FW agnostic product:

Faster integ. for demos -> easier sale

> Increased bargaining power with OEMs

What we later found

Page 88: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Summary

Page 89: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Summary

Work better not harderWhat we learned from it

Page 90: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Summary

Work better not harderAutomate as much as possible

What we learned from it

Page 91: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Summary

Work better not harderAutomate as much as possibleWork with your system, not against it

What we learned from it

Page 92: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Summary

Work better not harderAutomate as much as possibleWork with your system, not against it

(HW, SW, FW and people)

What we learned from it

Page 93: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Summary

Work better not harderAutomate as much as possibleWork with your system, not against itNever be afraid to start over (if you can)

What we learned from it

Page 94: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

“We should be building great things. Things that Don’t yet exist”

Page 95: "Product Architecture: failures and lessons learnt" - Royi Benyossef @Products_of_Things, August 2016

Royi Benyossef samsungnexttlv.com

Hope you liked itThanks for listening!

Royi Benyossef

([email protected])