Wednesday, April 14, 2021

I am not a believer in trying to learn two things at once.

 I just spent this week learning to program with OpenGL in Python using the fabulous PyOpenGL.  I was barely able to do it.  I have written a whole textbook on computer graphics and it derives the OpenGL matrix stack and the viewing model conceptually.  The OpenGL graphics pipeline model, if I recall accurately, I was also barely able to learn!  I think there is a zero percent chance I could learn the ins and outs of calls to and behavior of PyOpenGL and the underlying conceptual model.

One reason I am pretty sure of that is that I once tried learning TensorFlow, Python, and neural nets.  It did not go well.  Once I was comfortable with Python and kind of understood neural nets, I tried again (about a year later) with PyTorch.  It was not pretty.  Finally, I implemented a neural net in C, then one in Python, from scratch.  It was painful, but I made it.  Barely.  (And thanks to some advice from Shalini Gupta, Rajesh Sharma, and Hector Lee).  Then used PyTorch and  managed to train a network from scratch.   Again, barely.

My empirical experience is that it takes a focused and concerted to learn anything really new.   And if it were any harder, I don't think I could do it.  And if I am trying to learn two things at once (particularly an API and the concepts/algorithms that the API is abstracting for me) then forget it.

Conclusion: I should never try to learn two things at once.  If you have trouble with that, break it down.  It may seem like it takes longer, but nothing is longer than never learning it!

Corollary:  when you see somebody quickly picking up packages and wondering why you don't, maybe you are just like me, or maybe they are really something special.  Either way, if you develop competence in a technical area, you are in the most fortunate 0.1% of humans, and take a bow.  You need to find a way that works for you.

3 comments:

insominx said...

Thank you for sharing Pete. Stuff like this really helps us remember our humanity and that even people with deep knowledge have similar struggles to the rest of us. It's easy to want to glamorize what the superheroes of our industry can do.

Rupesh Mandke said...

Can totally related to this when I started learning Vulkan with RTX! Coming from OGL, Vulkan was definitely new for me (it's very different!) and I had never written a ray tracer before, although had production experience coding for Arnold & Renderman. I divided the problem by first learning Ray tracing basics (CPU based) via your books, then started learning Vulkan (still WIP). Once I get enough conceptual idea about Vulkan model, then I will shift to RTX + Vulkan. It's taking time and testing the patience, but hopefully will make things far more clearer.

James David said...

I have seen your blog you are talking about OpenGL and phyton so tell me more information about phyton in detail because I want to learn phyton. author by online embroidery