Last week I posted about 5 Advantages of Creating an Internally-Sponsored Code Library. This post expands on the points that were previously made and presents my case for Internally-Sponsored Code Libraries to preserver employee’s knowledge within a company.
Over the years, software programming has become increasingly standardized with the development of core methodologies and the identification of industry-standard patterns and anti-patterns for each of the numerous development languages. In spite of this, the drive to develop libraries of common functionality, which can be re-used across multiple projects, has not noticeably lessened. While there are certainly a number of pre-built products designed to fill this void, they are often coupled with specific constraints and integration demands, additional costs in training time or real dollars, or even extraneous functionality producing a negative impact on performance.
For their own part, developers have often resorted to the collection of common implementations. Thus, there exists in every technology-oriented shop, certain in-house knowledge carried by developers in the form of a “mental toolkit” consisting of carefully honed programmatic patterns which are re-implemented regularly as they are needed for whatever projects might be presented to them. Such specific implementations tend to inherently incorporate company principles over time and are natively optimized for deployments aimed at their employer’s customer-base or even the employer themselves.
Because of this, it’s in the interest of companies to retain as much of this hard-earned knowledge as possible. Certainly great difficultly abounds when there is a need to capture a manner of thinking more than a particular function, but even in such cases there exists the opportunity to solidify the essence of the idea by expressing it in a multitude of forms. Most of the knowledge, however, can be consolidated into a plethora of code libraries which, when made available to developers for review and regular redevelopment, helps to ensure the propagation of proven coding techniques while reducing project development time consumed by the construction of common functions. Added benefit can also be derived from evolutionary progression of the developer knowledge pool, as successful techniques are capitalized on while the spread of less effective ones is minimized.
Developing a common pool of code also allows innovative new techniques and ideas to germinate across an organization and creates a healthy interest in ongoing improvement in existing products. When a section of code, which has been implemented into multiple products, has been optimized or otherwise improved upon within a single instance, the change can be quickly applied throughout each of the individual projects. Continuous cyclic improvement of the shared code-base can also reduce uncertainty and risk in new development, and even aid in creating more accurate project estimates.