-
Engineering teams work better remote-first
Your team has communication problems. You just can't see them because you all sit in the same room.
-
Designing software to maximize developer productivity
Having worked extensively in the Shopify codebase, one of the largest rails apps in existence, I have experienced firsthand some of the downsides of working in monolithic codebases.
-
Principles for managing product quality
Keeping an application stable starts off being simple since your codebase is small, there are few points of failure, and you can easily reason about the implications of code changes.
-
Breaking down our understanding of system resilience
How confident are you in your prod servers staying up without your help?
-
Optimizing the ‘glue work’ in your team
Your job title says "software engineer", but you seem to spend most of your time in meetings.
-
Being right is only half the battle: how to optimize your interpersonal connections
True or False. Zero or One. Computers are viciously black and white in their logic. Humans, on the other hand, are messy — Emotional, forgetful, biased and opinionated.
-
Managing the burnout burndown
As engineering managers, we're used to managing the Sprint Burndown chart. Even in non-agile projects, the idea still applies. Over time, the amount of work that remains to be done should go down, and good engineering managers carefully guide the team towards this goal.
-
The future of cross-platform is native
The quest for the perfect cross-platform solution has been like the quest for the Holy Grail. It’s been going on a long time, there are a myriad of perceived benefits, and every time someone claims to have found it, it’s never the right one.
-
Documenting and communicating architectural decisions
As technologists and technology leaders, we live in an interesting and chaotic time. The days of ivory-tower enterprise architects doling out treatises on approved technologies are over, instead, we have agile, two-pizza teams building using emerging architecture techniques and the latest languages.
-
Using observability to detangle and understand production
When using tens or hundreds of microservices to provide an application's critical functionality, diagnosing what interaction between components is causing an outage can be challenging.