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.

Screenshot of my account on Instagram App

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


Consistency is Hard: connect periods of inspiration to achieve durable consistency

August 24, 2024 Opinion, Success No comments

This is original content by Andriy Buday.

Rock climbing a high mountain consists of connecting multiple single pitch climbs, thus called “multi-pitching”. This is me on Stawamus Chief mountain in Squamish, BC, Canada.

Inspiration doesn’t last

One of my observations both in myself and in others is that being consistent is hard, especially in starting something new or in high effort activities. Think about when you get inspired to go to the gym every other day only to discover it is hard to find time, or think about when people talk about yet another self-help book that promises success if you just follow some simple morning ritual and “x rules of success” only to realize following those rules is unrealistic, or think about someone who fell in love and puts effort into looking and behaving exemplary only to revert to the baseline after some time.

Arguably, it is in human nature to have waves of inspiration, attempting something, and abandoning it if it doesn’t pay off instantly or after it has paid off. Lack of time, competing priorities, procrastination, laziness, waiting for a better time, just not feeling like it.

In this post I would like to document for myself and to share some of the instances of things that worked for me and didn’t work for me. I will try to analyze my own behavior to see if any of this can be generalized and if there is a way to figure out a way to make things work.

Consistency fading away

Let’s start with some scenarios where I had success but then consistency faded away in a very long run:

  • Consistent blog post writing
    • I have 328 blog posts over here. The majority of posts are old ones from 2010-2013 with a monthly average of 5-10 posts.
    • Inspiration: blogging was popular around 2010 (no gen AI, no insta, not much of twitter) and it paid off in terms of people getting to know me, building connections. I would have not done well in my career without this blog.
    • Reason for less blogging? I no longer feel that the benefits justify effort, anyone can use Gen AI to create a blog post a lot better than this one diminishing my enthusiasm, no one really reads posts these days, internet is just over-saturated. And frankly “I got tired” as was put by one of my early role model, Scott Hanselman, after 20 years of blogging.
    • Conclusion: blogging helped me in the past; it can be useful even now to organize my thoughts in an environment outside of work, but does it pay off?
  • Reading books
    • I don’t know the number of books I read, but I had multiple annual goals of reading, say 24 books a year, 6 tech books, or 13 investment books, etc. and I succeeded in many of those annual goals or had partial success (hard to do a book every 2 weeks).
    • Inspiration: eagerness to apply knowledge to advance in life, bright eyes thinking that books have all the answers, falsely thinking that book authors are another breed.
    • So I don’t read books now? Well, I do, but a lot less. Over time to me many books became repetitive and boring, especially, if they are on the same topic (say, productivity) plus it becomes annoying to spend time listening to non-original content and authors citing all the same research over and over. Another issue I have is that I don’t have a proper mechanism for remembering things, so often it is wasted time. You read a book and a week later you have a hard time recalling what was there.
    • Conclusion: no doubt reading books is beneficial, everyone should do it, but is it so hard to continue to find inspiration, time, and satisfaction in reading them.

Cyclic consistency

Now let’s look at some of the cyclic scenarios when I returned to the old consistency for some periods of time:

  • Interview prep
    • Arguably one would say that everybody prepares for interviews when they change jobs, but I went through a few instances when I was preparing for half a year or so without any interviews lined up or even thoughts of changing jobs. Yeah, just doing some 5-10 leetcode every week for fun.
    • Motivation: sense of importance of advance preparation and always being ready, but also I just like coding a tiny bit of something and feeling completeness.
    • Conclusion: cyclic approach worked great for me in the past, but after multiple months it becomes less fun I start to question my sanity.
  • Waking up in the morning
    • I’m likely an evening person (if there is such a thing). I had many periods of being an early morning person. You know “new you” waking at a crazy morning, “deep work”, and all of that, but it doesn’t always work like that, very often I feel like a zombie and after multiple “zombie” periods I gave up on the morning thing. Ironically, I started this blog post 6:30AM and am almost done by 9AM.
    • Inspiration: there is like a barrage of books, articles, gurus, whatever telling that if you claim morning to yourself you will have done more till noon than most people in a week. Lol, I wish that was true.
    • This one is painful. I had so many failures after attempting this that. Something that also bothers me is that I was extremely productive at some of my previous jobs when I would come to the office like 11:30AM after barely waking at 10:30AM but then would work till very late.

Consistency on the raise

And now I want to examine two cases where I consistently improve consistency if that makes sense.

  • Physical exercises
    • One of the things I did not pay attention to in childhood and early adulthood was health and physical exercising. I was healthy for the most part, I didn’t care how I looked. In 2016 I started having periods of running, then I discovered rock climbing, and in 2021 I went nuts and worked out 365 days, including 148 rock climbing gym visits (my climbing stuff), 78 runs, 87 hours of weight training, and many other activities.
    • Inspiration: this came naturally, originally motivation was establishing challenges with friends, later I found it could be fun to beat personal records and socialize in a bouldering gym, a also noticed how it helped dealing with mental stress and my back pains are gone.
    • Conclusion: consistent payoff and little downside made this ever more consistent activity. I might not hit 366 days this year, but will be very close to it.
  • Financial goals
    • As a disclaimer, I work for FAANG company but I work in Canada and started fairly late, so I’m not one of those multi-million net worth guys advising on life. Instead, while making regular (still high) software engineer money in Europe, I’ve been very consistent and deliberate in management of money. I have a custom spreadsheet I update every month since 2012. I read multiple books, tried a bit of more active trading and switched to super-simple strategies. All-in-all just grinding a consistent approach to money. Not that I didn’t make mistakes, purely from financial perspective I should have moved to the US, I bought a townhouse in Vancouver at the worst time possible and some other mistakes.
    • Inspiration: I guess sense of security and thoughts about the future are a great driving factor, but a lot of actual inspiration came from reading popular financial books, like those about Warren Buffett.

Conclusion

It is great to get inspired and I recommend deliberately looking for sources of inspiration: read books, look for mentors, create plans for yourself. With that having said, inspiration lacks durability and this is where work to build and maintain habits starts, it is hard and often results in failure. In my experience, starting something and then failing is OK as long as you start the cycle again and again, pushing the time of a failure further and further away in any given cycle. It is critical to ensure that your cycles are the right ones (another topic), but eventually your cycles will connect into one uninterrupted wavy line that takes you to your goals. Don’t give up!


No comments


Quick thoughts on Conflict Resolution Styles

February 12, 2024 Leadership, Opinion No comments

Hopefully a short post. As always opinions are mine.

I always figured dealing with conflict was something you just…did. You know, no need for fancy theories or structured approaches. Recently I was asked what my conflict resolution style is and how it matches to style of other people. So I did a bit of research, I mean, in a lazy way:


Andriy: > Give brief list of conflict resolution styles as bullet points:
Gemini: > Absolutely! Here’s a brief list of the most common conflict resolution styles:

  • Accommodating: Prioritizing the needs of others over your own and seeking to maintain harmony.
  • Avoiding: Sidestepping or postponing dealing with the conflict.
  • Compromising: Finding a middle ground; each party gives up something to find a solution.
  • Competing: Focused on winning and advancing your own needs above all else.
  • Collaborating: Working together to find a solution that fully satisfies everyone’s needs as much as possible.

Andriy: > What’s the origin of these conflict resolution styles?
Gemini: > The primary origin of the framework for these conflict resolution styles comes from the work of Kenneth Thomas and Ralph Kilmann in the 1970s.


Ok. That kind of makes sense and I have a hunch I have read about those at some point in my life. Now I have an exercise for you, which I’m doing myself along the way as well. I promise it will get more interesting:

  • Determine your own conflict resolution style by either taking a quiz online or by just thinking through those. I’m kind of combination of Collaborating, Compromizing, and a bit of Competing with complete intolerance to Avoiding style.
  • Now try to determine the styles of people you have to deal with, say collegues at work or people in your personal life. For myself, I created kind of a map of few of the stakeholders at work.
  • Now try to think of pros and cons of each of the styles and how they might impact you, other person, or what would be the best situation to use a style. Yeah, internet has lots of these, and I generated some stuff below, but it is more interesting to think about this while having context of yourself or others you know. Think of maybe 2-3 people, not to overwhelm yourself.
  • Now the fun part: mix and match yourself to these people and recall how your interactions where with them. For myself I found that:
    • We spend to much time in “analysis-paralysis” when another person is collaborating as much as I am.
    • There is a lot more compromizing on my side when dealing with a competing or avoiding person, which is probably detremental for me and leaves a bit of resentment.
    • Things get solved very quickly with an accomodating person, but then do I lose some of my credit with them just because they haven’t spoken?
    • … and many more…

Andriy: > Add one pro, one con, and one recommendation under each conflict resolution style bullet point.
Gemini: > Absolutely! Here’s the list expanded with a pro, con, and recommendation for each style:

  • Accommodating:
    • Pro: Maintains relationships and reduces tension.
    • Con: Can lead to neglecting your own needs.
    • Recommendation: Use strategically in low-stakes situations or when preserving harmony is crucial.
  • Avoiding:
    • Pro: Allows time to cool down and gather your thoughts.
    • Con: Doesn’t actually resolve the conflict, which can build resentment.
    • Recommendation: Employ only as a temporary measure, ensuring you return to address the issue later.
  • Compromising:
    • Pro: Can lead to finding a quick and somewhat fair solution.
    • Con: May limit creativity and not fully address everyone’s concerns.
    • Recommendation: Best when finding a temporary fix or when issues are of moderate importance.
  • Competing:
    • Pro: Can be useful when immediate, decisive action is needed.
    • Con: Damages relationships and may not lead to the best long-term solution.
    • Recommendation: Reserve for emergencies or when power dynamics are heavily imbalanced.
  • Collaborating:
    • Pro: Leads to solutions that genuinely satisfy everyone involved.
    • Con: Can be time-consuming and requires everyone to be fully invested.
    • Recommendation: Aim for this style whenever possible, especially for high-stakes conflicts or building deep trust.

This self-invented exercise helped me realize I need to be more mindful of the situation when handling conflict. I should explore styles that feel less natural, like strategically using avoidance when emotions are high – as long as I remember to revisit the issue later or that occasionally I need to compromize less in favor of achieveing better quality.

What are your thoughts?


No comments


On Mentorship

October 4, 2023 Leadership, Opinion, Personal 2 comments

Ever watched a martial arts movie? There is always a Sensei behind the main character – usually a much more experienced, older, and wiser person willing to share their knowledge. Career, life, or software engineering isn’t exactly the same (maybe metaphorically?), but in the very same way, it is always a great idea to be inspired by and learn things from someone who has already been through the journey you are embarking on.

I don’t think I can give justice to the topic of mentorship holistically (go search the internet for that or ask Bard to generate bullet points for you), though I can share my own experiences. In part this is what mentorship is all about, see if there is anything for you below:

In my early career back in Ukraine I was lucky to get direct exposure to our clients from the USA as this helped with my English but I was also lucky to work with talented and highly energetic technical leader and a Microsoft MVP (most-valuable-professional). He was a lot of inspiration for me and probably was the reason for starting this blog and effectively jump-starting my career (tech blogging was very popular back in ~2010). Moving through my career I met many engineers who were highly skilled, had diverse technical backgrounds (think software for Ferrary F1, or for British military, or high frequency trading, or nuclear energy, etc). So I tried to challenge myself to learn from them. Very specifically, one of the annual goals I had in 2016 was “Learn 12 simple skills from other people. To achieve this goal I will first identify 12 people from the community and those surrounding me and chose some characteristic I admire.” I might not have been exceptionally successful in achieving that particular goal but at least I learned to appreciate that others know cool things I don’t. Once I moved to work for big tech (Amazon & now Google) I normally tried to maintain “official” mentorship relationship(s) via internal mentorship programs/platforms.

My experience with “official” mentors so far has been mixed. As always, it all depends on the person and how two of us connect, but in all of the cases mentors have always provided something of a value to me. It was never-ever time wasted. At the very least, a mentor will help you get an outsider perspective on you situation and answer your questions from different perspective other than your manager might. There is no guarantee that you will agree to what they say or that their recommendations will be ideally applicable to you but it is your job to work through those and figure out the best you can get out additional point of view.

I worked with few of my mentors on my promotions. It is always great to get a mentor one or two levels higher as they have a lot more understanding of what it takes to get promoted to the next level and they might actually be part of promo review process for that level. In fact, I feel like I got a lot of information from one of my mentors I otherwise wouldn’t be able to get from my manager.

Other than promotions, the other area I worked on with my mentors was understanding of my next career moves. For instance, one good advise I got was to always get most out of any situation before making any radical decisions. At the same time, I also got “never moving fish is a dead fish” and other types of advise, all of which have had their impact on me.

Third area of engagmeent with my mentors was in building vision/strategy and presenting it to leadership. A very specific advise (and, maybe, a bit weird) was to actually visualize that I’m that leader I’m going to present the strategy to and try to understand what would that leader pay attention to when listening to the presentation. I was actually asked to role play during mentorship discussion, which felt really weird, but I wouldn’t have tried this if I didn’t have this “weird” mentor.

I know that I’ve been a bit of an inspiration for some engineers in the past and this realization was a great source of energy for myself as well as a motivation to self-improve further. Regretfully I’ve lost a lot of drive to be an example or an inspiration to others. I’ve also find it more difficult to be inspired by someone. Don’t take me wrong, not that there are not enough great people around (if anything, my collegues are one of the best and truly remarkable people), it is probably just me getting older and grumpy. In a way I miss those times but on a higher note writing this blog post helped me recall good times I had and motivate myself to be a more active individual in this regard. I currently have a mentee and keep in touch with few former collegues which whom I exchange career advise.

Looking back at my past mentorship relationships I can confidently say that they helped me. Go ahead and get yourself a mentor and if you have the opportunity, don’t hesitate and take a moment to teach someone something you know, chances are you might benefit in the process as well.


2 comments