I have been wondering about this questions for a quite some time and now that I am about to write my first research paper in software engineering and I want to be efficient doing it in LaTex and actually spend time on the content and quality of the paper and not waste time on the syntax of LaTeX.
It seems to me from my experience with working with LaTeX and also from talking to other people that LaTeX is not a standard programming language with a base syntax that people can learn and reason about the statement that they are writing LaTeX code. For example, it seems to me that if I have a specific problem such as printing a bibliography in a specific order, creating a table, changing the fonts, or formatting a document, people search online how to do it and the responses are always a pieces of code without an actual explanation of the logic in the code that they wrote. What I usually do and most people I talk to do the same is to simply copy and paste the responses in their documents and it "magically" works. But I wish I could arrive to those answers myself! Unfortunately, I have not found ways or resources to properly learn LaTeX like a programming language in the sense that I could reason about why the responses I get work, instead of just copying and pasting code that other people wrote.
Is this a feeling that other people have? If not, what am I doing wrong and what can I do to avoid wasting time when I write LaTeX documents?
EDIT: The main goal of this question is asking about the thought process and methodology to learn LaTeX and write it code without actually copying and pasting examples from other sources.
natbib.styorbiblatex.sty(e.g.) would be particularly helpful for learning how to output a bibliography. But learning the user-level commands from the documentation would be useful. – jon Mar 29 '17 at 19:54