-
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 […]
-
Diagnosing “Dependency Cycle Between Targets” in Xcode 9’s New Build System
Xcode 9 includes a new build system that can substantially improve build times. The new build system is more strict about build issues, but some of its diagnostic output can be difficult to reason about. One difficult to debug error is “Dependency cycle between targets,” which may appear during incremental builds where you may not […]