You have to be a psychopath not to worry about uncertainty

November 30, 2024 Opinion No comments

The other day I was asked if I was worried about uncertainty. This was asked in the context of some ambiguity in our 2025 plans at work. Here I just want to share some of the thoughts on the topic.

My answer was: “A person has to be a psychopath to not worry about uncertainty at all. We, as humans, seek safety and security. At the same time, the biggest of our successes come from uncertainty and taking risks.” (*)

Not knowing what to choose is one big source of uncertainty and anxiety, the drain of indecision takes out your energy and you get stuck in dreaded “analysis-paralysis” . The reason for this seems to be our nature of being afraid to lose something, even if it is a prospect of future opportunity. For instance, you might have a possibility to get promoted in the current team, which you will lose if you switch to another team.

Do you know the origin of the word “DECIDE” ? It’s from Latin decidere which combines two words: de- ‘off’ + caedere ‘cut’. Yeah, to decide, we have to cut off something.

I took some risks (changing jobs, moving countries) in the past and believe I was rewarded for taking them and had some failures in other cases (financial setback on home purchase). I was wondering if there is a sure way to deal with the feeling of uncertainty and that grueling waiting time between making a decision and knowing the outcome of that decision.

Taking inspiration by thinking about people who dealt with risks and uncertainties isn’t always helpful. Popular culture is overhyping people who succeeded by taking risks – please know that for every single billionaire out there who miraculously made their startup successful there is an ocean of people who failed. Survivorship bias in play (**).

Thinking about people who have to deal with major uncertainties right now doesn’t help either. For instance, many of my fellow Ukrainians face uncertainties of the unthinkable levels, they lose homes, jobs, loved ones, and the future is unclear. Objectively my uncertainties compared to theirs are negligible.

Rolling up the sleeves and just getting into the flow of work and just being in that mode of constantly solving problems and mitigating risks helps as long as you can maintain that state. I see this as a mode of “fight” in a survivorship physiology (***) – fighting is cool and can get you far, it’s just that sustainability is difficult.

It appears that the easiest to deal with uncertainty is multi-fold: having a very solid safety net, having a streak of risk-reward successes that gives you confidence boost (think of emboldened territorial lobsters (****)), and actually enjoying the process itself. But all in all, you just have to embrace the uncertainty as something natural and impossible to avoid. Absolute 0 uncertainty means you are dead – I will get to it.

There is this concept of the cone of uncertainty often used in  risk management. The idea is fairly simple – as the time passes more and more risks are either realized or mitigated and eventually residual risk reaches near 0. In the context of project management this happens closer to the project end. I have joined many projects where it was absolutely unclear what I had to do and how the things will evolve, few months in and it gained some structure in my head, few more months and there is a feeling of being on top of the things, and eventually few more months in it is all done and ready and you are on the outlook for the next big thing. So, my friend, don’t worry, embrace the uncertainty and deal with ambiguity, as they say.

In our lives the moment we are born the uncertainty of what will come of us is the highest and as the time passes we become who we are today with the uncertainties of today. Now to sound overly morbid, we reach a personal level of 0 risk at the time of our death! So enjoy non-0 risk and uncertainty!

There is more to come ;)

What are your thoughts on risk, decision making, and uncertainty?

Footnotes

(*)To be fair, taking risks presumes that there is a possibility of failure, which does happen, otherwise it wouldn’t be a risk.

(**) https://en.wikipedia.org/wiki/Survivorship_bias

(***) Look at the middle section from this diagram of transitioning from Polyvagal theory: https://equusoma.com/wp-content/uploads/2022/03/The-Polyvagal-Defense-Hierarchy-2021.pdf

(****) This is a bit silly but every time I think about repeated successes or failures I imagine territorial lobsters analogy by Jordan Peterson: https://www.youtube.com/watch?v=5ZOkxuNbsXU


No comments


Building a Learning System

November 18, 2024 Opinion No comments

In the past I wrote a few posts on learning, specifically this one, where I talk about the learning pyramid in which teaching someone has the highest retention rate followed by practicing what was learned, followed by other methods of learning (visual, audio, reading). I also have a quick overview of a book “Learn Better” in which the key premise is that learning is a skill you can teach yourself to be better at.

Not long ago I was also asked if I have a learning system. I don’t. In fact, I clearly remember how inefficient I was at learning in university by trying to memorize some mathematical proofs instead of properly understanding them and recreating when needed.

So what a good “learning system” could look like?

Purpose and Value

I think a key to good learning is genuine interest in the topic you are trying to learn. Interest could be internal curiosity or simply seeing value in learning something specific. To give few specific examples:

  • I rock climb as a hobby. As such, taking outdoor courses, reading books on climbing just comes naturally for me and I don’t have to force myself to.
  • After joining Google I had to refresh my rusty C++ knowledge, so I had somewhat practical motivation to learn/refresh knowledge, but it went well.
  • When I moved to Austria I had to learn some German, but it really was forced on me and I didn’t make much progress, but did minimum for required paperwork.

What to Learn

Now, if you are intentional about learning, say for your career, probably the first question you have to ask yourself is “What should I learn?”. These days the amount of information and resources available is just incomprehensible to our brains. As such, being selective and strategic is important. Think what would make most sense to learn in your specific situation so that there is purpose and value for you.

Deliberate Practice

The highest retention of knowledge is when you teach someone or immediately practice what you have learned. I always like to think about learning as neural pathways in your brain, when you consume new information you stimulate only one direction of storing the information, but when you practice something or try to teach someone you stimulate and reinforce the retrieval direction from the storage. 

If I had to create a learning system, I would prioritize practicing as much as possible. The fastest way to learn might be to learn “on the job”, but if this is not possible, the next best thing might be to set SMART goals (you know the drill).

Consistency

One issue that comes up with learning something is sticking to the plan. Consistency is hard, it really is. For myself, I found that accountability, periodization, and re-inspiration are the best ways to stay on course. This weekly blog post writing is part of accountability I have. I try to re-remind myself why I’m learning something and also trying to get inspired by other folks.

Summary

So what does my learning system look like? 

  • Purpose: Genuine interest or practical need.
  • Focus: Be selective and strategic in what to learn.
  • Practice: Teach or apply knowledge to retain it.
  • Consistency: Use accountability and inspiration to stay on track.

What would your learning system look like?


No comments


What Kind of Plant Are You? Reflecting on Career Growth and Transplanting Yourself

November 11, 2024 Career No comments

Picture of Bamboo I took in a botanical garden in Austria in 2012

Recently I have been asked what career growth means to be? Without hesitation I shared that it’s two things: first, expanding the skill set, and second, advancement in position (at least in the corporate world). In this post, I want to expand my answer and also share a story or two.

In my opinion, skill development is the foundation for other types of growth. Skills make you more capable, adaptable and valuable in your role and industry. Almost all of the soft skills are transferable to new environments. As for technical skills, the majority are also transferable unless they are very specific to the company you work for (*). Something that might not transfer very well could be team- or org-specific knowledge.

Your skills, knowledge, and hard work is something that allows you to increase the scope of responsibility, gain professional recognition, trust, and as a natural consequence you advance in position, make financial progress and hopefully achieve personal fulfillment.

After answering the question, the person I was talking to shared a Chinese Bamboo Tree story (**), where we can compare someone’s growth to how bamboo grows. There is no visible growth for the first 4-5 years, which is because bamboo is expanding its root system and then in one season bamboo grows very rapidly. This is a very strong parable and I have successfully used it at work when a colleague of mine was seeking career advice.

If you stay at the same role, level, or team for quite some time it doesn’t necessarily mean you are not growing, you could be expanding your root system before you get promoted to that next level. As long as you feel you are learning new things, becoming stronger in your skills, expanding your work network, delivering some things you are definitely growing.

To extend on this analogy of plant growth, I was thinking about uprooting: you work for 2-4 years in a company, you made sizable contributions, got your promo, and slowly started to become more and more valuable and then you transplant yourself to another company. What happens to your roots? Do they survive?

I have seen people who were the first “plant” to a field and were able to grow to be the biggest of the plants, I have also seen people who had good roots but stayed in shadows for too long and stagnated, and others who transplanted themselves so often they could not grow enough on each iteration.

I was asking myself, what kind of plant am I? Google is my 5th workplace and I cannot stop wondering what I would have become if I stayed in any of the companies or countries I left behind. Looking back it seems I made the right decisions as I was able to grow to a bigger and well rewarded plant with a very diverse root system, but I have never become a really big one. Maybe I’m yet to see my real growth, who knows.

What kind of plant are you? What are your thoughts?

(*) Some of my fellow Googlers sometimes joke that we become unhirable outside because of the uniqueness of tools we use and the scale of problems we are solving.

(**) Technically bamboo isn’t a tree and belongs to the grass family. Some species of Bamboo might indeed take 5 years to grow underground before emerging above ground but this isn’t universal or common to all species. Additionally I searched for the origins of this story and it doesn’t appear like it exists in Chinese folklore. It appears this parable was popularized by western culture in modern motivational literature. 


No comments


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


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