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! 

Wednesday, January 23, 2019

VIDEO: "Things I wish I knew when I started Programming" by TechLead (YouTube)

Good evening, fellow aspiring programmers! 

As I finish up my first installment of my course on Logic and Computational Thinking (Part of a 13-Course Program for Microsoft Entry-Level Web Development), I decided to take a detour down the Youtube Highway to find a little inspiration. 

TechLead is a great Youtuber (I swear, that's a word now) who posts plenty of general vlogs about life as a programmer and the world of Computer Science and IT, as a person in its epicenter. This video is very helpful for a newbie like myself. 

I am constantly on the hunt for guidance in this field wherever I can get it, and in this video TechLead explains in detail four major philosophies that he, as he says, wishes he had known when he was starting his journey.

In summation, and very briefly because you should watch the video yourself, the four main points are as follows: 
1. Don't try to learn everything simultaneously - find a track and develop that skill! Conquer slowly but steadily, as languages and API's are ever-changing and may not be relative or pertinent to your real-world applications.
2. ALL CODE IS GARBAGE :D - no, not literally. But, his real point is that code should not be daunting! As he tells it, there will be almost no point in your career where the pre-existing code on any particular project is the most perfectly optimized and organized code that it could be. There will always be room for improvement, and there is no better way down the path of improving code (and your coding abilities) than to just roll up your sleeves and start hacking away. The longevity of programmers at any one company are usually quite short, so the legacy code left behind for any pre-existing projects typically grows to be incomprehensible and inefficient ("rotten", as he says). 
3. Focus on the PROJECT, not the technology - Don't learn a language, learn how you can use a language to solve problems and build functions! If you want to clean a house, you don't find a perfect magical vacuum to only use for the rest of your life. No, you learn what you need to do to clean the house, then use the best tools for the job to complete the task!
4. Don't be afraid to learn! - Simply put, Mind Over Matter :) Do not let the wall of apprehension be your first and greatest roadblock! 

JavaScript and Web Development objectives in general are a great place to start for beginners - to learn how to code with UI, and how to create web functionality at an early pace to begin to see how the language can mold ideas in to real world functionality. 

If you actually read all this, well, thanks - LOL. My main point was to watch the video but of course, as you can see above, I got a bit sidetracked in my own interpretation. Without further ado, here is the aforementioned video by TechLead.


(the main contents of the video start after the advertisement, around 1:55)

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.