- Greenfield vs Brownfield
- Greenfield software is the software that we design and develop from scratch. Brownfield software is one where something already exists and we have to add functionality and/or features to it.
- Obvious mostly works in greenfield software development but we occasionally work with brownfield stuff too.
- First Principles
- Documentation practices (ADR, project documentation etc.)
- Trunk Based Development (TBD)
- Use of feature flags for features that span over multiple PRs
- Habit of raising PRs everyday
- Prioritising review over writing new code (dropping everything to review a PR)
- Show the Simple repo for daily branches, continuous integration and Github Actions for having checks in place
- Code Reviews & Pull Requests
- Read the Google code review guide and highlight some important practices that we follow as a team
- Estimation Practices
- How engineers get estimations wrong?
- Estimation based on complexity and not time
- Testing
- Testing pyramid
- Unit and Integration testing
- Importance of testing
- Covariance and contra-variance in tests
- Testing codelabs for beginners:
- Test doubles: Fakes, mocks and Stubs
- Testing pyramid
- Functional Core and Imperative Shell
- Pure functions
- Imperative and functional programming basics
- Boundaries Talk by Gary Bernhardt - YouTube / Original Website
- Usage of Functional Core & Imperative Shell in above talk - Video Link
- Introduction to State Machines
- Introduction to Mobius
- Mobius onboarding
- Pairing activity using Counter example
- Test-driven development
- Introduce the login example
- Pair on drawing the state diagram for login screen
- Introduce
EffectandEffectHandler - Introduce to Views and View Renderers
- Introduce
Initand wire Mobius loop
- Individual Activity: Re-write the take-home exercise in Mobius
- Mobius onboarding