He @Carl_Christophe_Loui, no problem regarding the above question, wow, that’s quite deep!
Personally, when I first started, not with Unity but generally from a developer perspective, I don’t think I focused on a specific technique for understanding. That may just be characteristic approach, or, it may be perhaps because I didn’t go on to higher education, where maybe a technique of learning is also learnt.
My approach was, and still is, fairly much trial and error I suppose… and if you are picturing a gorilla bashing a keyboard with his palms at the moment you are forgiven! seriously though, it was all very incremental steps. I actually started with ASP for web development I suppose (ignoring things like BASIC way back when I was a kid), so I would have started out wanting to try and achieve something and typically that would have been formed around a question, “how can I make this do that?” for example… immediately some IF / THEN logic would have come up. Syntax wise I would have most likely used a book or hit the many forums/websites for examples and gradually pieced things together.
Over time I think that that style (for want of a better word) has grown, so a lot of the basics are fairly well known. Even if I am not fluent in a specific programming language I would suspect I could look at it and think, “ok, yeah, I get the idea of what this bit is doing”, and then I would be drawn perhaps to specific keywords/methods that I wasn’t sure about, so I would be researching those maybe online.
When I started with Unity I came primarily from a VB.Net background, so C# wasn’t really a big issue for me, it is primarily syntax differences. The knowledge/understanding of OO, services, layers and so on has just been home grown. At work, developing web based applications I tended to try and write my code with as much re-usability as possible, so I tended to focus more on the architecture of the application, writing code libraries which could be easily extended and re-used for other applications the team would create. It was a learning process. Sometimes it worked well, sometimes it didn’t. I would review, work it out, resolve it and move forward, next time knowing a little bit more.
With tools like Visual Studio, being able to step through your code for debugging is fantastic, and that really helps with learning too as you can visualise very easily which methods are being called, which values are set and so on.
Hope this is of help although I’m not sure I have directly answered your question.