Programming Tutorials, (C++ Tutorials)

[=SaxonRah;223303]
I will say this here, as I was going to start my own thread but i feel my thoughts are much more meaningful in this thread.

Take this picture for example, the original poster said “Buddy doesn’t know why, he just does what Cooper does.” It’s a perfect example of the difference of knowing what to do and why to do it.

I don’t feel like the any of the tutorials they(epic) have done so far, even remotely describe why to do something the way they(epic) tells you to. They just tell you what to do, and you hope for the best. I’d go even as far as to say almost every generic tutorial talk/lecture in general i’ve ever seen does a terrible job of describing why to do something a specific way. Epic’s tutorials i feel are also in this boat. Not just c++ tutorials but bp’s too. The how to do something is for documentation, the why to do something is for a tutorial. How to do something is completely useless if you don’t know why you’re doing it. This statement is completely vice versa-able, but the point is we have the how already (docs) we need the why to fulfill in the cracks left over from the docs.

I feel like this is a problem with education in general, but I feel like epic should be aware and try and describe why you would take this specific route ‘z’ in completing ‘x’ or ‘y’ task.
[/]

I believe that is unfortunately true. There are indeed very few good programming tutorials out there. Not just for UE4 but programming in general. Most tutorials are either an API reference in disguise or a recipe how to recreate something piece by piece. The only book about programming that gave me the impression that I really learned something about programming was a book about design patterns that was almost completely ‘programming language agnostic’. All concepts were described with words and pictures and even though there were examples in C I could easily understand why the code was written the way it was. (I should note that I had never read or written anything in C at that point.) Transfering the learned things to my ‘native’ programming language was easy.

Maybe something like that would work for UE4 as well. Start with the project you want to create. Explain the design patterns that are used to achieve that and how that fits into the engine framework. The actual implementation should be straight forward from that point and could be skipped by more experienced C++ programmers. And most importantly: explain why you decided to use that specific design and not one of the hundreds of other possible approaches.

EDIT:
I will add a short example of what could be improved:
I am currently thinking about what would be the best way to implement a basic AI. I know there are behavior trees that are probably designed for that purpose and there is a quickstart tutorial that explains (well, it rather shows than explains) how to create a basic AI. But to be honest, I still do not know why I should use a behavior tree instead of scripting the whole logic in blueprints. I mean I need blueprints anyway and I feel comfortable using them. What are the advantages of using behavior trees or does the usefullness maybe depend on some external factors like the desired complexity of the system. All I took from the tutorial was that behavior trees are some kind of vertically arranged blueprint nodes. I am convinced that they are much more powerful and that there is a purpose for the coexistence of blueprint and behavior trees but at least I did not get it from the tutorial.