Why Programming, Though?

Posted on April 27, 2017

It turns out putting up this website has been a great thing because it's gotten me thinking a lot. I've had a hard time making sense of the job hunting process (mostly how long it takes) so having a way to process all of that has been enormously helpful. Yesterday I had an interview over the phone with a neat company I've applied to a couple times called Exotic Metals, and one thing the interviewer asked about was why I've been doing programming lately and not engineering. My stance was that I picked it up to keep my brain working and I worked with Seattle Public Schools because I wanted to see if I could help out, but after thinking about it I realized I picked up programming initially because I wanted to build something and learn a lot.

If you're ever on LinkedIn or if you're an engineer and a member of ASME or another engineering organization, there are tons of opportunities to take courses to expand your proverbial toolkit. Unfortunately these courses are typically well over a hundred dollars which is hard to fork over when you're unemployed. I would also argue that these courses don't provide a great learning environment. Paying money to learn how to use a relevant software package like SolidWorks is fine. But what you're paying for most of the time is PowerPoint presentations that might make SolidWorks easier to learn than if you dredged the internet for information yourself, but you'll never get the breadth and depth from a class.

Personally, I'm more than willing to dredge the internet for content; I do it all day for much less payoff than a cool part I modeled. What I want to pay for is someone to talk to about how to solve a specific problem I'm interested in. I want to build a part in a way I think makes sense and have someone there to explain other ways I could have done it so that breadth and depth can come organically.

Enter programming: this huge world of unexplored territory where a lot of the resources are free and I can spend all day dredging that internet and not even scratch the surface of what I'm trying to find out. I always go back and forth on whether or not it was a good decision to spend so much time learning all of these programming languages as opposed to more traditionally mechanical engineer fare, but when I look at it in terms of how much time I've put in versus how much information I've gotten out, there's no question. Granted, I wish the information were more aligned with what I'm passionate about, but that's for another post. As I mentioned, I had an interview, and afterward he emailed me a pdf with a problem to solve and send back to him. I finished it and tried scan it but was having a problem with my printer scanning a multiple page document. I'm sure I've done it before but I couldn't remember what I did and I needed to send this thing off because the interviewer asked me to have it back to him in an hour and I had hit that mark fifteen minutes ago. Long story short I scanned the papers, used some silly web application to merge the PDFs, and sent them on their merry way.

For some reason this left a bad taste in my mouth. I don't know why, but I hate using web applications for things like this, so I decided I was going to write a program to merge PDFs. I thought about doing it in Java because I was so comfortable with it, but there's so much overhead to get a program running. "Well," I thought, "there's always Python." I'll write yet another post about the details, but I had tried Python before, but to no avail. I gave it another shot, though, and in about the time it would have taken me to get my Java script running, I had uninstalled everything to start fresh, reinstalled Python, got it running, and wrote the script, and had my PDFs combined. I was so surprised by how quick it was I started shouting unintelligibly at the screen when I looked in the folder where the script was supposed to put the merged PDF and found exactly what I was hoping to find.

Programming is great because it provides all of these ways to solve problems. My favorite thing about learning about engineering was that everything that stopped working became a fun puzzle to solve. Without engineering, I would never have fixed my dear grandmother's toaster! Solving problems like that, and solving problems with pesky functions Adobe Acrobat should provide but only gives you if you pay for pro, just fill me with this reverent joy. It's hard to explain, but I'm pretty sure it's ambrosia to me. It's like taking a deep breath after you've been holding it for as long as you can, but without all of the frantic panting from oxygen deprivation. Just that feeling of fresh, cool air filling your lungs.