Tag: Decision Making

  • How Much of a Roark Can You Afford to Be?

    How Much of a Roark Can You Afford to Be?

    Howard Roark didn’t explain his work. He built, and let it stand.
    That idea sounds clean — until you’re inside an organization.

    You do the work. You solve real problems. You make decisions that hold. And still, things don’t always move. Not because the work is wrong. Because it didn’t travel.

    So you watch. Some people say just enough — frame things a little better, get picked up faster. Not always deeper. Just easier to absorb. And the question shifts. Not is this right? but what works here?

    You can see how you’d do the same. The adjustment isn’t hard. And then you’re in a familiar place — A smart place. You’ve traded some Roark for Keating.

    And once you’ve made that trade — the Keating skills grow. You get better at the room, better at the framing, better at being picked up. More fluent. More visible. Call it the presentable Roark. Enough conviction to seem real. Enough polish to travel.

    And that’s when it gets genuinely dangerous. Because the trajectory looks right. The growth is measurable. The movement is real. The question isn’t whether. It’s how far. And what exactly is being surrendered in the process. Not skill. Not effort. Something subtler. Call it integrity, call it alignment — call it whatever makes it easier to sit with.

    That’s when the real question arrives. Not about success or growth. About limits. If some compromise works — how much is acceptable? If a small adjustment helps — how far does it go? There’s no clean line. Only movement. Slow enough to justify. Fast enough not to notice.

    And somewhere along the line — Aadha teetar, aadha bater.

  • When Pride Falls

    When Pride Falls

    The Story We Keep Telling

    Across cultures and centuries, a certain kind of story keeps appearing. A slow tortoise racing a swift hare. A young shepherd standing before a towering warrior. A lone figure confronting someone everyone believes cannot be defeated. The characters change, the setting changes, yet the pattern remains familiar. Someone powerful, confident in past victories, faces an opponent who appears vastly weaker. The outcome seems obvious long before the contest begins. Yet somewhere along the way, the mighty fall.

    We usually remember these stories as lessons about arrogance. Pride blinded the strong, we say. But that explanation tells only half the story. The other half belongs to the person standing on the weaker side of the contest. What does it feel like to face someone whose strength seems unquestionable while the world quietly assumes the outcome is already decided?

    Standing Against the Odds

    Imagine being that person. Across from someone stronger, faster, richer, or more powerful in every visible way. The verdict around you is almost unanimous. Friends hesitate. Observers whisper. Some show concern, others quiet amusement. Even well-meaning advice carries the same message: this is a battle you cannot win.

    The underdog is rarely unaware of this reality. He sees the same odds everyone else sees. He understands the gap. If the contest were repeated many times, he might lose most of them. Yet circumstances sometimes leave little room for retreat. Duty, chance, necessity, or simply refusing to step aside can lead someone into a fight they never expected to face.

    The Quiet Shift

    Something interesting happens before the contest truly begins. At some point the underdog stops calculating the outcome and confronts the possibility of defeat directly. He imagines the loss, the disappointment, the moment when observers nod and confirm what they believed all along. Strangely, once that future is accepted, something begins to change.

    Fear loosens its grip. When there is nothing left to protect, the mind becomes lighter. The stronger opponent carries the burden of reputation and expectation. His victories must continue. The underdog carries no such weight. Because defeat is already assumed, he is free in a way his opponent may not be. That freedom sharpens attention. Movements become clearer, decisions simpler, hesitation fades.

    Many contests are lost not just because of strength, but because of doubt. But once someone has accepted the possibility of losing, doubt has less space to grow. The fight becomes simpler: respond, adapt, continue.

    Strength and Habit

    At first the contest usually unfolds exactly as expected. The stronger side dominates, confirming the assumptions everyone carried into the moment. Yet the underdog stays, not because he knows he will win, but because leaving guarantees defeat.

    What unfolds next is often subtle. Success has its own quiet side effects. Repeated victories create confidence, and confidence slowly becomes habit. When someone has won many similar battles before, it becomes easy to assume the next one will follow the same pattern. Opponents begin to resemble earlier opponents. Situations begin to feel familiar.

    The powerful do not necessarily become weaker. They simply begin to repeat what has always worked. And over time, they stop looking as carefully as before.

    The Moment That Changes the Story

    When failure disappears from the imagination, small details receive less attention. A slight misjudgment or careless move may pass unnoticed because in earlier contests such moments never mattered.

    But if the opponent refuses to leave the field, those small openings can suddenly matter.

    The underdog does not become stronger in a single instant. What matters is that he is still present when opportunity appears. He has endured the early pressure, absorbed the doubts, and stayed long enough to notice something others assumed would never arrive.

    And sometimes that is enough for the story to change.

    When Courage Spreads

    Even when victory does not come immediately, something else begins to grow. Each battle removes a little more fear and adds experience. Someone who once felt uncertain becomes battle-tested. Loss stops feeling like an ending and begins to resemble preparation.

    People notice that spirit. Not the loud confidence that comes from power, but the quieter resolve of someone who keeps returning despite long odds. What begins as a single act of resistance slowly becomes visible to others.

    Courage travels quietly. One person stands. Another begins to think the same way. What once looked like an isolated challenge begins to shift the atmosphere of the contest.

    When Pride Falls

    Stories of the mighty falling appear again and again not because the weak always win, but because strength and certainty rarely remain balanced forever. Success often brings confidence, but repeated success can slowly narrow perception. When certainty becomes too comfortable, it leaves space for the unexpected challenger.

    The fall of pride rarely begins with weakness. More often it begins when judgement grows clouded by certainty. And the rise of the underdog rarely begins with sudden strength. It begins when fear slowly leaves the mind.

    Perhaps this quiet balance has long been captured in a few simple lines from Goswami Tulsidas Ji in the Ramcharitmanas:

    “जाको विधि दारुन दुख देही, ताकी मति पहिले हर लेहीं।
    जाको विधि पूरन सुख देहीं, ताकी मति निर्मल कर देहीं।”

  • When the Mind Catches Fire

    When the Mind Catches Fire

    There is a phase in life when you go to sleep with a problem — and wake up still inside it. You solve it in dreams, rearrange it in silence, test it before the day even begins. From the outside, it may look like struggle. To you, it feels alive.

    But not all fire is the same. Intensity can come from fear, from anger, or from immersion. The hours may look identical. The inner state is not.

    When fear fuels you, the mind contracts. You think in worst-case scenarios, trying to avoid loss. Even success feels like relief, not fulfillment. When anger fuels you, energy runs high but unstable. You push hard and move fast, but the center remains unsettled, and the outcome carries exhaustion with it.

    Immersion feels different. The mind expands instead of tightening. Conscious and subconscious begin working together. There is pressure, but no inner friction. You are not running from consequences; you are moving toward clarity.

    In that state, learning accelerates. Decisions require less noise. You begin to see structure where others see chaos. Logic and intuition align without argument. Life may look imbalanced for a while — meals irregular, sleep shorter, weight fluctuating. To others, it appears unsustainable. But internally, something powerful is forming.

    Weeks, months, even years later, you understand what that phase built inside you. You respond instead of react. You stay steady under complexity. You handle situations instead of being handled by them.

    The problem that once consumed you fades.

    The fire outside is handled. The flame inside keeps burning.

  • The Segmentation Pyramid: A Lens for Thinking About Complexity

    The Segmentation Pyramid: A Lens for Thinking About Complexity

    Introduction

    We live and work inside systems that are far more complex than they appear on the surface. Conversations move quickly across users, revenue, features, prioritization, strategy, risk, and long-term vision—often within the same meeting. Decks are prepared, frameworks are referenced, thoughtful arguments are made. And yet, despite all that effort, there’s a familiar feeling that tends to follow: I think I understand this now.

    That feeling rarely lasts. In the very next discussion, when the topic pivots slightly, the earlier clarity weakens. The subject is technically the same, but the angle has changed. What felt coherent a moment ago now feels incomplete. Not wrong—just insufficient. Over time, that pattern becomes hard to ignore.

    This piece comes from sitting with that discomfort for a long time and trying to understand why clarity seemed so fragile in the face of complexity.

    The Constant Wrestling and the Search for Something Abstract

    This wasn’t about lack of effort. I spent hours preparing presentations, listening carefully, asking questions, and trying to connect dots. Many discussions were genuinely insightful. People weren’t confused, and decisions weren’t careless. Each conversation made sense on its own.

    The problem was that understanding didn’t accumulate. It reset.

    A discussion about users felt solid until it turned into a discussion about revenue. A feature debate felt resolved until governance entered the picture. Strategy conversations felt coherent until execution details surfaced. Each shift felt like starting again from a new altitude, even though we were circling the same system.

    That led to a long period of searching—not for answers, but for better ways to look. Tools like Six Thinking Hats helped frame perspectives deliberately. Maslow’s pyramid lingered as a way to think about needs and motivation. My own writing over the last few years became a place to test and refine half-formed thoughts.

    Each helped in fragments. None solved the core issue. What I was really looking for was a way to hold multiple viewpoints without losing orientation—a structure that could absorb pivots instead of collapsing under them.

    Context, Asymmetry, and the Applied Lens

    This section is the heart of the idea, so it’s worth slowing down here. The moment this abstraction settled for me came from a place far removed from business: testing.

    As an engineer, the testing pyramid quietly shaped how I thought about quality. At the bottom were unit tests—many of them, fast, cheap, and easy to maintain. Above them sat integration tests—fewer, slower, and more brittle. At the top were end-to-end tests—expensive, fragile, and hard to debug, but still necessary. What made the pyramid powerful wasn’t just the categorization of test types. It was how clearly it showed asymmetry. As you moved upward, effort increased, fragility increased, and feedback slowed. At the same time, each layer clearly showed what it contained and what role it played.

    Because the structure was fixed, you could reason about quality from different angles—speed, confidence, cost, risk—without losing your place. You weren’t redefining the system each time; you were applying a different lens to the same shape. That’s why the testing pyramid worked so well as a communication tool. It aligned teams without long explanations.

    Much later, I realized the same idea applies elsewhere. Take user segmentation. If you arrange users as individuals, small companies, large organizations, and very large enterprises, the pyramid emerges naturally. Individuals form a broad base; very large enterprises sit at a narrow top. The shape captures asymmetry in scale.

    From there, clarity comes when you apply one lens at a time. Apply user count, and the base dominates. Apply revenue, and value concentrates at the top. Apply needs, and simplicity gives way to coordination and governance. Apply complexity, and it steadily increases as you move upward. The structure stays the same; only the perspective changes.

    This also explains why conversations often feel disorienting. When a discussion starts with revenue and someone introduces risk, it can feel like a derailment—unless both are being applied to the same underlying structure. With a fixed context, adding a new lens doesn’t break the conversation; it deepens it.

    In abstract terms, this is what the Segmentation Pyramid enables. It fixes the context, makes asymmetry visible, and provides a stable surface on which different perspectives can be applied. The pyramid itself isn’t the insight. It’s what allows insights to appear without breaking coherence.

    From Stumbling to Structure: Why the Pyramid Emerged

    The pyramid didn’t arrive as a deliberate design choice. It emerged once segmentation and asymmetry were clear. When you arrange entities by scale—individuals, small groups, large organizations, institutions—you naturally get a broad base and a narrow top. The shape isn’t imposed; it reveals itself.

    Looking back, the pyramid had been present in my thinking long before I noticed it. Physical pyramids exist because the shape works: a wide base, a narrowing top, stability through distribution. Maslow’s pyramid applied the same intuition to human needs. The testing pyramid did it for quality.

    What connects these isn’t symbolism. It’s variance. A pyramid lets one variable change smoothly across layers. Look at count, and the base is large while the top is small. Look at complexity, and the direction flips—simple at the base, dense and constrained at the top. The same shape holds both readings.

    Squares suggest uniformity. Stacks suggest equivalence. The pyramid makes difference visible. That’s why it became the natural container once the idea took shape.

    Exploring Examples Across Functions (Tabular Views)

    Ideally, each of the examples below would be drawn as a pyramid. For readability—and because I didn’t want to wrestle with ASCII triangles and text alignment—I’ve used tables instead. The shape stays the same in spirit; the format is just more forgiving.

    Example 1: Understanding a Business Through Customer Segments

    Lens: Customer Needs

    Customer Needs vs Customer Segment

    Lens: Problem Space

    Customer Problems vs Customer Segment

    Lens: Solutions / Features

    Customer Feature vs Customer Segmentation

    This framing alone explains why roadmap debates often feel circular: people are optimizing for different segments without saying so.

    Example 2: Learning and Skill Development

    Lens: Learning Needs

    Learning Needs vs Learner Maturity

    Lens: Failure Modes

    Learning Failures vs Learner Maturity

    Here, what looks like a content problem is often a segmentation mismatch.

    Conclusion — Documenting a Thought in Motion

    This isn’t a silver bullet, and it isn’t meant to be one. It’s simply a way of thinking that reduced some friction for me while dealing with complexity. Writing it down is less about fixing an answer and more about creating a reference point—something to return to, test, and refine.

    In that sense, this is documentation for myself as much as for fellow journey persons. Capturing a thought allows it to be checked against experience and adjusted as needed. I also expect this lens to break in places—and that, too, will be useful.

    For now, this is just a snapshot of a thought in motion, written down so it can evolve as new challenges appear.

    References

  • Anger, Fear, Mind, & Systems Thinking

    Anger, Fear, Mind, & Systems Thinking

    Decoding Anger

    I started thinking about anger long before I had words for it, mostly because it shows up without invitation, without asking for permission, and without caring whether the situation is simple or complex, fair or unfair, safe or dangerous. Anger arrives fast, almost instantaneously, and when it does, something very specific happens: the mind narrows, thinking slows or disappears, and the body prepares to act.

    Anger, in its original form, was never meant to be moral or immoral. It was meant to be useful. Over millennia, it evolved as a shoot-or-scoot response — an immediate surge of energy designed to protect the self when time was scarce and hesitation was costly. In such moments, thinking was a liability. Analysis took too long. Intuition and reflex mattered more. Anger solved that by suppressing deliberation and pushing the organism into motion.

    In that sense, anger is not a failure of intelligence. It is a biological shortcut — a way to convert threat into action without waiting for certainty.

    Decoding Fear

    Fear, often confused with anger, is something entirely different. Where anger pushes energy outward, fear pulls it inward. Instead of mobilization, there is contraction. Instead of movement, there is stillness. Fear communicates a different message to the system: do not act yet. In many situations, its function is not escape or confrontation, but waiting — letting the danger pass, letting the disturbance move on, and only then shifting quietly toward safety.

    In fear, effort feels costly and visibility feels risky. The body conserves energy, reduces exposure, and minimizes motion. Stillness, here, is not indecision; it is strategy.

    Yet fear, like anger, also suppresses the thinking mind — not because speed is required, but because analysis offers little advantage when the safest option is to remain unnoticed or unmoving. Logic narrows because options narrow.

    Anger and fear move in opposite directions, but they serve a similar purpose. Both exist to protect the self quickly. Both silence deliberation. Both trade long-term reasoning for short-term survival.

    When Anger and Fear Are Misused

    Anger and fear were shaped to be brief. They were never meant to stay. Their usefulness depended on appearing quickly, doing their work, and receding. What feels different today is not that anger and fear exist, but that they linger.

    Anger stretches beyond immediate threat and survives across conversations, hierarchies, and timelines. Fear becomes anticipatory rather than situational. In both cases, the mind remains suppressed longer than it was designed to. What was once a temporary narrowing starts to feel normal.

    This misuse is difficult to notice because things still function. Decisions are made. Actions are completed. From the outside, it can even look effective. But the work is being done with the mind only partially available.

    Over time, reflection feels slow. Pausing feels risky. The absence of thinking is mistaken for efficiency. At that point, anger and fear stop being responses. They begin to shape patterns.

    Symptoms of a Reactive System

    Anger and fear rarely move at random. Anger tends to flow outward — from positions of perceived strength toward vulnerability. It asserts and overrides. Fear moves inward. It drains energy, narrows options, and makes resistance feel costly. One pushes. The other collapses. Together, they shape behavior without needing explanation.

    When these emotions persist beyond the moments they were designed for, they begin to organize the system itself.

    One early symptom is urgency without clarity. Everything feels immediate. Speed becomes a stand-in for seriousness. Pausing feels risky, not because the situation demands it, but because the system no longer trusts stillness.

    Another is completion without understanding. Actions are taken, issues are closed, and attention moves on. The relief of finishing replaces reflection. Over time, the system becomes good at responding and poor at learning.

    Gradually, this way of operating starts to feel normal. Anger lingers. Fear becomes ambient. Thinking narrows. Familiar responses repeat. What once felt decisive hardens into reflex.

    At that point, the system is no longer reacting to events.
    It is reacting to itself.

    Which leaves a question worth holding:

    If anger and fear were meant to be brief responses, what happens when systems are shaped by their prolonged use?

    Taking the Control Back

    If anger and fear can suppress the mind, the question is not how to eliminate them, but how control returns once they appear.

    Meditation and breathing are often described as practices for calmness or relaxation, but their more practical role is different. They are mechanisms for regaining control — specifically, control over how and when energy is spent.

    The mind can generate immense energy, but breath determines its cost. Breath is slow, measurable, and always available. Through breath, the system learns restraint. Through awareness, the mind regains access to itself.

    In this sense, the mind is the source, breath is the regulator, and energy is the currency. Anger and fear are not enemies here; they are arrows. The bow remains constant, but arrows are chosen depending on the situation. The mistake is not in having arrows, but in firing them blindly or repeatedly without awareness.

    Improving the Mind: A Modern Technique (Systems Thinking)

    Once some control over internal states is established, a different question emerges — not about emotion, but about thinking.

    Much of human response is naturally linear, anthropocentric, mechanical, and ordered. We prefer simple causes, clear agents, direct fixes, and immediate results. Not because we are careless, but because complexity is expensive. Cognitive load drains energy, and the mind seeks efficiency.

    But the world increasingly resists this simplicity. Volatility, uncertainty, complexity, and ambiguity are no longer edge cases; they are the environment. In such conditions, linear responses backfire. Local fixes create distant problems. Quick reactions amplify instability.

    Systems thinking does not remove uncertainty. It increases tolerance for it. It trains the mind to hold context, to anticipate second-order effects, and to delay reaction without freezing. In doing so, it quietly upgrades both intelligence and emotional regulation. It reduces the likelihood that fear or anger will hijack decisions in environments where such hijacking is costly.

    Expected Outcome

    At this point, it is tempting to ask about being right. But that turns out to be the wrong question. Outcomes — success and failure, gain and loss — are not fully in our control. Responses are. Training the mind, regulating energy, and expanding context do not guarantee success. They reduce catastrophic errors. They improve entry conditions. They shorten recovery.

    Over time, this matters.

    Much like in investing, where buying right often matters more than selling high, life seems to reward better entries more reliably than perfect exits. Probability does not disappear, but it begins to work differently.

    Closing Reflection

    Anger and fear tend to appear when situations feel dire, when something important is at stake and the window for response feels narrow. In those moments, they arrive as reflex, not choice. That is likely how they were meant to function.

    What has slowly become clearer to me is that the difference is rarely in the situation itself. It lies in how much of it I am able to see, and how much of myself I am able to keep when pressure rises. That is not something I have achieved, and it is certainly not something that changes quickly.

    The word impossible often appears when that control is lost early — when the mind narrows, energy spills, and response collapses into habit. Occasionally, with awareness and training, the same situation looks slightly different. Not easy. Not solvable. Just less final.

    This is not about mastering outcomes or overcoming fate. Much of that remains outside reach. It is about noticing that when responses are a little less reactive, fewer moments are handed over entirely to luck.

    This way of thinking did not arrive as a conclusion. It emerged slowly, by watching patterns repeat — in moments of anger, in moments of fear, and in the quieter spaces where neither was fully in control.

    And perhaps that is enough: to notice, to adjust, and to keep returning attention to what can be trained, while accepting what cannot.

  • Cross-Functional Insights: Applying DuPont Analysis to Accelerate Personal Development

    Cross-Functional Insights: Applying DuPont Analysis to Accelerate Personal Development

    In the world of business, efficiency and profitability are key metrics that determine success. However, what if the analytical tools used to measure business performance could be applied to personal development? This post explores the idea of cross-functional thinking by applying the DuPont analysis, a well-known business efficiency model, to accelerate personal growth.

    Understanding RoE and DuPont Analysis

    What is RoE?

    Return on Equity (RoE) is a measure of a company’s profitability relative to shareholders’ equity. It indicates how efficiently a company is using its equity base to generate profits. The formula for RoE is:

    RoE = Net Income(Profit) / Shareholders’ Equity

    What is DuPont Analysis?

    The DuPont analysis breaks down RoE into three distinct components to provide deeper insights:

    1. Profit Margin: Measures how much profit a company makes for each dollar of sales. It’s calculated as: Profit Margin = Net Income / Sales
    2. Asset Turnover: Measures how efficiently a company uses its assets to generate sales. It’s calculated as: Asset Turnover = Sales / Total Assets
    3. Equity Multiplier: Reflects the company’s financial leverage. It’s calculated as: Equity Multiplier = Total Assets / Shareholders’ Equity

    The DuPont formula combines these components to explain RoE:

    RoE = Profit Margin × Asset Turnover × Equity Multiplier

    This breakdown helps in understanding the underlying factors driving RoE, offering a comprehensive view of a company’s financial health.

    The Concept of Cross-Functional Thinking

    Cross-Functional Applications Cross-functional thinking involves borrowing successful strategies from one domain and applying them to another. This innovative approach can yield unique insights and significant breakthroughs. In this case, we apply the DuPont analysis model to personal growth.

    Applying DuPont Analysis to Personal Development

    1. Skill Mastery as Profit Margin

    Just as profit margin reflects the efficiency of converting sales into profit, skill mastery represents how effectively you convert your abilities and efforts into personal achievements. Enhance your core skills, gain new competencies, and continuously improve your performance. This can be measured by the quality of your work, recognition, promotions, and feedback from peers and supervisors.

    2. Efficiency and Productivity as Asset Turnover

    Similar to asset turnover, which measures asset utilization efficiency, this component evaluates how well you use your skills and resources to achieve personal milestones. Optimize your time management, streamline your workflows, and increase your productivity. This can be demonstrated through project completions, meeting deadlines, and achieving key performance indicators (KPIs).

    3. Network and Influence as Equity Multiplier

    Just as the equity multiplier reflects financial leverage, your network and influence represent your personal leverage. Build and maintain professional relationships, seek mentorship, and actively participate in industry events. Leverage your network to gain opportunities, insights, and support. Assess this by the size and quality of your professional network, opportunities gained through connections, and your industry reputation.

    The Formula for Personal Development

    Combining these components provides a comprehensive formula for personal development:

    Personal Development = Skill Mastery × Efficiency & Productivity × Network & Influence

    By systematically improving each area, you can drive your personal success similarly to how companies drive financial performance through DuPont analysis.

    Practical Steps and Tips

    Skill Mastery:

    • Identify key skills needed for your role and aspirations.
    • Seek training, certifications, and continuous learning opportunities.
    • Regularly request feedback and work on areas of improvement.

    Efficiency and Productivity:

    • Use tools and techniques to manage your time effectively.
    • Set clear goals and priorities.
    • Continuously evaluate and refine your workflows for better efficiency.

    Network and Influence:

    • Attend industry conferences, webinars, and networking events.
    • Join professional associations and online communities.
    • Engage in thought leadership by writing articles, speaking at events, and sharing knowledge.

    Conclusion

    Applying business models like DuPont analysis to personal development can unlock new pathways to success. By thinking creatively about cross-functional applications, you can achieve significant growth.

  • Scaling Software Engineering: A Journey of Continuous Evolution

    Scaling Software Engineering: A Journey of Continuous Evolution

    In today’s world of software development, scaling a team while maintaining quality, collaboration, and agility can be a daunting task. However, by building a well-thought-out structure and continuously adapting it, we’ve successfully scaled our engineering practices. While we leverage agile methodologies, we’ve also tailored them to our unique needs, ensuring we’re not just scaling agile, but scaling software engineering in a way that fits our organization’s vision.

    Our Agile-Driven Structure

    At the core of our scaling strategy is a combination of agile practices and a structure that ensures both autonomy and alignment. We use the Spotify model with modifications to make it work for our context. Our teams consist of developers, product owners, scrum masters, managers, and principle engineers, all aligned with the squad’s goals.

    Managers play a critical role in coordinating and supporting their teams, addressing both technical and interpersonal needs. Meanwhile, principle engineers guide teams on best practices related to architecture and work estimation. The agile teams are responsible for planning and executing work at a regular cadence to consistently deliver results.

    The structure is designed to be flexible yet efficient. Squads typically consist of eight members: six developers, one product owner, and one scrum master. We balance feature development with maintenance to manage tech debt while keeping pace with new features. Each squad focuses on delivering value regularly, ensuring a steady pace while avoiding burnout.

    Proactive Problem-Solving and Continuous Collaboration

    Scaling is not just about executing tasks; it’s about proactively solving problems, collaborating during development, and ensuring alignment before releasing software. This structure empowers us to anticipate challenges and proactively address them, ensuring that we’re not merely reacting to issues as they arise.

    With clear guidelines and regular touch points, we maintain a culture of trust but verify, where code undergoes thorough peer reviews and checks before being released. This practice helps us bake quality into the development process. We also adopt shift-left practices, using GitFlow branching to enforce standards like lints, unit tests, and security checks.

    Fostering a People Centric Culture

    Behind every technical achievement is a team member contributing their best. To support our people, leadership works closely with individual contributors to align their personal aspirations with organizational goals. Our org actively invest in learning and development by offering both time and budget for courses that require time off, and we regularly assess team morale through pulse checks.

    This approach allows us to scale not just software engineering, but also personal growth. Every team member has the opportunity to improve their skills and feel supported in their development journey.

    Building a Culture of Quality and Continuous Improvement

    While we’ve built a robust structure that supports scaling, it’s crucial to acknowledge that mistakes are inevitable — often due to human error rather than flaws in the process. Even the best systems can’t completely eliminate mistakes, especially in a fast-paced environment.

    What we’ve learned is that strong processes and a supportive culture significantly reduce errors and increase our chances of success. Yet, we also understand that no system is perfect. By continuously improving both process and culture, we can minimize errors and learn from them when they occur. Leadership fosters an environment where mistakes are seen as opportunities to learn and evolve, which allows us to adapt more effectively.

    Quality at Every Step

    Ensuring software quality isn’t just about testing late in the development cycle; it’s integrated throughout. Our teams are empowered with a comprehensive testing framework, including unit tests, API automation, end-to-end automation, and manual testing. We’re experimenting with the test automation pyramid to ensure the right balance of testing at each layer.

    Documentation is key to team alignment. We use ADRs, epics, user stories, high-level designs, and README files to ensure everyone is on the same page. As part of our continuous improvement efforts, we’re moving toward a monorepo setup from a multi-repo configuration to improve transparency, ease of maintenance, and documentation accessibility. This shift enhances visibility and collaboration across teams, fostering a more cohesive engineering culture.

    Leadership and Scaling

    As we continue to grow, the role of leadership becomes increasingly critical. Our leadership group operates its own sprint, staying aligned with the teams while proactively addressing challenges, shifting requirements, and team needs. Leadership is deeply engaged in discussions about infrastructure, talent management, and risk mitigation. This collaborative and transparent approach helps us manage scale effectively while prioritizing the team’s well-being.

    The leadership group works closely with the teams, using tools like SWOT analysis and the skill-will matrix to evaluate talent gaps, proactively address risks, and identify opportunities for growth.

    Overcoming Challenges and Growing Together

    While we’ve faced challenges in scaling — such as balancing feature development with managing technical debt or ensuring cross-team collaboration — each obstacle has been an opportunity to refine our processes. For example, we initially found that teams were spending too much time on new feature development, leading to a growing backlog of tech debt. We adjusted by implementing a more deliberate prioritization strategy, ensuring that both new features and debt management were given the attention they deserved.

    As we continue to grow, we must remain agile — not only in our development processes but also in how we adapt our organizational culture. The ability to learn from mistakes and continuously improve is key.

    Conclusion: A Journey of Scaling and Evolving

    Ultimately, our journey of scaling software engineering is one of continuous evolution. We are not static in our approach; we strive to adapt and improve with each iteration. By leveraging agile principles, investing in our people, and maintaining a flexible yet structured process, we’ve built a scalable and adaptable engineering organization.

    Our structure allows us to grow while ensuring that quality, collaboration, and support are always at the forefront. And while we face challenges along the way, we continue to learn and improve — proving that with the right balance of process, culture, and leadership, scaling engineering success is not only possible but sustainable.

    As you embark on your own scaling journey, remember that success lies in continuous evolution — embracing change, learning from mistakes, and investing in both your people and your processes.

  • Beyond Code: A Journey in Resilience, Leadership, and Innovation

    Beyond Code: A Journey in Resilience, Leadership, and Innovation

    Building a cross-platform desktop app isn’t just about writing code — it’s about leading a team through the chaos of shifting requirements, evolving technologies, and technical roadblocks. Here’s how we navigated that journey and what we learned along the way.

    In this article, I’ll share our story of how we overcame technical and leadership challenges, the pivotal decisions we made, and how we continuously pushed ourselves to improve both the app’s performance and the team’s workflow.

    The Challenge: Creating a Robust Cross-Platform App

    With growing demand for a desktop solution that works seamlessly on both Windows and macOS, we faced a critical decision: How could we deliver a high-quality app without duplicating effort for each platform? After deliberation, we chose .NET Core for cross-platform support. Paired with Electron for the user interface and Vue.js for the frontend, we created a product that ran on both platforms without sacrificing performance or user experience. Communication between the app’s components was handled via gRPC, ensuring seamless interaction between the core and UI layers. For the core app, we implemented the actor model using Akka.NET, which provided the reliability and fault tolerance we needed.

    Midway through development, we received a crucial requirement change: decoupling the UI from the core app. This shift would allow us to release UI updates independently of the full app — an essential flexibility for enterprise settings, where app upgrades may be infrequent. We aligned this change with our planned migration from Vue 2 to Vue 3, in response to Vue 2’s upcoming end-of-life in December 2023. Implementing these adjustments in parallel modernized our app architecture, improved stability, and kept us on track.

    Our Approach: Innovating While Managing Risks

    As development progressed, we realized that success wasn’t just about technology — it was also about how we managed the project. With multiple teams working on different aspects of the app — core app development, UI, build systems, and testing — alignment and transparency were essential.

    One of our key innovations was optimizing the build system. Initially, our build times were long, causing frustration among developers. By reusing unchanged binaries, we achieved up to 70% faster builds, drastically improving our developer experience. This saved time and energy, allowing us to stay focused on solving key problems rather than waiting for builds to complete.

    Overcoming Roadblocks: Technical Challenges and Quick Pivoting

    Midway through development, we encountered a significant issue with offset-based pagination. As the app scaled, we started noticing data inconsistencies, with some users experiencing missing or skipped data. This created confusion and undermined the user experience, especially as we approached our beta release. The team quickly regrouped, and after brainstorming, we decided to pivot to cursor-based pagination. This solution resolved the data skip issue, ensuring a more reliable and consistent experience for users, and allowed us to stay on schedule.

    We also closely monitored our progress using internal metrics to track app stability and performance. Our initial target was to ensure the app met a high standard of reliability, and despite facing challenges, we exceeded our expectations at launch. Since then, the team has been dedicated to continuous improvement, working towards even higher performance benchmarks.

    Leadership in Action: Stakeholder Communication

    A crucial part of our success was maintaining constant alignment with stakeholders. One example that stands out is the Go/No-Go meeting we scheduled before the release. This was the first time I had participated in such a meeting, and it quickly became clear that we were under prepared. While the meeting didn’t go as smoothly as we had hoped, we took it as an opportunity to reflect and improve our approach for the next one.

    For the second Go/No-Go meeting, we came fully prepared. We ensured all the necessary data points were ready — performance metrics, risk assessments, and a clear timeline for any remaining issues. This preparation allowed us to align all stakeholders, gain their confidence, and secure approval for the final release. With that, we were able to successfully push the app to production with full support.

    Post-Release: Continuous Improvement and Monitoring

    After the release, we knew the real work began — ensuring the app continued to perform well in production. The first few days were critical. We released the app to 20% of users in the first 5 days to catch any platform-specific issues. Once those were resolved, we rolled it out to the remaining 80% over the next week, addressing edge cases in real time.

    Post-launch, we tracked key performance indicators that served as a measure of the app’s success. While our initial target was set at a high standard, the app exceeded expectations at launch. We’re now focused on continuously enhancing these metrics, striving for even higher levels of performance. This proactive approach ensures that we stay ahead of potential issues, consistently improving stability and delivering a better user experience.

    Looking Ahead: Building a Legacy of Resilience

    The journey of building this cross-platform app has shaped not only our product but also us as professionals. As a leader, I’ve learned that success is never a straight line. It’s about pivoting quickly, making tough decisions, and keeping the team motivated, even when the road ahead seems unclear. The innovations we implemented — whether in build optimizations, pagination improvements, UI decoupling, or the Vue migration — were critical to our success. They saved us time and reduced frustration, enabling us to deliver a high-quality product on time.

    As we continue to innovate and push boundaries, we’re more committed than ever to building products that not only meet user needs but also help us grow as engineers and leaders.

  • The Spirit of Diwali: Lighting the Lamp Within

    The Spirit of Diwali: Lighting the Lamp Within

    Diwali has always been a time of joy, togetherness, and rekindling old memories. This year, the festival brought a special sense of closeness as my siblings and I sat with our mother, reliving our childhood stories. As we laughed about old memories — like our mischievous cow ‘Soma’ causing chaos every time a guest arrived or the carefree nights spent counting stars from the rooftop — it felt as if we were transported back to those simpler times.

    Today, as an eldest son, a husband, father, brother, and colleague, Diwali still serves as a bridge to those cherished memories of carefree days. Even though our lives have evolved and our childhood home has been transformed, the warmth of those memories and the laughter we share keep the spirit of Diwali alive. It’s this bond and the enduring love that make the festival so meaningful, year after year.

    Diwali and the Journey of Personal Growth

    As a child, Diwali was all about firecrackers, sweets, and fun. Sitting through the pooja felt like a formality before running off to light fireworks. Now, watching my own children squirm with the same restlessness, I’m reminded of my own impatience back then. The characters in our Diwali celebration have changed — my father and grandmother are no longer here, my sisters are married, and our children now take center stage — but the spirit remains, as does the tradition of coming together.

    This passage of time has shown me how each diya we light connects the past to the future, symbolizing a bridge between generations. Each flame not only honors cherished memories but also passes on values and traditions to the next generation. Diwali is no longer just an external celebration; it’s a moment to come together, build new memories, and rekindle the old ones, filling us with a sense of continuity and renewed energy. It’s in these shared experiences that we find strength, warmth, and a reminder of what truly matters.

    Lakshmi and Saraswati: Balancing Prosperity with Wisdom

    As children, prosperity during Diwali meant sweets, new clothes, and presents. But over the years, I’ve come to see the deeper meaning in the balance between wealth and wisdom. Growing up, our grandmother would often remind us of an old saying: “Goddess Lakshmi, the goddess of wealth, doesn’t stay long without Saraswati, the goddess of wisdom.” She would say this to encourage us to pursue our studies diligently, believing that true prosperity comes not just from material wealth but from the richness of knowledge and insight.

    Today, as I reflect on Diwali’s meaning, I understand this deeper wisdom. Just as Diwali prompts us to clean our homes and prepare to welcome prosperity, it also invites us to clear our minds and make room for growth and understanding. By investing in learning and self-awareness, we ensure that the blessings we receive are lasting and truly fulfilling.

    The Ripple Effect: How Knowledge and Growth Impact Society

    Just as light spreads from one diya to another, the growth we experience also radiates outward, impacting others. Reflecting on our family’s Diwali celebration this year, I realized how much this togetherness means not only to us but to those around us.

    For instance, after walking my sister to her e-rickshaw, the driver told her how our closeness inspired him to reconnect with his own sister, whom he hadn’t visited in a long time. Hearing this, I was filled with a unique sense of happiness — it reminded me that small gestures and family bonds have a way of sparking positive changes, even in strangers. Just like Diwali lights up our homes, our actions can inspire others to bring light into their own lives, creating a ripple effect of goodwill and unity.

    Diwali’s Nostalgia: Finding Light in Shared Memories

    Reminiscing with my siblings about those early years also reminded us of the little things that added magic to our lives — counting stars on the rooftop, sharing stories under the night sky, and simply being together. Today, the stars may be fewer and the world busier, but these memories continue to shine brightly, illuminating our minds and hearts.

    Diwali gives us the chance to relive these moments, to be grateful for the love we’ve shared, and to strengthen the bonds that ground us. It’s these memories, these connections, that keep us resilient and remind us of who we are and where we come from. The laughter, warmth, and togetherness we share give us the strength to face any adversity with optimism and love.

    Conclusion: Diwali’s Blessing of Light and a Wish for Growth

    The mantra “Tamaso ma jyotirgamaya” — “Lead us from darkness to light” — captures Diwali’s essence perfectly. This journey from childhood memories to a deeper understanding of the festival reflects how Diwali is not just a celebration of external lights but an invitation to keep our inner flame burning brightly. May we carry forward this light in all aspects of life, sharing it through our actions, kindness, and personal growth.

    As we celebrate Diwali, may it bring strength, peace, and purpose, helping us embrace both joy and inner illumination. Wishing everyone a Diwali filled with light, laughter, and love.

  • Beyond the Code: How Biases Impact Software Engineering

    Beyond the Code: How Biases Impact Software Engineering

    In software engineering, as in many disciplines, decisions made during the development process are influenced by cognitive biases — subconscious mental shortcuts that impact judgment. While psychology and behavioral insights are often applied in fields like finance and marketing, they remain under explored in software development. This article examines how cognitive biases can affect each phase of the Software Development Life Cycle (SDLC), influencing project outcomes, team dynamics, and decision quality.

    Understanding Biases and Blind Spots

    Biases are mental shortcuts that help us process information quickly but often at the cost of accuracy. Common biases include confirmation bias, where individuals favor information that aligns with pre-existing beliefs, and overconfidence bias, which leads individuals to overestimate their abilities or knowledge. These biases impact not only individual decision-making but also collaborative efforts across engineering teams.

    Biases in the SDLC

    Requirements Gathering: Confirmation Bias and Blind Spots

    During the requirements gathering phase, product and UX teams invest significant time in user validation. However, confirmation bias can affect research, leading teams to favor data that confirms their assumptions. This bias can ultimately shape requirements that don’t fully address user needs, resulting in less impactful products.

    Development Phase: Overconfidence and Neglect of Testing

    In the development phase, overconfidence or complacency can cause developers to overlook acceptance criteria or bypass unit tests, assuming their code is foolproof. Similarly, architects may be biased toward using new technologies without fully assessing long-term maintainability. These biases can contribute to technical debt or gaps in functionality.

    Testing and Deployment: Availability Bias and Anchoring

    Testing often suffers from availability bias, where testers might focus more on readily identifiable issues, neglecting less obvious but critical scenarios. Anchoring bias may also emerge, where initial assumptions about the project influence testing scope and priorities, potentially leading to incomplete test coverage.

    Retrospectives: Confirmation and Loss Aversion Bias

    In Agile retrospectives, confirmation bias can cause teams to focus on reinforcing past approaches rather than addressing overlooked challenges. Loss aversion bias can also prevent teams from fully embracing necessary changes, as there’s a tendency to favor established practices over exploring uncertain improvements.

    Leadership Decisions: Familiarity and Status Quo Bias

    Leadership may also fall prey to biases such as the status quo bias, where they favor familiar methods or tools over new alternatives, even if those alternatives could address emerging challenges. This can create a disconnect between leadership vision and team realities, impeding meaningful guidance.

    Using the Six Thinking Hats to Overcome Biases

    Edward de Bono’s Six Thinking Hats framework provides a structured approach for teams to view problems from multiple perspectives, helping counteract cognitive biases. Here’s how each hat can be applied to enhance decision-making in software engineering:

    • White Hat (Facts and Information): Focuses on objective data, countering biases by grounding discussions in facts rather than assumptions.
    • Red Hat (Feelings and Emotions): Allows team members to express intuitions and emotions openly, helping to identify any underlying emotional biases.
    • Black Hat (Caution and Critique): Encourages critical thinking, which is crucial for overcoming overconfidence and considering potential pitfalls.
    • Yellow Hat (Benefits and Optimism): Balances the black hat’s critical approach, promoting constructive optimism that keeps teams from being overly cautious.
    • Green Hat (Creativity and Alternatives): Fosters brainstorming and new ideas, helping teams avoid confirmation bias and expand beyond initial solutions.
    • Blue Hat (Process Control): Manages the thinking process, ensuring that all perspectives are considered and reducing the influence of dominant voices.

    This framework can be especially useful in Agile ceremonies like sprint planning and retrospectives, helping teams discuss ideas more holistically and make well-rounded decisions that account for various biases.

    Conclusion

    Biases are natural but often hidden influences on team dynamics, product design, and engineering decisions. Recognizing these biases is the first step to mitigating their impact on software development outcomes. By understanding how biases play out across the SDLC, teams can become more aware of potential pitfalls and make deliberate choices to counteract them.

    Next Steps

    To tackle biases in your team, document biases that emerge during discussions. Encourage members to recognize influences like confirmation bias and overconfidence. Use the Six Thinking Hats framework in meetings for structured decision-making. By regularly reflecting on biases and trying new strategies, your team can develop a more effective and unbiased approach to software development.