Okay, so what do software engineers actually do? To answer this, I’m going to take you on a journey through a day in the life of a Software Engineer at Spredfast - a younger me. As a disclaimer, this is historical fiction. The content is all real, but some of the details have been changed (names), and others have been synthesized to form a cohesive story.
To set the stage, we’ll be observing Aaron (myself several years ago). Aaron recently landed his first job as a software engineer (without a Computer Science degree) at a budding start-up in downtown Austin, Spredfast. This is his typical day.
Typical Day as a Software Engineer
For some this is ungodly early. Aaron has a newborn though, so sleeping until 6am is a good day. He and his wife wake up, tend to the baby and likely make some coffee. On this morning, Aaron's going to jet out early to get a workout in.
Aaron jump's on his bike and rides about 3 miles to Hyde Park Gym. It’s a local grunge gym (looks like a scene out of Rocky), but it’s full of heavy stuff to lift and Aaron likes to pretend he’s real strong (pictured below is the actual gym - the large bicep-sign is an exact replica of Aaron's).
Aaron arrives at the gym, does an hour-long workout or so, and jumps back on his bike. It’s another 3ish miles to his downtown Austin office.
He arrives at the office and grabs a shower. Yep, they have showers and lockers at work!
He throws his bag down at his desk. He sits in a large, stylish open-space amongst 30 or so others. His desk is directly across from and connected to one of the co-founders (and VP of Engineering), who sits next to the Chief Product Officer. Everyone sits an open space, even the CEO! Most people don’t get in until after 9am, but Aaron usually leaves on the earlier side (since he's got a baby at home) and he likes to start his day amongst the quiet (the company lets their employees come and leave whenever they want).
He strolls over to the kitchen for some breakfast! The fridge is stocked with fruit/veggies, and there’s a Vitamix Blender, so he makes a giant protein shake and takes it back to his desk for breakfast.
Aaron starts by opening email and thinking through what he worked on yesterday and what he has to do today. Right now he's working with a small team of 3 developers to finish a new product for their social media platform. Currently the engineers on his team have a simple system going where they update one another daily via email (a “standup” email) that simply states what they finished yesterday, and what they're doing today. Aaron writes his email and get's started on what he said he thinks he could accomplish for the day.
Between his standup email and now, others have slowly dripped into the office and Aaron has said his “good mornings" here and there, but mostly he's kept his headphones on and worked at his own pace on the current feature he’s building. BUT, 11:30 is lunchtime! The office kitchen-manager, Damien, calls everyone in for lunch. The company caters Whole Foods each day, and everyone gathers in the kitchen at long tables to eat. Aaron fills up his plate and sits next to a couple of others on his team to shoot the breeze over quinoa, steak, salad, sriracha, fried eggs and lots of Topo Chico (that’s hipster for, “sparkling water”).
Usually, as they're finishing up lunch, people congregate around the giant ping-pong table that’s on the edge of the large kitchen space. Aaron's terrible at ping-pong, but he's found a couple others in the office who are also pretty terrible and they go head to head daily. Aaron usually loses (because, like we said, he’s terrible). Then Aaron hit's the bathroom (TMI?) and he's back to work!
By this time Aaron may have finished a feature. He'll go ahead and submit a pull-request. This means that what he's been working on is ready to be deployed for the world to see and use, but first, he's going to enable everyone else on his team to look at the code and give him feedback. Since Aaron is pretty new at this whole coding thing, he gets tons of feedback. At first, this is a crappy feeling, but over time Aaron realizes this critique is an amazing learning opportunity.
On Friday’s, Aaron's team likes to gather and show off what they’ve built (over beers because this is a celebration). This meeting consists of the product manager, the designers, and engineers who are all responsible for the specific product Aaron’s team is working on. Sometimes the VP of Engineering also jumps in, but the meeting is never much larger than 5-8 people. Aaron nervously show offs what he's done in the last week, get's a little feedback, and a little praise.
As the day closes up, Aaron tries not to deploy anything live (the company is awesome, and he can deploy his code to production whenever he wants), just in case something breaks, he wouldn’t be around to know and fix it. Usually, Aaron saves anything he hasn’t finished for tomorrow, says goodbye to a few people, puts his sweaty biking clothes back on, and rides home!