The situation:
I work on a small company in Brazil, that is not focused on development. I can’t really find a way to describe my position, but I work as a mix of infrastructure, network and database management professional, which my non-IT colleagues call “the IT guy”.
It’s a small family company which happens to have some really large clients, and is growing exponentially recently.
I don’t really know how well I’m doing because we don’t have formal performance grading but my salary has grown 120% in a year, so that makes me think they’re satisfied with my work.
The problem:
I’m in the IT team with two more guys, whom are developers, and a intern. We develop and maintain a corporate health insurance analytics software that we sell to clients. Recently, the upper management approached me and my boss (who is not a company employee but a third-party consultant, gotta love unstructured companies!) and said that they would hire the intern to learn my job and want me to start actively developing a new, better version of this software.
Our current software is terrible. We don’t have any kind of software development best practices like SCRUM, documentation or versioning. I don’t speak Delphi but i’m 100% sure the code is a convoluted mess. Our database manages to fail all three normal forms, and takes hours to iterate over simples tasks.
Joel Spolsky says on his article that one of the things he values most in a developer is the ability to overcome corporate inertia and solve the company’s problems.
Our case of corporate inertia seems to contradict the usual drama: the upper management is excited and willing to invest in our education and professional development and hoping to improve the software we sell, but my boss is afraid of change and blocks all my ideas with the usual “that’ll be too much trouble”.
Going directly to management and telling that my boss is making things hard seems a little cutthroat to me, and my daily struggle to convince my boss that best practices are not superfluous is getting tiring.
I’m afraid to leave because my salary is high for my age and experience and I fear that I won’t find someone that pays equally well for what I know.
The question:
How can I influence my colleagues to adopt good practices and basic software engineering without degrading my relationship with them or invoking upper management?