August 31, 2023 Personal No comments
August 31, 2023 Personal No comments

Sport, but especially rock climbing, turned out to be my way to cope with things that are or were happening: war in my home country, COVID, work stress, personal experiences. Climbing showed me how much I have missed out growing up and but also that there is still hope and room to have a healthy life all despite approaching midlife milestone (and its crisis I guess).
Last few years I’ve been doing more sports than ever before in my life and my body is probably in the best physical shape than ever before and is getting better. In high school, university and early in my career I saw nothing other than my computer or studies. I didn’t take any care of myself nor did I consider it something I had to do. I didn’t give this enough consideration. I started to build my self-esteem via achievements at work and neglected many of other aspects of life, which I regret now. Since then some things have changed. In 2016 I started to run, not much but over time it became quite regular. In 2021 I haven’t missed a single day to a sports activity. As I write this, my usual week includes 1-3 days of rock climbing, 1-2 kickboxing days, 1-2 strength trainings, 1-2 runs and occassional one-off activity (hiking, biking, skiiing, etc…) and I would do more if I could get more days in a week.
Occassionally I get asked why I like climbing and I don’t normally have a good anwer to shoot back right away. It kind of does seem somewhat silly for a fully grown adult to go and try to get up the wall. It may seem absolutely purposeless to climb a steep rock only to get back down later on. But if you think what it takes you could see that one has to go through a process of challanging themselves. They have to fight fear of falling, they have to apply strength up to their limit, and they have to be aware of their body (much like in meditation). So, in a way, climbing can be seen as a spiritual experience. I think over time climbing does more to your mind than to you body.
Climbing is quite social activity. You would normally see a bunch of people cheering someone from their group trying to send a bouldering problem. If you are new, at the beginning you might feel intimidated by all the strong people climbing crazy stuff but you quickly realize that the environment is very inclusive. I don’t know the exact reason, probably, because we, climbers, realize that everyone came here to push themselves over own comfort zone and we want to celebrate as if it was part of our own achievement. Or, maybe, it is our ancestory genes from back when we climbed trees.
I personally maintained a strong friendship over climbing, have met multiple new people, and used climbing as means to invite non-climber friends to hang-out with, and, maybe, learned something new about life from these people. Today I’m going to drive a couple hours to climb with 5 strangers I have never met before.
I’m looking forward to what climbing holds for me. I envision sending harder problems, meeting more of new people, being in places hardly reachable by many, but most of all building self-esteem, chasing that sense of achievement, and feeling of being alive.
Everyone finds their own way, what’s your way?
July 30, 2023 Book Reviews No comments

Disclaimer: I works for Google. Opinions expressed in this post are my own and do not represent opinions of my employer.
NOTE: Most of this was written in Sep 2020 (month after joining Google). I’m not too sure why I didn’t publish it back then.
I picked the book called “Software Engineering at Google” by a recommendation by one of my colleagues. Because the book is written for outsiders for me, as a Noogler, it bridges the gap between my prior external experience and knowledge and internals of Google that I start experiencing.
Some criticism? Or course. Personally I think the book is way too long for the content it contains. Style changes with each chapter. Some are written like they were someone’s life story, some are written like publications, yet some are written like promotions of a software product. I’m not telling someone did a bad job, it is just a natural outcome of multiple people writing a book.
Do I recommend the book? Yes! Though, you would gain most from reading it provided you: 1) are a software engineer AND 2) (started working at Google OR are interested in Google OR are working for another big tech company). I would say to hold reading the book till later if you have little to none industry experience and if are not working for a big software company. I think it would be hard to relate to many problems described in the book without prior experience. For example, the book would talk about source control systems and compares between distributed and centralized ones and provides an explanation why a monorepo works well at Google.
The book is not a software engineering manual, although it covers many software engineering topics. Things are mostly covered from Google’s point of view. This means that some problems might not be applicable to you and even for those problems that are applicable, solutions might not be feasible or reasonable. Most software companies hardly ever need to solve for scale of software engineers working for them, but at Google there are 10th of thousandths of SWEs, so this becomes important.
The book’s thesis is that Software Engineering extends over programming to include maintenance of software solutions.
The below is not so much book review, but rather me taking notes. Some of the below are quotes. Some of them are small comments and thoughts. Skim through it to get an idea of what’s in the book.
Thesis
Culture
Knowledge Sharing
Engineering for Equity
How to Lead a Team
A really great chapter.
Leading at Scale
Measuring Engineering Productivity
Style Guides and Rules
Code Review
Documentation
Testing Overview
Unit Testing
Test Doubles
Larger Testing
Deprecation
Version Control and Branch management
Static Analysis
Dependency Management
Large Scale Changes
Continuous Integration
Continious Delivery
Compute as a Service
January 1, 2022 YearPlanReport 12 comments
2021 was the year we had high hopes for. It was also the year when so many of these hopes have been crushed. Other than COVID, just here in BC, Canada where I live, we had the record high temperatures burning entire towns to ashes and floods of the century cutting us from the rest of Canada. I believe the year like that raised awareness of so many critical issues of the contemporary world, like climate change, politicization, mental health, etc, but most of all it forced us to reevaluate life priorities and think twice about what is important in our lives.
In the year 2021 I spent more time with my family, focused on health and tried to live a good life despite things getting hard mentally at times.

I worked out 365 days last year, including 148 rock climbing gym visits (my climbing stuff), 78 runs, 87 hours of weight training, and many other activies, averaging 55 hours a month; set some new personal records like 20 pullups and sub-50min 10k, briefly reached 56 VO2max and 68kg of weight but retreated on the last two; read 20+ books, many of which are technical but also included all 7 Harry Potter books I read with my daughter. Learned some C++ and subjectively did well at work. I straightened my teeth, tried real rock climbing and pole calisthenics. Invested 20% more money in 2021 than I did in 2020 and my early retierement aspirations at age 41 are now more realistic than ever. I failed to quit coffee but successfully reduced it consumption. I also failed to write enough on this blog and failed to inspire people as I might have done years ago.
Last year taught me that seemingly “impossible” things are possible as long as you are truly focused on them (by the example of having a physical activity every day), and at the same time many possible things are left undone because they lacked dedication, proper tracking and habit forming aspects to it or were just wishful thinking.
I’ve been writing new year resolutions since 2010 and my success rate has increased progressively.
Quantify. Wishful untracked resolutions don’t work. Instead of creating a resolution like “improve financial situation”, which is a good idea, try to understand why you want it, what you are willing to sacrifice to achieve it and then crunch the numbers and compile a list of quantifiable, prioritized and trackable results you want to see by the end of the year (ie. “max out pension plan”, “buy asset G”, “invest % into Y”, “get salary hike by doing X”).
Track your list. I am thankful to my friends who kept tabs on me (AnAustrian :) ) because this allowed me to be accountable. I propose a monthly routine when you go back to your plan, update the status and re-review the validity of the goals. I personally do this via google sheets.
Another modification I’ve made to my resolutions is that I set success criteria which usually is 50% of the list, and believe me it is enough to keep myself sweating for the entire year.
For the year 2022 I have a list of 70+ items. I know, I know, having too many items doesn’t sound like a smart idea, but there is merit to it. The list I created is categorized into health, family, career, life quality, etc and then each of the items was given a priority on a scale 0-4 (0 = highest; 4 = lowest). I ended up with just 10 items I think are truly important. Success criteria is to complete highest priority items but have a possibility to replace some of them with multiple lower priority items. (More exactly, I want to collect 10 points, where P0=1point, P1=1/2, P2=1/3, P3=1/4, P4=1/5)
This year my private goals are mixed with career and all other goals into a single spreadsheet, but in order to share the list I masked some of the items that I’m not comfortable sharing. The below list is not set in stone, but it will be my go-to list any time of the year, any time of the day.
1 | Prio | Area | Key Result |
|---|---|---|---|
2 | 0 | Career | 7B9CBA2A-A29F-48AA-A633-10C4C58CBDB3 |
3 | 0 | Discipline | Get up out of bed immediately after waking up no daydreaming in bed (move that to night) |
4 | 0 | Health | Maintain 8.5 sleep time |
5 | 0 | Health | Train every day for 30+ minutes (for once a week rest day stretching and rolling is ok) |
6 | 0 | Health | Eat balanced 3 times a day with 1-2 times protein shake in between |
7 | 0 | Socioeconomic | 10168043-A42B-464F-AB08-5A255EBE7B30 |
8 | 0 | Relationships | Train not to dwelve on the past 2D763C64-D1C4-4C38-9EF9-E6CF2D6846E7 |
9 | 0 | Family | Travel to Ukraine |
10 | 0 | Family | Increase family time by doing one fun activity or playing board games at least 2 times a month |
11 | 0 | Intellect | Distill best remembered ideas from all the books I have ever read and compile them into a memo |
12 | 1 | Climbing | Have more fun by fixing mental constraints: fear of judjement, not trying enough, grade fixing |
13 | 1 | Career | 3E54870A-D001-4C17-964F-4EA0BD8E4394 |
14 | 1 | Career | Read paper book “Designing Data-Intensive Applications” aloud while listening to its audio in order to improve accent |
15 | 1 | Career | 6EA04241-F23B-4AAF-B217-D734486B05F3 |
16 | 1 | Career | 3E8721D5-7220-4A2D-ADC2-0CEA82940C26 |
17 | 1 | Career | 14508A37-2C76-40B5-934D-DC13BAB9317B 2023 |
18 | 1 | Climbing | Can do all HEX-4, and approx half HEX-5 (consistency) |
19 | 1 | Family | Sign up son for martial arts classes |
20 | 1 | Family | Teach daughter basics of financial literacy |
21 | 1 | Family | Ensure daughter enjoys Taekwoondo or change her activity |
22 | 1 | Family | Add 1-2 short term activity for daughter (camps) |
23 | 1 | Family | Teach kids some programming in a fun way |
24 | 1 | Fun | Try out 5 new activities or experiences |
25 | 1 | Health | Engage in “positive thinking” sessions as part of the bed hygene procedure and tell spouse something nice |
26 | 1 | Health | Lower coffein intake to 1/2 shot Jan-Mar |
27 | 1 | Health | Maintain body fat of <12% |
28 | 1 | Health | 150+ min of active minutes a week (running avg. 2 times a week) |
29 | 1 | Intellect | Read 5 new books |
30 | 1 | Socioeconomic | 27CBCCC7-ECAC-48E8-84AC-70C80D45FFD2 |
31 | 1 | Socioeconomic | 71AE4608-B769-47D7-8B22-5D5A93118E4D |
32 | 1 | Relationships | 158573E6-8598-49E1-9949-F9D29DA5B5FA |
33 | 1 | Self-esteem | Be able to hold handstand for 5 sec |
34 | 1 | Travel | Travel to Namibia |
35 | 1 | Self-esteem | Whiten teeth |
36 | 2 | Discipline | Lower coffein intake to meetings with friends only Apr-Jun |
37 | 2 | Career | Solve 100 medium leet code problems by May |
38 | 2 | Career | Find 1-2 best system design youtube channels and compile 10 common system design approaches post |
39 | 2 | Climbing | Climb outdoors 5+ times |
40 | 2 | Discipline | Quit coffee Jul-Dec |
41 | 2 | Discipline | Maintain near 0 usage of Facebook |
42 | 2 | Discipline | Instagram only enough to suffice climbing goal and opened only when making a new post |
43 | 2 | Socioeconomic | Max out RRSP |
44 | 2 | Socioeconomic | Max out TFSA for myself and spouse |
45 | 2 | Relationships | Get to know at least 5 other climbers (name + casual chat) |
46 | 2 | Relationships | Cheer up 1+ person during each climbing session (“nice job”, “well done”, “sick drop knee”, etc) |
47 | 2 | Relationships | Train not wasting time in fantazies (deferred to night only) |
48 | 2 | Relationships | 0F2AD72D-13C1-4014-A96B-2DFA5C907ADF |
49 | 2 | Relationships | C5CEA567-DAB5-4466-8CF3-3BCC4E423120 |
50 | 2 | Self-esteem | Lower body fat to 8%-10% by Jun |
51 | 2 | Self-esteem | Increase chest chircumference to 100cm from 95cm |
52 | 2 | Self-esteem | Add body weight to suffice curcumference goals but not more than 72kg |
53 | 2 | Self-esteem | Be able to hold front lever for 5 sec |
54 | 2 | Travel | Travel to Austria |
55 | 3 | Career | Fill-in L5->L6 gap analysis by end of Jan |
56 | 3 | Climbing | Climb at least one 5.12+ top rope in a gym |
57 | 3 | Climbing | Read “Training for Climbing” (TFC) completely |
58 | 3 | Climbing | Incorporate TFC intermediate course into training |
59 | 3 | Climbing | Get lead-climb certificate |
60 | 3 | Discipline | Improve sleep preparation hygene by 0 screen time ~1 hour before bed and everyday foam rolling |
61 | 3 | Family | Go skiing together as a family once |
62 | 3 | Relationships | 686B09E4-9238-4E91-AF08-31E27C5B4A83 |
63 | 3 | Self-esteem | Increase shoulder circumference to 120cm from 112cm |
64 | 3 | Self-esteem | Maintain waist circumference of 78cm |
65 | 3 | Travel | Camping trip in Canada |
66 | 3 | Travel | Short US trip |
67 | 4 | Climbing | Create climbing specific instagram account and reach 1K followers |
68 | 4 | Fun | Fun does not mandatory involve planning like this, so do more fun for the sake of fun |
69 | 4 | Self-esteem | Achieve semi-visual abs |
70 | 4 | Self-esteem | Improve posture by going to massage therapy and doing antagonistic exercises |
71 | 4 | Career | Write 5 blog posts |
72 | 4 | Self-esteem | Try out a new haircut |
Now the above maniacally long list doesn’t tell the whole story. “The why” is often much more important than what or how. Each of the categories has its intent and it is a fairly simple long term directional objective:
| Area | Objective |
| Health | Maintain and improve health in order to keep the energy and live longer |
| Family | Work towards healthier family dynamics and setup kids for success later in life |
| Career | Prepare advancement in career or other meaningful career change for better compensation and self-realization |
| Socioeconomic | Improve socioeconomic situation to improve quality of life |
| Climbing | Climb harder to gain sense of sport achievement and improve life satisfaction |
| Discipline | Improve discipline in time management and funnel extra time into personal development |
| Intellect | Increase knowlege for greater leverage in life |
| Travel | Travel more in order to improve satisfaction with life |
| Relationships | Improve relationships with friends to minimize regrets later in life |
| Fun | Have more fun for the sake of fun |
| Self-esteem | Improve physical attractiveness and physique to feel better |
May the new 2022 year be the year of great achievements for you!
Share your goals and let’s keep each other accountable.
January 1, 2021 Success, YearPlanReport 13 comments
My life in 2020 continued to be boring. With notable career changes (SDE3 promotion at Amazon; move to Google) the year was mostly uneventful. It was not an easy ride emotionally though externally for the most part I lived the life of a fisherman from the “Business and the Fisherman” parable.
I’ve been making new year resolutions and publishing them online since 2010 and learning the hard way what you might have guessed: I failed miserably so many times I should have already given up on them :) but no, this is yet another one. Oh… and wait… this is the first time I succeeded in my new year’s resolution.
If you are skeptical of the new year resolutions I accept your point of view as resolutions don’t generally work (90% of people fail) and I admire you if you manage to succeed in your aspirations despite not having a plan. Someone said that you have to be inspired or desperate in life. If you are neither at the moment, creating a plan and following through might be the best option until your enlightenment.

TL;DR: promoted to SDE3 at Amazon; moved to Google; ran, skied, climbed much more than planned; still on a gradual trajectory of healthy and early retirement; didn’t read or learn as much as I wanted; traveled locally.
My last year’s resolution was to complete 12 of all 24 of the items on the list I had. Succeeded in 14 of them and if I add up percentages completion goes all the way to 94%. Here is the list:
TL;DR: more quality time with family; more sport; more health; more of professional focus and learning; some travel; less reading; more passive money.
So what’s on the cards for the year 2021? I already have a good life so it is reasonable to maintain the things I learned to do, slowly improve the things I would like to. The complete list is below:
Updated: 26-Dec-2021
Same as last year, I will consider succeeding if I complete at least half of the items on this list.
To make sure I succeed this year again I will be tracking my progress each month in a spreadsheet (already prepared it) and posting occasional comments below this post, much like I did last year. I’m also tracking a couple personal goals I’m not too comfortable posting publicly.
Dear reader, what’s your plan for the year 2021? Do you have one? Share your plan and keep on! If any of you wants to run occasional challenges with me, just ping me. I’ve ran them in the past with few folks and though we failed to stick the outcome was noticeable progress for participants.
Happy New Year!
October 18, 2020 Opinion, Personal, RandomThoughts 11 comments
First things first, this is not a “how-to” post explaining you the “one right way” of setting up your home office. I am a Software Engineer (you are likely to be one as well) and like yours, my home office setup is probably somewhere in between coding on sofa and science-fiction command center. In this post I’m just sharing what I’ve done to improve my home office situation and what I’m thinking might be worth to improve it even further. I will be glad to hear any feedback or advice you might have on this.
Reducing noises, keeping kids from fighting for your immediate and undivided attention, avoiding kitchen temptations, dog barking or whatever else is applicable to you, might be one of the most important factors for your home office, yet it might be the one you have the least control of. I do not pretend to have a batcave for work from home either. In fact, I started working on sofa when COVID first hit in March and then quickly realized this wasn’t a good idea. Step by step I improved my WFH situation and currently have something reminiscent of an office. I’m renting a relatively large apartment, though it obviously wasn’t designed with a workspace in mind, so I’m using a bedroom. Yeah, a bedroom! I have rearranged the furniture in a way logically separating the room into office and non-office halves. In this post, I am going to show pictures of my office half. (Not too eager to post photos of my bed, especially when it is not made up :)).
I’m in favor of simplicity and minimalism when it comes to my desk. Even when I was going to the office I would usually keep it empty from anything non-essential. So here is my arrangement:

On the left you see my work laptop with two cables. First cable goes to a docking station serving as a power source and connecting the laptop to 300 Mbps internet (seems to be enough ¯\_(ツ)_/¯) as well as to external camera which you can see on the top of the laptop (I will touch on this again later on). Docking station has enough ports to add more peripherals. Second cable connects my work laptop to KVM. If you see, there is a small button in front of the keyboard – that’s KVM switch allowing me to share 34″ monitor and keyboard between laptops on the left and right. Laptop on the right is my personal laptop. I intentionally don’t login with my personal account on my work laptop for multiple reasons (will touch on this later as well). There is also a desk lamp and desk power source located in the right corner mostly for charging devices (2 USB-C, mini-USB, Garmin). I might keep few different sets of headphones on the desk, but usually prefer to keep them in the back of my “office”.
Except of work laptop and few small things, all equipment is something I bought with my own money before I knew my new employer is so generous to give 1000$ to its employees to improve WFH situation [public info]. Below is the list of the equipment I’m using with links to Amazon for reference only – those are not referral links (I’m not trying to make money on your clicks, and this post is not written for that purpose).
Monitor: Dell UltraSharp U3415W 34-Inch Curved LED-Lit Monitor (Older Model) It is a nice wide curved 34″ monitor I can easily use as if I had two with tools like Spectacle on mac or built-in shortcuts on chomebook. The only regret I have is I should have probably went for newer version with more aggressive curve and USB-C support.
Monitor Stand: AmazonBasics Premium Single Monitor Stand This allows me to bring the monitor forward/backward, up/down or change the angle. This is so much better than having monitor placed stationary. It also allows to free up some space on the desk.
Keyboard: Filco Majestouch 2 Ninja Cherry MX Blue Switch 87 Key Mechanical Keyboard Black This is compact super-loud faceless mechanical keyboard. I love this keyboard and find it to be beautiful. It might be too loud to use if you are sharing space with others, so keep this in mind.

Mouse: Logitech® MX Anywhere 2S Wireless Mouse A nice precise mouse, though I often don’t like how it behaves on Chomebook. Not sure if this is an issue with the mouse itself or ChromeOS (and yes I tried to play with the settings).
Logitech MX Master 3. This is a full size and precise mouse. I am glad I replaced the old small one with this one.
Docking station: Dell WD15 Monitor Dock 4K with 130W Adapter, USB-C While docking station is definitely something to have I do NOT recommend this particular one as it is not fully compatible with newer Macs. My monitor flickers when I connect it via this docking station. Here is DELL’s support page on this. I’m using this station for power, internet connection, web-camera, and any further peripherals I will need to add to my work laptop.
KVM: Sabrent 2-Port USB Type-C KVM Switch with 60 Watt Power Delivery After much of extensive search I gave up looking for a docking station that has TWO usb-c power delivery outputs and also works as a KVM. This seems to be non-existent device. So instead, I bought myself a dedicated KVM. It is simple and it works. Power delivery is not always detected on my Pixelbook, so I skip PD option and use another cable to power my personal laptop on the right.
Power: BESTEK Power Strip with USB for charging devices, powering lamp, and occasional plug-in of things at top of my desk. I also use conventional power extender for low-power things under my desk and directly plug into the wall outlet more power demanding devices (monitor, docking station).
Desk Lamp: Swing Arm Lamp, LED Desk Lamp with Clamp, 9W Eye-Care Dimmable Light, Timer, Memory, 6 Color Modes, JolyJoy Modern Architect Table Lamp for Task Study Reading Working Home Dorm Office (Black) Super happy with this lamp – it can be bent in so many ways. I can recommend this one.
Vertical Laptop Stand: OMOTON Adjustable Something to hold my personal laptop vertically and save even more space. Anyway it is so much more pleasant to work on a large monitor (something I’m doing right now).
External Web Camera: Logitech C920S HD Pro Webcam with Privacy Shutter External webcam has its advantages of providing higher quality image with active focus. Unfortunately I probably need to add some swinging arm or a holder to it as right now I’m placing it exactly where laptop’s camera is and don’t think that my coworkers have even noticed a difference. I’m yet to test if mic is better on it in comparison to built-in one. Some people use dedicated external mics and their sound quality is noticeably better.
Backup power and internet connection: I also have two 20K+ mAh external power banks (one of which is enough to jump-start my car) and 20Gb of mobile internet plan. Based on my 4 hour testing this should take me through a full day of power outage. I know this is not ideal, but I’m also not running a data-center at home nor I have a detached house to buy myself generator or a similar solution. In fact, I do not remember unplanned power outage in my building since I live here and a planned one only lasted 4 hours.
Cables: Well… Everyone is ought to have some wire spaghetti under their desk. Right? I didn’t do anything special about the cables. Just tied some of them together so I don’t hit them with my feet.

Desk and chair: Those are cheap IKEA ones. I’m considering to change the legs of my desk to make it height-adjustable standing desk. As of chair, I don’t think mine is great for 8+ hours of sitting in it.
As of 2021 replaced the chair with Autonomous ErgoChairPro.

To complete the picture of my office here is what I have just behind myself:

It is another IKEA chair for mental breaks and a bookshelf which has few books but mostly serves for accessing things I would use time-to-time, like keyboard palm-rest, other headphones, cables and few toys (no, I didn’t reassemble and then assemble the Rubik’s Cube – I can actually solve it). I’m also using the most expensive alarm I ever had which supposedly should help me wake up more naturally during winter months but doesn’t.
Last but not least, pull-up bar (BODYROX Premium Pull up/Chin up Bar) which I occasionally use during breaks. I consider it to be part of my home office as I wouldn’t buy it if I didn’t have to work from home.

As mentioned above, I’m not logged in with my personal account on my work laptop – this means I cannot open personal gmail, facebook, instagram, twitter, favorite news site, whatever. When I actually need to do something personal I have to specifically log-in into my personal laptop, which means pressing KVM button. This small physical constraint and a clear separation not only helps to be fully compliant with whatever policies there are on the use of work laptop, but also helps to be totally focused on work. I find myself almost not switching to my personal laptop at all during working day (I take breaks, though). Additionally I blocked myself out of all of those distracting social media apps on my phone for working hours and limited their use to 15min/day/app with digital wellbing tools on my phone. I’m super happy about this (thank you, Google). In fact, this also helps me close item #23 on my new year’s resolution.
I would be enormously happy to receive any advice from you on what I might be missing in my home office setup and what you would recommend. I understand our situations might be different but we are all in this together and if you have something to share please do so!
October 4, 2020 Opinion, RandomThoughts No comments
This is not a “how to” on running a book club. In fact I know next to nothing about book clubs and to run my first meet I googled what it takes to run such a thing. All of my previous stereotypes of book clubs were of bunch of super-boring people sitting in a circle and silently sipping tea (not coffee). After reading few articles I realized that I still know nothing about book clubs as apparently they could be run in myriad of different ways.
If you follow my blog you would notice that book reviews are one of very common blog posts here (55 of them), probably as common as technical blog posts and posts on success for software engineers. So no wonder I’m interested in reading and discussing books. One other aspect I’ve always been keen on is knowledge sharing. I used to share my knowledge via tech talks based on books and discussions called “design sessions”. It is not that I didn’t want to discuss books directly, but issue was that my audience in majority of cases didn’t read the book and still was interested in a given topic.
Last week I found myself in a situation when probably half of my team has already read or is reading one particular book. With a hint from my colleague, I kicked-off a book club. First meeting turned out to be a really great, fast paced discussion with a lots of engagement. I wasn’t the most active participant and this is awesome. Took notes and spoke only few times.
We went through highlights people remembered from the first chapter and then tried to analyze those, thought of practical applications, shared our related past experiences, and just had a good discussion. I would even call this to be some kind of a team building event – all virtual (in case you are reading this in future and COVID-19 is a thing of the past).
Once in 2012 I tried to organize “Code & Beer” and miserably failed with two people showing up. Arguably I just didn’t make it very clear I bought the beer for everyone :) This time people joined with no snacks but with tons of interest. So, how to run a book club? Who knows… Maybe make sure you have a “critical mass” of people interested in same book.
September 20, 2020 Book Reviews No comments

Although the book “Clean Architecture” is written by famous voice in software engineering, Robert C. Martin, and indeed has a lot of great advice it certainly did not meet my expectations. In my opinion the book is very outdated, is very focused on old ways of building software, namely monolithic and 3-layer applications for commercial enterprises. Yes there are touches on embedded software as well as on SOA and micro-services, but they seem to have been added as an afterthought. At the very least I didn’t get the feeling author had any first-hand experience with resent trends.
There were few instances were I had to stop and think for myself that I completely disagree with the author. For instance, in “The Decoupling Fallacy” chapter the author argues that services are anyway coupled because they use same data passed around and modifying interface of data requires changes in many places. Well it depends on how you design your services and example given in book looked very artificial – not something that you would see in real world implementations. Luckily it is also the point that we can redesign services to reduce this kind of coupling.
For another instance, there was an advice on introducing dedicated testing API that can bypass security and other complications to streamline testing. This seemed very odd and potentially dangerous. It might help in some places, but I would imagine this is just making things worse in the long run. Anyway my opinion.
Don’t get me wrong the book is good as a food for thought and some chapters are really great, but I don’t think it will help you design clean architecture.
The book starts with programming paradigms, such as structured programming, object-oriented, and functional. Not sure if this fits the overall topic of the book, but the overview of these paradigms is nice and gradually takes the reader to further topics.
After these there are chapters on SOLID design principles, which I think are great. This is probably the best part of the book. I even think SOLID could have been super-short standalone book. I really appreciate the way author consolidated these principles and described in details. In many ways people can attribute these principles to him, but don’t make this mistake – they existed before and different people described them in different ways, though it is still author’s public speaking and consolidation that made them stick in heads of so many software engineers. In fact I’ve probably given tech talk on them twice in my career. In case you don’t remember SOLID stands for 5 principles: Single responsibility, Open–closed, Liskov substitution, Interface segregation, Dependency inversion.
Later author introduces the concept of components, which he defines as smallest deployable pieces of software. We can apply the same SOLID principles from code level to component level. This is where the author introduces many new definitions, which I do not think got stuck in software engineer heads. At least they didn’t get stuck in my head and I don’t remember others ever talking about them. These are things like: reuse/release equivalence principle, common closure principle, common reuse principle, etc.
After this we go one level higher where we look at boundaries between components and how we build good architecture. This is where I started taking more detailed notes. Below are some raw notes almost “as-is” when I was taking them.
Boundaries: Drawing Lines
Boundary Anatomy
Policy and Level
Business Rules
Screaming Architecture
The clean architecture
Presenters and humble objects
Partial Boundaries
Layers and boundaries
The Main Component
Services: Great and Small
The Test Boundary
Clean Embedded Architecture
The Database is a detail
The Web is a detail
Frameworks are details
Case-study: video Sales
It is an ok book but somehow I don’t think I can recommend it. It won’t be waste of time, of course, but you might feel like you didn’t get much out of it – the way I feel. The nuggets that do exist in the book, like chapters on SOLID is something you can read online or even watch numerous videos with Robert C. Martin online where he talks about them.
September 13, 2020 GoLang, Languages No comments
I’m a Software Engineer with some years of experience in C#, Java, JavaScript and tiny bit of other languages. For fun (I don’t yet need this at work) I spent one day going through GoLang tutorials, this video, and skimming through “The Go Programming Language” book. This blog post is a collection of things in Go that I found to be interesting and worth mentioning. In NO way this can be considered a tutorial or reliable source of information on the language. The best and most comprehensive place to learn about the language is here.
So there you go, golang in 20+ bullet-points:
complex type is a first class citizen type in golang much like int and string.b := a, if you want to reference same array you can do b := &a... like in some other languages and/or frameworkssomeMap := map[int]string{1: "one", 2: "two"} and then you get retrieve from it with indication if key exists getOne, ok := someMap[1]break out of a parent loop from within nested loop by applying labels to loops.struct and composition via process called embeddingpanic. Panic can be controlled by recover() function. Probably easiest way to think about this are throw and catch with a caveat that error thrown is not exactly same idiomatically as in other languages.unsafe. go getMeADrink()I hope this was useful to some of you. For me personally this day gave me some idea what the language is about and the syntax no longer looks alien. Next thing to do would probably be to spend one more day playing with goroutines/channels specifically and actually reading the book for more fun.
Till next time!
August 24, 2020 Career, JobChange, Personal, Success 4 comments
Disclaimer: opinions in this post are my own and do not represent opinions of my current employer or any of my past employers or any of my or their clients.
Time for some big news: as of 24th of August I’m a Googler or rather a Noogler, as newly joined employees are being called.


It has been almost a month since I left Amazon. Here is a “mandatory” badge photo. Amazon was a place of rapid learning on multiple fronts, not just from engineering perspective but from many other. I learned Java or at least enough so that I can write code in it (not that is is much different from C#, which I knew before) and I learned how scalable and resilient solutions are built. But other than that and most of what I learned wasn’t programming related but more of understanding on how truly data-driven, customer-oriented (or let’s say “customer obsessed”) company is run. Seeing this machinery crunching from inside was absolutely astonishing. Probably what’s the most prominent about working for Amazon is its strong prevalent culture embodied in 14 Leadership Principles. Each and every aspect of work is guided by those principles. It starts with your interview to be an Amazonian. It takes you through working days, your promotion, decision making and anything you could think of. People live by these principles.
During 2.5 years I worked on retail project to launch and scale a fulfillment channel in one of the rapidly growing markets. The time allowed me to meet and work with amazing and smart people. The team I was on was awesome and my manager was a boss you can only dream about. I liked the vibe of Vancouver’s office, maybe because it was much more multi-cultural and diverse compared to Seattle (though I might be mistaken). I was promoted at Amazon to SDE3. The project I was on was and probably is gaining more and more of momentum.
Some of you would be curious why I left Amazon if things were going so well. (Just look at AMZN stock price for one data-point). As every job there are negative aspects. Amazon is somewhat notorious for those, but I didn’t leave Amazon to leave Amazon. I am not excluding joining Amazon again some years from now. Current decision is more to learn about another big company, its culture and processes, especially when we are talking about Google.
I don’t know what exactly to expect from this change. Many software engineers see Google as the most desirable employer to join. The company is famous for its high engineering standards, googley culture and so many other things. I’m excited to the core to embrace what is coming at me.
Among 24 checkboxes in my 2020 plan working for Google will tick few of them. This includes double-tick on meaningful work-related change, learning a new programming language (will be coding in Go and Python), and unexpectedly might change my coffee and sleeping habits (if I succeed in regularly getting up before 6AM and not having coffee :) ).
April 19, 2020 Blog No comments
Recently a person on LinkedIn asked me this: “What made you get into blogging?“
This is not the first time I get this question. In most situations this would come from a coworker who saw my blog for the first time or it would come from someone on internet seeking advice.
I wrote my first blog post in October 2009. In the post I am talking about career aspirations, being pragmatic (though I probably meant ambitions) and about the intent of the blog to post technical findings in order to help people online. English is unbearable, but the post is ending with “I hope this will help you and me!” And it helped.
So far I have 317 posts and some 717 comments. I’ve got many “Thank you” comments for the things people were able to find on the blog helping them solve their problems. Some people know me because of this blog. Some have greater trust in me because of this blog, some are inspired by this little work of mine. Most of all, it always helped me get more contacts, including those by recruiters. I won’t have numbers, because people don’t always say “hey, I contacted you because I saw your blog and thought you can be a good fit for our team”, though this happens at times as well. Long story short, the blog was and is extremely beneficial to me.
So what made me write here in the first place? I think there were few factors. Blogging was very popular back in 2009 and many others were also writing. If you remember those times, everyone had Google Reader and was starting their day with going through recent posts. Though, the main factor that made me write was probably inspiration by Derik Whittaker with whom I had a chance to work. He was Microsoft MVP at that time (probably now as well) and was having huge influence over development teams he was dealing with.
I think inspiration and mentorship are things that help people who are just starting in their careers. Therefore I would encourage anyone who is reading this to start writing. It doesn’t have to be a public blog (though I would recommend). It can be internal company blog, it can be answers on SO, it can be great documentation at work, it can be a book you always wanted to start writing, it can be scientific publication. Really anything that you feel you are close to and where you feel comfortable starting. There are numerous benefits of writing, like building your brand, improving communication skills, organizing thoughts, learning through teaching. Let me bring one quote from a book I read not too long ago:
The act of writing is a good example of metacognition because when we think about composing sentences and paragraphs, we’re often asking ourselves crucial metacognitive questions: Who will be reading this? Will they understand me? What things do I need to explain? This is why writing is often such an effective way to organize one’s thoughts. It forces us to evaluate our arguments and think about ideas.
Learn better by Ulrich Boser
So that was the answer to the question on why I started blogging and what are some of the benefits of doing so. Here is a more important follow-up question to ask: “What made me stick to blogging?” And answer is – you! All the people who read this blog or who have read it in the past, those who comment, those who ask questions, those with whom I work or worked in the past. If not for these little inspirations from each one of you this blog would not exist for all these 11 years. Thank you!