This summer, I interned at Cetec-ERP, a company that creates and maintains software for manufacturers / distributors. Here's their website. It was an incredible experience, and I learned tons about... well, a lot of stuff. Here's the list:
1. How to use SQL databases & interact with them
I had no knowledge of SQL before I started my internship. (I only learned Go.) But guess what: my first task involved two SQL databases! So I learned SQL as fast as I could with SQLBolt, and now I'm at least competent with the basics. It's not really a hard language to learn, but I suspect I could become better if I spent more time using it.
My main project for the internship was recreate a complex function written in Perl in Go. I also didn't know any Perl, so I learned the basics of that too. Oh, and I also had to formulate a modified SQL query, call the SQL query with the right number of arguments, assign values returned from the SQL query to variables defined in a struct, and then use those variables to do other stuff. There was much weeping and gnashing of teeth in the early days. But I figured it out – eventually.
2. How to replace a CO2 tank for sparkling water
The office where I worked had a sparkling water machine! And no, this wasn't one of those silly sparkling water machines you can buy on Amazon. Someone (probably my boss) got two water tanks, some valves, and a dispenser tube and slapped them into a cooler. And this sparkling water was the best.
But I did have to replace the water tanks a few times. And it's not the easiest job in the world – because ~5 gallons of water in a full tank is pretty hard to maneuver back into the cooler.
3. How to use pointers & error handling
Surprisingly, I didn't know much (at all) about this stuff before my internship. Pointers are actually super useful, and I like to think of them as "addresses where values live". Also, error handling is awesome and I have no idea how I would live without it.
4. How to use Vim
Vim seems really silly whenever you see someone using it. You think to yourself, Oh, this fool uses k and j to go up and down instead of using the mouse or a trackpad like a normal person? Why are they always spamming the escape key, and... holy crap, did you just delete an entire line with two keypresses??
Vim definitely has a high learning curve, but after only a few weeks of practicing with it, I can do a ton of things quickly that would otherwise take (comparatively) ages. Switching your attention between the mouse and the keyboard is a real timesuck once you realize how much faster using Vim is.
And this is a hilarious video to watch if you know anything about Vim.
5. Put a sunshade on your car
I live in Texas, and I would park my car at work for six hours in the July and August sun. After my first day at work, I could not drive home for a solid ten minutes (even with the AC on full blast) because my steering wheel was too hot. Plus, my car is black, which definitely helps.
I learned a lot from that experience. I now permanently keep a sunshade in my car, and even when I put it up, my car stays comically hot for the first few minutes while I'm driving home. Lesson: don't come to Texas in the summer.
6. How to use unit tests in Go
Unit tests are incredibly useful (thanks Mike for showing me them)! My tests highlighted a lot of problems with my code that I wouldn't have caught otherwise. I also learned that I should segment my functions so they each do one (or two) clear things. Shorter & segmented functions are easier to read and easier to test.
7. How to play good office music
People at Cetec-ERP really love Kygo – especially the songs It Ain't Me (with Selena Gomez) and Cut Your Teeth (with Kyla La Grange). I was eventually given speaker access and I played some more bangers:
- In Your Eyes (The Weeknd)
- Get Lucky (feat. Pharrell Williams and Nile Rodgers) (Daft Punk)
- Return of the Mack (Mark Morrison)
- Passionfruit (Drake)
- One Foot (Walk the Moon)
8. How to survive in the deep end
On my very first day in the office, I was thrown into the deep end.
I was struggling to stay afloat after just a massive amount of information was thrown at me. I felt like I barely knew anything. My coding experience peaked at solving mathematical problems on Project Euler – and they wanted me to learn so much stuff that I barely understood. It was all very overwhelming.
There was one main thing that kept me alive: asking questions.
Whenever I was unsure about something, I first asked the internet to see if it had an answer. Then I asked ChatGPT. If neither the internet nor ChatGPT could solve my problem, I asked my boss or Mike, and they were usually able to fix it for me in a couple of minutes. I think good questions are extremely underrated for the purposes of learning.
I was able to learn a ton during my internship, and I don't think I would have learned nearly as much if my boss didn't throw me into the deep end from the very beginning. (Thanks, Taylor.)