-
Encouraging Ownership
The best teams I’ve been on have displayed high levels of ownership. Ownership is a cultural trait that helps teams avoid failure by providing people the agency to pick up important work. We’ll focus on unmanaged work in this post because that’s the sort of work that is often dropped, and talk a bit about […]
-
Hey Amro, what’s on your desk?
I shared a Tweet with a photo of my current work setup and a few folks asked what I use so I thought I’d put together a blog post with all the hardware on my desk. I have conflicting goals in choosing the gear I use to do my work. For instance, I want to […]
-
Approaching Code Review
Code review is great way to maintain and improve your team’s codebase, and like a lot of team process having an intentional, positive culture around it makes it better. One of my earliest patches at Twitter was adding a short-lived token-based system for logged out requests (think login, signup, etc.). The patch itself wasn’t so […]
-
Facilitating Instead of Dictating
Early in my career I thought showing my worth on a team meant having my ideas win. I was far too attached to those ideas, which left me frustrated when they weren’t chosen and worst of all made working with others more difficult. Over time I learned the right approach wasn’t to dictate solutions, but […]
-
Delivering Difficult News
Earlier this year I was asked if some engineers from our team could help build a newly prioritized project. Doing so meant putting our team’s current work at substantial risk of failure. I knew canceling our project was the right thing to do because the incoming request was more important and because continuing our current […]
-
It’s About Managing Expectations
Some time back my team was asked to take up a critical project on short notice. My product manager and I found out about the project on Monday evening and we were told it needed to ship on Friday the same week to 3 client platforms with a small team. We had just four days […]
-
Software Engineering Isn’t Magic
The other day I was chatting with a friend who is both very competent and early in their software engineering career. They had noticed it sometimes took others less time to solve problems than it took them, and when they’d ask for help, these folks knew the answer or could often point them in the […]
-
Thoughts on Teams
People have different value systems. Someone may value very expensive headphones, or cameras and you may value sneakers. Someone may value working really hard, and you may value having time to live and travel. It’s best to not push your value system onto others, because it can harm relationships. It’s okay and good that people […]
-
Resolving Conflict with Empathy
Note: I wrote the following note over a year ago, but only recently decided to send it to my newsletter. I’m not sure why I sat on it so long. Your [respectful] thoughts are welcome on Twitter. Empathy doesn’t always come easy, but it goes a very long way toward building trust with those around […]
-
Finding Dependency Cycles in iOS Builds with llbuild UI
Did you know the swift-llbuild project contains a debugging tool called llbuild-ui that can find dependency cycles in your iOS build? To try it: Enable the New Build System (In Xcode it’s under File, Workspace Settings) Build your project Open the Derived Data directory on your machine and find the build.db file generated by the […]