I had an interesting conversation with the Practice Head of Frontend Services at DVT earlier today. I mentioned to him that when being onboarded at a company, the developer who is joining a project or team should never come in with the idea that they are in charge or they are going to start shifting things around for the better on the first day or in the first week.
It is important to note that the people you are going to join on a project have been working on said project for a long time that is if it is a mature project and so they have put their blood, sweat and tears into the project. They have an attachment to the project so if you come in and start trying to make things better on the get-go there might be some personal pushback from the team.
This is why I like to think of a project or team that you are joining as a hotel or someone's house that you have been invited to. You never go into a hotel and tell the hotel manager how to do their job or you never go to someone's house and tell them that they must get new carpets because it is so ugly and you do not like it. These things deviate from the normal social constructs that we all live by.
If I had to be invited to a friend's house, I would be a guest in the equation. I would treat the person's home well and be polite as they have taken the time to accommodate me in their home.
It is nice to think of joining a project or team in the same manner, it is best to sit back and let the team who have been working on the project for 1 - 10 years guide you through all the ins and outs of it and you should take as much notes as possible even if you know that you are a gifted software engineer.
It is called practising humility. Later on, as you feel more comfortable with the team, you can slowly start introducing ideas that you like or things that are more process and document-driven to the team such as clearer commit messages with deep references to decisions.
If you join a project or team and straight off the bat you come in and try to fix everything or tell everyone of all your amazing ideas then it will come across as you being smarter than everyone or they will take it personally. This is a solid sign of maturity in a software engineer, the moment a software engineer starts being concerned more about the team morale and sentiment than technical details that is when they become a senior software engineer in my view.
You can be the greatest technically gifted software engineer on the planet but if no one wants to work with you or if you cause stress every time you join a meeting then it is a sign that you lack the necessary soft skills to command a team or lead a team.
This is a profound way to think about working with people as being smart is one thing but being virtuous is of a higher importance.