Project over money, team over project
on Dragoș Străinu's blogBehind any work stands a motivation. Sometimes work is a pleasure, other times you do things that are unpleasant just because you have to. But in the end motivations like money, common goal, future achievements drive us to work. When choosing a job as a software engineer, things that motivate me and probable you are the project what I will work on, team what I will work with and money for my personal need. When making the final decision I usually value project over money, team over project.
Team
For me, the team that I will work with is the most important aspect when searching for a new job.
“If you are the smartest person in the room, then you are in the wrong room.” ― Confucius
Being in a team with people that are more experienced than you is the key to fast-growing. But don't just stay and wait when their knowledge will be transferred to you.
- Observe their behaviors
- Make proposals and wait for feedback
- Ask for advice
- Ask "Why?" when they make a decision. "Why this database?" "Why this service?" ...
Make sure to not push too hard on them. As this can defocus and irritate some people.
Even if your teammates aren't more experienced than you they may share interesting articles, tips, thoughts.
In the end, if you have a hard situation, maybe the project is not that interesting (at the moment) or you have problems with finishing a task, with a great team, you can carry on and pass any issues.
Project
At this moment in my career, I am really focused on the technical part of a project. I enjoy learning new tools, libraries that will increase productivity, and when coding I am trying to create a piece of art.
But also the idea and the product may still be a good motivation and even if the tech stack is not that good, with a great team, you will refactor everything as long as you believe in the product idea.
Even if the team is not that good or you don't have a team at all, enjoying the tech stack or believing in the product will make you continue working and loving your job.
While at the interview, I try to discover as much as possible about the project stack and idea to understand if I am willing to accept an offer bellow my initial expectations.
Money + benefits
Money is important as everyone has their needs and money represent your value as a software engineer. Employee benefits like included food, gym, short commute time may be also added to the total compensation pack.
If you have a family and bills to pay money may be a decisive factor. But still, put everything on the table and before making the final decision ask yourself a question.
What will be your next job after this one?
In other words: Where will this job lead you? How much will your professional skills increase? Will this job have temporary benefits you will bust your entire career?
Does it worth an additional 100% salary increase to work with a 5+ year old legacy codebase, old tech stack, and maybe a bad team?
Conclusion
As everyone has a price I will try to conclude with some compensation examples.
If I am enjoying the project and/or the team at my current job, I would not accept a 5-15% salary increase offer, as after 3-6 months I may get even more increase at my current job. If I don't like the project or the team is toxic, I may accept a lower job offer just because I will gain more from the new team or new tech stack.
Focus on your professional skills, gain maximum value from your team (don't forget to also give back and share your knowledge with teammates), learn your tech stack, enjoy your software engineering career and the money will eventually come to you.