SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Random thoughts and dev 
practices / advices to 
build a great product 
The Family - 09/09/14
Language, framework, libraries 
How to make a good reasonable choice
Choose your language 
3 
Chose and use the language you are the most comfortable with. 
• All languages out there have their own 
advantages and drawbacks 
• They are fairly equivalent and all gives you the 
sufficient tools to build your app 
• Maybe just try to choose an open source 
language
Choose your framework 
4 
You might choose one 
• Not choosing an existing framework leads to create 
and maintain your own custom one 
• There are a lot of good frameworks out there: 
Backend: Symfony2, RoR, Django, Express.. 
Frontend: Ember.js, Angular.js, React, Backbone.. 
• Choosing a framework will make you code less non-business 
centric code and rely on an existing 
community for quality, efficiency and velocity for 
that.
Choose your libraries 
5 
Don’t reinvent the wheel 
• Before coding anything, search if someone did not 
already faced your problem and came with an open 
source library doing the job 
• Look for contributors, recent activity, known 
limitations and bugs 
• Look for a test suite 
• Contribute!
Use the right tools 
They will ease your life and increase both your productivity 
and quality
Use the right tools 
7 
Use a versioning tool (for example, GIT) 
• Even alone in a project, more importantly if you 
are many, use a versioning tool. 
• Git, SVN, Mercurial… but cool kids use Git! 
• Couple it with collaborative apps (Github) 
• Fork, branch, merge, rebase, push, amend.. use 
and abuse git features!
Use the right tools 
8 
Use testing tools & platforms 
• Test all your projects 
• Use effective and quick command-line unit test 
suites (PHPUnit, Qunit,..) 
• Use BDD tools (Behat, Cucumber,..) 
• Use continuous integration solutions (Travis, 
Shippable, CodeShip…) 
• Use code coverage tools (but don’t abuse)
Use the right tools 
9 
Use tools to monitor and log 
• Log everything (Logstash, Kibana, Loggly,..) 
• Monitor your app (Nagios, New Relic, Munin..) 
• Log your product features (Mixpanel) 
• Log your users (Intercom) 
• Log your uptime (Pingdom)
Test your application 
Save your time, increase your quality
Test your application 
11 
Tests are great 
• Tests fix a behavior / function api and ensure 
nobody breaks it without noticing in the future 
• Tests allows you to break things without fear 
when you refactor 
• Test might allow you to code faster!
Test your application 
12 
Use unit testing (UT) 
• UT are very simple to write, very fast to 
execute 
• Your more complex and critical parts must be 
unit tested 
• Run occasionally some coverage to see what 
your tests are really testing. 100% coverage is a 
lure and the best way to loose time!
Test your application 
13 
Use behavioral and acceptance tests 
• Acceptance tests are hard to write but great to 
ensure your app is working and your unit tested 
modules are doing great together 
• End-to-end acceptance tests are longer to be 
run, so don’t overdo them and focus on the 
most important ones (test only critical paths 
and end user success responses)
Be agile, have some processes 
Scrum, Kanban, and other agile 
methodologies..
Be agile, have some processes 
15 
A well coded application needs some development rigor 
• Try to forecast the most accurately possible your 
upcoming development week (or upcoming two weeks) 
• Try to create minimal code tasks with only one 
concern, and estimate delays 
• A task is not completed until unit tested and human 
tested / accepted 
• Talk. Every day. With other developers in your team. 
Even with your partners or non tech people. Explaining 
your problems helps you to order things in your mind!
Be agile, have some processes 
16 
• You might use Scrum from the books, scrum adapted to 
your own need, Kanban, other development agile 
frameworks… 
.. the most important thing is to be able to estimate delays and 
plan accordingly to be able to make good code while shipping 
fast!
Startup 101 business oriented dev™ 
You’re building your startup app. Ship fast. Iterate fast
Startup 101 business oriented dev™ 
18 
Write modular decoupled code 
• Wrap almost everything in classes, methods, 
providers, factories, adapters.. All your 
codebase must be micro-services working all 
together 
• That means that if you pivot quite often, you’ll 
“just” have to refactor some services and 
assemble them differently
Startup 101 business oriented dev™ 
19 
Do not overcomplicate things 
• Do not implement early caching 
• Do not implement early complex stack 
• Do not over factorize 
• Write fast easy to understand and easy to 
modify code to ship new features and new 
improvements
Startup 101 business oriented dev™ 
20 
Monitor & test your code 
• Write efficient UT & functional tests 
• No more than 60% coverage, only critical parts 
and critical user paths 
• Watch your logs 
• Watch your application performances 
• Refacto only if business needed
Thank you! 
@guillaumepotier

Mais conteúdo relacionado

Mais procurados

Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itFarooq Ali
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltBrett Tramposh
 
Introduction to Test Automation
Introduction to Test AutomationIntroduction to Test Automation
Introduction to Test AutomationPekka Klärck
 
The four generations of test automation
The four generations of test automationThe four generations of test automation
The four generations of test automationrenard_vardy
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldWinston Laoh
 
Best practices for writing good automated tests
Best practices for writing good automated testsBest practices for writing good automated tests
Best practices for writing good automated testsFelipe Lima
 
AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?Rob Brown
 
The StartUp Agency - A Case Study on CFPB
The StartUp Agency - A Case Study on CFPBThe StartUp Agency - A Case Study on CFPB
The StartUp Agency - A Case Study on CFPBGovLoop
 
The Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality AssuranceThe Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality AssuranceWebcsonsultsEU
 
Automated testing overview
Automated testing overviewAutomated testing overview
Automated testing overviewAlex Pop
 
Three Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility DefectsThree Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility DefectsSean Kelly
 
Building an Accessible Component Library
Building an Accessible Component LibraryBuilding an Accessible Component Library
Building an Accessible Component LibraryAri Rizzitano
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testingDuy Tan Geek
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous IntegrationChristopher Read
 

Mais procurados (20)

Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating it
 
Specification by example
Specification by exampleSpecification by example
Specification by example
 
How to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance ToolbeltHow to Add Test Automation to your Quality Assurance Toolbelt
How to Add Test Automation to your Quality Assurance Toolbelt
 
Introduction to Test Automation
Introduction to Test AutomationIntroduction to Test Automation
Introduction to Test Automation
 
The four generations of test automation
The four generations of test automationThe four generations of test automation
The four generations of test automation
 
UPC Plone Testing Talk
UPC Plone Testing TalkUPC Plone Testing Talk
UPC Plone Testing Talk
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps World
 
Best practices for writing good automated tests
Best practices for writing good automated testsBest practices for writing good automated tests
Best practices for writing good automated tests
 
AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?AgileDC15 I'm Using Chef So I'm DevOps Right?
AgileDC15 I'm Using Chef So I'm DevOps Right?
 
Polyglot engineering
Polyglot engineeringPolyglot engineering
Polyglot engineering
 
The StartUp Agency - A Case Study on CFPB
The StartUp Agency - A Case Study on CFPBThe StartUp Agency - A Case Study on CFPB
The StartUp Agency - A Case Study on CFPB
 
The Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality AssuranceThe Clash Between Devops and Quality Assurance
The Clash Between Devops and Quality Assurance
 
Automated testing overview
Automated testing overviewAutomated testing overview
Automated testing overview
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Three Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility DefectsThree Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
Three Developer Behaviors to Eliminate 85 Percent of Accessibility Defects
 
Building an Accessible Component Library
Building an Accessible Component LibraryBuilding an Accessible Component Library
Building an Accessible Component Library
 
DevOps Unicorns
DevOps UnicornsDevOps Unicorns
DevOps Unicorns
 
Becoming a better programmer - unit testing
Becoming a better programmer - unit testingBecoming a better programmer - unit testing
Becoming a better programmer - unit testing
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous Integration
 

Semelhante a Random thoughts and dev practices / advices to build a great product

Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austinDev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austinMatt Tesauro
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for youAmbientia
 
10 skills developers should invest in for 2014
10 skills developers should invest in for 201410 skills developers should invest in for 2014
10 skills developers should invest in for 2014Pakorn Weecharungsan
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Mobile media module part 6 - app development rev-mf
Mobile media module   part 6 - app development rev-mfMobile media module   part 6 - app development rev-mf
Mobile media module part 6 - app development rev-mfMichelle Ferrier
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with djangoYann Malet
 
Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP WorldIdaf_1er
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and ToolingBora Bilgin
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptHitesh Kumar
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechIIITA
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleCloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleMark Andersen
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Maven Logix
 

Semelhante a Random thoughts and dev practices / advices to build a great product (20)

Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austinDev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
10 skills developers should invest in for 2014
10 skills developers should invest in for 201410 skills developers should invest in for 2014
10 skills developers should invest in for 2014
 
Software testing
Software testingSoftware testing
Software testing
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Mobile media module part 6 - app development rev-mf
Mobile media module   part 6 - app development rev-mfMobile media module   part 6 - app development rev-mf
Mobile media module part 6 - app development rev-mf
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
 
Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
 
Development Processes and Tooling
Development Processes and ToolingDevelopment Processes and Tooling
Development Processes and Tooling
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_ppt
 
Enterprise PHP
Enterprise PHPEnterprise PHP
Enterprise PHP
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btech
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleCloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
 
Agile
AgileAgile
Agile
 
Kku2011
Kku2011Kku2011
Kku2011
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
 

Último

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
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
 

Último (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
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
 

Random thoughts and dev practices / advices to build a great product

  • 1. Random thoughts and dev practices / advices to build a great product The Family - 09/09/14
  • 2. Language, framework, libraries How to make a good reasonable choice
  • 3. Choose your language 3 Chose and use the language you are the most comfortable with. • All languages out there have their own advantages and drawbacks • They are fairly equivalent and all gives you the sufficient tools to build your app • Maybe just try to choose an open source language
  • 4. Choose your framework 4 You might choose one • Not choosing an existing framework leads to create and maintain your own custom one • There are a lot of good frameworks out there: Backend: Symfony2, RoR, Django, Express.. Frontend: Ember.js, Angular.js, React, Backbone.. • Choosing a framework will make you code less non-business centric code and rely on an existing community for quality, efficiency and velocity for that.
  • 5. Choose your libraries 5 Don’t reinvent the wheel • Before coding anything, search if someone did not already faced your problem and came with an open source library doing the job • Look for contributors, recent activity, known limitations and bugs • Look for a test suite • Contribute!
  • 6. Use the right tools They will ease your life and increase both your productivity and quality
  • 7. Use the right tools 7 Use a versioning tool (for example, GIT) • Even alone in a project, more importantly if you are many, use a versioning tool. • Git, SVN, Mercurial… but cool kids use Git! • Couple it with collaborative apps (Github) • Fork, branch, merge, rebase, push, amend.. use and abuse git features!
  • 8. Use the right tools 8 Use testing tools & platforms • Test all your projects • Use effective and quick command-line unit test suites (PHPUnit, Qunit,..) • Use BDD tools (Behat, Cucumber,..) • Use continuous integration solutions (Travis, Shippable, CodeShip…) • Use code coverage tools (but don’t abuse)
  • 9. Use the right tools 9 Use tools to monitor and log • Log everything (Logstash, Kibana, Loggly,..) • Monitor your app (Nagios, New Relic, Munin..) • Log your product features (Mixpanel) • Log your users (Intercom) • Log your uptime (Pingdom)
  • 10. Test your application Save your time, increase your quality
  • 11. Test your application 11 Tests are great • Tests fix a behavior / function api and ensure nobody breaks it without noticing in the future • Tests allows you to break things without fear when you refactor • Test might allow you to code faster!
  • 12. Test your application 12 Use unit testing (UT) • UT are very simple to write, very fast to execute • Your more complex and critical parts must be unit tested • Run occasionally some coverage to see what your tests are really testing. 100% coverage is a lure and the best way to loose time!
  • 13. Test your application 13 Use behavioral and acceptance tests • Acceptance tests are hard to write but great to ensure your app is working and your unit tested modules are doing great together • End-to-end acceptance tests are longer to be run, so don’t overdo them and focus on the most important ones (test only critical paths and end user success responses)
  • 14. Be agile, have some processes Scrum, Kanban, and other agile methodologies..
  • 15. Be agile, have some processes 15 A well coded application needs some development rigor • Try to forecast the most accurately possible your upcoming development week (or upcoming two weeks) • Try to create minimal code tasks with only one concern, and estimate delays • A task is not completed until unit tested and human tested / accepted • Talk. Every day. With other developers in your team. Even with your partners or non tech people. Explaining your problems helps you to order things in your mind!
  • 16. Be agile, have some processes 16 • You might use Scrum from the books, scrum adapted to your own need, Kanban, other development agile frameworks… .. the most important thing is to be able to estimate delays and plan accordingly to be able to make good code while shipping fast!
  • 17. Startup 101 business oriented dev™ You’re building your startup app. Ship fast. Iterate fast
  • 18. Startup 101 business oriented dev™ 18 Write modular decoupled code • Wrap almost everything in classes, methods, providers, factories, adapters.. All your codebase must be micro-services working all together • That means that if you pivot quite often, you’ll “just” have to refactor some services and assemble them differently
  • 19. Startup 101 business oriented dev™ 19 Do not overcomplicate things • Do not implement early caching • Do not implement early complex stack • Do not over factorize • Write fast easy to understand and easy to modify code to ship new features and new improvements
  • 20. Startup 101 business oriented dev™ 20 Monitor & test your code • Write efficient UT & functional tests • No more than 60% coverage, only critical parts and critical user paths • Watch your logs • Watch your application performances • Refacto only if business needed