I'm a senior developer/consultant/freelancer, and I find that most positions entail being hired to "level up" the team. (A recent manager used this exact phrase.) But of course, a team of people isn't always so eager to change, or improve their poor development skills.
E.g., I was just assigned a project with a code base that has,
- no bug tracking database,
- 90 abandoned branches in the repo,
- over 100 irrelevant files in the root directory (outdated mockups, excel files, random scripts, you name it),
- the programming language version has been unmaintained for a year, getting no bug fixes or security updates,
- > 100 dependencies on libs, many abandoned,
- little to no tests,
- no refactoring or cleanup of code ever done,
- manual hacking of the database schema periodically necessary.
And so I'm frequently in the position of getting push back from the colleagues on technical issues — the person(s) responsible for the code's sorry state. They always use the right buzzwords (which is how I got suckered into the job, usually) but then rationalize why now is not the right time e.g. to start using automated acceptance tests. ("We can test the new UI manually.")
I see the behavior time and time again: cringe-worthy statements that "well, [buzzword] is the right thing to do here" matched with self-conscious strongly worded assertions that [buzzword] will never work, or not work now, or is just a fad.
For example, in the above situation, I mentioned the value of enabling us to use TDD. The colleague responsible for the repo's condition pushed back and said that he prefers BDD, but we don't have time for it. Makes me want to kill somebody.
It's pretty upsetting to me, giving me anxiety and anger. E.g., I don't want to be fired, but I also don't want to give in and act unprofessionally.
I have the recurring problem of not knowing how to respond to co-workers via email and IM. I often feel the need to have my girlfriend give me advice on how to reply, and even tell me what to say.
Thanks for any ideas.