Wednesday, March 20, 2019

Clearing The "Static", or How I Re-Learned Programming Fundamentals Through Python 3






The path of a programmer is not a direct route, and more often than not, you and your colleagues will have walked entirely different paths of education and training to get to the same point. Coding skills are a huge pool of knowledge, and much like any other profession there are many different specializations that contain enough need for "know-how" to constitute entire roles within a company.






Self-Update

As a student of programming, I am ever-advancing through the fundamentals of programming - both on a general scale as well as the syntax for my main languages (Java, Python, JavaScript and HTML+CSS).

As one might know from the previous submissions on this blog (yes, all two of them), I broke in to a computer science learning path after a little over five years in the restaurant and hospitality industry. It is quite obvious that the two industries have very little in terms of common operating knowledge, so at the start I knew that I would have quite a hill to climb. After having met with a guidance counselor, I was recommended a starting point in the Java I course. I had very, very little experience with computers beyond an end-user's perspective (I had plenty of experience installing programs, video games, zipping/unzipping files, and creating simple HTML elements and CSS stylesheets in the body of blogs and social websites - but that's about it).

I had heard that Java 8 was a very robust and therefore commonly used programming language in the real world, but at the time had no idea how much precision and high-detail would be a result of such a programming language that is BOTH strongly-and-statically-typed and contains a deep library of native objects and methods. The syntax came off quite complex, to a beginner like myself, and it would often bend my mind in ways that I did not expect a beginner's course to take me. With that said, however, I am happy to have started... and mostly failed. Though I received good final grades for the courses, I know that my Java skill needs a great deal of honing. To understand what you don't know is the first step in climbing the mountain of education that stands between you, the learner, and the skills ready for application in a business environment.

When I began my journey toward the Microsoft Professional Program for Entry-Level Web Development, I started from that familiar bottom point once again, and learned the fundamentals of programming languages first by learning the basics of operational logic, to then re-affirming the then-cloudy fundamentals I learned in Java, with Python 3 in a beginner course followed by a fundamentals course.

Why Re-Learning Fundamentals Through Python Was So Helpful

  • Separate the strong from the weak, the dynamic from the static 
    • There can be many advantages to learning the Big-Picture of programming fundamentals when familiarizing with a dynamically-typed language after starting with a statically-typed (and strongly-typed) language like Java. 
    • Though many people confuse Python for a weakly-typed language, like JavaScript, it is in fact a strongly-typed language BUT also a dynamically-typed one on the other side of the same coin. 
      • Python is "strongly-typed" because the Python interpreter keeps track of all variables' types. 
      • It is "dynamic" as well, because it allows the user to implement strong type-checking while simultaneously not forcing the issue. If it were a statically-typed language, the types of all variables must be known at the point where those variables are used. This is not the case in Python - objects' types are determined at runtime. 
    • Dynamically-typed languages eschew many of the hard-casting (data types for variables, for example) by intuitively understanding the data types stored in variables upon their initialization. This clears a lot of type errors thrown during the development and debugging phase and helps the coder get to the meat of the logic for their program. 
  • Shorter Statements, Longer Sessions
    • The fact that Python 3's overall syntax leads to shorter typed-statements on a line-by-line basis leads to allowing more to be done within an hour of hard work than in other languages, at least for a novice like myself. 
    • Pseudocode and UML-diagramming is much simpler when the bare-bones of Python's syntax are more straight-forward than the likes of Java or C. When you are able to more-easily transition from the planning period to the code-writing, your project will overall be far more cohesively created. 
  • Confidence is Key!
    • When you encounter less bugs, operate through a syntax that allows for easier debugging, and its IDE's are more intuitive about predictive error-catching, your confidence will be on another level than the sometimes-excruciating process of debugging in a strongly typed language. 
    • When your confidence about programming in general is higher, your brain will be far more open to learning the Big Picture of what your program or application's overall purpose fulfills. We must remember, as developers, that we are not in the game simply to write points A-B-C but to develop something that can alleviate a pain in a user or help a user achieve a gain. This is what it's all about!

Where To Next, Mate?

I have progressed through the fundamentals of Python 3 as well as the fundamentals of front-end technologies, mainly JavaScript and its libraries jQuery and React. I have had a solid foundation in HTML and CSS ever since I enjoyed making dorky webpages for movies, gaming, etc to pass the time in my teenage years.

Because my main goal is to grow my education in to the skill set of a Full Stack Web Developer, I now need to shift my focus in to beginning my education in back-end programming fundamentals. In furthering my know-how in Java 8 and Python 3, as well as learning Node.js from the point of a novice on upward, as well as learning the basics of database manipulation, I will build a foundation of back-end programming skill to add to my "stack".

That's All, Folks

If you have questions, please feel free to reach out to me in the comments, or through my LinkedIn page and I will do my absolute best to provide the most helpful response...

If you have criticisms or corrections, please reach out the same way - through the comments or through my LinkedIn page, and let me know if I said something wrong or left out some vital pieces of information. I am hardly a maestro of anything in this field, and am always on the lookout for more knowledge to sponge.

Happy learning everyone! 

No comments:

Post a Comment