I could easily write a book about TCS's cons, but I will attempt to make my personal story as clear and concise as possible.
First of all, I was one of the many unfortunate software engineers who were put onto a laughably dysfunctional, do-nothing team. You know, one of those classic TCS teams where everyone spends more time pretending to work rather than actually doing work. (Keep in mind that I already had a couple years of industry experience before I joined. I switched jobs so that I could move, travel, be able to work remotely, etc. ) Not only was my team a joke, but actually every single aspect of my entire experience was a complete and utter disaster. In the end, it was worth it because I went from a software engineer's nightmare to a dream job.
During my interview process, they told me a location that I was happy with. It would have been affordable and easy for me to move there. However, they would not confirm or deny any specifics regarding location or the client after I received my offer letter. Therefore, I was to be left in the dark until my start date which was mildly acceptable. Many consulting companies keep it a secret until your first day-- likely to increase the chances that you stay since I'm sure most people are not thrilled about their first assignment. Anyways... in my case, they didn't even tell me the official location and client until my last day of my one week orientation. It gets worse... the location they gave me was not what they told me originally. I am very, very lucky that I did not sign a lease or buy a place before I started. I was lucky that I went into TCS with nothing but skepticism and kept my old place an extra month. (As a side note, the actual location was so much more expensive to live in than the original. This would be a deal breaker for many people depending on their budget. If the HR team I interacted with was reasonable, they would have warned me about this before when I got the offer.)
As soon as I received this information, I contacted the "client contact" and they had no idea that I was going to be arriving. Off to a great start. I asked if my start date was still okay and they said yes. Spoiler alert: the start date was not okay. They did not have anything for me when I got there. No badge, computer, credentials... nothing. Some aspects of my onboarding took over a month of waiting, and other aspects didn't even happen during the entire time I was there. Some people say, "Well, you should be happy! They're paying you to do nothing." I strongly disagree though. I was there to be a software engineer. I was there to work, to add value to the company and the client, and to grow as an engineer. None of this was happening at all.
The vast majority of my workday every single day was just me sitting there doing nothing. There are many reasons why, so I will just list all of them out as they will tell you a lot about how bad certain TCS teams can be:
- The first computer they gave me was (physically) the dirtiest computer I have ever seen in my entire life. Calling it repulsive is an understatement, and I was apparently expected to wash all of the gunk off the screen, keyboard, and case myself. It was awful. Also, the computer was so incredibly slow that I could hardly do anything. I couldn't even run Chrome. What a joke. It took over a month for me to get a better one... but the better one was hardly an improvement. It was technically faster, but it was still so slow that I could barely do my job. A workstation should never be a software engineer's bottleneck. Everyone else's computers were just as bad by the way.
- Everyone else was pretending to work, so obviously they would not be able to give me something to do.
- Everyone's communication was atrocious. People ignored messages and calls... They wouldn't listen to what others had to say and would only hear what they wanted to hear.
- During the small fraction of the day where people actually put in effort, the communication was so broken that work was never completed in a logical manner.
- Most of my colleagues lacked some of the most basic CS fundamentals along with the lack of git, JIRA, and scrum knowledge. This should have been a requirement for anyone on my team. There were higher ranking engineers that didn't even understand some of the most basic git commands. Please...
- The team was chaotic and disorderly. There were no protocols for anything and no documentation. Also, despite hardly being agile at all, they masqueraded around as being agile. Hilarious.
- The client's code was very dirty and ancient.
- Most people miss mandatory meetings on purpose.
Let's jump to my last days as a TCS employee. During this time, I was still trying to be able to use my benefits. This includes health, FSA, vision, dental, commuter, etc. This was multiple months after my start date, and I was paying for all of these benefits ever since my 2nd paycheck even though I wasn't able to use them. I discussed the issues with their benefits many times, but they were never able to resolve anything. HR was never helpful. Also, I attempted to get my paystubs and had to raise a ticket about it. This ticket was never resolved either. On top of that, they rejected my reimbursement request for business travel and did not tell me why. And to make it even worse... they didn't pay me for my last 3 weeks because their system wouldn't even let me log my hours. At the end of the day, TCS probably owes me a lot of money. I could take them to court and win pretty easily, but I think the costs would eclipse what I would get out of it.
All in all, I'm very happy that I will never have to spend another day with TCS ever again because my experience with the company was a complete joke. At the same time, I'm grateful that I was able to use them as a stepping stone to something infinitely better than anything I've ever had before.