I’ve been facing problems with customized software that aren’t backed by an NPM module. It is where a decision at a company leads the developers to make their own thing and reivent the wheel in software development. In one company, a group made a templating framework, and once the makers left no one knew how to use it. In another, developers thought to copy third party software or make their own utilities. That code still needs to be maintained, and it’s hard to figure out.

Now, the reasoning for this is so that developers don’t have to depend on third party software. But there’s a problem here. If the third party software is being copied, why not just use the NPM module anyway so that it can get updates? An additional problem is the need to maintain something, since the NPM module resource is cut off. It’s a nice thought to not use third party software, but in the end it just doesn’t make sense because it causes bigger maintainance problems than it solves with the small-ish dependency problem.

Now on the other hand, I have heard arguments against using open-sourced software because the code quality can really suck. That I agree with! There are millions of packages on NPM, and I can assume that most of them don’t have good documentation. But here’s the difference; there is a handful of software where there is great documentation that can help software be usable. Well documented open-sourced software may even more usable than customized software. So a developer would be way better off using the well documented open-sourced software rather than making their own.

I know it is enticing to make your own framework because it makes you feel powerful! You can create a framework to help speed up development! But it comes at a cost. The made up framework needs to be maintained and remain usable; sadly, most companies don’t want developers maintaining a framework. Instead, use some of the bigger name frameworks that are well documented and backed, because they can truly help speed up development not just a developer but all the following developers that are coming after.

Just one more caveat to add is if it is feasible to support customized software. From what I’ve seen, this should primarily be done with large groups where a few people can focus solely on maintenance and usage. If that isn’t doable, then the customized software is going to get out of date really fast, and it will be thrown out by subsequent developers.