My past few companies - Skype, Skyscanner, Uber - have been well-known companies that I've joined in their "unicorn" phase. Unicorns are private companies that have reached the $1B valuation - and they usually do this in less than ten years. All of these companies were well-known … | Continue reading
Blissful unawareness, denial, then acceptance, then resistance. And finally, a pragmatic middle ground. This is the typical journey engineers go through in their relationship with tech debt. It's tempting to get straight to the point: how to remove tech debt, and how to keep it a … | Continue reading
I have had several "aha!" moments with unit tests, and have been burned several times by the lack of them. I have experienced how automated testing, especially unit testing, is a key building block for teams to iterate quickly and move fast. It's little wonder that all of the fas … | Continue reading
On my engineering team, every team member eventually leads a project, no matter how junior (or senior) they are. This is a practice I've built up over years. We've shipped complex projects like rewriting the Uber rider app and the Uber driver app - our team of up to 20 | Continue reading
I've had about a dozen performance reviews during my decade-long software engineering career. Some of them were unmemorable, some okay, but a good chunk of them were just... plain bad. Often, these bad ones marked my "shields down" moment. The point I lost trust in my manager and … | Continue reading
As I am doing a lookback on 2010-2020, here are the major changes I've observed around software engineering. If this decade proves anything, it is that technology keeps changing and evolving. But, there is still some stability: Java and JIRA. Let's see if they will survive the ne … | Continue reading
With the year closing, I'm looking back at things I've learned while my teams were building and operating distributed systems. Building a new distributed system is easier than migrating the old system over to it. In the past two years, I've been part of a few rewrites of distribu … | Continue reading
Good code needs to meets two key requirements. First, it should be correct: when executing, it should produce the result that is expected. Second, it should be easy to read for other developers. Coding is a social activity. Your code does not exist in a vacuum, just implementing … | Continue reading
Having worked for a decade as an engineer at various companies, I noticed howmost teams in software often have "the" manager and "the" tech lead or "the"senior engineer. These are the decision-makers and ones that lead all projects.Many engineers go to these people asking, "What … | Continue reading
I was somewhat skeptical when starting to read a Philosophy of Software Design[https://www.amazon.com/gp/product/1732102201/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=gregdoesit-20&creative=9325&linkCode=as2&creativeASIN=1732102201&linkId=c8fac98e2115e5448984a6952ca0f794], despite havin … | Continue reading
I've recently been talking with several other people working in the Europeanoffices of Silicon Valley tech companies: Databricks in Amsterdam, Facebook inLondon, Google in Zurich and a few of my long-time colleagues at Uber, inAmsterdam. Most of us joined these places after spend … | Continue reading
It's the second time in a few weeks when I see the same, frustrating situationplay out. An engineer from another office and different timezone raises a pullrequest for a service/library my team owns. The pull request has little to nodescription and makes no sense from our perspec … | Continue reading
I hear more voices saying there is little point in doing time-based estimations on how long building software will take, and thus we should just stop doing it. "Let's just use story points and estimate complexity, but not the time" and "Let's just try #noestimates" are suggestion … | Continue reading
Together with agile coach Balint Farkas, we recorded a conversation hosted by Iseeq recruitment in Budapest. We explored what seniority means for software developers. This 30-minute session explored my experience on career paths for software engineers, the difference in impact at … | Continue reading
“This code is bad. We should refactor it.” is something I still hear frequently. “Bad code” has become the common way to refer to any code that's not up to our quality bar. I'm seeing it become a defacto description across the industry, blog posts and in software engineering lite … | Continue reading
I've had a pretty good run with promotions lately. When I transitioned from being an engineer to management, I had just under ten people report to me. Two years later, all of them got promoted to the next level, as well as a few other engineers, who joined my team | Continue reading
I had my fair share in designing and building large systems. I've taken part in rewriting Uber's distributed payment systems, designing and shipping Skype on Xbox One and open-sourcing RIBs, Uber's mobile architecture framework. All of these systems had thorough designs, going th … | Continue reading
While I do my best to keep doing networking, I have to admit that I don't think I'm that good at it. At least the traditional sense of go-to-a-meetup-and-talk-to-people type of networking. This is despite me being an extrovert and having attended many meet-ups and tech conference … | Continue reading
Product-minded engineers are developers with lots of interest in the product itself. They want to understand why decisions are made, how people use the product, and love to be involved in making product decisions. They're someone who would likely make a good product manager if th … | Continue reading
Product-minded engineers are developers with lots of interest in the product itself. They want to understand why decisions are made, how people use the product, and love to be involved in making product decisions. They're someone who would likely make a good product manager if th … | Continue reading
I have moved from being a tech lead to engineering manager close to a year ago. I wanted to share some of the things that over prepared me for a softer landing over the years, when making this leap from individual contributor to management. It is not the easiest change, | Continue reading
Uncle Bob Martin has a pretty strict view on comments. He goes as far to say: A comment is an apology for not choosing a more clear name, or a more reasonable set of parameters, or for the failure to use explanatory variables and explanatory functions. Apologies for making the | Continue reading
How does mentoring work? I asked this question ten years into my software engineering career when I joined Uber. Until then, I've never received or done mentoring, or at least never put this label on any activity I've done before.Uber, however, had an official mentoring program. … | Continue reading
I've recently read An Elegant Puzzle: Systems of Engineering Management, written by Will Larson. After working at Yahoo and Digg, Will was an engineering manager for two years at Uber, leaving for Stripe right around when I started and transitioned to engineering management. Thou … | Continue reading
For the past few years, I've been building and operating a large distributed system: the payments system at Uber. I've learned a lot about distributed architecture concepts during this time. I've seen first-hand how high-load and high-availability systems are challenging not just … | Continue reading
I have been doing day to day code reviews for over a decade now. The benefits of code reviews are plenty: from someone else reading through the change, through knowledge sharing all the way to tooling and automation improvements. If you are not doing code reviews, take the advice … | Continue reading
I have been coaching several experienced software engineers to further grow professionally, since transitioning to being an engineering manager. I have noticed a few skills that people often underestimate the importance of developing. Skills that add a significant boost to the im … | Continue reading
I have recently been talking at small and mid-size companies, sharing engineering best practices I see us use at Uber, which I would recommend any tech company adopt as they are growing. The one topic that gets both the most raised eyebrows, as well the most "aha!" moments is the | Continue reading
After a decade of shipping software projects in various environments, I have started to notice patterns on projects that are more successful than others. The most surprising thing I'm seeing is how actual, day to day project management methodology is not the most important predic … | Continue reading