loading...

I've worked at fast-growing startups and Silicon Valley tech companies for the past seven years. AMA.

gergelyorosz profile image Gergely Orosz ・1 min read

I've been working at well-known tech companies since 2012, in London and Amsterdam: at Skype/Microsoft (when Microsoft acquired Skype), at Skyscanner (when it became a unicorn) and at Uber for the past three years. I've had many conversations with people online and offline on what it's like to work at places like this, compared to other environments: from what the work culture is, to how things get done, how things are tested or how much truth there is to some of the articles you might read online - and many more.

Feel free to ask anything about work, career, engineering practices or anything else you find interesting or are wondering about.

As a disclosure, I can't talk on behalf of the companies themselves - they're all very large, so whatever my observation was, might not be true for all parts (and it might also be outdated knowledge). I can definitely share my experience, learnings, and patterns I've seen to hold across these kinds of places.

Posted on by:

gergelyorosz profile

Gergely Orosz

@gergelyorosz

Engineering lead @Uber. I love to help people grow and share what I learned. I write longer articles on software engineering at blog.pragmaticengineer.com.

Discussion

markdown guide
 

Don't you feel the VC-fueled obsession of being fast growing/high pressure/conquer the world has gone too far?
Isn't it enough for a company to be useful to its customers, good too its employees and make profits?
Isn't it better for us to strive for a calm workplace than to succomb to the delusion that we will write history and "make the world a better place"?

 

I assume you wrote this with good intentions, but this question reads like a loaded question. It sounds like you are assuming that VC-funded companies are not useful to its customers, not good to employees, that they are not calm workplaces and they don't make profits.

I've worked at these companies because as an employee, it's been a great place to work and built things that I enjoyed doing, learning a lot of things, working on professionally challenging areas. I chose to work here and chose to keep working at the places because I wanted to.

For the record, I did work for non-VC funded companies earlier in my career: companies that were making a profit. Some were great and some were bad. There were companies where overtime was expected, paychecks were late regularly and turnover was high.

I personally saw no connection between VC-funding and these things. As with the disclaimer, I can only provide my point of view in this AMA.

 

I wouldn't call it a loaded question, it's a question that starts from my point of view as an outsider and that is genuinely curious about yours. (Yes, your opinion, not the ones from your former companies, t on this we agree.)
The logic of the venture capitalist industry as I understand it calls for prioritizing fast pace over a calm productive workspace, growth over profits, high risks high rewards over being just good and useful. Not that they ignore the later traits, but they put the former front and center.

Thanks for clarifying - got your point πŸ‘

I personally like when things move fast: when what I build, goes into production quickly, and when I get to experiment and have a lot of people use what I do. You're right that VC-fueled startups prioritize going large or going home and thus it's a good environment if this is what you enjoy.

I have counter example on why I never stayed at places that prioritized calm and steady. When I was at Skype, for 18 months after the Microsoft acquisition, we operated like "old" Skype. Moving as fast as we could, shipping new features, trying to keep up with emerging competition, like Whatsapp and Google Hangouts. Around the 18-month line, I was working on Skype for Web: in 6 months, we built it from the ground up and were ready to launch, and ready to scale. On the team, we felt it was key we launch quickly and allow web-based calling, just like Hangouts did.

Suddenly, we had a lot of Microsoft execs appear, who saw things differently. For them, stability was more important than launching quickly. So we did... basically, nothing. The product was ready, we were doing A/B tests for months on 10,000 people, delaying a public launch. As engineers, we grumbled, we came up with suggestions on how to launch and we tried to understand what is causing the delay. We fell on deaf ears. And we had practically nothing to do. After 3 months of this state of no meaningful work, I had enough and left the company, searching for something more exciting. 12 months after I left, the product finally launched, in pretty much the same shape, as it was when I left. By that time, many people on the team also left for other, exciting opportunities.

There's certainly an additional thrill for me to knowing that what I'm working on something that is really important for the company and that a lot of people will use. I've been looking for places that offer this: perhaps this is how I ended up working at venture-funded places.

Also, later in my career, I looked for places where I get an ownership stake in the business with options/stock. Silicon-Valley startups and tech companies overwhelmingly offer this for software developers, even for people not working in Europe, while non-venture based companies generally do not. I found it a good message, when a company valued my skills enough to offer incentives that many companies save for executives.

 

I mean, to be quite fair, there's a lot of people who have said Uber isn't good to its employees or customers, and it (factually) doesn't make a profit.

 

Do you think most programmers could "make it" at fast growing companies? Or do you think there are really specific skills involved? If so: what are those skills? Or: maybe it's a personality thing? Are there certain personalities that handle fast growing companies better than others? Thanks!

 

I think everyone could "make it". These are fast growing product companies. Everywhere I worked, we worked as a team, helping each other, teaching and learning from each other. Deadlines were self-imposed: our customer was the end user. In general, I found it to be an environment where everyone grew quickly and there was never a shortage of interesting work to do. I found getting through the door to be the most challenging, with the interview processes sometimes being more difficult than the average.

The only people I could see not succeeding are people who don't like autonomy and liked to be told what and how to do. I don't know many developers like that.

What is your impression of what a fast-growing company is like or why it might be difficult to work at places like this?

 

Not sure, that's why I asked :) Perhaps I saw the more difficult interview process, and was wondering what was beyond that. Sounds like they're just like most companies - but are harder to get into (because more people are applying probably). Thanks for the insight!

 

How much was your involvement in the product itself as an engineer given the fast paced development? If you were, did you feel it would be easier to just do whatever you're told instead of calling the shots?

 

I work with product managers, who are ultimately responsible for the strategy, and prioritizing what we work on. However, it's a pretty informal environment, and we talk a lot about what we should and should not work on. Engineers bring suggestions to the table all the time, which we debate with product and decide what to work on. Many of the engineers are what I like to call Product-minded software engineers and I wrote about this in more detail here.

Engineers don't call shots by themselves, but definitely have a strong say. And if you don't want to have a say, you can defer to doing this.

I personally like having a say in what I build and understanding why. The last time I was told "shut up and do what we tell you", I quit because of this. I'm sure there are people who have no problem on being heads down and doing things, even if they don't understand the why behind it, but I am not one of those people.

 

"Product-minded software engineers" sounds very apt to me. I feel I would prefer to work in a place where I have a say in what I'm doing as well, on the other hand I have friends who just like to do what they're told and then go home and play Minecraft. Is it possible to transition to Product with an engineering background or are all those business folks?

 

Thanks for the AMA.

1 - so what is your specialization? do you do backend, frontend or both?
2 - react vs angular vs vuejs what would you choose?
3 - Your favorite database?
4 - One thing that you love about C++ and Python.
5 - When you instruct/demand people to do something, do they feel uncomfortable? If so, how do you handle it?
6 - How often do you exercise.

Thank you so much, waiting eagerly for your response.

 

Wow, you really are taking advantage of the AMA!

  1. Specialization I've done all of it. I started out with C#/ASP.NET on the backend and web. I then did WPF and Silverlight at a consultancy, HTML/JS/C++ for Skype for XBox One, backend and frontend for Skype for Web, Windows Phone development as my side projects, iOS at Skyscanner, Android at Uber and now I lead a full-stack team (backend, iOS, Android). I learned as . I went along. For a very long time, my strongest language was C#.
  2. React, Angular, Vue I haven't used React, Angular or Vue that much. I'd figure out whichever works better for the project, and based on what the team's expertise is. I like to start out with opinionated frameworks, like React, when I don't have much expertise, as they come with more structure. Then again, when you master it, it can get in the way and more flexible solutions like React work better. At Uber, we build on top of React: we built and use Fusion.JS and BaseUI. If you are asking on what to learn: you need to decide. There seems to be an apetite for all of them. Angular is the easiest to get started with, but React is probably the most used one.
  3. Favorite database. I don't have any. I try to use whatever works best for the given problem or project. For my personal projects, I try to dump it all into MySQL as long as relational works well enough. At work, we use distributed systems and databases
  4. C++, Python I personally never liked C++. I used it when I had to, but I really don't like having to keep track of memory allocation. I prefer higher-level languages. I like that Python is simple and it forces a neat structure by convention.
  5. Instructing/demanding I try to never instruct or demand. I don't remember the last time this happened. I coach, debate, discuss. Anyone who goes about instructing or demanding is micro-managing. All developers - including myself - hate being micro-managed and respond to this poorly.
  6. Exercise I work out roughly twice per week, but I bike to work every day.
 

Hi,

First of all thanks for doing this AMA. My question is: how did you handle work/life balance? I am asking this because I am assuming you have to work a lot.

 

I have a lot of friends who assumed that I must work a lot. However, I never felt that I was too much on the "work" side of work-life balance. I probably put in a bit over 40 hours on most weeks, over the past few years, but not a lot more, and most of this was volunteered. This excludes oncall pages, which I'll get to in the end.

At Skype, work-life balance was great, except when we were weeks before shipping a big project, like the XBox One launch, that was probably the biggest projects I've worked on, shipping Skype on launch day. The month before the launch we did lots of overtime, mostly working with the US-based teams, who all seemed to suddenly be behind.

At Skyscanner, I joined when the company was a pretty stable startup. I initially worked remotely in London, as there was no London office. It was a similar story here: when we got close to a big launch, the pressure was up. Otherwise, things were pretty flexible: I often would start my day late, around 10-11am and stay until around 7pm.

At Uber, when I joined in 2016, it was crazy because of the project I was on. We were rewriting the Uber app from scratch. Not only did we change the design, but we introduced a brand new architecture, which was very much work-in-progress, as we migrated everything on it. We had about 400 mobile engineers working parallel, stepping on each others' toes. And we did the whole rewrite in about 4 months.

That was the only project when I was asked to work on a weekend if don't have anything urgent to do, throughout working at these companies. I was new at the company so I didn't mind that much: it also was by far the most stressful project I'd worked on. Since then, work-life balance has gotten a lot better and I rarely work more than the usual 40 hours. I start around 9-9:30am, leaving around 5:30pm. As I'm a manager now, I sometimes have calls in the evening with the US, I tend to have these on specific days of the week, in one block.

The top two things that impact my work-life balance are these:

1. Cross-timezone meetings. As I work in Europe, collaborating with or depending on US-based teams, this is a big one. You often can only have meetings in the evenings with the US, so this is the thing that creates the logistical challenge. The bigger the office and the more autonomos the team and the things you own, the less you need this.

2. Oncall. At all tech companies I worked, we did DevOps, even before it was a thing. We could build whatever service we wanted, deploy whenever we wanted... but we were responsible to keep it up, 24/7. Our services were always used worldwide. So we had to have oncall. Meaning every 4-6 weeks, for a week, you get paged when anything goes down. Both Microsoft and Uber have additional compensation, which helps make this feel more valued. But people who came from companies that did not have oncall before took time to get used to it. With a good oncall, this is not a big deal, really. But it's always somewhat nerve-wracking to be woken up with an alert that might mean that the system is down.

I definitely found time to work on my side projects outside of working at these companies: I built a bunch of apps, while at Skype/Microsoft, kept blogging throughout this time and right now I'm in the process of writing a book on growing as a software engineer, while working at Uber (you can subscribe here, if you'd like to hear more on the book).

 

Thank you for the detailed answer, appreciate it :) I am a junior developer and working at a fast-growing startup but I think my work-life balance is not good right now. Not that my company asks me to work at weekends but I just can not get work out of my mind. Do you have some tricks to empty your mind?

Ah, this brings back memories: I also had this at Skyscanner for many months, when starting on a new and exciting product. Meditating/mindfullnmess daily helped me ease it a lot, I listened to this mindfullness compilation, though there are a lot. Also, making sure I did something active (workout, walking etc) even when I was busy, helped me do better.

Minfullness was this weird thing, where everyone told me, it will feel silly for a few weeks and you won't feel anything, but it will slowly start to kick in. It helped, and it also helped put things in perspective for me.

Again, thanks for the answer :) It really helped. I will check mindfulness thingy out.

Cheers!

 

Re: startups, is there anything in the interview process you've seen as either red flags to avoid or green flags that indicate a good place to work?

 

Startups are risky, by default. I joined late-stage, still-fast-growing startups with pretty good reputation, which hedged the risk considerably.

The thing I did with Uber, and what I'd recommend, is after you have an offer, "re-interview" your future manager and the most experienced/longest tenured person on your future team. When I interviewed with Uber, in Amsterdam, I only knew that it's a tiny office, far away from HQ in SF. At the time, there were over 1,000 engineers in the Bay Area and 25 in Amsterdam.

So when I got an offer, before accepting, I asked to talk to both my manager again and the longest tenured mobile engineer in Amsterdam, who also happened be engineer #3 at Uber. I came with a list of questions, trying to understand what they liked about Uber, what were the bad parts and why they believed the Amsterdam office and Uber would succeed. I got really positive signs and this helped me solidify my decision.

The smaller the startup, the more higher up I would talk with key people. If they want you, this is a no-brainer. If you join a great team, you'll learn more and the team will succeed with higher chance than if it's a place that's very "meh".

Also, to your original question: all startup phase companies I worked with had terrible and unorganized interview processes, at the time when I interviewed (they've gotten a lot better, as they matured). Uber messed up my interview - I was supposed to interview for a mobile role, but I ended up doing a backend onsite - and apparently at Skyscanner forgot to send me a takehome that everyone else took (not that I minded). Skype was also super weird: I did a takehome, got some strange feedback and asking to make changes. I did them, heard no feedback for weeks, when I was asked to come for a surprisingly easy onsite. Here, I joined a team that did not exist and could not talk to my future manager or team mates, because they were all being still hired. So if it's a messed up process: that won't be the first.

 

Hi, thanks for the AMA!

People who have side projects catch the eye of companies like the ones you worked for? Has any company ever gone after a software engineer for seeing their talent / project?

 

I would say, it depends. For small startups, where the cofounders are actively looking for people, your side project might catch their eye and they might reach out because of this. For larger companies or startups, recruiters generally use Linkedin or Stackoverflow to search for specific technologies. I've had examples of both.

Both the cofounders of Skyscanner and Whatsapp reached out to me, after coming across Cocktail Flow, a Windows Phone app I built with some friends 2011. At the time, this app was getting a lot of attention, some calling it a shining example of great design on Windows Phone and Microsoft advertising it heavily. This was at the time when both companies were small and not very well known - it was the first time I heard of Whatsapp, for example. So yes, this can happen, but I wouldn't count on it.

Skype pinged me, as I was a prominent member of the C#/XAML community at the time, and they were looking for people with this expertise for the Skype for XBox One team. As far as I know, their recruiters pinged a lot of people with this skillset, I was just one of the many. It might have helped that I was a speaker on a couple of Microsoft events at the time, but I'm not sure. By the time Skype pinged me, I realized I enjoyed doing Windows Phone development more than my day job, and jumped at the opportunity to build something for the new XBox One.

The way I see it, side projects won't be a ticket for recognition. But it's a great way to build something interesting and improve your skils.

 

FYI your website certificate is causing chrome to show an ugly warning NET::ERR_CERT_COMMON_NAME_INVALID

 

Thank you, fixed it!