Given the below information is this sort of situation with my company common or unusual?
The company I work for is a small startup. I am a software developer and have been there for a year. Everything I do is for the company which includes me working long hours (sometimes I had to work for 18 hours a day) to get the job done and going a bit and beyond to try and make the company the best it can be. Normally the people can be nice but I can't tell if this is normal stuff to have to deal with since it's my first software developer job after finishing university. I am also worried if I get a new job would it be worse than this one.
Pros: - Can be really friendly - I don't need to worry about being myself most of the time (can talk freely). - Work from home now one day a week (just started).
The first issue I have had with the company is when I started they gave me the existing project(i was the only dev on this project) to take over and fix a lot of bugs whilst implementing new features. There were issues when it came to this though including the project I was taking over was really buggy, no structure and basically a complete mess. Being a graduate even I knew that fixing this should be the main priority because expanding the project further would cause problems later on down the line (which it did). They said that we don't have time and just to get used to it. At the time I did as I was told and started to fix the issues. Later on more was added to the requirements but the deadline was only increased for a months worth of work by a week (i did tell them this extension is too short). This caused major issues because I was still learning the code and I tried to explain to the other devs that this structure for the project is bad and if I change stuff in the code there were ripple effects which cause changes to other parts of the project that shouldn't have been changed. They said it's your problem just fix it for the deadline and I agreed but said it will be buggy because I can't do testing on the project properly in that deadline (we had no automated testing). For that month I worked 18 hours a day and after doing this for a few weeks and then the other devs complaining saying how is my project not finished they only added small features (it was more on the number of new features). After all of this, I kind of broke down multiple times because of the workload and the work-life balance being none existent. They also started to set deadlines on days I had taken off because I had some personal issues they were aware of. They messaged me on those days asking if I could work and I told them I would try and did work but I hated them for even asking since they knew my situation. After we finished the managers knew they messed up with how much they added in such a short time frame and said sorry and we will plan it much better next time.
After that, we planned a new big release this one was meant to be a complete overhaul for the project to make the code nicer and add some new features. The features they suggested were completely pointless for the users of our software. I asked them thinking I just didn't see the point of why we are adding this and they said: "if we don't try it we never know if it's going to work" no thought process of why this would be amazing no pros and cons nothing. This made me very annoyed thinking more about the features I noticed these could actually drive users away from the software we provide and explained this to them. They didn't care when I said it saying: "we have to add something" and I explained why don't we think of the small quality of life features to improve it but they wanted those other features instead. I then got told the feature list with designs will be available this month and that I should start the overhaul(i knew they weren't going to be ready this month and I definitely wasn't going to do a major overhaul without knowing what else needs to be added.). Two months later I got the features and designs, the features list I got did not have the features I complained about and when I asked what happened the dev told me that someone else complained and that's why they got removed. I asked him will the deadline be moved and he said no and I said: "it's two months late and there are features we never spoke about on this list". I also mentioned the month I was working insane hours and said I just can't do that again and he said its fine and those hours were my fault.
I also wore headphones and listened to podcasts. This is because I can't focus on how loud the office is (i need silence or minimal talking) which is probably my problem. One day I grinned because something funny was on and the other dev turned to me and went if your listening to that are you being productive.
I brought this all up a few times when I had enough including the poor communication, deadlines that didn't make sense and other issues including the tense atmosphere sometimes. I provided a list of issues to the manager and explained ways to improve them. This including improving deadlines giving deadlines to devs by giving set deadlines only after the designs and features list is finished. I also explained some personal issues in the office such as someone making racist jokes about my girlfriend (remarks about her being Asian or just general remarks about Asians) and how I feel segregated (if people make small talk and I try to join in they just snap at me and tell me to do my work). I also brought up other colleagues problems (of course didn't bring up who said it) and made sure that the issue was known about because I think for a really small company to work everyone needs to be on the same page.
Note: At the start my communication was bad. I knew that and improved it over time but now if someone does something wrong it feels like I am the one they try and blame. For example, a dev shouted at me saying we spoke about this feature and said that he doesn't want to micromanage everything. I explained saying I know he has useful feedback for issues and likes to have his say and what does he think of my way of solving the problem and please don't speak to me like that since we never spoke about this edge case. He proceeded to speak to me like a dick and then said we did once. I proved him wrong by explaining the issue calmly and saying which use cases we covered and how this doesn't fall between any of them. He said it doesn't matter but we did speak about this. This went on for about 5 mins of me explaining we didn't and then someone else afterward backing me up. He has done this a few times and never apologizes for it.