This blog is for my past self who worried about what they would be doing day-to-day after graduating.
Last year, I completed my Masters in Computer Science and I've been working as a full stack software engineer ever since! I'm going to talk about how I work on projects outside of work, how I get my tasks done at work, and the miscellanea in between.
An iPhone alarm, maybe two.
I eat cereal and read hackernews and some programming subreddits, as well as tech/regional news, and some Twitter. Sometimes I'll tweak one of my projects, something small — a docstring or a section of CSS — and push those changes to GitHub. It's good to continuously work on projects and carry them around in my mind so that ideas can come to me throughout the day. I use GitHub Desktop at home because my branches don't get too complex, and it's great for reviewing small diffs.
I wake my fianceé with a coffee. She's a heavy-sleeping student who depends on a large cup to start her day.
I cycle to work and it takes around 15 minutes. There's a cycle path most of the way. If it's raining, I'll have a change of clothes in my bag but I don't change very often.
I'm usually the first person at the office and I turn on the lights for the engineering section. I catch up on any emails that I missed yesterday evening. I leave earlier than most and don't have any work communications on my phone.
I'll perform some default coding work here also — tackling a ticket, merging branches, and a dash of technical writing.
People slowly arrive until our scrum standup meeting. I'm normally there first, I obsessively carry around a pen and post-it notes, a habit from when I was new and didn't want to forget anything. At scrum meetings, you say what you did yesterday, if anything is blocking you, and what you will be doing that day. Our 'scrum master' will direct or correct people as needed. It's a fun, relaxed atmosphere. As well as coders, there will sometimes be product management, technical writers, and support staff.
On average, I have about 0.5 meetings a day. These can be design meetings, catch-ups, sprint-related, or general company events. For the rest of the time, I'm coding by myself and helping or being helped by those around me. Sometimes we'll do some pair-programming when we think it will be beneficial. We all have a lot of autonomy. We work hard to get things done in time for the end of the sprint but if they don't get done then that's fine too, resources will be reallocated, no one gets in trouble for missing deadlines as long as they're open about it. In fact, I can't remember anyone getting in trouble for anything.
Although we have semi-flexible working hours, the whole company takes lunch at 12 for an hour. Some people take a shorter lunch to get home earlier. I'll take the first 15 minutes to have a snack, call my fianceé, and stretch my legs. For the remaining 45 minutes, I will study or write. I use this time to read documentation or create 'hello world' applications in new tech stacks. I do tutorials, read technical blog posts, and take coding challenges. If I'm writing, I do it longhand with a biro in a A4 lined pad. All of this takes me out of my own head. My lunchtimes feel long and relaxing.
For the rest of the day, I continue with default work. At around 3pm, it's clear that everyone's most productive hours are over. People don't work slower on purpose, it just seems to happen. We manage this by doing non-intensive but still time-consuming work. Testing applications, writing documentation, taking non-essential meetings.
My day is over. I commit to any branches I have open, even if it's just to say "End of day commit. I'm mid-way through building X". I play games with some of my deskmates so it won't be the last time that I speak to them that day. I wipe the rain off my bike's seat and cycle home. I have to go through a wind-valley, so it often feels like three-times the distance. I've been slowed down to walking speed before.
After eating dinner with my fianceé and catching a show, I'll load up one of my projects and start developing. I've been tinkering around with my website recently. That's my guilty pleasure because it's never "productive" or at least it doesn't feel like it. The things that give me an endorphin rush are coding, writing, and designing. I like testing too, surprisingly, but I build my web applications to be testable from the get-go. If there's a longhand blog to write up I'll try and get it out of the way early so there can be some time between finishing it and editing it. My undergrad was in Creative Writing so writing technical blog posts is probably the easiest part of my day. It's an amalgamation of the two things I love most.
I'll take a break at eight for some video games unless I'm pushing to complete a personal task. My main game at the moment is Overwatch on PC. I will still feel a swirling of ideas and code-flow-structures as I play but I suppose it's at this point that I start to "unwind" but not that it feels like there's anything to unwind from.
After playing games, I'll edit blog posts, and add small things to my projects — most of the good ones I open source on github.com/healeycodes. By adding small things, I mean refactoring small functions, adding some UI flair. I make sure not to start anything major in the evening. I will sometimes do a tutorial if I feel like the day has been unproductive — I'll choose an area of compsci that I don't normally touch, for fun.
In the evenings, I like to read. Lately, I've been reading Grokking Algorithms which is a very accessible but still in-depth book on algorithms and data structures. As far as fiction goes, I've been reading Ben Lerner as well. I work out, shower, and hit the hay.
I try and complete a small project end-to-end every weekend. This last weekend, it was:
Recently, I've joined Twitter to become more of a part of the developer community (I want to give back!) — I'm at @healeycodes. I'm also looking for fun open source projects (big, small, or tiny). Feel free to reach out.