The typical day of a Software Engineer is absolutely glorious! You wake up at the crack of noon and write world-changing code fueled by pizza, energy drinks, and flaming passion until you drop… ah, not quite! The truth is, mostly, it is nothing like that. Don’t get me wrong, Software Engineering is an incredible career that I absolutely love….but your typical day is nothing like what the movies make out it will be.
Today I took notes about everything that happened in my day.
It was a fairly normal day. A good day to serve as a reference for an average day as a software developer.
Our current sprint is just beginning. We’re finally at the end of an arduous 8-month project coding a greenfield application that our customers in the business can’t wait to get their hands and use in production.
Morning routine
7:00am – Time to get up…or maybe hit the snooze button once or twice…ok, maybe 4 times…
7:35am – My toddler, getting impatient that I’m not up yet, climbs out of bed and starts trying to grab my keys and phone from my bedside…
so it begins!
I play with him for a few minutes as he explores the room and then the house.
7:45am – Time to go through the morning routine. Get dressed and head downstairs to grab my gear. Grab my lunch and water bottle. Grab my backpack…with my phone, headphones, and work pass and start heading for the door.
8:00am – If I’m not careful I’m going to miss my train and be late to work. So we all pile into the car so my wife can drive me to the station and my foster son to highschool.
Making the most of the daily commute
8:16am – On the train at last! Now to get started with my daily routines. I spend a bit of time thinking about the day ahead and some of the challenges I’ll face.
I really enjoy taking the train to work each day. It gives me time to focus, read, listen to audiobooks, check emails, or even meditate. This morning I’m listening to the final chapter of Ultralearning.
I like to be productive as I travel…and audiobooks are a great way to spend hours with world-class experts who will teach you anything you’ve ever wanted to know to be able to reach the next level of success in your career.
Continuous learning is a regular part of the typical software developer’s lifestyle. Rarely a day goes by that I’m not working to improve my skills.
8:50am – Finally arrived at the office and made my way to my desk.
I greet my team with “Morning everyone!”. It is a great way to make a brief connection with everyone before I start the process of settling into my work for the day.
I’ll usually spend a few minutes to chat with a few of my teammates and see what’s new.
Getting up to speed…
9:00am – Time to get to work. First up…emails and instant messenger. Gotta take a look at the emails that arrived yesterday evening…and see if there are any that are urgent enough to change my priorities for the day.
9:02am – A teammate drops by my desk….and things were going so well!
I’m always happy to help so… I ask what’s up and it looks like they need a bit of help tracking down a bug. We decide the best approach would be to do some pair programming.
Pair programming is typically when two software engineers work on a programming problem together at the same desk. It is a great way to solve problems productively. I’ve found it to be an amazing tool for transferring skills among teams of software developers.
We head over to her desk and start debugging some Typescript code…
10:45am Finally have it all sorted. Turned out to be one of those bugs that are a challenge to find but easy to solve.
Managed to fix the issue in just three lines of code. Awesome…back to my emails!
The scourge of a typical software engineer’s day – meetings
11:00am Daily scrum is on. This is our team’s daily meeting where we take a look at our work in progress.
We talk about…
- What we did yesterday
- What we plan to do today
- If there are any blockers that are holding us up
I’m late! …and I haven’t had a chance to catch up with where things got up to from yesterday. *sigh*
11:36am – Well that meeting took a while. Normally we’re done in under 15 minutes…but since today is the last day of the sprint we had to figure out what this upcoming sprint would look like…
…and we had to divvy up all the bugs the business have raised so that we can get them fixed asap!
Back to checking the emails!
Emails and issues are a big part of the typical day of a developer
11:45am – Almost done with responding to the important emails when…
…another developer turns up at my desk for a chat. typical! At this rate, I’ll never have my emails finished so I can start doing normal software developer stuff…like coding!
We spend the next 30 minutes chatting about a bug that the business has raised. It is a tricky one and we hammer out a strategy for narrowing down the location of the issue.
We also talk through an issue we are having in one of our test environments. We’ve been having issues with CORS… mostly configuring it so that our UI and API can talk to each other. Each time we get closer to a production-like environment some new configuration issue raises it’s ugly head.
Sorting out frustrating issues is a typical part of my day…and the more experience you gain the more you realise that these issues are a normal part of being a software engineer.
Finally a break…
12:15pm – Time for lunch! Awesome! 30 minutes all to my own.
I use this time as best I can. I get up to speed with the national and international news, check my phone…and if I have some spare time I’ll even listen to some audiobooks or write a few paragraphs for my blog.
Well, that was short-lived…
12:45pm – Back to the emails! They just keep piling up!
And, an instant message comes in….from the guy who is doing the performance testing of our UI…. seems that there is a bit of an issue.
That CORS issue is stoping some of his tests in Firefox…and the app runs like a dog in Internet Explorer 11. I don’t know about you but I’ll be glad to see the death of Internet Explorer!
2:00pm – Another teammate is having an issue sorting out a bug…I help them work it out and head back to my desk. Helping your team to succeed is a typical part of any developer’s day…software is practically a team sport.
3:15pm – Time for some afternoon snacks. Yum!
My most productive time of day…
3:16pm – Finally things slow down a bit and I can concentrate on what I need to accomplish for the day.
I typically find the afternoons to be a very productive time. These times are gold for an experienced software engineer… I take full advantage of them.
Time to go into focus mode and work my way through the bugs and tickets that have been assigned to me.
I’m also able to focus long enough to get my hands dirty with some code and squash a few bugs.
The road frequently travelled…
5:30pm – Time to go home! Of course, I’m lucky today because…a few weeks ago…when our project was going full steam ahead…I was leaving closer to 7pm. Working late is all too typical in the day of a software engineer.
I head back to the train station…listen to an audiobook for a few minutes before relaxing and watching some Youtube videos about the new Apple Airpods Pro…the active noise cancelling feature sounds amazing!
My Typical Home Routine
6:30pm – Finally home…time to have dinner and spend time with my son for an hour as he gets ready for bed.
9:30pm – With the kids finally in bed, I can start focusing on myself. I’ll typically use this time to work on some programming or some other technical and/or training related tasks.
I’ll also spend some time reflecting on my day and writing my blog.
10:30pm – Time for bed…gotta be ready to rinse and repeat until the weekend. 10:30pm is optimal but…midnight is more typical…
…and I regret it every morning!
Was this really a typical day of a software engineer?
Yep!
One of the things they don’t tell you about being a Software Engineer is…
…that there are many days where you write very little code!
I love coding…but I find that the more experience I gain the less I seem to be coding.
A lot of my efforts go into coordinating the team and working with other teams and teammates to figure out tricky issues.
Software Engineering is very much a team game. Would be nice if it was all about solo code slinging…but that’s now how things work in the real world.
Some days, I write a lot of code for sure…but even on those days, it’s probably no more than 30% of my day…
I spend all of my time engineering software…but not necessarily writing it.
Hours are spent just figuring out what needs to be done.
This includes:
- Brainstorming with teammates
- Discussing requirements with business representatives
- Communicating with testers
- Working through unforeseen technical issues with Architects
- Pacifying managers who are concerned about issues they don’t fully understand
- etc…
I love this job… I could definitely do with fewer emails. But on the whole, it’s a pretty good gig…and definitely one I would recommend to anyone thinking about becoming a developer.
So, what does your typical day look like as a software engineer? Did anything surprise you about my day?