Software Engineer • Former Employee
Pros: The development environment is the engineers' heaven.
The code is well-architected and thoroughly tested, and you can run everything offline.
TDD and CI/CD make you super productive. You can basically write the tests, implement your code, run tests locally to make sure it behaves as expected, submit your PR, get it approved, and let the systems do the rest.
If everything goes well, your code will be in production in 30 minutes.
Most of the engineers are from top schools. If you are a new graduate, you will learn a lot in the first few years.
Cons: The production environment is so outdated. Most of the services, except data infrastructure (which is the only cloud-native one), run on dedicated servers, so you can't use anything AWS or GCP.
On-call is a nightmare. On average, you get paged once or twice a day, no matter if it is office hours, midnights, or weekends. You are expected to fix it immediately since these issues are either user-facing or money-related.
If you are an experienced engineer, you join as E4. This is basically the top of the ladder, since E5 or above is only for old-timers or insiders. The leadership team created some guidelines and rules, for example, promotion criteria and expected tenure in each level. However, you also keep seeing exceptions. When these exceptions don't happen to you, you know you are not among the insiders.