Bolbo is the name of my mental framework for the quintessential software developer. I draw it with a square jaw, black messy hair, round glasses, a cynical sense of humor and a snarky attitude. He doesn’t exist in the flesh, he never did and never will. He is a fictional character that I use as a thinking model in a few situations. For example, I write code comments as if I was trying to explain to him how the code works. I mentioned this in 9 Software Engineering Career Mistakes To Avoid At All Costs.
Bolbo’s average day is a typical day in the life of a software engineer, with a few atypical habits and behaviors. Developers are all different, and most aspects of their day cannot be generalized just because the job they have. There are infinite variations of realities, company cultures, personalities, habits, personal preferences and points of view in the engineering population. Bolbo is just one example that I regard as typical, even if typical doesn’t truly exist.
An Early Bird.
Bolbo’s day starts at 5:00 am every morning, just a bit earlier than the average rooster. He is a member of a small group of software developers who wake up early, perform their best work in the morning and go home to their family before 6 pm. He has a wife and children, and time spent at home with his kids is precious to him.
Many of Bolbo’s colleagues get up much later — around 9 am — and don’t set foot in the office until 10 am. His company has flexible schedules, and no one is required to be in the office at any particular time. But Bolbo strives to be at his desk by 6:45 am, when the office is empty and the silence conductive of a deep state of flow.
Before leaving the house to go to the office, he reads his email but he makes a point to never answer it before the first cup of coffee. That would not be a good idea. He showers, shaves, eats breakfast — usually cereal — drinks a cup of black coffee while watching the morning news, and finally jumps in the car at around 6:20.
The commute is not bad. He makes the best of it in one of two ways, depending on what’s going on at work. During periods of bug fixes, code polishing or other relatively mundane activities, he spends the 25 minutes in the car listening to podcasts, audiobooks — self-help — or listening to music — classic rock.
During intensely complex projects, he wakes up thinking about code after dreaming about code. Coding dreams bring new ideas on how to solve the impossible technical challenges he was trying to conquer the day before, and he spends his commute thinking intensely about the work ahead. Itching to test the solution, excited for its elegance.
That sense of having the “golden keys” to a difficult problem is pervasive in a software engineer’s life. It is an intensely exciting feeling of accomplishment. I can describe it as something similar to the feeling you get when you are almost at the end of a jigsaw puzzle, and only a few pieces are left. You can see the pieces, you can see how they are going to fit in the open space, and you itch to put them into place. When they slide-in effortlessly, you feel a sense of accomplishment.
Bolbo is rarely the first one to get in the office, but he is often the second or third. He makes coffee, fills up a cup, sits at his desk, opens his MacBook, puts his headphones on with a selection of trance music, and gets to work by reading the cliffhanger he wrote to himself the night before.
That is a habit he picked up years ago. It consists in ending every work day by writing a “cliffhanger.” No, it has nothing to do with a movie. A cliffhanger in Bolbo’s vocabulary is a set of detailed notes — written in the form of code comments — designed to remind himself where he was in his thinking process when he stopped coding for the day. It allows getting right into a state of flow almost immediately, starting with the exact thoughts he had before leaving. This process also has a side-benefit. It allows starting the process of leaving the office with a ten-minutes writing ritual. When the routine ends and the cliffhanger is written, it implies that it’s time to go home. That eliminates the “5 more minutes” excuses that tended to keep him in the office for two more hours.
Golden Hours & Standup.
Bolbo considers the time between 7 am and 10 am as the most productive of the day. He calls them the “golden hours.” Pure mental flow, ignited by the cliffhanger and fueled by trance music and caffeine. After three intense hours that fly in what feels like three minutes, the morning stand-up begins. Sometimes that is a nice break, while other times it seems like an unwelcome distraction. Regardless, it is always useful to discuss the project with other engineers, and fun to socialize and feel connected with the team.
Bolbo is a self-declared ambivert. That means that his personality has a balance of extrovert and introvert features. Despite the stereotypes, 80% of software engineers consider themselves as mildly extroverts, which puts Bolbo somewhere in a gray-zone given that most people don’t know what ambivert means.
After the daily standup, there are usually corridor technical conversations, some more socialization, sometimes more meetings, but most of the time more coding. Every once in a while Bolbo is asked to interview a job candidate. HR knows he prefers to do so at around 10:30 am, after stand-up, and they try to respect his preference.
Interviews are always fun for Bolbo. He has a cynical sense of humor, but that is not uncommon among the developers he interviews, so it does not feel awkward or rude to most people. He likes to ask problem-solving and programming questions. He typically asks interviewees to go to the whiteboard to write their solutions and brainstorms their work until he is satisfied with it.
Over the years Bolbo collected many stories of fantastic interviews. Enough to write a book. Like the one where the interviewee was dressed head to toe in cowboy clothes. Bolbo thought it was kind of cool. Or that other one where the interviewee — who had a Master in Computer Science — was unable to answer a “how would you find the minimum in a sorted array of integers” question. Or the one where the candidate didn’t know how many bits are in a byte.
And then there were the good interviews. Some of them thought him new ways to resolve problems. Others involved incredibly experienced engineers who had a calm and assertive confidence, along with amazing technical skills. Those were the most inspiring ones.
After the mid-morning activities, he walks back to his desk, writes a report of the interview, sends it to HR and the hiring manager, and goes back to code.
Bolbo has a habit to check-in his code every time he feels like he made progress toward the goal. That could be every few minutes or every few hours. If you were watching the check-in emails, you’d be wondering why it’s sometimes necessary to commit three lines of code. You’d also know that Bolbo wouldn’t care what you think on the matter, even if you told him. He has been doing that for a long time, everybody in the office knows that, and he is not about to change anytime soon.
Lunch is optional, depending on the workload. Not because he doesn’t like food. He loves it, even a bit too much. He just forgets to eat and finds the lunch hour to be another good concentration time.
In the early afternoon, Bolbo does more brainstorming with colleagues, email writing, and bug fixing. Between 2 pm and 4:50 pm he goes back in a state of intense flow, and that’s when problems start to get harder. As the caffeine no longer seems to be able to fuel his brain, some of the technical challenges appear more difficult than in the morning. Not because they are. The brain is just getting tired. That is when Bolbo writes his ritual cliffhanger, right there in the code: ten minutes of stream of consciousness designed to bridge the hours until the next morning.
At around 5 pm, Bolbo checks his email one more time, closes his laptop and goes home. The commute is about 30 to 40 minutes, and he spends it listening to more podcasts and audiobooks. The rest of the evening is spent playing with his kids and talking to his wife. Then, he has dinner and does the dishes.
After dinner, he spends a couple of hours doing “whatever he wants.” That means either playing video games, working out, taking a walk, reading a book, working on some personal coding projects, surfing the web, writing, doing some more work, or doing whatever he feels like doing that day. This is his time.
When he goes to bed, the coding dreams start again. They are nightly companions that resolve real problems, sometimes in unexpected ways. They are not always reliable, sometimes are completely random, but welcomed nonetheless.
Of course, a typical day is full of non-typical events. Days are never dull or boring. Sometimes they are smooth and sometimes bumpy, but always full of opportunities to learn new things and solve new problems.
The life of a developer is not often glamorous, but it is always mentally intense. It is similar to the life of a writer, immersed in a deep state of concentration for hours at the time, alternated by family life, side interests, and social activities.