https://medium.com/javarevisited/10-tools-and-libraries-every-software-developers-should-learn-e05e636a5577