Graham King

Solvitas perambulum

A day in the life of a professional software engineer

software
Summary
Last Tuesday, I encountered a typical day as a software engineer. I arrived to find the night shift had set up our linked list incorrectly, so I quickly devised a solution on the whiteboard, knowing our team would switch to a double-ended linked list soon. I tackled a customer request first, using a Rabin-Karp search with a rolling hash to find a substring, completing it by 10 am. After coffee, I addressed a rejected Bubble Sort by implementing a Merge Sort before lunch. Post-lunch, I worked on Big O calculations for an upcoming design review. My colleague Greg sought help with a Red-Black tree, and I facilitated his switch to an AVL tree for better performance. Finally, on my way home, I assisted the bus driver with an unconventional timing problem using two ropes that burn for an hour each.

If you’re a graduate interviewing for a software job and wondering what a typical day is like, here’s some notes from what I did last Tuesday. It was a pretty typical day.

First, as soon as I got to work I realized the night shift had set the linked list up backwards. Doh! I quickly went to the whiteboard to figure out how to reverse it. This won’t be a problem much longer as our team is switching to a double-ended linked list soon. We’re presenting to management about it next week.

I grabbed the first task from my work queue: One of our customers has a long string, and they need to find whether a smaller string is contained within it. This is our bread-and-butter as software engineers. I quickly coded up a Rabin-Karp search with a rolling hash, and had the answer for them by 10am.

Coffee, then task two: The QA team rejected the sort implementation I did last week. I’d written a basic Bubble Sort, and QA wanted to beat O(n2) for the average case. No problem, I switched to a Merge Sort and was done by lunchtime.

That reminded me that I hadn’t finished my Big O calculations for the design review later this week, so that was my first task after lunch. Junior engineers only do the ‘n’ part, but as a senior I do the constant as well. I have three more functions to calculate.

Greg, my colleague came over, he needed help balancing his tree. He’s using a Red-Black; those are tricky. After a quick consult with Dave our lead engineer, I helped Greg switch his design to an AVL. He has a lookup-intensive use case, so it’s a better match.

And that’s it, I headed for the bus station and home. But wait, my day wasn’t over! The bus driver’s watch was broken, and he needed to time 15 minutes. Luckily I had with me two ropes of varying density, both of which burn for exactly one hour…

Discuss on reddit