×
H.E.P. Materials
Overview
H.E.P. Materials is a building material supply company with a lot of custom software. Their engineering team supports their entire network of stores, warehouses, and internal tools. I was a software engineering intern at their main office in Geneva, NY during the summer of 2015.
Experience
I worked alongside a full-time software engineer for the duration of my internship. He showed me how to work with the company's tools, answered my many questions, and help me understand what "real world" software engineering entails.
I wasn't assigned a specific project to work on, but I was encouraged to explore the company and find something to improve. After poking around for a few days, I decided to improve the web app used to get item information from the company's warehouses.
The web app is used hundreds of times a day to confirm inventory, track down vendors, and verify orders. It's most commonly used to locate items within the warehouses, and the app is usually accessed via employees' smartphones.
Work
I decided that the best way to make an impact was to meet with the users of the system and see how it could be improved. After speaking with a few employees and using the application myself, it became clear that there were two major usability issues with the web app:
The program took well over 10 seconds to load, and when it did, the interface wasn't responsive to small screens. Warehouse employees were spending 20+ seconds every time they needed to look up an item's information, which is both annoying and inefficient.
I spent a lot of time understanding the syntax and structure of the code base. After poking around for a while, I realized that the application was writing inventory items to a log file before allowing the user to submit a query. That wouldn't have been a problem if it wasn't logging hundreds of thousands of them.
Apparently, that part of the application was maintained by an employee that no longer worked at the company, and since the other engineers weren't actually in the warehouses using the app, nobody had noticed the overhead it caused. Essentially, I had discovered the root of the program's inefficiency.
My mentor was thrilled to see what I found, and told me they didn't even need the data since they were already logging it via other means. I removed the unneeded code and the load time of the application jumped down from over 10 seconds to about 1 second.
Later on, I ended up creating an even more optimized web app in Ruby on Rails, which plugged in nicely with the company's new MySQL database.
And just like that, the first major issue of my project was solved! The next step was making the user interface mobile-friendly. I was a big fan of the Bootstrap CSS framework at the time, so I went with that. H.E.P. Materials has its own UI element styling, so I just ended up borrowing Bootstrap's grid system to lend some structure to the front end.
The team ended up loving the Bootstrap grid so much that they asked me to implement it into their internal website as well! The site was mostly just a portal for their services and software, but they were spending a lot of time formatting their content to look good on mobile. Using Bootstrap's system let them spend less time on formatting and more on other projects.
What I Learned
This was my first software engineering internship, and I was amazed at how much I was able to contribute. Being able to spot a bug and speed up a core piece of software was a huge accomplishment, and the engineering team was incredibly helpful and supportive throughout all of it.
I learned a lot about what it's like to be a developer in the "real world". When I was trying to figure out what was making the web app so slow, I thought I'd be able to fix the problem in a few hours. Instead, I ended up spending over a week just learning enough FoxPro (the language it was written in) to understand what was even going on.
I also learned how important it is to step outside your bubble. The only reason the inefficiency in the code had persisted for so long is because nobody from the engineering team was using that application day-to-day. Because I talked with the employees in the warehouses about their frustrations with the software, I was able to find and fix a pain point for them.
Overall, my experience was fantastic. I learned a lot about debugging code, working in a real-world environment, and finding ways to improve existing systems.