My day as a developer
I’m Quan and welcome to my world.
I’m a developer, and well yes, I code. Most people think that’s just what developers do all day. But, like any other job, each day is different. The conventional lifestyles of developers often lead people to assume that we have standard schedules and laid-out plans, often stuck in closed rooms doing nothing but coding.
Simply put, I make my living by translating real-world problems into a language that computers can understand. So no, it’s never consistent, never dull; it’s more unpredictable and anything but routine.
I work mostly with data and sometimes with a web development stack for Machine Learning. For the web stack, I use python web frameworks such as Django and Flask, Postgres for the database, and React for the front end. For the machine learning tasks, I work mostly with Jupyter notebook with the popular data science libs such as scikit-learn, Pandas, and Matplotlib. I like playing around with deep learning frameworks, for example with PyTorch. I also use Docker, Gitlab, and AWS for the services running smoothly on the cloud.
So, how does my day usually go?
Getting in the zone
I know some developers usually bring out the ‘I go home late so I go to the office late’ vibe so waking up early is a big no. But I am usually a morning person, so the office is usually empty when I arrive.
After a quick catch-up/ morning greeting with colleagues, I start my day by checking my email, work logs, and calendar. I spend about 45 minutes sifting through emails and Slack messages and then I prioritize my to-do-list from the errors and bug reports to any other issues left the day before. Then after getting my morning coffee, I read the tech news on my Google news feed.
At times, getting my head in the game can be so fast that everything else becomes a blip on the radar. Headphones on, I’m in the zone – that moment we call ‘flow’ – the magical state of total absorption when one can solve anything and the code just seems to flow straight from your brain to your fingertips.
Our team has a weekly hour meeting and we usually discuss what we accomplished the prior week, what’s the current workload, and anything that needs prioritization in the coming weeks. It’s one way to talk about solving problems. Everyone works on different sites with their own unique challenges so it’s exciting to dive into each case and see how the other developers are doing their thing.
Time to code
It’s time to code, code, and code. Even when sometimes it seems quite impossible, I know that for every coding error, the perfect code execution is right around the corner.
Just one more bug. Just a few minutes more. Just this one. Putting off breaks is not unusual. It’s hard to stop, sometimes not even for a minute when you are on the verge of resolving a bug for example or discovering something extraordinary.
This phase could keep going until I realize everyone else has left, and even my footsteps make an echo in the office. I feel tired, sometimes hungry, but after slaying yet another bug, or solving another challenge, I am happy.
At times, in my almost 5 years in this field, I get epiphanies – those times I feel like I’ve uncovered a breakthrough, a new and better way of doing something. I get excited, and I feel pumped up. But it isn’t always a sweet ending. I’d often get so high only to realize it’s not the right one. Do I quit? No, it’s not that I don’t have an option. It’s just that giving up isn’t in my vocabulary.
Taking a break
I’m one of those people who can’t stop thinking about a problem until it’s solved, so it can be hard to switch off sometimes and just live in the moment. But I know that in my line of work, time is the enemy. It’s always a constant race to meet deadlines.
To battle this, I use a technique called Pomodoro, a time-management system that lets you set time to work in 25 mins, for example, and have a break for 5 mins in between. It helps me concentrate better. If the task needs longer time, I’d set 50 mins of work and 10 mins for breaks. Aside from the many benefits that this technique offers in fighting the aggressive pressures of time, it also helps me physically – I get to relax my neck and back after a good coding session.
Getting over the hump
Sometimes, the flow is harder to hit. Most solutions come quickly, but there are times that I just can’t put my finger on what went wrong. Even drinking 10 cups of coffee, endless reading of the relevant documents, or combing through the Internet for the right answers doesn’t help. The hours, days, or sometimes even weeks, can drag on and on until I find the perfect solution.
Experiencing that Eureka moment is a relief. I could wake up in the middle of the night finally realizing the simple and straightforward solution, wondering why I didn’t figure it out right away instead of wasting days looking for answers. Or all of a sudden, while browsing through the Internet on some unrelated topics, I’d find the precious answer for that nasty code bug that had been frustrating me for nights just floating there.
The good old trial-and-error of course still works most of the times. It’s pretty amazing how one little line of code solves it all and how the solution sometimes just comes out of nowhere.
Lately, I find dealing with machine learning problems more relevant. With machine learning dubbed as the most critical skill to be acquired currently, I’ve got this sudden rush to learn the tools and technologies related to it. The most challenging part of this process is understanding the data to make the next decision.
Celebrating the smallest things
Every day for me is successful, even when there’s only a little progress in my work. I know how some days can be tiring and gruesome so it’s important to have a positive mindset and celebrate all achievements, big or small. On Fridays, some beers and pizzas are always welcome.
But if I’m to describe the best days, these are when I get unexpected good results from my ML models and can be 100% certain that there are no errors. For me, solving problems is the best part. When the customers are happy, it brings a certain sense of fulfillment.
What I love about my job is that there are always new ways to do things and new advances in technologies. No two projects are the same, and I enjoy finding ways to simplify and make the front-end development process more effective.
Ending the day
On those more relaxed and quiet days, the rest of the day passes by quickly. I usually end my work on Reddit, reading some fun and tech posts. Sometimes, I hit the gym or attend some developer meetups somewhere. Then at night, my way to relax and forget about the code for a moment is by meditating for a few minutes.
Typically, my mind never rests. My commute going home is taken up by catching up on what’s happening in the industry. Not only do I love learning new things but I feel the need to always keep myself current with tech trends. So even after work, I take some time to read interesting articles and watch the discovery channel. I also have some hobby projects that usually keep me up until midnight.
There’s really no one way to define an average workday for a developer. But one thing is for sure: being a developer doesn’t mean I write code all day. On a typical workday, I’d say I spend 25% on meetings and 75% of my time on project work, of which I spend ¾ on coding and troubleshooting. The rest I spend worrying about which code I should write or what technologies I should use.
Every day is different. Some days are harder than others, but each is a necessary piece of the puzzle – solving problems that will help our users or creating new things our users love.
Learning never stops
For as long as I remember, I’ve always been fascinated with computer science and technology. Ever since I got my hands on that bulky old computer when I was 8 years old as a gift from my old man, I knew that I wanted to be in this complicated amazing world of software development. As cliche as it may sound, this is my dream job and I feel lucky that I got the chance to live my dream.
Ten years from now, I don’t see myself quitting. I want to stay in this field, learn and grow more. I feel that I have control over many things. Freedom and flexibility. But I also think that part of what makes me effective at my job is because I like our product. Believing in what the company does keeps me passionate and motivated. I go to work every day knowing that what I do has a powerful impact. Seeing things improve as a result of my work is satisfying and more than enough to keep me going.
If I wouldn’t be a developer, I’d probably go to the pagoda and become a Zen master, practicing mindfulness and developing a more profound sense of all things. And as I sit down and meditate with eyes shut, trying to chant the verses repeatedly to my heart’s content, I see Error #404. Oops, back to reality.