Pros
- Provides higher pay then the market average for fresh graduate - Has flexible working hours - Opportunity to learn a lot of technology is you are in right team - High growth, in fact, a little bit too much. - Supports Employees in moving between departments
Cons
Well, this is gonna be a long list, but it's worth every minute reading. - Delusional board members: CEO, COO and every board members, high management personals used to believe (or at least that's what they want to show) that the company was the most innovative in the world, that the company could do impossible things nobody can achieve with absolutely no backing evidence of any great product. They constantly reminded employees once a month that they are the top notch on the market, that their engineers are better than those at top tech companies. On top of that, they hired thousands of fresh graduates (non CS) and make them code and design product with no real product engineer, as a result the products are full of bugs and development time took 4/5 times than usual. Hence delivery to customer failed and some cancelled the contract. Recently there has been a change in upper management and they are doing damage control since then. - Incompetent managers: Most managers don't have good management skills. Some of them got promoted to be manager just after 3 years of being engineer from entry level plus some are of non CS background. With lack of both technical and management knowledge, they could not make critical decision in how to proceed with the project. Almost all projects (I would say 90%) could not meet the deadline. - No real system architect: They don't hire any expert to design the architecture of the system (There is no such position). As the result, engineers have to take the task and come up with terrible designs, which cause a lot of mess in current development. During some iterations, the entire Jenkins and GitLab keep failing because of incapability of CI. - Not following industry standard: With most employees do not have CS background, instead of using UML and other standards of Software Development, they decided to put everything in spreed sheets. Without a unified format for those spreed sheets, it is impossible for engineers/managers to communicate. It might take up a lot of meetings in order to sort out a simple problem. - Pay no attention to system performance: Although the original intention is to achieve 100 ms in every services, they did not carefully evaluate the overall performance. Without experienced engineers to do code review, bad codes incrementally added up that ruin the whole system. There is completely no stress test. Although the system is distributed, engineers and QE normally only test as the system runs on a single machine. - Politics, a lot of politics: How you advance in you career is not decided by your talent and contribution but rather depends on your relationship with your boss. Your boss's decision is the one and only one that will affect your evaluation. All your teammates and colleagues' good words do not matter. - Wasteful use of employees: They do frequently restructure the organization of all departments (probably once a year). During the process, a lot of bad job allocation happened. E.g, assign engineers to do feature documentation, consultant to do coding, UI designers to do CI. Their philosophy is everyone is the same, and anyone can do anyone's tasks. - Recruitment: Somehow, they believe it is a good idea to recruit 1000 new graduates with no background of computer science/coding to become engineers (happens mostly in Japan). As the consequences, a large percentage of existing engineers can't even produce proper codes. "As long as they love the company and believe in our philosophy, they will overcome any obstacles", said a VP. - Career path: what career path? there is none. After being engineers for couple of years, you will automatically become manager, and steer away from tech to management, no other choices. After that, you have to attend meaningless meetings and write useless reports. - The company is struggling: Business is worse than ever (You can try to look for their financial report). They are basically surviving base on "Japanese use Japanese product" principal. Even that is slowly turning away from them. Recently they are cutting down people and slowing down the hiring process. - Good people are leaving: While the company is laying off people, some are leaving on their own as well. Almost all good engineers I know already left the company ( only a couple people from my batch are remained and I believe they will leave ASAP).