I don’t really know why I studied Electrical Engineering in college. I’m not even sure why I chose engineering generally–except that my father and his father had both been (mechanical) engineers. Unlike the majority of engineers I’ve met in my career, the only thing I’d done prior to college that resembled engineering was a bit of BASIC programming on an Apple ][e. I am not a tinkerer by nature.
So it should not be too surprising that I reconsidered my choice of EE major about halfway through college. I had been working in a student computer lab and taking some elective Computer Science courses and thus contemplated a switch to CS. But I didn’t want to add semesters to my academic career or the bill, so ultimately decided to stick it out in EE.
Late in my junior year, IIRC, I was lucky to find a part-time programming job on campus. This was all taking place at the University of Maryland at College Park, where there were something like 38,000 other students. This was back in the early 1990’s (pre-Web 1.0, pre-cell phones) and my job involved writing software to interface to the AT&T 7ESS central office telephone switch that connected all those students as well as the faculty and thousands of other people working on the vast campus. I was part of a team that programmed computers to monitor the phone calls and the switch status. I developed interactive voice response (IVR) applications, a program to read e-mails into voice mail accounts, and a PC-based ISDN telephone controller. It was a ton of fun, and I still keep in touch with most of the folks I worked with there.
This programming experience set me apart from my EE classmates. There was even a DSP programming lab for which I was recruited by the professor as his teaching assistant (a job usually for a graduate student) just the semester after I took it. Thus by the time I graduated with a BSEE, I had some real programming experience under my belt. By then I also knew that I wanted to find a job writing software. I even had a name for the type of work I wanted to do, which I called “writing software with a databook” in job interviews.
Until I found a job as an “embedded software engineer,” I didn’t even know my chosen profession by its real name. Fortunately, I had found a company that knew what embedded software was and was happy to have a young engineer with a passion for writing software at the hardware interface. This allowed me to do the programming that I so enjoyed, while still using the knowledge of digital and analog electronics that I had acquired as a “double E”.
Now, seventeen years later, I spend my time consulting with embedded software design teams and training future generations of embedded software engineers through my articles, books, and courses. You can find out more about embedded software as a career by subscribing to my blog, following me at twitter.com/netrinomike, or reading some of the many free how to articles on my company’s website.