I like to understand what I am doing. As such I don't like abstractions that I don't understand even if I have (black box) model of what happens when I invoke which function. Most tutorials, that I have encountered have however relied on exactly that acceptance of black box abstractions when they introduce concepts. This is especially true for software development where many things that are done commonly are in reality teribly complicated but also sufficiently abstracted over to make it simple to use, yet not so simple to understand of course. This is where I want to differ.