SlideShare a Scribd company logo
1 of 26
HOW TO MAINTAIN A PERFECT PRODUCT
ARCHITECTURE IN A NON-STOP START-UP
HOW TO MAINTAIN A PERFECT PRODUCT
ARCHITECTURE IN A NON-STOP START-UP
DECENT
INTERNAL AND CONFIDENTIAL 3
Introduction
• We want to develop a nice and tidy,
"textbook" architecture.
• It all seems so simple and elegant before we
start to code.
• After 3 months is all spaghetti code full of
hacks
• WHY?
INTERNAL AND CONFIDENTIAL 4
The traits of developing consumer apps
• No specific customer
• Usually improving a single product in
small iterations
• No "hard deadlines" (most of the time)
• Product vs. Project
INTERNAL AND CONFIDENTIAL 5
The enemies of good architecture
• We move fast and cheap
• As the saying goes, "pick any two" - for start
ups, there are only two viable choices.
• Iterations drive our progress
• As start-ups usually aim for a moving target
• We use a faulty deployment mechanism
• We must do "traditional" release cycles
• (continuous integration is a much less viable
option)
So what does it mean?
INTERNAL AND CONFIDENTIAL 7
We move fast and cheap
l Most start-ups are underpowered and very
fast
l There's no time to do a "proper" s/w
development process
l Not always you have time to plan too much
ahead
l We prefer to go for the MVP and iterate based
on data instead of "over-engineering"
 We may know what's the “right” solution, but
often we need to move fast, so we just hack it
INTERNAL AND CONFIDENTIAL 8
Iterations drive our progress
l We do lots of A/B testing and then
discarding the least successful code
l We love our buddies in the product and
design teams
But they sometimes cause our code to
fluctuate
 If we know there's a small chance that
the code will make it to production, so
why not hack it?
INTERNAL AND CONFIDENTIAL 9
We use a faulty deployment mechanism
l Contrary to our backend guys, we can't deploy
on a daily basis
l We must go through the market, which has a
way of its own
l Even when we deploy, we don't necessarily get
to a 100% of our user base immediately
l Users can be upgrading from any historic
version to the most updated one
 Most "upgrade handling" & "backward
compatibility" routines tend to go in as hacks
INTERNAL AND CONFIDENTIAL 10
We must do release cycles
l There's a great part of our product that must
undergo manual testing
(lots of UI testing, lots of UX testing, lots of "this
doesn't feel right" issues...)
l The market cycle which can't be too frequent
l This means that many features are stacked up
into every increment
 Beware of the "Last-minute-before-the-
version-release" bug fixes are usually the "least-
change" hacks instead of the correct solution.
INTERNAL AND CONFIDENTIAL 11
Hacks are a necessary evil
l It's what allows us get it ready in
time
l They're still evil, though.
l Hacks are what makes us fail in the
long run
So how do we do it?
INTERNAL AND CONFIDENTIAL 13
So how do we do it?
l Accept reality
l Know what you want, and what you
don't
l Manage your debt
l Mark your target
l Make a plan
INTERNAL AND CONFIDENTIAL 14
Accept reality
l You'll never get to that spiffy
architecture you're dreaming about
l Unless your startup died or you've
been acquired by Google and work
on a side project there
l Your job is to maintain an
acceptable architecture (with a
smile on your face)
INTERNAL AND CONFIDENTIAL 15
Know what you want / Know what you don't
l Good architecture isn't an absolute
good
l The only reasons to have good
software architecture are:
To enable fast & cheap feature
development in the future
To have a more robust (= high quality, less
testing) product
l And it should be cost effective
INTERNAL AND CONFIDENTIAL 16
Manage your debt
l Each time a hack goes in, write it down
in your HackBook(tm)
l Remember thy hacks as they should
trouble your sleep
l This is where code review comes in
handy
You don't necessarily control each and
every commit, but at least make sure you
know them
INTERNAL AND CONFIDENTIAL 17
Mark your target
l You must know where you want to be
eventually
l Define the critical modules who need the
most attention and which are probably not
worth the trouble
l Don't waste time explaining this to non-
developers (just joking (but seriously...))
This is a continuous task which should become
part of your day-to-day work
There's no point in advocating for prioritization
and allocating resources for it
INTERNAL AND CONFIDENTIAL 18
Make a plan
l Fix your app with a set of well
thought of small refactors
Don't branch and fix on your own and
expect a big ceremony when you
merge back
INTERNAL AND CONFIDENTIAL 19
Refactors?
l Code refactoring is the process of
restructuring existing computer code –
changing the factoring – without
changing its external behavior.
Refactoring improves nonfunctional
attributes of the software.
INTERNAL AND CONFIDENTIAL 20
Make the time for doing the refactors -
it's your responsibility
l Try to overload a required "product
feature" with one of yours planned
refactors
l Whenever you have a small break -
fix one hack off the list (it feels good)
How we do it at EverythingMe?
(a few examples)
PRESENTATION NAME GOES HERE
INTERNAL AND CONFIDENTIAL 22
A/B testing management
l“Remote controlled” feature flags
lA/B testing mechanism
lExact targeting (device model/os version/client version)
lRemoves hard coded “ifs” from the code
lProvides a framework to isolate temporary/provisional code
INTERNAL AND CONFIDENTIAL 23
A/B testing management
lJSON stored on server, parsed in client
"new-button-green-or-blue": {
"weight": 20,
"conditions": [
{ "screen-density": [ 240 ],
"!locales": [ "en_US", "en_UK", "en_GB" ],
"os-versions": [ 14, 15,16, 17, 18 ] }
],
“variants”: {
“green-button”: {
“weight”: 50,
“parameters”: { “color”: “#00ff00” }
},
“blue-button”: {
“weight”: 50,
“parameters”: { “color”: “#0000ff” }
}
}
}
INTERNAL AND CONFIDENTIAL 24
Upgrade Management
lSafe and robust module to handle (multiple) version upgrade
migrations
lMakes sure that all backward compatibility code stays in one
place.
INTERNAL AND CONFIDENTIAL 25
Follow us
All these modules will be open-sourced
in the upcoming weeks.
Follow us at:
https://github.com/EverythingMe
http://geeks.everything.me
Good Luck!

More Related Content

What's hot

Introduction to TM1 TurboIntegrator Debugger Webinar - Quebit Consulting
Introduction to TM1 TurboIntegrator Debugger Webinar - Quebit ConsultingIntroduction to TM1 TurboIntegrator Debugger Webinar - Quebit Consulting
Introduction to TM1 TurboIntegrator Debugger Webinar - Quebit ConsultingQueBIT Consulting
 
Stop Testing (Only) The Functionality of Your Mobile Apps!
Stop Testing (Only) The Functionality of Your Mobile Apps!Stop Testing (Only) The Functionality of Your Mobile Apps!
Stop Testing (Only) The Functionality of Your Mobile Apps!Applitools
 
iOS Scroll Performance
iOS Scroll PerformanceiOS Scroll Performance
iOS Scroll PerformanceKyle Sherman
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Lemi Orhan Ergin
 
Generating biggest possible value to the business
Generating biggest possible value to the businessGenerating biggest possible value to the business
Generating biggest possible value to the businessAli Craigmile
 
Agile Testing
Agile Testing Agile Testing
Agile Testing VersionOne
 
How to find manage remote developers - Laracon.EU 2017
How to find manage remote developers - Laracon.EU 2017How to find manage remote developers - Laracon.EU 2017
How to find manage remote developers - Laracon.EU 2017Povilas Korop
 
How to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOpsHow to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOpsDynatrace
 
10 days of Nuracode
10 days of Nuracode10 days of Nuracode
10 days of Nuracodecovello
 
Innovative php development
Innovative php developmentInnovative php development
Innovative php developmentTigran Azatyan
 
Right-Sizing User Stories
Right-Sizing User StoriesRight-Sizing User Stories
Right-Sizing User StoriesVersionOne
 
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...Applitools
 
The four generations of test automation
The four generations of test automationThe four generations of test automation
The four generations of test automationrenard_vardy
 
Resful Trinity Code One - San Francisco
Resful Trinity Code One - San FranciscoResful Trinity Code One - San Francisco
Resful Trinity Code One - San FranciscoIvan Junckes Filho
 
How an IoT App Comes To Life
How an IoT App Comes To LifeHow an IoT App Comes To Life
How an IoT App Comes To LifeAndrea Livotto
 
Build the "right" regression suite using Behavior Driven Testing (BDT)
Build the "right" regression suite using Behavior Driven Testing (BDT)Build the "right" regression suite using Behavior Driven Testing (BDT)
Build the "right" regression suite using Behavior Driven Testing (BDT)Anand Bagmar
 
MuleSOft PKO Developer meetup - 25 March 2021
MuleSOft PKO Developer meetup - 25 March 2021 MuleSOft PKO Developer meetup - 25 March 2021
MuleSOft PKO Developer meetup - 25 March 2021 Royston Lobo
 
Lean uxforstartup
Lean uxforstartupLean uxforstartup
Lean uxforstartupI3P
 
From Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsFrom Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsLuca Minudel
 
[QE 2015] Sam Elamin - Monoliths to microservices - a journey
[QE 2015] Sam Elamin - Monoliths to microservices - a journey[QE 2015] Sam Elamin - Monoliths to microservices - a journey
[QE 2015] Sam Elamin - Monoliths to microservices - a journeyFuture Processing
 

What's hot (20)

Introduction to TM1 TurboIntegrator Debugger Webinar - Quebit Consulting
Introduction to TM1 TurboIntegrator Debugger Webinar - Quebit ConsultingIntroduction to TM1 TurboIntegrator Debugger Webinar - Quebit Consulting
Introduction to TM1 TurboIntegrator Debugger Webinar - Quebit Consulting
 
Stop Testing (Only) The Functionality of Your Mobile Apps!
Stop Testing (Only) The Functionality of Your Mobile Apps!Stop Testing (Only) The Functionality of Your Mobile Apps!
Stop Testing (Only) The Functionality of Your Mobile Apps!
 
iOS Scroll Performance
iOS Scroll PerformanceiOS Scroll Performance
iOS Scroll Performance
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 
Generating biggest possible value to the business
Generating biggest possible value to the businessGenerating biggest possible value to the business
Generating biggest possible value to the business
 
Agile Testing
Agile Testing Agile Testing
Agile Testing
 
How to find manage remote developers - Laracon.EU 2017
How to find manage remote developers - Laracon.EU 2017How to find manage remote developers - Laracon.EU 2017
How to find manage remote developers - Laracon.EU 2017
 
How to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOpsHow to Better Manage Technical Debt While Innovating on DevOps
How to Better Manage Technical Debt While Innovating on DevOps
 
10 days of Nuracode
10 days of Nuracode10 days of Nuracode
10 days of Nuracode
 
Innovative php development
Innovative php developmentInnovative php development
Innovative php development
 
Right-Sizing User Stories
Right-Sizing User StoriesRight-Sizing User Stories
Right-Sizing User Stories
 
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
 
The four generations of test automation
The four generations of test automationThe four generations of test automation
The four generations of test automation
 
Resful Trinity Code One - San Francisco
Resful Trinity Code One - San FranciscoResful Trinity Code One - San Francisco
Resful Trinity Code One - San Francisco
 
How an IoT App Comes To Life
How an IoT App Comes To LifeHow an IoT App Comes To Life
How an IoT App Comes To Life
 
Build the "right" regression suite using Behavior Driven Testing (BDT)
Build the "right" regression suite using Behavior Driven Testing (BDT)Build the "right" regression suite using Behavior Driven Testing (BDT)
Build the "right" regression suite using Behavior Driven Testing (BDT)
 
MuleSOft PKO Developer meetup - 25 March 2021
MuleSOft PKO Developer meetup - 25 March 2021 MuleSOft PKO Developer meetup - 25 March 2021
MuleSOft PKO Developer meetup - 25 March 2021
 
Lean uxforstartup
Lean uxforstartupLean uxforstartup
Lean uxforstartup
 
From Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOpsFrom Continuous Integration to Continuous Delivery and DevOps
From Continuous Integration to Continuous Delivery and DevOps
 
[QE 2015] Sam Elamin - Monoliths to microservices - a journey
[QE 2015] Sam Elamin - Monoliths to microservices - a journey[QE 2015] Sam Elamin - Monoliths to microservices - a journey
[QE 2015] Sam Elamin - Monoliths to microservices - a journey
 

Similar to Maintain Perfect Product Architecture in Fast-Paced Startups

DeKnowledge - Try us
DeKnowledge - Try usDeKnowledge - Try us
DeKnowledge - Try usBob Pinto
 
(Minimum) Enterprise Viable Product - a relook
(Minimum) Enterprise Viable Product - a relook(Minimum) Enterprise Viable Product - a relook
(Minimum) Enterprise Viable Product - a relookSriram Sabesan
 
Crash free sdk - to share
Crash free sdk - to shareCrash free sdk - to share
Crash free sdk - to shareYakiLevin
 
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...Virtual Forge
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architectureScott Hsieh
 
The hardcore stuff i hack, experiences from past VAPT assignments
The hardcore stuff i hack, experiences from past VAPT assignmentsThe hardcore stuff i hack, experiences from past VAPT assignments
The hardcore stuff i hack, experiences from past VAPT assignmentsn|u - The Open Security Community
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysAndreas Grabner
 
Fixing security by fixing software development
Fixing security by fixing software developmentFixing security by fixing software development
Fixing security by fixing software developmentNick Galbreath
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Nick Galbreath
 
Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionIndiginox
 
Lean Software Development & Kanban
Lean Software Development & KanbanLean Software Development & Kanban
Lean Software Development & KanbanRishi Chaddha
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The CloudMarcin Grzejszczak
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationBoris Dominic
 
6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservicesDynatrace
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatmdevtalk
 
Approaching risk management with your head in the cloud
Approaching risk management with your head in the cloudApproaching risk management with your head in the cloud
Approaching risk management with your head in the cloudCompatibL Technologies ltd
 

Similar to Maintain Perfect Product Architecture in Fast-Paced Startups (20)

Bug Advocacy
Bug AdvocacyBug Advocacy
Bug Advocacy
 
DeKnowledge - Try us
DeKnowledge - Try usDeKnowledge - Try us
DeKnowledge - Try us
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
(Minimum) Enterprise Viable Product - a relook
(Minimum) Enterprise Viable Product - a relook(Minimum) Enterprise Viable Product - a relook
(Minimum) Enterprise Viable Product - a relook
 
Crash free sdk - to share
Crash free sdk - to shareCrash free sdk - to share
Crash free sdk - to share
 
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architecture
 
The hardcore stuff i hack, experiences from past VAPT assignments
The hardcore stuff i hack, experiences from past VAPT assignmentsThe hardcore stuff i hack, experiences from past VAPT assignments
The hardcore stuff i hack, experiences from past VAPT assignments
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
 
Fixing security by fixing software development
Fixing security by fixing software developmentFixing security by fixing software development
Fixing security by fixing software development
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
 
Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 edition
 
Upmc tpdev1
Upmc tpdev1Upmc tpdev1
Upmc tpdev1
 
Lean Software Development & Kanban
Lean Software Development & KanbanLean Software Development & Kanban
Lean Software Development & Kanban
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The Cloud
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices6 ways DevOps helped PrepSportswear move from monolith to microservices
6 ways DevOps helped PrepSportswear move from monolith to microservices
 
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptatDominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
Dominik Veselý - Vše co jste kdy chtěli vědět o CI a báli jste se zeptat
 
Approaching risk management with your head in the cloud
Approaching risk management with your head in the cloudApproaching risk management with your head in the cloud
Approaching risk management with your head in the cloud
 

More from DroidConTLV

Mobile Development in the Information Age - Yossi Elkrief, Nike
Mobile Development in the Information Age - Yossi Elkrief, NikeMobile Development in the Information Age - Yossi Elkrief, Nike
Mobile Development in the Information Age - Yossi Elkrief, NikeDroidConTLV
 
Doing work in the background - Darryn Campbell, Zebra Technologies
Doing work in the background - Darryn Campbell, Zebra TechnologiesDoing work in the background - Darryn Campbell, Zebra Technologies
Doing work in the background - Darryn Campbell, Zebra TechnologiesDroidConTLV
 
No more video loss - Alex Rivkin, Motorola Solutions
No more video loss - Alex Rivkin, Motorola SolutionsNo more video loss - Alex Rivkin, Motorola Solutions
No more video loss - Alex Rivkin, Motorola SolutionsDroidConTLV
 
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
Mobile at Scale: from startup to a big company - Dor Samet, Booking.comMobile at Scale: from startup to a big company - Dor Samet, Booking.com
Mobile at Scale: from startup to a big company - Dor Samet, Booking.comDroidConTLV
 
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, ClimacellLiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, ClimacellDroidConTLV
 
MVVM In real life - Lea Cohen Tannoudji, Lightricks
MVVM In real life - Lea Cohen Tannoudji, LightricksMVVM In real life - Lea Cohen Tannoudji, Lightricks
MVVM In real life - Lea Cohen Tannoudji, LightricksDroidConTLV
 
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)DroidConTLV
 
Building Apps with Flutter - Hillel Coren, Invoice Ninja
Building Apps with Flutter - Hillel Coren, Invoice NinjaBuilding Apps with Flutter - Hillel Coren, Invoice Ninja
Building Apps with Flutter - Hillel Coren, Invoice NinjaDroidConTLV
 
New Android Project: The Most Important Decisions - Vasiliy Zukanov
New Android Project: The Most Important Decisions - Vasiliy ZukanovNew Android Project: The Most Important Decisions - Vasiliy Zukanov
New Android Project: The Most Important Decisions - Vasiliy ZukanovDroidConTLV
 
Designing a Design System - Shai Mishali, Gett
Designing a Design System - Shai Mishali, GettDesigning a Design System - Shai Mishali, Gett
Designing a Design System - Shai Mishali, GettDroidConTLV
 
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
The Mighty Power of the Accessibility Service - Guy Griv, PepperThe Mighty Power of the Accessibility Service - Guy Griv, Pepper
The Mighty Power of the Accessibility Service - Guy Griv, PepperDroidConTLV
 
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDevKotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDevDroidConTLV
 
Flutter State Management - Moti Bartov, Tikal
Flutter State Management - Moti Bartov, TikalFlutter State Management - Moti Bartov, Tikal
Flutter State Management - Moti Bartov, TikalDroidConTLV
 
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
Reactive UI in android - Gil Goldzweig Goldbaum, 10bisReactive UI in android - Gil Goldzweig Goldbaum, 10bis
Reactive UI in android - Gil Goldzweig Goldbaum, 10bisDroidConTLV
 
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
Fun with flutter animations - Divyanshu Bhargava, GoHighLevelFun with flutter animations - Divyanshu Bhargava, GoHighLevel
Fun with flutter animations - Divyanshu Bhargava, GoHighLevelDroidConTLV
 
DroidconTLV 2019
DroidconTLV 2019DroidconTLV 2019
DroidconTLV 2019DroidConTLV
 
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, MondayOk google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, MondayDroidConTLV
 
Introduction to React Native - Lev Vidrak, Wix
Introduction to React Native - Lev Vidrak, WixIntroduction to React Native - Lev Vidrak, Wix
Introduction to React Native - Lev Vidrak, WixDroidConTLV
 
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
Bang-Bang, you have been hacked - Yonatan Levin, KolGeneBang-Bang, you have been hacked - Yonatan Levin, KolGene
Bang-Bang, you have been hacked - Yonatan Levin, KolGeneDroidConTLV
 
Educating your app – adding ML edge to your apps - Maoz Tamir
Educating your app – adding ML edge to your apps - Maoz TamirEducating your app – adding ML edge to your apps - Maoz Tamir
Educating your app – adding ML edge to your apps - Maoz TamirDroidConTLV
 

More from DroidConTLV (20)

Mobile Development in the Information Age - Yossi Elkrief, Nike
Mobile Development in the Information Age - Yossi Elkrief, NikeMobile Development in the Information Age - Yossi Elkrief, Nike
Mobile Development in the Information Age - Yossi Elkrief, Nike
 
Doing work in the background - Darryn Campbell, Zebra Technologies
Doing work in the background - Darryn Campbell, Zebra TechnologiesDoing work in the background - Darryn Campbell, Zebra Technologies
Doing work in the background - Darryn Campbell, Zebra Technologies
 
No more video loss - Alex Rivkin, Motorola Solutions
No more video loss - Alex Rivkin, Motorola SolutionsNo more video loss - Alex Rivkin, Motorola Solutions
No more video loss - Alex Rivkin, Motorola Solutions
 
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
Mobile at Scale: from startup to a big company - Dor Samet, Booking.comMobile at Scale: from startup to a big company - Dor Samet, Booking.com
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
 
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, ClimacellLiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
 
MVVM In real life - Lea Cohen Tannoudji, Lightricks
MVVM In real life - Lea Cohen Tannoudji, LightricksMVVM In real life - Lea Cohen Tannoudji, Lightricks
MVVM In real life - Lea Cohen Tannoudji, Lightricks
 
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
 
Building Apps with Flutter - Hillel Coren, Invoice Ninja
Building Apps with Flutter - Hillel Coren, Invoice NinjaBuilding Apps with Flutter - Hillel Coren, Invoice Ninja
Building Apps with Flutter - Hillel Coren, Invoice Ninja
 
New Android Project: The Most Important Decisions - Vasiliy Zukanov
New Android Project: The Most Important Decisions - Vasiliy ZukanovNew Android Project: The Most Important Decisions - Vasiliy Zukanov
New Android Project: The Most Important Decisions - Vasiliy Zukanov
 
Designing a Design System - Shai Mishali, Gett
Designing a Design System - Shai Mishali, GettDesigning a Design System - Shai Mishali, Gett
Designing a Design System - Shai Mishali, Gett
 
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
The Mighty Power of the Accessibility Service - Guy Griv, PepperThe Mighty Power of the Accessibility Service - Guy Griv, Pepper
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
 
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDevKotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
 
Flutter State Management - Moti Bartov, Tikal
Flutter State Management - Moti Bartov, TikalFlutter State Management - Moti Bartov, Tikal
Flutter State Management - Moti Bartov, Tikal
 
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
Reactive UI in android - Gil Goldzweig Goldbaum, 10bisReactive UI in android - Gil Goldzweig Goldbaum, 10bis
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
 
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
Fun with flutter animations - Divyanshu Bhargava, GoHighLevelFun with flutter animations - Divyanshu Bhargava, GoHighLevel
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
 
DroidconTLV 2019
DroidconTLV 2019DroidconTLV 2019
DroidconTLV 2019
 
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, MondayOk google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
 
Introduction to React Native - Lev Vidrak, Wix
Introduction to React Native - Lev Vidrak, WixIntroduction to React Native - Lev Vidrak, Wix
Introduction to React Native - Lev Vidrak, Wix
 
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
Bang-Bang, you have been hacked - Yonatan Levin, KolGeneBang-Bang, you have been hacked - Yonatan Levin, KolGene
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
 
Educating your app – adding ML edge to your apps - Maoz Tamir
Educating your app – adding ML edge to your apps - Maoz TamirEducating your app – adding ML edge to your apps - Maoz Tamir
Educating your app – adding ML edge to your apps - Maoz Tamir
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Maintain Perfect Product Architecture in Fast-Paced Startups

  • 1. HOW TO MAINTAIN A PERFECT PRODUCT ARCHITECTURE IN A NON-STOP START-UP
  • 2. HOW TO MAINTAIN A PERFECT PRODUCT ARCHITECTURE IN A NON-STOP START-UP DECENT
  • 3. INTERNAL AND CONFIDENTIAL 3 Introduction • We want to develop a nice and tidy, "textbook" architecture. • It all seems so simple and elegant before we start to code. • After 3 months is all spaghetti code full of hacks • WHY?
  • 4. INTERNAL AND CONFIDENTIAL 4 The traits of developing consumer apps • No specific customer • Usually improving a single product in small iterations • No "hard deadlines" (most of the time) • Product vs. Project
  • 5. INTERNAL AND CONFIDENTIAL 5 The enemies of good architecture • We move fast and cheap • As the saying goes, "pick any two" - for start ups, there are only two viable choices. • Iterations drive our progress • As start-ups usually aim for a moving target • We use a faulty deployment mechanism • We must do "traditional" release cycles • (continuous integration is a much less viable option)
  • 6. So what does it mean?
  • 7. INTERNAL AND CONFIDENTIAL 7 We move fast and cheap l Most start-ups are underpowered and very fast l There's no time to do a "proper" s/w development process l Not always you have time to plan too much ahead l We prefer to go for the MVP and iterate based on data instead of "over-engineering"  We may know what's the “right” solution, but often we need to move fast, so we just hack it
  • 8. INTERNAL AND CONFIDENTIAL 8 Iterations drive our progress l We do lots of A/B testing and then discarding the least successful code l We love our buddies in the product and design teams But they sometimes cause our code to fluctuate  If we know there's a small chance that the code will make it to production, so why not hack it?
  • 9. INTERNAL AND CONFIDENTIAL 9 We use a faulty deployment mechanism l Contrary to our backend guys, we can't deploy on a daily basis l We must go through the market, which has a way of its own l Even when we deploy, we don't necessarily get to a 100% of our user base immediately l Users can be upgrading from any historic version to the most updated one  Most "upgrade handling" & "backward compatibility" routines tend to go in as hacks
  • 10. INTERNAL AND CONFIDENTIAL 10 We must do release cycles l There's a great part of our product that must undergo manual testing (lots of UI testing, lots of UX testing, lots of "this doesn't feel right" issues...) l The market cycle which can't be too frequent l This means that many features are stacked up into every increment  Beware of the "Last-minute-before-the- version-release" bug fixes are usually the "least- change" hacks instead of the correct solution.
  • 11. INTERNAL AND CONFIDENTIAL 11 Hacks are a necessary evil l It's what allows us get it ready in time l They're still evil, though. l Hacks are what makes us fail in the long run
  • 12. So how do we do it?
  • 13. INTERNAL AND CONFIDENTIAL 13 So how do we do it? l Accept reality l Know what you want, and what you don't l Manage your debt l Mark your target l Make a plan
  • 14. INTERNAL AND CONFIDENTIAL 14 Accept reality l You'll never get to that spiffy architecture you're dreaming about l Unless your startup died or you've been acquired by Google and work on a side project there l Your job is to maintain an acceptable architecture (with a smile on your face)
  • 15. INTERNAL AND CONFIDENTIAL 15 Know what you want / Know what you don't l Good architecture isn't an absolute good l The only reasons to have good software architecture are: To enable fast & cheap feature development in the future To have a more robust (= high quality, less testing) product l And it should be cost effective
  • 16. INTERNAL AND CONFIDENTIAL 16 Manage your debt l Each time a hack goes in, write it down in your HackBook(tm) l Remember thy hacks as they should trouble your sleep l This is where code review comes in handy You don't necessarily control each and every commit, but at least make sure you know them
  • 17. INTERNAL AND CONFIDENTIAL 17 Mark your target l You must know where you want to be eventually l Define the critical modules who need the most attention and which are probably not worth the trouble l Don't waste time explaining this to non- developers (just joking (but seriously...)) This is a continuous task which should become part of your day-to-day work There's no point in advocating for prioritization and allocating resources for it
  • 18. INTERNAL AND CONFIDENTIAL 18 Make a plan l Fix your app with a set of well thought of small refactors Don't branch and fix on your own and expect a big ceremony when you merge back
  • 19. INTERNAL AND CONFIDENTIAL 19 Refactors? l Code refactoring is the process of restructuring existing computer code – changing the factoring – without changing its external behavior. Refactoring improves nonfunctional attributes of the software.
  • 20. INTERNAL AND CONFIDENTIAL 20 Make the time for doing the refactors - it's your responsibility l Try to overload a required "product feature" with one of yours planned refactors l Whenever you have a small break - fix one hack off the list (it feels good)
  • 21. How we do it at EverythingMe? (a few examples) PRESENTATION NAME GOES HERE
  • 22. INTERNAL AND CONFIDENTIAL 22 A/B testing management l“Remote controlled” feature flags lA/B testing mechanism lExact targeting (device model/os version/client version) lRemoves hard coded “ifs” from the code lProvides a framework to isolate temporary/provisional code
  • 23. INTERNAL AND CONFIDENTIAL 23 A/B testing management lJSON stored on server, parsed in client "new-button-green-or-blue": { "weight": 20, "conditions": [ { "screen-density": [ 240 ], "!locales": [ "en_US", "en_UK", "en_GB" ], "os-versions": [ 14, 15,16, 17, 18 ] } ], “variants”: { “green-button”: { “weight”: 50, “parameters”: { “color”: “#00ff00” } }, “blue-button”: { “weight”: 50, “parameters”: { “color”: “#0000ff” } } } }
  • 24. INTERNAL AND CONFIDENTIAL 24 Upgrade Management lSafe and robust module to handle (multiple) version upgrade migrations lMakes sure that all backward compatibility code stays in one place.
  • 25. INTERNAL AND CONFIDENTIAL 25 Follow us All these modules will be open-sourced in the upcoming weeks. Follow us at: https://github.com/EverythingMe http://geeks.everything.me