Over 4 1/2 years ago as a young 20-something man, I started my job as a trainee SQL Developer. I had no qualifications or experience in the field at the time, and the company that hired me did so with complete faith in what I had said during the interview process. They gave me a fair salary for a trainee, and, for the first time I felt like I was earning money, and I had a good job.
As the years progressed, I took my parent's advice, kept my head down, learned fast, worked efficiently and developed my skills to the point where I had skills useful to other areas of the business. Essentially as people had left the business, I continually took on the extra tasks left over to bridge the gap. Before long I had learned the Microsoft full-stack, and additionally many web development techniques on the front-end and back-end to visualise reports and analyse MI. My skills essentially became unique to the business.
We had work conferences and social meet-ups where people received awards for hard work, some were newer to the business than me and didn't really do much, and I began to feel undervalued. Especially when I remained on the same salary that I began with for 4 years, but I didn't speak up because I felt that this would cause me to be seen as only "in it for the money" or "high maintenance".
At the beginning of this year, I was moved to another area of the business because a senior member of staff was leaving and they were worried about who was going to take over. I quickly filled the gap and began working well in my new role. I was promised more money, but I had to mention it a few times to my manager (not his fault, he did keep asking the upper management but kept getting fobbed off). Eventually, I did receive a pay rise, but I felt it didn't reflect what I was worth to the business.
My girlfriend then fell pregnant, and we had to move out of my family home into our own "nest", which put some considerable strain on me financially. I decided the best course of action was to find a new job.
Luckily, I have found a new job with good opportunities to earn more money and support my family. When I handed my notice in, the upper management were surprised and said that I was worth too much to let me just walk, so they counter offered with slightly more than the new role. I obviously turned this down.
My question is, is it my fault that I was overlooked, undervalued and underpaid for so long? Or should my employers have identified my loyalty and hard work and rewarded me for it accordingly? Why did it seem like people who did less than I got more? The sad thing is that I loved working there, and found it challenging and engaging, but the stress financially and emotionally (because I felt like a walk-over) was too much to bear. Ultimately, I had to move jobs even if it was a difficult decision, as I knew that accepting more money to stay would've not only gone against what I'm about but would've also damaged my career.
EDIT:
I thought I'd better edit this and add that I never received a reward or any mentions for my efforts at any meetings, conferences or social meetings in the entire time I spent there. Despite the fact that others had done just the same amount of extra hours or even less, and were recognized and praised regularly. It was as if I didn't exist at all. I don't know if this is a symptom of my character and the fact I kept quiet, or something else. I doubt that it was intentional, but it didn't feel very good either way.