Sunday, March 24, 2019

Half-Way Point: Microsoft Professional Program in Entry-Level Web Development

" For the things we have to learn before we can do them, we learn by doing them.”


- Aristotle






" You have to go through the falling down in order to learn to walk. It helps to know that you can survive it. That's an education in itself. "
- Carol Burnett



As the first breezes of the Spring season begin to roll through Maryland, the horizon draws ever nearer in my journey to become a capable Full-Stack Web Developer.

This evening, I have officially completed the second in the four total Microsoft Professional Certificates for their program in Entry-Level Web Development. After the programming fundamentals professional certificate, which I posted earlier, came the three-course approach to building functional prototype for web applications with JavaScript and Node.js. This third and final course was the most lucrative in terms of my knowledge gained - before this, the prior two courses helped buff my prior skill in static web page building in HTML5 by adding the potential to create dynamic elements within the page using JavaScript. That was a great introduction into creating a competitive front-end for today’s Internet 2.0, where dynamic web pages are the standard.

In the aforementioned third course, the learning kicked up a notch when I was introduced to the fundamental concepts of creating a web application with three-dimensional production: First - a dynamic front-end web page utilizing Javascript and the jQuery library; Secondly - a server-side RESTful API, designed with Node.js along with the Express library, to listen for specific HTTP requests, retrieve data and perform response methods; and finally - a relational database created and maintained using SQLite3. The bulk of new information, for me, was in the understanding of HTTP requests and responses, the four functions defined as 'CRUD operations' for programming on the web as well as operations in relational databases, and then putting it all together by creating my own REST API.

Where to Next? 

Now that the seeds have been planted to create a full-stack web application, the only direction to go is forward down the path of creativity! Over the next month, I will be tirelessly working on a two-pronged effort to advance my coding skills: first, to complete the third Microsoft Professional Certificate in Object-Oriented Programming in Java (a skill that will be more of a re-honing than an introduction, as Java was the first language I learned in the early stages of my Computer Science education) and secondly, to create my very first web-application using the foundation of skills through this last Professional Certificate. This week, I will be hounding the popular open-source repositories on GitHub to find some ideas for good starter projects in web development. If you have any ideas about good starting projects that are open-source, please leave a comment below or reply to my post on LinkedIn! I am always on the lookout for helpful advice on my learning strategies.

As always, thanks for checking in with me on my journey, and to all those in the same boat - happy learning! If you will it, it is no dream! 

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!