Saturday, January 28, 2017

Introduction

Programming since I was in 9th Grade, starting about 40 years ago, I've learned much about the "do's & don'ts" of programming.  For the past nearly the past two decades, or so, I've been interested in finding ways to impart my knowledge to others.  That has mostly come in the form of an Engineering Manager and Lead Engineer at some of the most leading tech companies in the world.

My history in programming started with simple Basic programming.  Although Computer Science electives in my high school weren't available for Freshman, I simply spent my free time in the computer lab and started asking questions, reading books and teaching myself.

By the time I was a Sophomore, I already knew the fundamentals of Basic Programming and simply breezed through Comp. Sci. I.  I continued with Comp. Sci II & III and was fortunate enough that my teachers saw my interest and added new classes to keep myself and others engaged (and out of trouble.)

Computers "back in the day" were these HUGE boxes made by a now-defunct company called Digital Electronics Corporation.  The computer I learned on was called a PDP-11/40 and used the RSTS/E operating system..  This computer was state-of-the-art for it's time.  It included 640KB of "core-memory" and a 10MB platter disk drive.  From this "mini-computer", there were perhaps 20-30 terminals the were glorified typewriters.  There was no screen; they were completely paper based.  Interestingly enough, there was also a much older form of terminal that included a paper-tape reader.  The paper tape reader was akin to today's USB Thumb Drive.  You could save your data or program and take it with you.

Accounts were not in the form of a log in name.  But rather you were given an account number that consisted of two digits separated by a comma; such as "5, 124" or "8,65".  Using this format, there were special accounts that, once logged in, would give that person special privileged access.  These were the uber-secret accounts that only the teachers and administrators would have access to.  These accounts started with the first digit in the pair being either "1" or "2".

But, I digress...the thing to note is that things have changed quite a bit since then.  I've seen a lot.  And if you want to really understand the history of computers that I have seen, try using your favorite search engine to look up things such as "DEC PDP-11/40", "Core Memory", "Platter Disk Drives", and the like.

Moving on to my introduction, I've self-taught myself much of what I use today.  Sure, I've taken courses such as "Data Structures" and 'Structured Programming" and with those, came the knowledge of PL/1.  But other than that, I taught myself Basic, Fortran-IV/VII, Pascal, C, Java, Assembly Language for multiple CPU architectures, VBA, Visual Basic, Visual C, Python, ..., the list goes on.

The interesting thing for me is that once you've learned the basics (no pun intended), it's fairly easy to pick up another.  And, to make things easier, the connected world today allows much more ready access to materials on-line to make learning even easier.  I learned Python & Java entirely by reading on-line websites such as www.python.org and others.  Even Wikipedia can be an awesome reference.  But, while these web-sites teach you the details of programming languages, they don't necessarily give you the foundational to be successful in efficient & structured programming required for a successful career in programming.

I will try to impart my knowledge upon to you in an effort to help you become a successful Embedded Firmware Developer which is one of the most in-demand and high paying engineering jobs in the world today.  For a definition of the role "Embedded Firmware Developer", it can best be described as a cross between Software Engineer and Electrical Engineer.