Note that there are some explanatory texts on larger screens.

plurals
  1. POCommon libraries in a large team
    primarykey
    data
    text
    <p>Assume you have five products, and all of them use one or more of the company's internal libraries, written by individual developers. </p> <p>It sounds simple but in practice, I found it to be <em>very</em> difficult to maintain.</p> <p>How do you deal with the following scenarios:</p> <ol> <li><p>A developer unintentionally introduces a bug and breaks everything in production.</p></li> <li><p>Every library has to mature, That means the API needs to evolve, so how do you deploy the updated version to production if every developer needs to update/test their code while they are extremely busy on other projects? Is this a resource and time issue? </p></li> <li><p>Version control, deployment,and usage. Would you store this in one global location or force each project to use, say, <strong>svn:externals</strong> to "tie" a library?</p></li> </ol> <p>I've found that it is extremely hard to come up with a good strategy. My own pet theory is this:</p> <ol> <li><p>Each common library has to have a super-thorough set of tests or else it should <strong>never</strong> be common, even if it means someone else duplicates the effort. Duplicate untested code is better than common untested code (you break only one project).</p></li> <li><p>Each common library has to have a dedicated maintainer (can be offset by a really good test suite in a smaller team).</p></li> <li><p>Each project should check out the version of the library that is known to work with it. This means a developer does not have to get pulled away to update API usage, as the common code gets updated. Which it will be. Every non-trivial piece of code evolves over months and years.</p></li> </ol> <p>Thank you for your thoughts on this!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload