External dependencies - your problem

A short story on dependencies

Posted by Tomasz Nieżurawski on 2017-03-18

Why everyone is developing so fast?

Have you ever wonder why there is so many digital products out there? Why so many people create something new? Why do we experience the biggest boom in software development?

I have a simple answer for that. We do this because we can.

What allows us (developers) to create a new software so fast is hundreds or thousands lines of code that were written by someone else. The code that for us is just a black box. Often we do have some documentation for this but let’s be honest - you are not familiar with the code that is under the mask. I think that in big communities there is probably a few guys who know that library or framework very well. The rest of us - we are consumers.

Is it bad?

In my opinion it’s not a bad thing in general. You should probably be familiar with Lean Startup Methodology, PoC, MVP or Worse is Better concept. These ideas have something in common what I would describe as:

Just deliver something that work in acceptable way and please do it fast!

Hey! This is a part of business, right?

As developers we need to depend on 3rd party solutions to meet deadlines and business needs. Sometimes we know that we are not going to write something better than other guys did. Sometimes there is no benefit in rediscovering what already has been tested on the battlefield.

I understand that and respect 👍.

Take control

I have a just one rule in my life - if you bring some dependency to your project you are now responsible for that. You can’t say that something is not working because of the library that you use.
You should rather raise an issue, fork the repo or make a Pull Request with the fix. Be a good guy and help your community 👮.

Do the housekeeping

The most important thing about dependencies in your project is to keep them up to date. Sounds easier than it is in reality. Most of us make a huge mistake and don’t make it in a regular way. Then when you discover that something is wrong in your dependencies, you would like to use some new features in your favorite lib or just bring some fix to your project it’s already too late.

Too late to do it without a lot of problems and stress. Spending many hours on the upgrade. Upgrade that no-one from business team will let you do if you will estimate the effort honestly.

Small steps instead of one big step

Do the housekeeping regularly. Set a goal to upgrade your dependencies once a week or 2 times in the month.
You will be always on the edge of your technological stack and you will never work with legacy project. At least when it comes to dependencies 😉.

Sounds like a good plan? I would be more than happy to hear about your experience.

In the next article I will share my way to do this. Good luck with your dependencies 🖖