I love my job even though it's the hardest job I've ever had in terms of hours worked and learning curve. I worked 8 years at a big corporation where I was fairly high up and was paid a really nice salary along with RSUs but the last 3 to 4 years there was just miserable for me. Based on my current happiness and contrasted with my previous unhappiness, I think the reasons are:
1. My work see the light of day. My efforts matter. I don't mind working hard as long as it is not wasted. At large corporations, projects, even big ones, are often scrapped for reasons that aren't anything related to the the technical work. I get it but it still sucks and it really makes me not want to try hard. Having effort and outcome being correlated with each other is a huge motivator.
2. I know what's going on but am never the smartest person in the room. Working with people at least as smart and skilled as I am is amazing. I don't have to worry about other people and their work. We can just divide up the work and be reasonably sure things will get done in a reasonable way. If not, talk it over and fix it.
3. I have a lot of responsibility and independence and we attack the problem. I've had the opportunity to learn and experiment with so much in just two years and those experiments are actually getting deployed. Having a hand in pushing things like Docker, Clojure, etc. at my company is amazing. I remember all the silly meetings at my old job over the choice of language for QA that ended up exactly where we started versus now when we decided to try out a new tool written in Clojure even though none of us ever used Clojure. We are all smart enough engineers, why should a new language stop us from solving the problem.
1. My work see the light of day. My efforts matter. I don't mind working hard as long as it is not wasted. At large corporations, projects, even big ones, are often scrapped for reasons that aren't anything related to the the technical work. I get it but it still sucks and it really makes me not want to try hard. Having effort and outcome being correlated with each other is a huge motivator.
2. I know what's going on but am never the smartest person in the room. Working with people at least as smart and skilled as I am is amazing. I don't have to worry about other people and their work. We can just divide up the work and be reasonably sure things will get done in a reasonable way. If not, talk it over and fix it.
3. I have a lot of responsibility and independence and we attack the problem. I've had the opportunity to learn and experiment with so much in just two years and those experiments are actually getting deployed. Having a hand in pushing things like Docker, Clojure, etc. at my company is amazing. I remember all the silly meetings at my old job over the choice of language for QA that ended up exactly where we started versus now when we decided to try out a new tool written in Clojure even though none of us ever used Clojure. We are all smart enough engineers, why should a new language stop us from solving the problem.