Hacker News new | ask | show | jobs
by mojosam 1742 days ago
I taught myself to code on TRS-80 Mod 1 at my high school. I had seen a friend write a three line basic program that moved a dot onscreen, and about six months later told my math teacher I wanted to try drawing a circle using the formula we had just learned. I sat down with the Basic manual and did it. A few months later my folks got an Apple II and there was no looking back, I was coding nonstop.

I got my first paying job six months later; walked into a store to buy a book on assembly language, and saw a sign that said “Basic programmers wanted”; I applied, and they hired me for the summer. I kept getting summer jobs writing commercial software. I learned Pascal my first semester in college, taught myself C on their mainframe the following year. Took a year off school to travel and got hired to write some game software, and never went back.

Over the last forty years, I focused first on Apple II, Mac, MSDOS, and Windows apps; then Web development. The last 20 years I’ve focused on embedded development. I’ve worked as a freelancer / consultant much of my career, but also was Dir of Software Engineering at a several startups along the way.

Be sure to talk to them about the embedded industry, which doesn’t get much attention on HN. It’s a huge part of the industry that most people don’t know about. We’re the guys who write the software that makes rockets, robots, respirators, and routers do what they do; most things powered by electricity these days have a got a little processor in them, and someone has to write the software that makes those things work. Practically every form of transportation, medical, communications, and consumer electronics device is either an embedded device or has embedded devices inside it.

Creating good embedded devices is extremely challenging; you often have very limited RAM and Flash, and yet have to create sophisticated, multithreaded software that might communicate with the Cloud via wireless protocols, but have to run for a year on a single battery without failure. In other cases you might be building an embedded device based on Linux, requiring custom drivers and complex applications. In others, you have to create software reliable enough that it can be used in safety critical devices without injuring or killing people, and that is able to withstand hacking attempts to turn your IoT devices into a botnet.

What’s interesting is that I originally didn’t think I wanted to be a professional software engineer, even well after I started coding at paying gigs; it sounded boring. But looking back, as a kid, all my heroes were great inventors, but I was inept as an inventor of physical things. Programming allows me to constantly invent and develop new things, and with embedded, those things also consist of mechanical and electrical components that other engineers create. I love it, and it pays great.

Finally, your students might be interested in this: according to the 2017 Stack Overflow annual developer survey (https://insights.stackoverflow.com/survey/2017), while CS/SE are the most popular degrees among professional developers, most professional developers don't have a CS/SE degree. Of the professional developers surveyed:

* About 23% had no bachelor's degree

* About 42% earned a bachelor's degree in computer science or software engineering undergrad

* About 8% earned a bachelor's degree in electrical engineering or computer engineering undergrad

* About 7% earned a bachelor's degree in computer programming or web development undergrad

* About 20% earned a bachelor's degree in a non-programming-centric degree program (other engineering, natural sciences, math, humanities, system admin, etc) undergrad