Why you should design systems that ship fast [System Design Sundays]
Sharing an amazing article from the amazing publication- Refactoring
Hey, it’s your favorite cult leader here 🐱👤
On Sundays, I will go over various Systems Design topics⚙⚙. These can be mock interviews, writeups by various organizations, or overviews of topics that you need to design better systems. 📝📝
To get access to all the articles, support my crippling chocolate milk addiction, and become a premium member of this cult, use the button below-
p.s. you can learn more about the paid plan here.
Those of that are deep into Tech Substack- the name
will ring a bell. writes insightful pieces for tech managers and leaders, covering all kinds of topics in leadership, company structures, and best practices. I love his work and recommend his newsletter on this newsletter. In this article, I will be doing a summary of one of my personal favorite Refactoring articles- Shipping Fast Changes Your Life ⚡.Skeptical about this. Take a look at 2 nuggets Luca starts with-
After surveying 2000+ companies between 2013 and 2017, Nicole Forsgren, Jez Humble and Gene Kim proved that what separates elite engineering teams from average and poor ones, is mostly how fast and often they ship.
And this-
Let’s get right into. In today’s post of Tech Made Simple, I will go over Luca’s post, summarize the findings, and add some thoughts of my own. I highly recommend that y’all check out the original and sign up for Refactoring though. It is an amazing resource.
Why Speedy Shipping is a cheat code
Why Speedy Shipping helps- There are many benefits to shipping software quickly, including:
Faster feedback loop: By shipping software more frequently, you can get feedback from users sooner, which can help you improve the product faster.
Reduced risk: By shipping smaller, more frequent changes, you reduce the risk of introducing bugs or breaking changes. Smaller ships (is that the right term?) also mean that you have to go through lesser stuff to figure out what’s messing your system.
Increased confidence: When you ship software more frequently, you become more confident in your ability to ship high-quality software. Constantly shipping high-quality code allows your teams to stack up small wins- which can be a win- which can be great mentally.
Higher Engagement: Shipping software more frequently can help to keep developers engaged in the work, since they can’t kick the can down the road as easily if they have to create production ready code all the time.
Slow Shipping Costs Money- A slow release process costs real money because you need more people. “You will need more QA because diffs are bigger and reviews are longer, you will need an SRE team to manage outages, you will need DevOps to build tools for these manual deploys, and you need will Managers to run this all.”
How can design systems that ship quicker- There are a number of things you can do to ship software more quickly, including:
Automate as much as possible: Automating your build, test, and deployment processes can save you a lot of time. We have a whole post on CI/CD and how you can implement it here. Luca has the following 2 ideal goals to hit that can be greating guiding principles-
The whole point of doing CI is to being able to do CD. That is the final goal. So:
⚡ Keep working on speed — with modern stacks, it is often the case you can literally deploy in 1 minute. But whatever technology you use, do not settle with anything more than 10-15 minutes.
🤖 Remove manual checks — or vastly reduce them. When deployment is fast and each release is small, risk and time to recover are so low that most times it is better to release and (possibly) recover than waiting for further checks beforehand.
Break down large features into smaller ones: By breaking down large features into smaller ones, you can ship them more quickly. Also makes autimated testing.
Use feature flags: These enable you to deploy new features into production, but with restricted availability. You can activate a new feature for specific users without restarting the app or deploying new code. This can be a great way to test new features before making them public. I did not know about this prior to Luca’s article, but they seem to be quite useful. Take a look at this writeup from Microsoft-
Measure your progress: Tracking your progress towards your shipping goals can help you stay motivated and on track.
Do not batch releases together. Deploy one changeset at a time to 1) deploy more often, 2) reduce risk and 3) improve ownership.
While shipping fast might seem like a cultural shift in the beginning, investing into a foundation that will help you create better systems. The juice is very worth the squeeze when it comes to building a culture of fast shipping.
That is it for this piece. I appreciate your time. As always, if you’re interested in working with me or checking out my other work, my links will be at the end of this email/post. If you like my writing, I would really appreciate an anonymous testimonial. You can drop it here. And if you found value in this write-up, I would appreciate you sharing it with more people. It is word-of-mouth referrals like yours that help me grow.
Save the time, energy, and money you would burn by going through all those videos, courses, products, and ‘coaches’ and easily find all your needs met in one place at ‘Tech Made Simple’! Stay ahead of the curve in AI, software engineering, and the tech industry with expert insights, tips, and resources. 20% off for new subscribers by clicking this link. Subscribe now and simplify your tech journey!
Using this discount will drop the prices-
800 INR (10 USD) → 640 INR (8 USD) per Month
8000 INR (100 USD) → 6400INR (80 USD) per year (533 INR /month)
Reach out to me
Use the links below to check out my other content, learn more about tutoring, reach out to me about projects, or just to say hi.
Small Snippets about Tech, AI and Machine Learning over here
If you like my writing, I would really appreciate an anonymous testimonial. You can drop it here.
To help me understand you fill out this survey (anonymous)
Check out my other articles on Medium. : https://rb.gy/zn1aiu
My YouTube: https://rb.gy/88iwdd
Reach out to me on LinkedIn. Let’s connect: https://rb.gy/m5ok2y
My Instagram: https://rb.gy/gmvuy9
My Twitter: https://twitter.com/Machine01776819