This post’s goal is to provide you with a deeper intuition behind two of the most common software messaging patterns—queues vs. pub/sub. This is a deep topic which deserves thoughtful attention when designing software. This article is structured in three parts: Develop an intuition for messaging, queues, and pub-sub through…
software engineering
“The 25 Micro-Habits of High-Impact Managers” is a wonderful article highlighting wisdom from various managers across various industries. The article also reinforces an important universal idea—the details always matter. I subscribe to this idea and believe it can be easily re-applied to individual contribution. At any given company, the criteria…
Software engineering decision-making is a stressful and time-consuming process. When the stakes are high, you will be met with opinionated programmers, insurmountable organizational constraints, and unfortunate baggage from old projects. Consensus is difficult. In a previous post, “Staff Software Engineer Responsibilities“, I mention that the act of “Transforming Competing Opinions…
“Runtime” and “Runtime Environment” are some of the most overloaded terms in software development. It’s confusing for everyone; this word means many different things in many different contexts. This post’s goal is to provide you with an intuition behind the many use-cases of “runtime.”
Company culture. Extremely important, impossible to define. Impossible to define doesn’t mean impossible to understand. A surface-level understanding of culture is available via Glassdoor and company onboarding documents. However, a deep understanding of culture is only available via experience. This article focuses on a set of values often associated with…
[October 10, 2021] If you enjoy this article, check out my new post on this topic: Staff Software Engineer Responsibilities — Align With Authority. The path of the Staff Software Engineer represents the career progression of a technologist. Senior Engineer leads to Staff Engineer which leads to Principal Engineer which hopefully leads…
I recently read through a Hacker News thread discussing the article “Kafka Is Not A Database”, by Arjun Narayan and George Fraser. The opinions behind this topic are fascinating and I enjoyed sifting through comments from both sides of the table. For the purposes of this post, I’ve labeled these two broad…
Debugging is a critical skill. More important than the skill is the mindset. The debugger’s mindset is the attitude that you must always understand the why behind a problem; any ambiguities or unknowns are unacceptable. This mindset has the potential to carry you from debugging small functions to solving difficult…
Creating a technical plan is a sign of professionalism and maturity as a software developer. No matter what you’re working on, whether it be a straightforward feature extension or a massive data migration, a technical plan must be written. Why Should I Write A Technical Plan? A written plan forces…
Any developer, with any level of experience, can have bad habits. This is the junior developer neglecting the ripple effect of his changes. It could just as easily be the senior engineer rampaging through the codebase with her rewrites. Bad habits are just habits; they do not define a person…