SlideShare a Scribd company logo
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

More Related Content

What's hot

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
Farooq Ali
 
Specification by example
Specification by exampleSpecification by example
Specification by example
Asier Barrenetxea
 
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
Brett Tramposh
 
Introduction to Test Automation
Introduction to Test AutomationIntroduction to Test Automation
Introduction to Test Automation
Pekka Klärck
 
The four generations of test automation
The four generations of test automationThe four generations of test automation
The four generations of test automation
renard_vardy
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps World
Winston 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
 
Polyglot engineering
Polyglot engineeringPolyglot engineering
Polyglot engineering
Klaus Salchner
 
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
GovLoop
 
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
WebcsonsultsEU
 
Automated testing overview
Automated testing overviewAutomated testing overview
Automated testing overview
Alex Pop
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Md. Enamul Haque Chowdhury
 
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
Sean Kelly
 
Building an Accessible Component Library
Building an Accessible Component LibraryBuilding an Accessible Component Library
Building an Accessible Component Library
Ari Rizzitano
 
DevOps Unicorns
DevOps UnicornsDevOps Unicorns
DevOps Unicorns
Matt O'Keefe
 
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
 

What's hot (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
 

Similar to 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-austin
Matt 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 you
Ambientia
 
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
Pakorn Weecharungsan
 
Software testing
Software testingSoftware testing
Software testing
Nico Heidtke
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
Mike Harris
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
Ahmet 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-mf
Michelle Ferrier
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
Yann 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 Tooling
Bora 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
 
Enterprise PHP
Enterprise PHPEnterprise PHP
Enterprise PHP
Mohammad Emran Hasan
 
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
SPC 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): Revisted
Mike 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 Style
Mark Andersen
 
Agile
AgileAgile
Agile
Komal2525
 
Kku2011
Kku2011Kku2011
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
 

Similar to 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
 

Recently uploaded

Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 

Recently uploaded (20)

Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 

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