Software Management for Tech Startups
About Me
● Mahmoud Atef Abdelsamie.
● Worked @IBM for 9 Years as
Software Engineer.
● CTO, Co-founder and the Technical
Product Manager of flowngoo.com for
3 years.
● A hardcore developer, passionate
about Technologies, Agile & Software
Architecture.
Agenda
● Traits of startup.
● Small sprints (Validated Learning).
● Lean backlog (MVP).
● Trunk-based development.
● Trust your tests.
● Test on production.
● Continuous Delivery / Deployment
● Evolutionary Architecture
Traits of startup (Lean Startup)
● “A human institution designed to create a
new product or service under conditions of
extreme uncertainty”.
● Entrepreneurs Are Everywhere.
● Entrepreneurship Is Management.
● Validated Learning.
● Build-measure-learn.
Small Sprints (Validated Learning)
● Little’s Law: Cycle Time = Work in Progress (WIP) / Throughput
● Decide the shortest to get Validated Learning. (Design Sprint ?!)
● Fast feedback, give a team more opportunities to improve.
● Create pressure, increases the performance of the team.
● Less interruptions
● Consistent team pace.
● Small failures.
Lean backlog (MVP)
● Backlogs should answer a single question: ‘What’s next?’
● Backlogs should target the Minimum Viable/Sellable Product.
● Big backlogs reduce productivity.
● Good Backlog Should Be:
○ Small: about 100 items are sufficient for future planning
○ Structured: Epic -> Story -> Task
○ Just In time : stories in the next sprint are ready (detailed, designed, no blockers)
○ User Centric: each story provides end-to-end user value.
Trunk-based Development
● All commits go to the trunk/master branch.
● When release is decided a new branch is created for the release.
● If there is fix needed, it will be committed to master, then cherry-picked to the
release branch.
Trust your tests (unit tests)
● Keeps you out of the debugger!
● Reduces bugs in new features and
in existing features.
● Reduces the cost of change.
● Improves design.
● Encourages refactoring.
● Forces you to slow down and think.
● Speeds up development by
eliminating waste.
Test On Production
● Sandbox accounts: Test the services without
taking real effect. Or taking a temp effect for short
time.
● Dark launch: Double user requests on the old and
new versions to test the effect of the changes.
● Canary releases: To small set of users.
● Blue-Green release: Roll out changes gradually.
● A/B testing: To get fast feedback from user
groups.
● Feature flags: To decouple feature rollout from
code deployment.
Continuous Delivery / Deployment
● Get changes into production safely and quickly.
● Make deployments predictable, routine affairs that
can be performed on demand.
● High quality, low risk, low time to market, fast
feedback, happy team.
Evolutionary Architecture
● An evolutionary architecture designs for incremental change in an
architecture as a first principle.
● Organized Around Business Capabilities (Bounded Context).
● Modularity and Coupling (Microservices).
● Experimentation (A/B testing, canary releases .. etc).
References
● http://www.agileadvice.com/2014/06/12/howtoapplyagile/21-tips-on-choosing-
a-sprint-length/
● https://trunkbaseddevelopment.com
● https://continuousdelivery.com/
● https://featureflags.io/
● https://medium.com/@copyconstruct/testing-in-production-the-safe-way-
18ca102d0ef1
● https://www.belatrixsf.com/blog/an-introduction-to-testing-in-production/
● https://www.thoughtworks.com/insights/blog/microservices-evolutionary-
architecture

Software management for tech startups

  • 1.
  • 2.
    About Me ● MahmoudAtef Abdelsamie. ● Worked @IBM for 9 Years as Software Engineer. ● CTO, Co-founder and the Technical Product Manager of flowngoo.com for 3 years. ● A hardcore developer, passionate about Technologies, Agile & Software Architecture.
  • 3.
    Agenda ● Traits ofstartup. ● Small sprints (Validated Learning). ● Lean backlog (MVP). ● Trunk-based development. ● Trust your tests. ● Test on production. ● Continuous Delivery / Deployment ● Evolutionary Architecture
  • 4.
    Traits of startup(Lean Startup) ● “A human institution designed to create a new product or service under conditions of extreme uncertainty”. ● Entrepreneurs Are Everywhere. ● Entrepreneurship Is Management. ● Validated Learning. ● Build-measure-learn.
  • 5.
    Small Sprints (ValidatedLearning) ● Little’s Law: Cycle Time = Work in Progress (WIP) / Throughput ● Decide the shortest to get Validated Learning. (Design Sprint ?!) ● Fast feedback, give a team more opportunities to improve. ● Create pressure, increases the performance of the team. ● Less interruptions ● Consistent team pace. ● Small failures.
  • 6.
    Lean backlog (MVP) ●Backlogs should answer a single question: ‘What’s next?’ ● Backlogs should target the Minimum Viable/Sellable Product. ● Big backlogs reduce productivity. ● Good Backlog Should Be: ○ Small: about 100 items are sufficient for future planning ○ Structured: Epic -> Story -> Task ○ Just In time : stories in the next sprint are ready (detailed, designed, no blockers) ○ User Centric: each story provides end-to-end user value.
  • 7.
    Trunk-based Development ● Allcommits go to the trunk/master branch. ● When release is decided a new branch is created for the release. ● If there is fix needed, it will be committed to master, then cherry-picked to the release branch.
  • 8.
    Trust your tests(unit tests) ● Keeps you out of the debugger! ● Reduces bugs in new features and in existing features. ● Reduces the cost of change. ● Improves design. ● Encourages refactoring. ● Forces you to slow down and think. ● Speeds up development by eliminating waste.
  • 9.
    Test On Production ●Sandbox accounts: Test the services without taking real effect. Or taking a temp effect for short time. ● Dark launch: Double user requests on the old and new versions to test the effect of the changes. ● Canary releases: To small set of users. ● Blue-Green release: Roll out changes gradually. ● A/B testing: To get fast feedback from user groups. ● Feature flags: To decouple feature rollout from code deployment.
  • 10.
    Continuous Delivery /Deployment ● Get changes into production safely and quickly. ● Make deployments predictable, routine affairs that can be performed on demand. ● High quality, low risk, low time to market, fast feedback, happy team.
  • 11.
    Evolutionary Architecture ● Anevolutionary architecture designs for incremental change in an architecture as a first principle. ● Organized Around Business Capabilities (Bounded Context). ● Modularity and Coupling (Microservices). ● Experimentation (A/B testing, canary releases .. etc).
  • 12.
    References ● http://www.agileadvice.com/2014/06/12/howtoapplyagile/21-tips-on-choosing- a-sprint-length/ ● https://trunkbaseddevelopment.com ●https://continuousdelivery.com/ ● https://featureflags.io/ ● https://medium.com/@copyconstruct/testing-in-production-the-safe-way- 18ca102d0ef1 ● https://www.belatrixsf.com/blog/an-introduction-to-testing-in-production/ ● https://www.thoughtworks.com/insights/blog/microservices-evolutionary- architecture