Recruitment to Resignation: My Four Months at Microsoft

I had a very similar experience at a small company (<100 people, around 15 developers) that was trying very hard to pretend to be big. When I got there, I didn't know very much about the product. There were no screenshots or demos on their website but since it was an enterprise application I figured this was normal, since they weren't trying to sell to random people on the web.

After a few hours of random preliminaries and a checklist of things I should do such as "Introduce yourself to another team member," "Read X document on the company sharepoint," etc. I sat down at my desk and started looking at the source control. I got assigned a "mentor" whose job it was to show me how to get the source, build, run, etc. but I didn't talk to him much after the first few days. This was when I realized that there is no way that the size of the codebase could possibly be keeping 15 developers busy. Every commit I looked at was one or two lines of trivial changes. It was like I had stumbled into a Potemkin village. The repository also went back only a few years, because they had migrated their source which itself was as much as 20 years old, which left the origins of much of the code a mystery.

The first day the CEO (who interviewed me, along with my now-manager) took me and the other hires starting that day to lunch with the team. I told them I had studied electrical engineering. One of the team members remarked that he knew a guy who drove trains too. This was typical of my coworkers' level of intellectual prowess.

I sat for a few days reading a book that was recommended in the checklist on the history of the industry this company was in. Every so often my mentor would stop by to check on me. I told him what I was doing and he said, "I guess that's a good thing to do" and left.

Finally my manager gave me a task. It consisted of adding some fields to a form based on a pre-written spec. The code was all in C, and used a custom controls library that required defining all the controls in a C array with row and column constants for their positions. A separate enum defined the names of the controls so they could be referred to for hiding, showing, etc. I decided this was fragile and tried to do it in a different way. The manager came in my office and, laughing under his breath, said that he doesn't see why I couldn't just do it the way it was in the rest of the code base.

The days wore on with these kinds of tasks. The manager would come in my office every week for a "weekly meeting," where he would say, "I just want to talk and see how things are going" and I would say they were fine and there was nothing more to say so he would leave. I would do at most a few hours of work each day, modifying forms in the same tedious way. Code reviews were required, but the code review comments were usually regarding punctuation and formatting (braces always on a separate line, always a space before open parenthesis) and no one ever noticed glaring omissions in the code itself. That year I had a positive performance review and a significant raise.

Around Christmastime, we were all forced to go on a three day company retreat three hours drive away where we sat through endless meetings about nothing, followed by team-building activities and dinner. The CEO got very drunk and injured somebody in a game of ping-pong, then told me that we should spend $5000 in a night and he knows how. He also developed an obsession with the idea of me wearing elf ears and said that he would hurt my cat if I ever came in to work wearing them.

Soon after, Agile was introduced. They hired an Agile consultant who also worked as product manager, and she had us doing approximately 6 hours of meetings every two weeks, plus 15-minute daily standups. This was needless to say torture. They hired a few more people who were even dumber than the ones I had already met. An especially painful time was the company lunch, where people standing in the lunchline would express their confusion as to the type of plant that lentils come from or what a weird food Quinoa is.

I continued to do a few hours of work per day. I was also coming in right before our daily standup, because honestly there was nothing better for me to do. Any attempt to improve the terrible code would be met with derision. I was not allowed to write a single line that did not directly correspond to the request. If I wanted to do that, it would have to be a separate Agile "story" or a "spike" and the product managers could shoot it down if it would threaten our "capacity" to deal with customer requests to make the product actually do what it was supposed to.

At some point, the CEO called me into his office and said that I didn't seem too enthusiastic about what I was doing, and he was offering me the opportunity to take charge of a brand new project where I could really apply myself. They were putting this colossal hunk of garbage on the web. I had no interest in doing web stuff but said ok, because what else could I do?

This resulted in me spending a few weeks trying to learn Ember and figure out how to use it to accomplish the task at hand, while the existing UI person developed a different solution using backbone and jQuery and the CEO said what do we need this ember thing for anyway? I admitted that we didn't and I didn't really want us to develop two solutions, so I wouldn't work on mine anymore.

The CEO often inserted himself into programming discussions. He had written much of the original code, and had an impulsive tendency to "just solve it" in the most expedient way possible. He was also intensely suspicious of any programming technique invented after 1980. Early in my tenure, he had sent out an e-mail, the only mass e-mail he ever sent out in my time there, saying that we must absolutely not use std::string because it creates a massive performance penalty. He was also extremely opposed to #defines of strings, because as he explained, instead of misspelling the string you could just misspell the name of the #define. As a result the codebase was filled with hundreds of copies of the same string, there was literally no attempt to mitigate this problem and I would have been punished for trying, except for the custom ORM layer which I will get to in a moment.

Soon after I gave up on Ember the manager called me into the HR manager's office and they said that I was not "engaged" and we must find a way around this problem. Finally I told them that every time I tried to propose my own solution the CEO would aggressively browbeat me into accepting his approach. They said this was interesting information, but unlikely to change, so I would be given the opportunity to look for new jobs and they would accommodate me if I ever needed to go on an interview. I said this was not acceptable, so they said I must show more engagement and enthusiasm.

Soon after, there was an Agile-related reshuffling, and I was moved away from my manager to a different one. Whereas the first was a very timid yet cunty Asian, the new one was a very large, douchey individual who routinely made sarcastic remarks about stabbing people through the eyes which didn't put anyone off in the slightest because that's who he was. I got on with him a lot better. We had continued awkward conversations about "engagement", how I was sometimes seen "actively not working" by reading things on my computer in the 5 hours between when I finished my work and when it was time to go home, and how people perceived me as not "caring" about my work. The year drew to a close and as a result of the above my new performance review was negative and I got no raise.

That year, instead of a three-day company retreat we simply did the same thing but in our office. We had to endure four hours of lectures on the future of the company and were told to write down on a note how we saw ourselves fulfilling the company goals ("Do the right thing/Take pride in your work/Move forward"). Those who wrote down something good won a prize. Then we had another day of meetings, a scavenger hunt, and a happy hour. I was so broken down by the end that I gladly stayed for the happy hour and drank.

Over time my relationship with my new manager improved. I started coming in a full hour before the daily standup, I found ways to avoid being seen reading books on the internet, and I think he became increasingly convinced of my technical competence. Nevertheless I was never allowed to change obviously bad or duplicated code, and the more laughably terrible things I discovered in the codebase, the more he would insist that these were relics of a different time that we were now powerless to change. In the end all anyone could do was shrug.

It was with some hesitation, then, that I sent him my resignation e-mail. Who knows what my new job would bring? Would I live up to the challenges? How would I adjust to being expected to actually do work? Was it only a dream that I was being released from this hell? But in the end I think we understood each other. "There were some differences, and let's leave it at that," he said. The HR guy asked me if I had any comments about the interview process. I offered him only one suggestion: show people the software before they start. The next day, at 3 PM, my manager said if I didn't have anything more to do, I was free to go, and just like that, it was over.

/r/programming Thread Link - medium.com