I have been working for a big company (8000+ employees) for almost 2 years now, and was hired just after I finished my study course.
Everyone here has to deal daily with legacy code which is often very badly designed and full of hacks. At first, I kept a low profile, trying not to criticize things too much. But the situation, as it stands, has become very difficult to live with and it seems no one is willing to improve/replace the tools we use.
To be more explicit we have:
- An obsolete source control tool (Visual SourceSafe)
- Plain old makefiles which only support full rebuild
.deffiles which must be maintained manually and separately for all existing architectures
- monolithic headers files and projects with very few different files (but each has around 3000 lines of code, which sometimes takes care of very different tasks)
- no use of the "new" languages facilities (well
std::stringis not that new but nobody except me uses it)
I decided, a few months ago to do something about it, by designing a new compilation environment. I could get incremental builds to work reliably, faster compilation times, better structured projects, automatic
.def files generation. I even created a bridge from/to Git to/from Visual SourceSafe.
I showed my achievements to several collegues and our boss but it was like nobody cared. They were all like "Well... people are used to do it that way now. Why would we change things ?"
The changes I suggested were designed so that we could have a soft transition from the old system to the new one. Each improvement could be applied separately and safely.
I even tried to get some of my coworkers involved in the changes. But so far, no success.
Have you already faced a similar situation ? What can one do when "lead by example" doesn't work ?