You haven't yet saved any bookmarks. To bookmark a post, just click .

  • Software Dependency Ethics

  • One of the job of a backend engineer is to do code integrations. That is, integrating others code to the end API servers in order to deploy.

    During the deadlines most of the teams will handover the code to the backend team at the last moment. This happens because of the poor project estimation skills the software developers have, including me.

    So, Its not about handing over the code earlier. One can understand the development of some features takes more time than estimated. But it is about how easy it's to integrate and deploy at the end of the day. I have seen code bases bloated with dependencies.

    For example, a code base uses only array data structure from python's numpy library in which the import statement looks like this:

    from numpy import *

    Or sometimes, a code base will try to install all the nltk modules but will be using only one of them. You know whats even worse?, loading the bloated modules every time a method is called instead of initializing it inside a class.

    At times, people be so lethargic and never include the dependencies in the requirements file. In case of python its requirements.txt.

    When this dependency bloat happens, the engineering guy who is responsible for maintaining the SLA should start digging into the code to find out what's causing latency and optimize the imports. Or he should find out all the dependencies and install by himself where he might fail by installing different version of them.

    Mostly he will first try to contact the code owners but when he is unable to reach them, he has to put his hands on the code to roll it out within the deadline.

    So, before handing over the code to anyone for deployment. As a owner of the code, check for dependency bloat, optimize imports and try to keep the response time decent.