When designing a software system, clarifying the business requirements should be done first to establish a common understanding between the product manager and the engineer on what the software system restraints and required components will be. This stage of designing a software system is a critical point for determining what you will need to know in later discussions involving the system’s interfaces, data models, and bottlenecks.
An engineer is primarily responsible for helping the product manager procure a cogent list of business requirements by inquiring into how the product will functions. Avoiding things related to customer market research, pose questions…
Playing with Problems is a standalone article series where I discuss in-depth the solution and concepts behind technical puzzles. The format for this series allows the reader to read the problem, solution, and problem analysis.
Given two lists
B is an anagram of
B is an anagram of
B is made by randomizing the order of the elements in
We want to find an index mapping
B. A mapping
P[i] = j means the
ith element in
A appears in
B at index
This series was written as a way to solidify and share my experience and perspective on system design interviews for software developers. Like many, I initially had reluctance to prepare myself for the interview spectacle of LeetCode and System Designs. Through years of practical experience, I’ve come to light in understanding the great value that comes out of having colleagues who were willing to spend their time preparing for these types of interview questions, and I hope this series will impart a new perspective to anyone reluctant to shoulder the preparatory burden of interviewing.
Like many procedures in business, designing…
You’re a new engineer working for Cool Company and just got done planning your sprint, and your product team makes a request that you create a new UI element for Big Business. You go to your project’s component directory to create
<BigBusinessCardButton/> , but you find that a
<SmallBusinessCardButton/> already exists!
Simple enough, you copy and paste the code from
<BigBusinessButton/> and change a few hardcoded values. After all, you have a lot of work in not enough time. This continues with
<CreditCardButton/> , and etc...
With only a few buttons, things have gotten pretty tricky. To…
Simplicity is prerequisite for reliability.