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)
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