This question already has an answer here:

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?

marked as duplicate by gnat, IDrinkandIKnowThings, scaaahu, Snow, Mister Positive Dec 6 '17 at 12:22

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • I'm missing something. You said "upper management approached me" in one sentence, then later you express concern about going to upper management. Does upper management already know the current code has flaws? – Dan Pichelman Dec 5 '17 at 22:09
  • @DanPichelman They're almost completely computer illiterate. What they know is that the system is hard to use and they want it to be more user-friendly. – rschpdr Dec 5 '17 at 22:18
  • ... and they've hired someone to cover your current duties while you fix this. Good for you! – Dan Pichelman Dec 5 '17 at 22:19

How can I influence my colleagues to adopt good practices and basic software engineering without degrading my relationship with them or invoking upper management?

  1. Be an example.
  2. Use good practices and make them notice you use them.
  3. Succeed in performance and evaluations, make sure they notice that.
  4. Watch your coworkers follow you.
  5. ... ?
  6. Profit
  • I've been doing that since the day I started. Not really working, plus time is really short because we're always busy fixing the faulty system (and I'm extra busy teaching the intern now). – rschpdr Dec 5 '17 at 21:43
  • @rschpdr then I am afraid that escalating is coming to be your last option here... that or let them fail at some evaluation so they can reconsider adopting good practices (not sure how that may go though) – DarkCygnus Dec 5 '17 at 22:05
  • That's part of the problem... there are no evaluations. The only way to know we're doing good are raises or small monetary bonuses. The only way we're doing bad is well... You probably guessed. – rschpdr Dec 5 '17 at 22:20
  • @rschpdr well, as you are "the IT guy" (funny, my non-tech coworkers call me that also), I think it is your job to propose and enforce such good practices. Even more if your team is starting to grow in numbers. Seems that you are actually in position to start enforcing those practices with the people under your guidance. Then, after trying them some time and getting some benefits from their use, management will probably notice it and conclude it's for their own good to adopt that... now if this is also not possible then I fear that the company may start going South soon. – DarkCygnus Dec 5 '17 at 22:26

How can I influence my colleagues to adopt good practices and basic software engineering without degrading my relationship with them or invoking upper management?

You already have a good example of what happens when good practices are not followed. Without blaming anyone you could associate the flaws of your current app to the practices that weren't followed, and that now you have the opportunity to do make things right from scratch and avoid a lot of those problems.

Not the answer you're looking for? Browse other questions tagged or ask your own question.