Kunal is an IIT Delhi graduate and a terrific software engineer. During his college he was an indie hacker and sold a micro-saas which made him $150K. Kunal joins Facebook as a fresher… Kunal understands that reusing software is the key to faster, better releases. He always keeps his code in the utils/reusable folders that he can reuse across application. Facebook is a growing company back then and was hiring the best people across the world. SatyaSundar an ex LPU grad and a brilliant mind from India joined FB as a Staff SWE. The frontend engineering was a complex challenge back then for companies. The frameworks were slow and there was no solution in sight. Every team used there own framework or used custom made solution for there use case. Mark, Satya and other senior engineers decided to find the best framework in the company. Every team showcased there work but none of them was beating the benchmark. It was late in the evening at Seattle and Kunal bursts in the meeting room.. Kunal , “I have something to show” Satya, “If its a framework we’ll see it tomorrow” Kunal, “No it’s my personal project that I use to build UI” Satya, “What is it?” Kunal, “This is a small algorithm that helps me render UI component using virtual DOM. I can write components using JSX as well. All made by me.” Satya, “OK! Run the benchmark tests” The results shocked everyone… Kunal’s small project beats all the frameworks by 75% Mark, Satya, Sam, Chris everyone was shocked. They found the solution. Mark asks Kunal, “Why didn’t you let anyone know about this?” Kunal, “I have sent mails with the subject ReactJS a JavaScript library for building user interfaces” Satya, “Okay, have you released it on the package management tool?” Kunal, “No, why do we need package management? Anyone can clone the repo and start using it.. After all its the same thing right?” Satya, “Oh dear Kunal, do you know about the Reuse Release Principle?” Kunal, “No!” Satya, “Come we’ll learn and do the needful” —— The Reuse Release Principle says: The granule of reuse is the granule of release. It means that components that are intended to be reused should be released and versioned as a group. The principle emphasises that in order for a component to be reusable, it must be tracked through a release process, similar to how a full fledged application is tracked. This requires: 1/ Versioning 2/ Release Mgmt 3/ Independent Development and Release But why this is important because it: 1/ Facilitates Reuse - Teams can choose which version to use based on there requirement. 2/ Reduces Risk - Breaking changes can be prevented on a working application 3/ Improves Maintainability - Its easier to rollback incase of breaking issues. In real world software development, no team is going to use a software without proper versioning as it becomes an unpredictable component in the entire software. Unpredictability causes unwanted issues and no one wants that in a Software. ——- Things to consider here: 1. Reuse Release Principle is not a versioning principle but also a way of pushing confidence to consumers. 2. RRP is the reason for all version numbers that we see in NPM or other packages. 3. Kunal and every character is fictional and some words are dramatic for storytelling purposes. 4. Don’t stop here learn in depth now on Wiki.. — Things to do now: Like, Comment and Repost. ⚡️Follow me for more content like this. I am Sagar, a Software Architect simplifying building software and career in tech.
@sagar_codes First time completely read a tech tweet which is so long . Great write up and liked it and most importantly understood it. Amazing!!
@sagar_codes Hey Sagar! Thanks for sharing this, really interesting! 🙌🏼
@sagar_codes I always learn something by reading your tweets. Worth reading 😉. Thanks @sagar_codes 💯🙏
@sagar_codes The art of storytelling combined with a concept explanation makes it easy to correlate the two. Thank you, Sagar!
@sagar_codes Hello sir, I wanted to connect with you on Topmate. Could you please open the slots. Could you please add a mock interview as well. I would help a lot of Devs.
@sagar_codes Hi Sagar Bhai, nice post 👍 Can you tell more about what kind of utility codes we can release for package management?
@sagar_codes bhaiya can i dm u ? i need some career advice?
@sagar_codes Hey Man that's a nicee read!!! Really wish our clg had these types!!