Thursday, March 5, 2020

Coding: Difficulties of Learning New Programming Languages (Python/Django for example)

I always assumed that it would always be easy for me to pick up a new language since I have already had experience with Java, VB, C#, and several scripting languages. This was kind of the case in the past, but not so much in the modern era.

Knowing a programming language definitely helped me learn Python. What makes learning today is not the language itself anymore but all the frameworks, configurations, all the options, and all the new standards.

At first I spend so much time in just figuring out all the environments that Python can be used in. Maybe this step could be skipped if you already stuck on a certain platform like Windows, Linux, or MacOS.

Then I spend a lot of time just how to build out the infrastructure, like Apache, Django, PostGRESql, MariaDb, etc. Yet, I still kind of regret not going simply with mySQL. I imagine this would be longer for first time programmers as I already had some experience with IIS and MS SQL.

Finally the most time-consuming part of a new language is learning its new framework, process flow, terminology, plug-ins, and standards. For example in Django, I spent the last few days figuring how the engine picks the templates that you designate in the views.py after I built a second application. By default, Django looks through each templates folder start with the order the apps were listed in the settings.py.

At this point, I started to understand the importance of community support. I just could not find the proper wording to find the solution to my problem. My problem was that I attempted to make my template folders have the same structure. Because I did not learn the folder standards yet, I had some files in the template root folder like the index.html. So when I try to access my app2/template/index.html, my page showed my home page (app0/template/index.html). This did not make sense to me because I assumed that the views.py in app2 will use the index.html in app2. I kind of guessed this was the case so I tried to find a way to force the rendering to pick app2's index.html which led me down a lot of rabbit holes.

Each time I meet a new challenge, I find not only do I spend time to research the problem but in some cases, I have to also redesign my application to fit the community's standards. One example is learning about PyLint in its standard on documentation. I had to go through each file to provide documentation which is a triple quote description after the component declaration. I have been using the same method as MS Visual Studio which uses comments prior to the component declaration. It also checks naming schemes, tab spaces, proper empty lines, lines with spaces, etc. Although great for consistency, this took up a lot of time to learn and implement. I do not feel any of my past experience made this process any simpler or faster to learn.

In summary, I am starting to understand the demand for specific language requirements in current job descriptions. I think I would definitely learn much faster with an experienced language programmer to guide me through the differences. I feel that I will still learning faster than a new programmer but will still take time to learn the framework and learn how to troubleshoot compared to an experienced programmer of that language. I feel that it would take me about a month to be somewhat familiar with the new language, tools, and standards; probably a couple weeks if I had a resource dedicated to point me in the right directions. I probably spend 80% reading solutions to different problems similar but not exactly.

No comments:

Post a Comment