The Pros and Cons of Working at Big Software Companies
The Pros and Cons of Working at Big Software Companies
Join the DZone community and get the full member experience.Join For Free
For nearly 7 years, I've worked at 3 big software companies - all of them with tens of thousands of employees. I also had 5+ years working in research environment, at startups, as a consultant, or by myself, what gives me a more complete perspective to look at big companies.
Throughout the time I've worked at big companies, I had many philosophical conflicts between what I was experiencing and what I felt was right for myself. In this post I reflect on these conflicts and then my current stand on big companies.
Not to give much away upfront, but overall making sense of what working at big companies means is an extremely fascinating experience at the end of the day. Although oftentimes this experience may not align with your personal values and how you want to spend your life, it's definitely quite challenging and provides lot of personal growth opportunities. On the other hand, even if not evolving at the pace you might want, there are lot of hard/soft skills that can be learned at these companies.
Enough said. Let's start with the positive aspects and then get to the more contentious ones.
One obvious thing of working at big companies is how powerful they are. If your project is important to the business in some way, funding will be guaranteed. If your project doesn't work out, in the software field you will most definitely be reallocated and there will be no risk of losing your job. Especially in an area where there's deficit of good talent, rarely a company can afford to lose employees. That is just really amazing.
Not only funding, but given the big army of employees and global reach of these companies, it is amazing how much impact your work can have. You may not really have a lot of input to guide some decisions, but there's no question that depending on what you do, there will be a big reach.
Related to the topic below, if you're in the technology business, more often than not the opportunities of working with big systems (like big customer base, big data) occurs at big companies. More recently even some startups are reaching this scale at times, but still big companies tend to be a best bet in that sense.
Other aspects of the business, like having very big build systems, or having well defined and matured processes for support will be only found at big companies, so working at them turns out to be a great opportunity to learn from systems that evolved over time.
Although there are differences among companies, big companies in general have at least some standard benefits that are hard to beat - and small companies generally can't compete until they get to a certain size.
Due to their scale, there isn't one person or small group overseeing every aspect of the business at a big company. There is a need to scale out and delegate power to others to make decisions, to decide priorities, and to help employees grow into their careers. For this not to be chaotic and to reduce politics among these people in charge, what do we have at big companies? Processes. Just like a government, we do have regulation determining what can/should be done or not in order to allow the company to scale out in a relatively organized and predictable fashion.
Career progression is particularly interesting as what happens is that, irrespective of how this is implemented, companies need a model and process that replaces underperformers and reward top performers in some way. Another goal is that all must end up having the feeling that they are progressing, so there is a model for career progress (i.e. promotion). This model must work in general for the majority of the employees - they must good enough for a substantial part of the employees, and definitely will not work for 100% (I haven't seen or heard of any that is even close to that). Attrition rate (i.e. how many are leaving the company) is tracked and adjustments are put in place when the company realizes the model is not working well. Sometimes changes are put in place because another big company found a model that is better in some sense and is attracting more people.
For top performers, as mentioned, they must be rewarded. They tend to go through the company ranks - step by step (or more precisely level by level). Why step by step? There is a process in place and all must abide by it. It doesn't matter if the employee is absolutely fantastic, but there is a limit of how much and how frequent the company can actually reward that employee. The only exception is if there is a strong business need that makes the company circumvent the process, but that involves a lot of effort by a set of managers and creates a precedent that can harm the model for all other employees. As you can imagine then, typically that is not the case and I've seen these being "one in a million" cases. Leaving these exceptional cases aside, typically top performers end up being split into two broad categories:
- Patient top performers focus on the job and are fine progressing as the company's career ladder allows
- Impatient top performers do not accept to be told how fast they can progress, and end up leaving for a different job or career
Of course these categories are just very high level. One thing that determines how "patient" a top performer will be is the types of assignments he will have and the changes that he will be progressing from his perspective (not from the title/position perspective). If many circumstances are favorable (business priorities align in a way, his/her manager views the potential, etc.), some people stick long enough as they have the feeling of progression irrespective of how fast the company's career model allows.
In many cases, though, these top performers will be held back in favor of a "greater good," as the overall team morale must be considered. That way, other people, even if not top performers, must be happy and they will be taken into account for task assignments, etc. Sometimes some compromises will be made in order to keep the team "stable", so the business can keep going. Many variables are at play, and what is important here is that top performers may be "sacrificed" by having tasks that may not be as challenging as they can do and will need to have patience. That is just the way it is and the employee gains this maturity over time and learns to deal with if he/she decides to stay around.
Another aspect of holding back is that, irrespective of how well one does the work, at big companies you have to work with many other people and can't be in isolation. Depending on the organization, you may work closely with professionals from other organizations within your company that you don't have any control of. As mentioned above, no owner is overseeing the business, and that can mean simply that you will be held back by whoever you're working with - be these people your peers or managers. More hierarchical companies have more of this problem, but it actually occurs across the board, and to keep working at a big company means that you just need to comply with that.
What does it mean to a top performer? That he/she needs to slow down and go at the speed of the weakest link. If the weakest link is just one person, management could fix that, but if the organization is the "weakest link" that just functions at a different pace, there's not way around (well - unless you try to change the organization, what can be almost impossible, but could be an interesting personal challenge).
Some times everything will move forward to the contentment of all, other times it will be extremely frustrating. And although a top performer can help improve the organization to be more efficient, note that it is extremely hard to bring everybody to the same level, either due to skills or even to their lack of interest in improving.
You're not working with the owner
Because in big companies you're under a manager, this person is not necessarily vested into the company like an owner, as he/she doesn't have so much at stake - both if the company succeeds and if the company fails. Also this person has his/her own career to take care of, has his own biases, and not necessarily cares about that his/her reports are individually being challenged to their limit. That is not the goal. And the most important point is that having layers of managers mean that not necessarily productivity will be the currency - politics and how your work is portrayed to others may have much more impact on your career than actually how productive you are.
One is farther from the decision process as the organizations are bigger. Even with valid input, the company simply does not scale by listening to everybody and taking everyone's concerns into consideration. Because of that, the company misses great feedback at all levels (high level direction all the way to the high level architecture of your product/service). Unless you're at the level that is listened to, you will be limited in how much you can actually impact until you grow step by step to that point at which you will be listened to. Of course anyone college grad with great opinions since day 1 will be dismissed for the most part - not giving this person's the opportunity of learning and pushing him/herself at the pace he/she could.
I like to see this aspect asking this question: what is the process for someone to improve a code or a process at big companies? It varies a lot in my opinion. The worst case I've seen was: for absolutely any improvement, you need to have approval from 3 managers. Yes, even if done on your time, at home on weekends, fixing that behavior or trying to integrate that new interesting framework will not be allowed to be checked into the source code repository unless you convince managers of that. Being typically risk-averse, unless there is a a good business reason, your request will not be granted. Having approval from 3 managers was the worst case, but other big companies also had similar behaviors - and when improvements or innovation was allowed, it was just because your manager was taking the risk and responsibility for any impacts.
Of course what is the implication of all that? The experimentation, that sense of ownership and caring about your code, they all tend to diminish as the processes in place do not encourage that. After all, there's a business to be run, right? What does it actually make to the engineers that come out of college with all that will to change the world? Do they give up little by little?
Even if not thinking on a personal level, I've seen these big companies becoming really good at continuing to do the same as they had been doing before, innovating a little, just what is told by management and supported by the system. Those small innovations that come from almost every single individual with a thinking mind, but mostly by the top performers, are not tapped into. Overtime, though, many of them just learn to comply with the way the big company works. And not only comply, but these people start to think that it is the only and the right way of doing things.
What if big companies are not for you?
Big companies are the perfect place for many different types of people. The rate of people happy at these companies is quite high, so the first thing to do is to evaluate how well you fit within a more rigid organization. If you don't know yet, I definitely recommend having some experience at a big company. Give it some time (one year, at least) and try to learn all the subtle things about it, in order to understand its culture, what the values are, what is encouraged or not. It will be an invaluable experience, even if to learn that it's not the place for you.
If you understand that big companies are not the place for you, then you will need to explore other options. I'd suggest to start with side projects (there's a great blog post about them) and hobbies. They may give you the opportunity to push yourself and learn other things - this could make your life overall much better. You may not want to leave the big company if you're satisfying these needs in some other form.
Another option is to explore startups and perhaps going on your own and founding your company. Side projects could be a good segue to startups or to your own ideas, but even if not, I'd highly recommend to have experience at some startup if after reading this or having your own experience, you feel it is not for you.
What are your thoughts on big companies? I'd love to hear them.
Published at DZone with permission of Rodrigo De Castro , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.