Day 28: Frequently Repackage Code Into Smaller Libraries

A problem that is common to many programming projects is the deficient separation of code into distinct packaging units, such as libraries and modules or assemblies. Languages such as Java, Python, and C++ provide great flexibility for users to create such modules. Despite this, many developers, especially beginners, misuse this flexibility by packing as much…

Reducing Build Times in C++ Projects

One of the most frequent criticisms of the C++ language is the difficulty generated by the long compilation and link times. All of that contributes to the perceived duration of complete builds for that language. Sadly, few people understand that build times are not just a factor of the complexity of the language or the…

Day 27: Design Resilient Interfaces

Interface design is at the heart of software engineering. While it takes a good program to implement an algorithm, it takes a top programmer to design clean interfaces that will make software development easier, not harder, as time goes. First let consider our definition of resilient interface. In a few words, an interface is resilient…