Assessing the impact on project schedule from using development libraries and code reuse
A question I asked myself is, when does using prior work save us time?
My co-workers often talk to me with passion about how much they believe in code reuse and how much faster it makes development time. Working in the research fields for a long time before I joined industry, I’ve always been apprehensive about the value of code reuse. My experience has been, it’s often an extreme time sink trying to get other people’s research work running again. My time in industry has also shown me slightly better, but still poor results when it came getting legacy code running. Libraries are okay if they’re mainstream, but obscure libraries can often be time sinks.
Snippets of conversation at work this week has helped me realise the main performance factor for using prior work is how easy it is to understand:
Understanding makes the biggest difference when using pre-made code/hardware:
Recommended by LinkedIn
Always in the past, I would take a quick glance at prior work and would get an intuitive feel for effort it would involve, which often turned out accurate. I didn’t understand what I was intuitively doing, so it was hard to justify myself when others disagreed on my effort estimates.
Now with my new insight, I realise what I was doing was assessing how easy it would be to understand the prior work. Ease of understanding can be fairly quickly assessed without actually needing to understand many details, which is why I was able to come to a conclusion quickly. Then the accuracy of my time and effort assessments were because the ease of understanding tended to make the biggest impact to the eventual work effort.
This is a good step forward for me. With this I can justify my effort assessment to others, rather than just weakly saying it is my intuition.
More broadly, for developers or companies, making your work easy to understand with working examples and documentation make a big impact to the effort required for your work to be integrated into your colleagues or customers designs.
One of the most important factors in making code reuse easy and beneficial is having common interface standards. This aids in understanding and testing as well as greatly reducing integration time.
One thing that people often neglect is how easy the tests are to understand too. If I can't understand what the design has been tested against, then I'm not confident in how it will behave