Intimidated to try something new? How discomfort opens doors

November 2, 2024 Opinion, Success No comments

Everything in life happens for the first time (and last time for that matter), but some things don’t happen at all. First kiss, first job, first home, first kid, first gray hair. Success isn’t guaranteed and failure isn’t unavoidable.

There is this martial arts dojo next to where I live. I used to walk past it and see people practice.  I never did any martial arts so it was very intimidating and uncomfortable to sign up there. Everyone appeared many levels above me, and true I would get punched in the face during sparrings. Year and a half past that I have fun and feel super comfortable during our light fights. Outside of the gym this gives a psychological sense of security (it is a false sense to some degree, though, but the effect is there).

Me with Kathy Long in Intention MMA DoJo in Vancouver

I have never been to any sauna until maybe 30 years old. I always thought of saunas as some weird place where completely naked people sweat, so it was very uncomfortable to go to sauna at first. Now I can easily outsit many people there. I love saunas.

On one of my recent work trips there was a junior engineer on our team who would strike up a conversation with everyone, literary. It was amazing for me to observe this person: while buying coffee he would chat with a barista, he would join a random group of colleagues to chat about whatever. I mean, I have seen many extraverted people, but this was another level, so I followed his example and pushed myself to talk to strangers. On the flight back I started talking to a person next to me and had a great pleasurable chat that killed the entire flight’s time. This is because I pushed myself into discomfort, not because it was natural to me.

Being in a senior position at work requires stepping outside of comfort and talking to a lot of people I see for the first time. I have been observing how other leaders are doing this. I found that for myself I need to imitate what they are doing. The behavior appears to have common and fairly simple patterns: being respectful, thanking people for what they do, catching the essence of the message, speaking but also giving others opportunity to talk, etc. Topic for another discussion, but pushing yourself to be more like a leader makes you a leader.

You need to sign-up to give that presentation at work, you need to have that uncomfortable discussion, you need to pick that daunting project, you need to step outside of your comfort zone and embrace the challenge. Growth only happens when you stretch beyond what you already know or what feels safe. Biggest successes in life come from risk taking and discomfort! (yes, there is a chance you will fail, otherwise it won’t be a risk).

This blog post is mainly a short self-reminder about the importance of embracing uncertainty and intentionally stepping into the discomfort territory. Do it – you will emerge stronger on the way out.

I signed up to showcase my rock climbing hobby at work during DEI&B fair next week. This is a bit uncomfortable, let’s see how it goes. More to come…


No comments


Reflections on Productivity, Focus, and Athletic Performance: Key Takeaways from Three Books

October 27, 2024 Book Reviews No comments

This blog post is just my quick notes and takeaways on three books I finished listening to or reading in the last month or two. There is no other reason for these thee books to be bundled into single post other than my convinience and trying to make this relatively short.

Four thousand weeks

The book’s title itself is a reminder: we have roughly 4,000 weeks to live, a limited and precious resource. Some quick notes:

  • We have only 4k weeks to live.
  • Many people try to structure their lives around optimizing time and increasing efficiency, but this often leads to stress and dissatisfaction. Rather than overcommitting to work, obligations, or superficial tasks, we should focus on meaningful experiences and relationships.
  • Focus on the present: Moments! Moments!
  • Since time is limited, aiming for perfection is a waste of energy.

Deep Work

I’m glad I did an exercise of writing about deep work on my blog before finishing the book as it game me an opportunity to compare my thoughts before and after. I always used read/listen to books from beginning till the end; this time around I skipped first half, which explained why deep work is important and intentionally went to second part on how to achieve deep work; this is kind of stepping over myself but also because I’m convinced that deep work is key to performance. I’ve been intentionally applying what I learned from the book – this is often hard, as I need to push myself to wake early, but those 3 hours I get early in the morning are really-really super productive.

Some key learnings, recommendations from the book, not mandatorily applicable to everyone, and not in any particular order:

  • Deep Work is a skill and we can improve it
  • Quit social media or evaluate if it benefits you.
  • Embrace boredom – this one is really funny, basically the author argues that once we have time for rest we should not fill it with distractions like scrolling on phone or watching TV, we should give our brain time to relax properly and not have habits to entertain ourselves.
  • Brain focused work capacity is limited, thus we need to work on most important things early and without distractions.
  • Have big blocks of focused work in the morning and for the rest of day plan each day in 30min intervals, this is not to prescribe what to work on, but to create micro deadlines.

PEAK: The new science of Athletic Performance

This is a book on athletic performance targeting sport coaches I picked from a library. I consider myself a recreational athlete (running, rock climbing, kickboxing, gym) and wanted to learn a bit of theory behing athletic performance. Some the the points below are just things I noted for myself and might be personal takeaways:

  • Sleep is fundamental to both physical and mental well-being. Sleep well and enough.
  • Gut Health: A diverse gut microbiome supports overall health. Strive to each veriety of foods.
  • Blood Sugar and Mood: High blood sugar correlates with mood fluctuations, so stable blood sugar levels are ideal. Watch sugar consumption.
  • Creatine is a safe, extensively studied supplement shown to benefit both power and endurance performance. Ok and benefitial to consume creatine.
  • Optimization Choices: We can only optimize on one of the three—health, body composition, or performance. A balanced approach might be best for recreational athletes.
  • Saunas: Limited impact on performance improvement. Fine to like sauna, but not really a perfomance booster.
  • Recovery should be periodized to support long-term training. Rest well and enough before next trainign which should be harder (longer & intense).
  • Athletic Health: Athletes fall ill more often than expected due to physical stress, though elite athletes may experience this slightly less. Listen to the body.
  • Heart Rate Variability (HRV): Healthier individuals generally show slightly higher HRV. My HRV currently measures between 40-50, on the lower end for my age, likely impacted by stress. Active individuals of my age often see HRV closer to 70. Watch how this changes over time.
  • Chronic Traumatic Encephalopathy (CTE): A risk associated with repetitive micro-concussions, particularly in contact sports like MMA. Take extra precautions to avoid head injuries in kickboxing.
  • Mental Resilience: Elite athletes frequently employ self-talk such as “You will move up” and “You are #1” to boost performance. Experiment with positive self-talk. Maybe read book “Unf*ck youself”.


No comments


What I don’t like about meetings

October 19, 2024 Opinion, RandomThoughts No comments

I estimate I’ve been to 10k (*) meetings in my career (holy smokes) and I’ve never written a blog post on meetings, so here it is. There are tons of recommendations online on effective meetings, things like having an agenda and setting goals for the meeting, inviting only necessary attendees, etc. In this post I would like to highlight just a few things that I think I might be doing differently and I will bring them in light of what I don’t like about the meetings :)

“What are we discussing?”

Let’s start with this: I really don’t like when people call for a meeting and don’t provide even a line of context or agenda. First of all this doesn’t give me or others means to properly prepare for the meeting. Effectively by not providing context or agenda the organizer is robbing themselves of a chance that some attendees will have more to contribute to the meeting. Additionally there is a good chance the meeting will be hijacked. In my view not having an agenda shows a grain of disrespect because the organizer demonstrates that this isn’t something important to them either.

  • DO: Always, always add a bit of description to the meeting invitations you send. At a minimum say that the agenda is coming if you need more time to prepare but have to book time. But most of the time target creating meeting notes documents and adding context, agenda and any relevant info to the doc.

“So what was the decision?”

Another thing I don’t like about meetings is when there is not a single output artifact. After such a meeting, I’m asking myself “What was I doing here?” Lately I started solving this problem by just starting to take notes in meetings independently of my role in the meeting. If no one is presenting their screen I will just silently start sharing mine with notes being taken. I’ve been thanked on multiple occasions for notes that appeared out of nowhere. I’ve also been complimented for keeping the best track record of 1:1 or other discussions where I play a more active role.

  • DO: Always play a role in the meetings you are attending. If noone is taking notes, take them yourself, if no one prepared an agenda/context but you have context – just create that doc. Maybe request the organizer to add the notes. Just 5 min of your time could make the meeting go in the direction you want it to go. Yeap, this is because by sharing the screen and people reading the context and agenda you put they are likely to follow some of that even if they are 2-3 levels above you (you can influence without authority in such a “weird” way). For big townhall kind of meetings, always attempt to prepare one question, this will keep you engaged in the meeting, otherwise just don’t join.

“That could have been an email!”

Oh, I also don’t like long or “that could have been an email” meetings. You know, those where all the useful information has been shared and discussed in the first 5-10 minutes and then people just chat about related topics and say they need time to think about it and respond, meaning that if it was an email the course of action would have been the same.

  • DO: Well if something can be shared/asked via email just do it. But if you have to have a meeting schedule just enough time for what has to be discussed. You will be pressured to arrive at a conclusion within time you have and if you really need more time just schedule a follow-up. I found that 30 minute meetings are almost always enough.

“I want out of here.”

Oh, how about the “fill the void” where you feel like there is pressure to say something? In these kinds of meetings those who like to speak a lot take pleasure in just speaking and speaking and those who don’t like speaking secretly cannot wait for the meeting to be over.

  • DO: If you are leading the meeting, encourage people to speak so long as new ideas are flowing and value is being added. The moment things become repetitive, same people talk non-stop, or there is disengagement, consider concluding the meeting, no shame in that. If anything people will thank you.

Conclusion

Unquestionably we need to meet at work. The purpose of meetings is to add value, help arrive at decisions and drive progress. The things that frustrate me the most, like a lack of agenda, no clear outcomes, and unnecessarily long discussions, are often avoidable with just a bit of effort and intentionality. By always preparing an agenda, ensuring there are actionable takeaways, and taking control when needed (even as a participant), you can influence the flow and value of a meeting.

(*) 16 years x 52 weeks x [5(early career) – 20(later career)] meetings/week = [4k – 16k]


No comments


Riding the Waves: Can We Predict the Next Big Technology Surge?

October 13, 2024 Investing No comments

Picture of some cold Icelandic waves from my recent trip

“What goes up will go down” is just such a fundamental and universal concept you can apply to anything: physics, emotions, life, financials. In this post I want to have a bit of a technology view on this and also try to understand if we can ever predict and catch the “up” wave. Do you wish you had invested in NVIDIA in early 2023? I definitely wish so.

First of all let’s have a look at some of the promising technologies from the past that rode on hype and then declined in their popularity:

  • Bitcoin
    • UP: Do you remember all the crazy hype surrounding bitcoin and people getting rich out of nowhere? I personally have a very small amount in a Bitcoin ETF (which didn’t grow much), but know a friend who lost keys to a wallet with a dozen bitcoins, and another one who kept telling me that one bitcoin will be worth like 4 apartments in NYC.
    • DOWN: Well, bitcoin as well as the blockchain technology behind it didn’t disappear, but the hype is definitely not there any longer. It is very likely we won’t see a huge rise again (or maybe we will see?). Scalability, regulatory and other reasons made this slow down. Some niche applications of blockchain are thriving though.
  • Windows Phone
    • UP: Ok, you might be asking “what is this?” or “why is it here?”. I included it here because I personally worked for about 1 year on a Windows Phone project back in 2011. The promise was that this will rival iPhone and Android devices.
    • DOWN: the market simply did pick this one up, there wasn’t enough of app development and MS eventually pivoted to something else.
  • Augmented/Virtual Reality
    • UP: Another major hyped technology. Think about Google Glasses or META’s Oculus or Microsoft’s HoloLens, these technologies promised to revolutionize gaming, work, entertainment, and everyday life.
    • DOWN: I didn’t buy this hype myself because it somehow makes me disgusted imagining myself living and interacting with people in a virtual world instead of the real one. Again, some niche applications still exist.
  • Artificial Intelligence (AI)
    • UP: So I’m sure you have read about multiple waves of AI technology, early 50s when it first appeared, 80s when expert systems were promising to change everything and (drumroll…) now when Generative AI is the next big promise.
    • DOWN: I don’t know when the exact time for the downturn will come, but there are obvious problems with it (high compute costs, wrong facts, plagiarism – I make it a point not to copy anything from GenAI into my posts).
  • Many other technologies of different scale (3D printing, 3D TV, BlackBerry, delivery drones, Fire Phone, etc, etc)

Potentially we can generalize abovementioned technology trends into three categories of downfall:

  • Complete disappearance: VHS, CD, BlackBerry, etc.
  • Reduction to niche usages: VR for gaming, 3DPrinting for specific applications, etc.
  • Enduring: Personal Computers, Internet

Now, where am I going with all of this? I’m trying to ask myself a question: is it possible to guess for any new technology if it is going to disappear, get reduced to a niche use, or will endure beyond our lifetime? Additionally is it possible to catch the “up” wave and ride it until the peak?

Let’s take the case of NVIDIA. If AI is a gold rush, NVIDIA is selling shovels. I found an article from 2019 arguing that NVIDIA will supras Apple in market cap, the argument states that the AI market will grow to 15T$ and that the computer is switching to GPU which logically makes sense.

Here are some recommendations for my future self to be on the lookout:

  • People have entire careers dedicated to spotting these trends so it makes sense to be aware (re-subscribed to weekly TechCrunch newsletter).
  • Spot tech industry trends using professional networks.
  • Spend dedicated time once monthly thinking about well positioned companies (scheduled time for myself).
  • Do my own numbers once anything appears interesting (this is a difficult one, but it would set you ahead of others, think of “The Big Short” movie).
  • Risk here and there.

Do you have any thoughts on the topic? What is that big thing you missed, you think you could have caught?


No comments


Reevaluating my social media usage

October 6, 2024 Opinion, RandomThoughts No comments

I am guilty of wasting 2-3 hours daily on social media platforms and at times even more. That stuff is addictive. In this post I want to share my thoughts on the use of social media, how it changed for me (I drastically reduced its usage), and conclude with some key considerations.

Social media platforms I use or used

  • Facebook
    • There were periods in the second half of the 2010s when I enjoyed Facebook and opened the app every day. During COVID times my time on the app started to feel like a total waste of time. When the war in Ukraine started Facebook made me dependent on learning about the latest events inside Ukraine from people directly but oftentimes it was generating depressing thoughts. Other than that, too much of what people post is of little interest to me or is just nonsense, so…
    • I quit using Facebook. I do not have the app and almost never open it from the web, except for rare cases when I would use the marketplace or need to log-in to some other service with Facebook.
  • Twitter
    • I was a heavy twitter user. Here is a blog post from 2010 with a picture of my back with the words “follow me on twitter” painted over it. I think I found twitter to be fairly useful professionally in the 2010s as I could follow professionals I cared about and I was learning from them. These days twitter still appears to be the fastest way to get major news from around the world and a place to quickly share and validate ideas, but..
    • I quit using Twitter. Lately the things I see on twitter are pure garbage. Too many pictures, memes and other nonsense. Potentially if I make an attempt to re-teach the algorithm to adjust my recommendations to some specific professional niche and follow a few key people I can make use of it again. 
  • Instagram
    • So I’m kind of a recent user of Instagram. I had personal account created in 2018 in order to connect with some new people I met, later I figured that it is not really adding any value and after the war in Ukraine started I no longer feel like I want to post anything that is happening in my personal life, so I took my account private, cut the list of people I follow just to few dozens and created small list of ‘close friends’ to occasionally share some stories.
    • Another use of Instagram is for my climbing account. Someone even called me a “climbing influencer” (LOL, and that with my 1K followers). I find this account to be helping me make new climbing connections I would otherwise not have made, so…
    • I limit my use of Instagram to 5-10 minutes a day except for 1-2 days a week when I need to post my climbing story/reel, in which case I might spend 30 min in the app on that day. I’m happy I reduced my usage of the app.
  • LinkedIn
    • Undoubtedly the most useful social network on this list. I have the most connections in this network. I almost never actively posted on the platform, but I gladly extended the network by adding people I interacted with professionally or anyone who requested connection and appeared to work in tech.
    • I limit my use of LinkedIn on my phone mainly because of the latest changes that make it more like Instagram or Facebook with short videos and silly posts, but..
    • I am considering a more active use of LinkedIn since it is the cleanest social network and people generally maintain a professional attitude. The way to use it more actively would be to actively mute/remove connections who post low value posts and occasionally share my own original thoughts on the platform, like this very post. I haven’t decided if this is a good decision yet.
  • Strava
    • There is a chance you haven’t heard about this one. It is a social network for athletes. I synchronize my sport activities collected by my Garmin watch to Strava. I only have a few dozen friends there and consider this network to be mostly harmless as it is very focused. Also giving people “kudos” for their workouts or runs is definitely a more respectful thing than giving a like on other platforms for resharing existing silly cat memes or someone’s pretty butt. Nothing wrong with cats or pretty butts but just not the thing I want to spend my online time on.
    • I don’t limit my use of Strava but there is no need to do so given how little time it takes.
  • Blind
    • Another less known one. Anonymous professional platform. This one can be useful and I personally asked two questions in the past and got really good useful answers back. At the same time this is an extremely toxic place. 
    • I ban myself from Blind. Yeah, I would install the app when I need to ask something specific and after a week or two remove this toxic depression inducing thing. My TC is never good enough.
  • Other platforms
    • Just wanted to mention I use all kinds of messaging platforms for staying connected with people. As for other platforms that make it easy to consume socially generated content I try to be conscious if it is any useful. At times there is quality content, like Kurzgesagt or other quality creators on youtube, or very specific reddit threads.

To summarize: I’ve significantly reduced my time on social media, keeping only those platforms that offer clear value. The rest either distract me or negatively impact my well-being, so I’ve cut them out. Reevaluating one’s own usage of these platforms is a useful exercise to understand where the time goes and what can be done to regain control. 

Key Considerations:

  • Strategic Use: You could benefit from social media if you use it intentionally for specific purposes, like sharing blog posts, learning from others, and expanding your professional network.
  • Content Creation vs. Consumption: If you’re primarily creating content (e.g. in my case blog posts or climbing videos) instead of passively consuming it, you’re more likely to see returns from social media.
  • Time Management: You could limit your social media time to avoid it becoming a distraction. Below are some ideas for reducing the time usage.

How to reduce time?

  • Goals. I consciously worked on reducing my social media time by setting annual goals (e.g. “Near 0 time on passive social (Facebook, Twitter, Instagram, YTShorts, etc)”, “News check max once a day”) and had a few periods of successes and failures, but I learned that cycles of attempts eventually merge to create complete consistency.
  • Uninstall apps. Just making it hard to log-in to certain networks drastically reduces frequency of its usage.
  • Use a time-limiting software. I’m using Android’s Digital Wellbeing to set those 5m/Instagram, 15m/LinkedIn and other daily limits. This can be done for websites opened on the phone as well.


No comments


Level Up Your Work: Why Documenting Everything Matters

September 28, 2024 HowTo, Opinion No comments

If you are in a knowledge job, do yourself a favor and document everything as if your activities and thoughts were relentlessly producing logs similarly to a production server. Make it a habit and develop it so it becomes second nature. Offload cognitive burden to your computer, you don’t need and won’t be able to hold all of that information in your brain.

Let me give some of my personal examples and then follow up with how this was useful to me and others.

My tax documents from when I was a self-employed contractor

1:1 meetings

We all have 1:1 meetings: with our managers, peers, other stakeholders. I have a running doc for each individual person and take notes of every work conversation. For every person I create a go-link (something like go/person-andriy). This helps in 3 different ways:

  1. Adding topics. Every time I think about a topic to discuss with someone it is basically very keystrokes away. never have to go over the mental struggle of “Oh, what was that thing I had to talk to them about?”
  2. Searching for info. This one is probably obvious, but just to emphasize, I think our memories work by association, and it is often easier to look up something if you have a person in mind for a specific topic.

“Talk to X” docs

I extended this practice of storing topics for conversations into my personal life. I’m usually not documenting conversations themselves as they happen over coffee or walk and it would have been super weird to type during those. At the same time those docs work as a quick refresher and I found that in most cases this hugely enriches my conversations.

Cross-referencing everything

Cross-reference! cross-reference! When writing documents we obviously reference the sources of information, but a step further is to also do it in reverse (if possible). This helps connect the information and traverse it in any direction. So, if there was a strategy created based on a dozen of discussions with multiple teams, adding a link to that strategy to each discussion’s document will help each team relate to what that discussion has led to.

Documenting before and after religiously

A new practice I picked at Google is to capture “Landed Impact” in the design document after the actual launch. A design document would normally have effort justification, which often includes expected impact, but then “Landed Impact” would capture what actually happened. And I keep adding to that section. As a very specific example, I finished a project that reduces the monetary impact of outages a couple of years ago, and relatively recently there was an outage that would have cost us a lot more money if that project wasn’t done. I simply went to that old doc and documented this more recent impact. Why spend effort on this? Here we go:

Artifacts pay off

Presence of good artifacts makes a huge and oftentimes decisive difference to the outcomes of performance reviews and promo discussions. Think about the promotion process, you cannot even imagine how the presence of solid artifacts is important. With the artifacts in place people don’t have questions, they are like “here is the impact, here is leadership, this is influence, SOLID case”. Instead if artifacts are sloppy it becomes hard to drive conclusions from them, people are like “scope of work is unclear, impact might not be for the next level”. With good artifacts you are offloading cognitive load not just for yourself but for others, you make their decision process easier and they also feel like their responsibility is taken care of.

Unfinished work

Do you know those dreadful situations when a project is axed? This could be in your control (you didn’t find enough impact in work) or outside of your control (reorgs made this part of thing irrelevant, it is too late to market). Are a few months of your effort all waste? Nope, if you documented the learnings, basically you have your retrospective and learnings document ready. You hand it over to leadership and they can use it as a clear case of work being done. A quick failure is also ok as long as there is learning from it and how do you know if there was learning if there is nothing in the end?

Tooling

Does tooling matter? Well, someone could argue that it doesn’t as long as it does the job, but I’m yet to find any tool that works as well as Google docs: it is accessible everywhere you log in, searchable, shareable, collaborative. Works well at work and works well for personal things. Even this blog post originated in a Google Doc. And, yes, I tried other tools.

Conclusion

Same as the introduction: do yourself a favor and document everything as if your activities and thoughts were relentlessly producing logs. Offload cognitive overhead to docs and make your brain busy with now.


No comments


Favorite Debugging Strategies

September 22, 2024 Debugging, HowTo No comments

This is original content by Andriy Buday.

Yes, even this picture of rubber ducks is orignal picture I took ~10 years ago.

I just wanted to document a few different strategies for debugging and root-causing issues that have worked for me in the past, with examples. Two things about this post: it isn’t an attempt to provide a holistic view on debugging, mainly because there are plenty of articles out there. Also, I recently tried using an LLM with a relatively simple prompt, and it generated quite an impressive summary. Instead, I wanted to share a few examples and just a few approaches I like. I have two or three favorite strategies for debugging:

Time & changes

In my experience, if something worked and then stopped more likely than not a change was introduced recently, this is why there is a concept of “change management”. Simply looking at anything that changed at the same time when the problem appeared helps. Steps:

  1. Identify the time of when the problem first started.
  2. Collect available symptom information, such as error messages.
  3. Lookup relevant codebases, releases, data and config changes by the timestamp. Prioritize search using clues from sympthoms but don’t skip lookup just because it seems less relevant.

Sometimes an error message could give a straightforward path to identifying an issue. Happy scenario could look like this: you find the error message in the codebase, open the file change history and right there you see a problematic change. But things aren’t always as straightforward.

Because a symptom can be at the end of a long chain of events I don’t always focus just on the clues from the symptom, but rather advise to look at anything unusual starting at the same time.

As an example, I was involved in root causing an issue where our server jobs were crashing and could not startup after the crash. After looking through logs it seemed something made them not able to load a piece of configuration data, so we looked at stack traces of the crash but it wasn’t bringing us any closer to solving the issue. Instead, by looking at logs at healthy servers we noticed non-critical warnings and inconsistency in configuration. These two things seemed unrelated but they started appearing around the same time, so by looking at logs at healthy servers we identified the fix.

As another example, a colleague of mine was investigating an issue when an API was crashing at specific type of requests, by looking at the changes to the API he couldn’t see any changes around the time of when this started happening. I suggested we expand our search, and see if other clients of this API had any changes and what we found was that someone updated all of the clients of the API at the timestamp of when we started to see the issue, but they forgot to update our client.

Isolation and Bisection

My next best favorite approach to debugging is reduction in the universe of possibilities. What can be better than halving it every time?

I found this approach to be the best when debugging a bunch of recently written code. If this is the code you have locally, you can simply split it into smaller chunks (like commenting out half of a function). If you pulled recent changes by other engineers, a strategy could be to sync to a version midway between your original base and the most recent changes. I have applied this so many times it feels natural.

As an example, we perform huge number of experimentation at Google, occasionally these experiments cause issues, starting from server crashes or impact on revenue in which case automatic systems normally kick in and disable culprit experiments, but sometimes things are more subtle and a culprit has be found semi-manually in a new batch of experiments, in which case we apply bisection strategy.

Rubber duck debugging

Yeah, you’ve read that right, google it after you finish with this post. Rubber duck debugging is a technique of articulating your problem to someone else, explaining what research has been done so far and what you are solving. Oftentimes, this results in an “aha” moment and a realization where the problem is. Since you don’t need too much involvement from another party other than listening, you can just talk to an actual rubber duck.

As a story, I once told about rubber duck debugging to a manager of a team of consultants with whom I worked, the next day he bought all of us rubber ducks. It was a very nice gesture.

But a bit more seriously, there is a lot of merit to this strategy. I have joined dozens of small calls with other engineers where they tried to debug a problem and when after explaining the issue to me and myself just asking them simple “why?”, “give me more details” questions at some point they realized where the problem was. All of this without me even understanding their code or what they are doing.

Other strategies

As I mentioned, I didn’t attempt to write a holistic overview of debugging strategies. Other things that worked for me were: using debugger (obviously), profilers, other tools, stack tracing top to bottom and bottom to top, logging more things, etc, etc. There simply are so many ways to diagnosing and root causing a problem and not all strategies are equally applicable.

What else worked great for you?


No comments


Finding my Deep Work

September 15, 2024 Opinion No comments

This post is original content by Andriy Buday.

NOTE: I wanted to gather my thoughts on the topic of “deep work” before going through the book “Deep Work” which I just picked and started listening to.

When and where are you the most productive? Does it ever happen to you that in a few hyper-focused hours you can complete as much as in a few days of ordinary pace work? Do you think it is possible to make these hyper-focused hours happen regularly every day?

Shallow Work

In the past I could be really focused on simpler, somewhat repetitive work. I remember I once had to add some extra data to our database and pull it through all layers and get into the frontend. Typically in that project this would take a week or so, but because I did this so many times one evening of hyper-focused work was enough and the PM who requested this was super surprised “you are very quick” with big eyes. Occasionally this looked like I was an overly competitive person. I remember at my first job I got an assignment to create some medical forms. I was maybe 2-3x faster in creating them compared to a more tenured person. I didn’t compete, it was just focused and fun work to me. This type of work is something you can grind through if you have a looming deadline.

Deep Work

But what about the work when more deeper thinking is required? It’s normally harder or next to impossible to bluntly grind through. It’s different in a way that any distraction derails the train of thought. Imagine, you are writing a design document, and you need a bit of extra info, so you search for that info, and a few dozen browser tabs away you realize you no longer remember what you were looking for and what you are doing on this particular page and that now it’s time for your meeting on another topic. I see deep work as periods of intense uninterrupted focus when I can make major progress on something hard to do.

Ideal span of focused time

For me ideal stretches of focused time are always longer than 30min and shorter than 3 hours. I found that getting into the deep work requires “warming up”, pretty much like in sport activities. After that, maintaining intensity is easier but never lasts longer than 4 hours, after which productivity goes down rapidly.

Mental capacity

There is limited mental capacity available on any day for deep work. I imagine it as a capped reservoir. The only way to have it full is to be well rested (proper sleep night before, healthy body and mind). Working in focused mode is like directing the flow to harvest energy on what you need. Distractions are like huge leaks that take time to fix. The reservoir is very hard to expand, but you can train to make use of the flow much faster without the lag time, so instead of requiring 30 min to get into the focus you might train to shorten this time.

Environment

Another aspect of focused work for me is the surrounding environment. I am working on creating routines. Say, to write blog posts I decided to do them in a bubble tea place each time after dropping off my kids for karate classes. I know I have an hour of active work and there will be very little time during the week to get most of it done, and then one more stretch of work early on Saturday or Sunday morning. This post is written in three one hour sittings.

Distractions

Going through social media feeds on mobile phones is an obvious time and attention killer. But even something that is more important and you have to do has detrimental effects. For instance, just 4-5 meetings are normally enough to exhaust mental capacity for any deep work on that day, especially if they are spread throughout the day. Or, say, replying to messages from your boss is something important, but again if it comes in the middle of your deep work on, say, writing an important doc you lose your attention and will have to get into the flow of writing again. Small things often go a long way to reduce distractions, things like putting the phone away, having a clean work desk, using full screen mode, etc, whatever works for you.

Time of the day

A “cheat code” appears to get those 3 hours of work before any meetings. I know it is a cliche to say “wake up at 5AM and get most work done before others wake up”. I found this to be true, except it doesn’t work for me mainly because at 5AM I’m a zombie and not a human (maybe if I was a robot it would have worked ;) ). This works though if I go to bed at 9PM, which is super difficult as even my kids laugh at me when I mention going to bed this early.

Commitments

I mentioned deadlines at the beginning and I think they are a very important motivating aspect for actually getting into the deep work. A caveat that comes with deadlines is that often they are perceived as something far in the future so we tend to procrastinate until its too late. Thus, something that works better are shorter cycles. For me, weekly cadence seems to be the best, both in my personal life and at work. For projects that I drive at work I usually establish a weekly cadence of planning/commitments. I have written about setting up challenges with friends and I’ve been doing this in one or the other form since 2016.

Key contributors to focused work for me:

  • Plenty of sleep the night before
  • Distraction-less surrounding environment
  • Very early hours (or very late hours)
  • Dedicated spaces for specific types of work
  • Having a goal for each session
  • Commitment of some sort (work deadlines, self-goals, promises)


No comments


Is Being a Generalist Software Engineer a Good Thing?

September 7, 2024 Career, Opinion, Success, Uncategorized No comments

It probably doesn’t compile otherwise why be so unhappy?

Somehow I became a generalist software engineer with a diverse domain experience. I started career with C# and moved to Javascript and then to Java and now C++. I worked for healthcare, online entertainment, nuclear energy, e-commerce, and advertising industries. In this blog post I want to share some of the details of these experiences and conclude on whether being a generalist is better than being a niche engineer.

Technology Lens

The very first program I ever wrote was in QuickBasic in grade 6 (1999). The school computer I wrote this was only capable of running some version of DOS. Computers at university ran Windows and I learned to code in C/C++/C# + some more obscure languages (Prolog, Algol, Pascal). In my first job I wrote desktop and mobile solutions using MS technologies, mostly written in C# with WPF & WCF. My next gig was all about performant backend services with a mixed technology stack backing a multi-million user website. At my next job I found myself translating nuclear material accounting code from the 70/80s written in PL/I that ran on mainframe into Javascript or C#. Most engineers who wrote the original PL/I code either retired or died. This job taught me that I can love a dynamic programming language. Then I moved to work for Amazon, it was all about launching new business workflows and scaling it with Java services backed by AWS and ReactJS frontend. Now at Google I mainly write in C++, but from another perspective for me there was a big shift from working on products towards working on infrastructure that supports traffic for billions of users.

Domain Lens

Now I want to have a look at all of the same jobs but from a different perspective. The first projects I worked on were for healthcare providers. Honestly, I didn’t give myself much thought about the morbidity of the things, the fact that much of the software was for hospices didn’t bother me as I was operating on the level of tasks. It was only later when I was working on a mobile app for nurses to visit patients at their homes did I internalize what this all was for. Next job probably wasn’t that noble – it was in online entertainment, more specifically sports betting. I even had an account with a competitor and placed small bets on sport events to understand how they do things compared to us. Saving the world from making more atomic bombs? Yep – that was my next job, kind of. On the ground what I was doing was merely software for IAEA (UN) and its agents who went to nuclear facilities and collected nuclear material data, performed different checks and recorded them in the app for later analysis. I got a chance to visit a nuclear reactor and learn how it works. Next gig was about enabling small companies to sell more stuff at Amazon. This was about enabling an entire channel of dropshipping for the India marketplace: loading inventory into Amazon systems, processing customer orders, invoicing, etc. This allowed me to have a good view on how e-commerce works. These days I work on supporting online advertisement from inside by working on infrastructure and tooling that allows other engineers at Google to deliver solutions to show you relevant Ads. I know ads may sound like a bad thing, but the free internet exists thanks to ads. Ads pay for those transatlantic underwater internet cables and all the other things that power today’s internet.

Cultural Lens

All of the companies I worked for were very different culturally. First job was a very homogeneous environment, all of us were Ukrainians, fairly young and we worked for our American customers who on their side were also culturally similar among themselves. I think communication gaps existed due to time zone differences and English language skills on our side. Next job was maybe half Austrians and another half of East europeans. The product we worked on was our own so I think we cared about its success a lot. I am actually not sure if I fit into this environment culturally, but I thrived on the technical front and delivering results. At the same time this was when I made many new friends who remain friends until now and I even stayed at their home on my recent trip to Europe. The United Nations is definitely a culturally most unusual environment I had to work in, mainly because of the diversity of nationalities and backgrounds. Any day at the UN premises there were people from over 100 different countries, my team alone had people from all of the continents. Something that was a bit less diverse was age, as many of the people who work for the UN are accomplished individuals with some years behind their backs. This was the place of internalizing that not everybody has the same life views on it and it’s all ok. It was extremely fascinating to learn from my colleagues. I would say that on a macro level both Amazon and Google are culturally similar – we are ambitious technically savvy individuals striving to make an impact. Though on another level Amazon is a fast paced, high intensity, customer centric, and deadline driven company whereis Google is more mission driven, long-term oriented, with more emphasis on innovation.

Conclusion

I can probably wear many other lenses to look at my past experiences, such as, Impact, Scale, Learning, Personal Fulfillment, WLB, Collaboration, Communication, etc. But even with the 3 lenses above it is clear that the diversity of technologies, domains, and cultures pushed me to become a generalist software engineer. Arguably, this isn’t necessarily a good thing, being extremely deep into one technology and domain can land you a ludicrously high paying job. I saw people sticking around and climbing corporate ladder rapidly, something that I couldn’t do with all the switched I did, and at the same time I saw directors being laid off just because there is no need for their role any longer. In today’s economies of scale the winner takes all. If you are at the right place and time and win the game – it is all yours. On the other hand, if you are not that “winner”, adaptability gives you an advantage of switching when needed and grabbing at least some piece of the pie or, maybe, a chance to win another game next time. I don’t know what is right, the above was my journey and it continues. What are your thoughts on going broad vs deep in your software engineering career?


No comments


From Fish Tanks to OKRs: Measuring Impact

September 1, 2024 Opinion, Success No comments

“They reproduce – that’s how you know!”

Office Fish Tanks

During one of my business trips, I had an interesting encounter with a person responsible for maintenance of the fish tanks in the office. As we chatted about his work, he shared an insightful moment. His employer wanted to measure the results of his work and had once asked him, “How do we know you’re doing a good job?” He pointed to the fish tank and proudly said: “See those little fish? Fish in this tank reproduce in captivity and that’s how you know I’m doing a great job.”

In this post I would like to go over my experiences with measuring success and work results in the context of different jobs I had. I want to highlight some personal learnings from each of these experiences.

Experiences

In my first role I didn’t care about the business metrics or showing the results of my work, I was a grinding machine – I had a job and I had it done. Did my management care about the work I did? I bet they did, otherwise they wouldn’t put me through two promos. With my first experiences of leading a team I started looking at things like tasks completed, sprint burndowns, etc. In retrospect I was very focused on tracking “work completion” for myself and my team that I might have overlooked connecting this work to actual business impact. I was lucky someone did this for me and our work delivered results but if I was there now I would have spent more time understanding the business.

At my next job, my team owned multiple backend services where performance metrics were critical. “We need to handle 7TPS on a single node, how many nodes do we need to handle the entire traffic?” “This API is slow and has weird behavior of being very slow for some of the requests. Can we figure out the bottleneck and get P99 of requests <150ms?” I think this was the job when I truly understood how technical solutions connect to business success. I found the performance bottleneck and this allowed for a “bet from autocomplete” feature launch which improved user engagement by xx%. (Btw, the bottleneck was a forceful garbage collection as a way of reducing memory, instead I got rid of this memory optimization and instead asked for more memory on servers hosting the service).

Things were somewhat strange at my next job. At first I worked on an app for IAEA agents to use to record their activities during their visits to nuclear facilities around the world. I didn’t know exactly how they measured their success even though I was curious. But later I had a chance to work on a scientific/statistical tool that would take raw nuclear material accounting data and perform all kinds of analysis of the data, come up with reports and KPIs. In a way this was a measurement product by itself.

Amazon is famous for being data driven and measuring everything. When I worked there everything had to be backed by data. And this wasn’t just for engineers. Same standard applied throughout the entire company. My promo had to be backed by the list of all the projects I completed, impact they had, stats on code, etc, etc. Dates mattered a lot as well. Market is ruthless and requires things to be completed before the deadline (think Prime Day, Re:Invent).

Google is another example of an extremely data driven company and I have had a chance to work on things related to how Google makes decisions based on data. Effect of any smallest change is measured on a small percentage of traffic in order to make an informed decision. There is an experiment almost behind any code change. Google taught me to always add a section “Landed Impact” at the end of every design doc and then populate it post launching the document with specific realized impact. Google had so much impact on my life that I’m setting my personal goals using OKR methodology. If you want some related reading, consider reading the book “Measure what matters”.

Conclusion

Understanding the success of a project is about aligning technical results with business outcomes. For example, if you’re optimizing code for faster processing, link this improvement to reduced server costs or increase in revenue, and then measure all of these components. And from a career perspective, you always want to be able to say what you did and what impact it had. The impact has to be stated in numbers and should have some meaning behind it. People should care about your numbers. If no one cares about your numbers, think again if what you are doing is worth doing.


No comments