TLDR: I’m launching a video tutorial series channel on youtube, and other platforms to teach programming, from my prospective the way it should be done, (start low level, build a solid foundational knowledge, then work the individual up to higher level concepts).with a long rant of the sate of reality concerning programmers fresh out of college, looking for suggestions for additional content to cover
I’m a FIRST Alumni, been out of the community for a few years, and I thought I would give back to the community, in a bigger way than just mentoring one team and few software kids. After working in automotive industry for 8 years and in the robotics, automotive, and software industry in general for over 10 years, I have found there is a huge lack of knowledge each year that goes by with more and more software related majors exiting college.
I cant count how many times I have interviewed candidates and are amazed at how il-prepared college has made people. Huge lack of IMO foundational software skills of which are key. I.E how a compiler, linker works, pointers, interrupts, real time event systems, communication protocols, etc. Way too many candidates exit college, want to become a software engineer in embedded systems and have very little knowledge regarding low level items, most of the knowledge they seem to have is in regards to high level languages like java, python and c#.
The issue I see is yes they many know some of the syntax and can write a program in java or whatever but they dont really understand the concepts, were talking encapsulation, polymorphism, inheritance; something i would expect someone who has studied high level languages specifically OOP like java to understand, but yet they don’t. And its concerning considering i look back and consider where I was at their age, and what type of software i was writing and what I understood back then, Times have changed in the wrong direction and this makes me fearful of the future we will have as a consumer, especially when many of these folks don’t have a clue on memory management and rely solely on a garbage collector. Seems like all consumer products will have to be built around super high end processors just so they can be programmed in Java, because that seems to be the only thing anyone out of college knows these days. This will defiantly cause the cost of products to increase.
There is a huge difference between being able to write a program in any language that satisfy a compiler and functions as needed, verses engineering software for a solution and having a deeper understanding why the language was chosen and what design patterns to use, and how to continuously improve the software and How to Engineer the software to be portable, and scale-able.
These folks defiantly lack that. But please understand I in no way blame them. I blame the curriculum and big business interjecting to lobby funds in order for their product to be taught (in the end creating users rather than engineers) .
My goal is to fix that, That is why I’m creating a video series, going back to basics, starting from scratch and working up the pyramid of abstraction. Sure some folks want to be web devs, mobile app or pc application developers and believe they don’t need to understand or be taught these things as they believe they will never use them. I say NAY NAY… a mechanical engineer better know how to use a hammer and names, better also know how use a drill, mill and lathe. If not how could they effectively create something that is Manufacturable??? “it could be built in theory… but not practically”.
My method of teaching is the same way i was taught by my software mentor over a decade ago. This method was normal 30+ years ago as there really wasn’t any other way. But yet the things they build imo was way more efficient as they did more with less. They didn’t have 16gbs of ram, and 2tb of hard-drive space. They weren’t running at 3GHz+. They were disciplined engineers, something that is strongly lacking today.
Its more about how one things rather than the language they write it in. BUT understanding the where it boils down to (machine code) and unavailing the layers of abstraction where concepts and principles can be applied at any layer of the pyramid IMO is the key to building disciplined software engineers.
Many of these students including first students first are exposed to programming via labview, java, or python. this is bad, it causes these students to build bad habits that are shrouded away by the compiler only to be revealed as an issue later in their career when the project and its requirements are much more complex than a first robot. Does it get kids exposed? YES of course… can it be improved absolutely, focus on quality not quantity. the worst thing we can do is dumb down educational tools to increase the numbers of people involved, this causes two things to occur some of the group receives a false sense of confidence into what the industry is really like until the real-world hits and its a disaster for them as they are il-prepared. This is also why college curriculum dont expose students to C as their first programming course as too many in the past go to the pointers lesson and failed and dropped out. What did the colleges do to increase numbers? Dumbed down the courses, flew past pointers and started teaching python and java as first languages just to keep the numbers up… again QUALITY OVER QUANTITY is what we should be striving for… instead of simplifying the whole group, why not focus on the group that doesn’t get it bring them up.
Anyway rant of the current state of things is over. Again, I’m creating this series to give back to the community of which I wouldn’t be where I am now without. It will be very in-depth and isn’t a hey learn programming in 6 hours and be on your way type thing. I will be trying to “download” everything I know into these videos. I also plan to dedicate another series specific to FRC programming. But my goal isn’t for the first students to just watch the FRC programming course and be done. They defiantly should go thru the entire series when it is posted as it will only make them better at what they do in FRC.
I suspect the videos will begin posting around Mid June early July.
I would like suggestions from Software Mentors or anyone on things I should put emphasis on in these videos, suggestions for topics. etc.
(hopefully there are other “old timers” like my self whom feel the same way) any feedback is good feedback in my opinion.