How can I improve my code base

How can I tell my co-workers that the code base they created is a total mess and their practices are ancient?

Welcome to the business world.

Change takes time. In a large company, what they have can take decades to work well enough (and possibly leading the industry years ago when they adopted these practices). I work for IBM and I still use some tools whose backends are from the "green screen" era because they work, are heavily integrated with other tools (and are therefore difficult to replace individually), and because no one has found sufficient resources and time to invest in a transition that does not involve unacceptable risk.

Similar problems also apply to business practice. Switching tools carries risks ... either the risk of underestimating the costs and not meeting your commitments, or the risk of overestimating them and looking like you are not aggressive enough. Management wants to be able to make predictions, so they may be afraid of committing in one way or another and sticking to what they have.

change can come, but it has to start small and be built outwards. You start with an example of how the new approach will help you over time. After all, you have enough evidence to convince a team leader to try a small group (or become a team leader who can) in a way that doesn't affect the rest of the company. Build from there to the outside. Expect changes to take time. Battleships don't start, stop, or spin very quickly.

The same goes for code quality and coding practices. Keep in mind that consistency (being able to read and maintain each other's code) pretty trumps, and learn to work with whichever coding style you prefer. (A good programmer can read almost any style - although the type that put semicolons at the front of instructions might be an exception.) Keep in mind that if you keep your existing product code, you need to minimize the risk of new product introductions Failure, which means local patches are preferred unless you can demonstrate STRONG reasons that larger patches are easier to create, easier to maintain, and beneficial to customers. Remember that many customers are using years of code instead of the latest version and only upgrade when absolutely necessary, precisely because they are unwilling to take the risk of a new bug affecting their business.

And yes, minimal patches result in ugly code. Eventually this will be fixed, but not until the next major release and not unless there is an actual problem with the old code.

When the opportunity arises to implement something new, you can THEN consider taking advantage of a new approach. But maintenance, by definition, is committed to the old processes and changes very slowly. Unfortunately, academic best practices take a long time to adopt ... and often something else is the latest and greatest at this point.

Make small changes at a time until you can make bigger changes. Show, don't just tell. Be patient and persistent. Remember that things are as they are because they work, and learn to use the current system as well as you can exactly explain the benefits and risks of switching.

Or do the risky thing of starting your own business and doing things your own way ... which will quickly show you why everyone is so nervous about risks they can't yet quantify; Some young punkers are going to come up with this week's trendy approach and you have to explain to him that the company will have to wait for a clean opportunity to cut back ... and in the meantime he has to work on what you have now and if he does if he cannot do that, he has no future with the company.