I'll explain with a real life example. Engineer 1 makes a function/module that performs a task and took 1 day to research and write. Engineer 2 has no idea this has happened and spends another day making a function that works in a slightly different way using the same core functionality to do a similar thing.
What methods can we use to prevent this situation/promote communication in this case?
Things I can think of are:
promote general communication (e.g. daily stand-ups)
improve documentation to allow engineers to more easily read other engineer's code
somehow promote similar code being stored together
IMO there's quite a few methods that could be implemented – can anyone suggest any of their insights?