Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

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! 

Thursday, January 17, 2019

Chapter 1: It's Dangerous to Go Alone

S E R V E R 2 S E R V E R S 

January 17, 2019




“The mind of man is capable of anything--because everything is in it, all the past as well as the future” 
― Joseph Conrad


"We can only see a short distance ahead, but we

can see plenty there that needs to be done."

― Alan Turing

~

H E L L O ,  W O R L D !

How have you found yourself here? What was it that directed you to this page?

...

Is there anyone even reading this?

That's of no consequence to me, now anyway. I'm simply here to spill my soul in hopes of snagging a few friends along the way on a similar journey. If you've served in the restaurant industry or not, or if you are a student, or if you've long ago graduated... the journey of a young student jumping from a non-IT field of fine dining service headfirst in to the IT industry might be worth a follow!

Whether ye be a python-head also learning the ropes of the fastest-growing front-end programming language, a web developer-in-training honing skill in markup languages, or just a student starting down a path to a bachelor's in CS, IS or IT, this blog will likely come to a point where our interests will be mutual.

From Server to Servers
I guess I should start with the name then, since that's probably the first breadcrumb on your path to this page. I am a server, a waiter of tables if you will, at a fine dining restaurant outside of Baltimore. I have been working as a server for close to six years now, and have also worked behind the bar, ran bar service for weddings, and managed the floor during dinner services across a few wonderful Maryland locations.

It was my home industry, so to speak, before I had piqued any interest in the field of software programming and information sciences. Truth be told, it was all I knew from the time of my angst-ridden and less productive teenage years. I thought I had found a home in the catering industry until I began to see the jaded attitudes and bad habits that so many of my coworkers, even my peers as young as me, were adopting and acquiring. I learned pretty quickly that this was no industry to live your life, not for its entirety at least, anyway. There was plenty to love and to be enchanted by in the first years of my experience, don't get me wrong. I loved the controlled chaos of a scratch kitchen and the beautiful presentations of fifty, sixty, seventy dollar entrees. Beautiful steaks and awesome cocktail ideas, all there to be appreciated, enjoyed and profited upon. It's fun and it's wild, but it's hardly a 9-to-5 that will support my American Nuclear Family.


In To the Heart of Darkness
I knew I had a knack for things... maybe I didn't have the greatest confidence of self, but that was a problem entirely unto itself. It wasn't until I met a guest at work who works in IT and began encouraging me in to talking about my ambitions, and being the Chatty Cathy that I tend to turn in to with any guest interesting enough to engage me in a conversation about anything except the logo on my uniform, I unloaded my entire life story on this kind and patient customer. He then told me I had everything I needed to be a great programmer, regardless of having never written a line of code in my life. He said it's not about some proficiency in an alien robot-language. Well, yes, that's going to have to be built over time. But to want to do something and get better at it, and to have the problem-solving skills earned in so many other arenas in life, these are what made the soil ripe for a mind in Computer Science. We didn't have much of a chance to engage further, but it was the spark that eventually got enough nerve out of me to return to my local community college, find the first counselor that would have me, and unload yet again my life story, looking for guidance.

The rest, as they say, is history...

A few semesters of cramming in credits to make up for lost time passed, a very shaky proficiency in Java programming learned, and I have just returned home from my orientation at University of Maryland - Baltimore County (UMBC) to finish up a BS in Information Systems (that's the plan for now, anyway). I have since shifted my goals toward a Web Development path - so, a major focus on the hottest front-end languages like Python and jS is mandatory, however I also need to do some backtracking and begin a path of mastery for web design languages like HTML5 and CSS.

While I hope to have a certain depth of proficiency in those four areas by this coming Summer (around May 2019), it will be a battle of inches and my skills in time management will be the deciding factor on whether I can achieve this goal in such a relatively short time frame, focusing all of my attention on building these skills.

I plan to keep this updated regularly as I work with each of those four programming languages. Perhaps, on a weekly-report basis of regularity. This is my first blog of any kind, so bear with me here!

This is the story of a waiter who wanted more.