https://medium.com/@hello.actuallylearn/complete-guide-to-effective-learning-to-become-a-programmer-0a918c996e28