Be Fast, Be Safe, Be Ready: Technical Advice to the People who Code for Building Agile Startups
You are a startup. Your time is precious. You don't have time to lose for delivering waste. So start with what you should have done before. Be pragmatic, be wise. This is your profession, take it serious.
only being first on the market is important, but also responding to customers by adding new features and eliminating bugs fast keep customer satisfaction high.
get rid of complexity. We have to live with it. The need for speed creates an unstable, unsustainable environment, makes us stressed, less focused and less productive. It just don’t work.
work The rule is simple. It should work as expected. Bugs, errors and defects have direct negative impact on user experience and customer satisfaction.
needs You have a very limited time and a few resources to implement what you have in you mind. Crappy code is your enemy. It creates technical debt and waste all around. Debts never let you continue without paying your bills.
and often without thinking about the quality of commit messages. After you think your commit is ready to go, make it perfect by doing a code review by yourself and by writing a well- crafted commit message. Publishing is just a simple last step to share your change set with others.
and often Inventory is waste. Every single minute you keep your commits waiting to be deployed to production is waste. Never allow inventory. Integrate and deploy early and often.
the first sprint Integration is always expensive after development starts. So focus on integration tasks first. Deploy at least one line of code to production even at the very first sprint.
Validate functionality with functional & acceptance tests, check integrations via integration tests, keep your design safe via unit tests, etc. You have to write tests at any level, because your time is precious.
microservices at production, it could be a nightmare if you jump into it. Microservices requires to have devops culture, agile mindset and a new paradigm for software development. So be pragmatic.
can you be sure you can build well- crafted microservices? Make your architecture clean and modular by following related design patterns and principles. Make your monolith well-crafted first. Then if you need to scale, split it to microservices.
the only certainty. Build your architecture to eliminate dependencies and wait-times by orchestrating services in the middle of dependency graph. That allows us using stubs during development till real integration is established.