Engineering has some long, strange paths with high rewards. I started out tearing apart broken electronics while I was in middle school, and in my freshmen year of high school I wanted to become an electronics engineer. My high school offered classes in QBASIC, and I actually found that to be more entertaining than attempting to reconstruct Frankenstereo. I moved on to Visual Basic and HTML/JavaScript thinking WIndows software and webpages would be my calling. Thank God I avoided that mistake of a path.
I left high school bound for an associate’s degree in applications development, AKA Visual Basic, but was too busy partying to attend class. I managed to squeak by with a .2 GPA with only attending the 1st month of classes plus the final exams. I passed every final, and have no idea why a teacher gifted me with a D in web design other than I helped her teach the class on the rare day I actually showed my face.
Fast forward a few years later it’s nearly impossible to get a job in any tech field without a degree. I ended up working many menial jobs to pay bills, and started my own computer services business thinking if no one else will hire me I’ll hire myself. Clients were hard to come by with low demand in a small town and a small set of established competitors. I switched over to the Linux world, and became more proficient in software, but this still did not help me grow my business.
I eventually caved and decided to go back to school. The problem was I couldn’t afford to relocate, and there was no computer programming degree at the tech school in my town. I settled for SCADA Automation Engineering because it at least involved some computer programming. I quickly found myself in a room full of people who wanted to become glorified electricians, but who hated the thought of touching a computer. The first year was a focus on electronics engineering, and I hung in there. Keep in mind that electronics was my career choice early on. When second year came around and the focus switched to programming no one around me understood just exactly what in the hell was going through by brain. That included my teacher.
At our first day of class he talked about separating the electricians from the programmers. He asked who wanted to go to different job sites every day and set up equipment. Most people raised their hands. He then asked who wanted to stay in the same building all day but still work with wiring. Everyone else but me raised their hands. He then asked who wants to sit in front of a computer all day and write code? I raised my hand. Well, that was awkward. Having one person to single out he said I can see that. We’ll just sit you in a cubicle, throw a sammich at you every couple of hours, and you’ll be good to go! I should note that having entered the workforce I have to go fetch my own sammiches.
Once we got to the lab I got off to a slow start. I was appalled by the software they were using to connect computers to logic controllers, so I sought out my own solutions. I decided on QModBus/libmodbus for connecting to PLC’s. This meant I could code in Linux. It did take me awhile to get the first application to work, and by the time I had success I was failing the class due to lack of projects completed. When I did complete my first application my teacher told me to “make it run on Windows”. That’s easy, Qt is cross-platform, so I simply installed my code on a PC. Then he wanted to see it run “from your house”. We had our own network bypassing the school’s firewall, and he wanted me to use that to connect from outside the school. I cheated. I simply connected up the Linux PC again, set up VNC, and used my phone as a VNC client to go over 3G towers and connect right to the port I forwarded. He came over to yell at me about being on my phone, and then realized I was using it as a remote to control a conveyor belt. Despite my lack of ambition he was impressed, and was surprised I accomplished both challenges in one day regardless of simplicity. Unfortunately his next request was brutal. Make the PLC communicate through a web browser. I never did successfully complete that task. Neither did anyone else, including him. I still accept that challenge today, and when free time permits I have a plan.
Since school I have ported QModBus to Android, and to the best of my knowledge I was the 3rd person in the world to successfully run a Modbus PLC on Android. I was probably the first using C++ as a language. I have had to focus on career before open-source work, and having been unsuccessful in my post-graduation job search I decided to go back to school. This time I took the risk and moved out of town for computer programming, even though it meant sleeping on a couch every day and rarely seeing my family. I completed one year of school to find my financial aid was denied and I could no longer attend until some debt that I couldn’t afford was paid.
This is the point in my life where I lucked out. I managed to land a job writing PHP websites and Android applications. My boss says, “Hey, can you write a program/website to X?” I always reply with the same answer, “I don’t know, lemme check.” This is true for all engineering. You won’t be asked to solve equations, you’ll be asked to provide solutions. Don’t just know the material, know the relevance. Go in with the mindset that you’re not there to follow orders, but to create.
This article was written by Mark Gullings
2010 graduate of Mitchell Technical Institute for SCADA Automation Engineering
2012 dropout of Southeast Technical Institute for Computer Programming