Success

2020 Recap / 2021 Plan

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.

2020 Recap

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:

  1. [Edit 29Jan2020] Spend more quality time with kids in 2020 than in 2019 as measured by wife’s opinion
    100%
    1. Although I usually don’t put private and family goals in my plan I had to include this one for my fellow Austrian friend ;). This one is subjective, but accordingly to my wife I can count this one as completed. Coronavirus made me stay at home so a side effect of WFH I’m spending much more time with my kids. Luckily they usually stay away from participating in my work meetings.
  2. Travel a distant country (candidate New Zealand, other places count) Changed thsi to be a long 2+ weeks roadtrip.
    100%
    1. We had an amazing 2 week camping road-trip to the north of British Columbia crossing into Yukon and coming back via Alberta. We managed to see the Northern Lights, wild bizons, 17 bears in one day, glacies, waterfalls and other things of beauty. We even went hunting for dinosaur fossils. More details in my wife’s blog post over here.
  3. Write 24 blog posts, of which at least 12 are of a technical content
    50%
    1. I wrote 13 blog posts. Only 5 out of these posts are of technical content. Counting this item as half completed.
  4. Listen to/read 24 books
    75%
    1. Read 16 books:
      • Why We Sleep
      • Algorithms for Interviews
      • Competitive Programming Guide
      • Freakonomics
      • Atomic Habits (once again)
      • Switch- How to change things when change is hard
      • The Phoenix Project
      • Feeling Good-The New Mood Therapy
      • Limitless-Upgrade your brain
      • Software Engineering At Google
      • The Alchemist: A Fable About Following Your Dream
      • Measure What Matters: How Google, Bono, and the Gates Foundation Rock the World with OKRs
      • The Psychology of Money: Timeless Lessons on Wealth, Greed, and Happiness
      • Shoe Dog: A Memoir by the Creator of Nike
      • Super Human
      • Clean Architecture
    2. 5 books are still in progress and I’m likely to abandon reading some of them:
      • Finite and Infinite Games
      • Deep Learning with Python
      • Effective C++
      • The Go Programming Language
      • ***
  5. Run 52 times and take part in a race (candidate VanSunRun on 19April)
    211%
    1. I ran 110 times out of those planned 52. Does it mean 211% completion then?
    2. New PRs: Half 1:58:07, 10K 50:50, 1K 3:47
    3. Total run distance: 792K
  6. Ski 12 days (night skiing after work counts)
    142%
    1. Went skiing 17 times. Could tell that I improved my skills a bit.
  7. Improve swimming by going 10 times to swimming pool (consider a course)
    0%
    1. This one is a complete failure. I postponed signing up for classes and then COVID hit and then I didn’t bother. Not counting lake swimming here as that is not what I meant when creating this plan.
  8. Learn to walk on hands
    25%
    1. Although I failed to learn walking on hands and even handstands I made good progress towards it.
    2. Can do controlled headstands (see the picture above).
  9. Work out 104 hours
    66%
    1. I’ve done 69 hours or workouts. These workouts are mostly weight lifting and calisthenics including occasional stretching sessions. This does not include running or rock climbing.
  10. Gain another 7kg of pure muscles (70kg, BMI of 22, fat 11-15%)
    28%
    1. Max measured weight was 65.8, but more realistically I weight 65. This once again proved that it is difficult for me to gain weight.
    2. Although I am confident these +2KG are musles as I can effectively see musles I have never seen on my body :)
  11. Drive a racing car
    100%
    1. I drove race adapted 8 cylinder mustang on a racing track in Mission. link
  12. Go indoor climbing 10+ times, learn to do 5.10+ YDS and V4+ Hueco (USA)
    500%
    1. This is similar to running in a way that I overachieved this goal. Unfortunately I don’t even know how many times I went rock climbing but rough approximation brings me to ~50 times. In fact right now I’m a member to two different climbing gym networks with access to 6 locations.
    2. Completed 5.11 and one V5.
  13. Some adrenaline rush thingy (skydive, bungee, paraglide, etc)
    0%
    1. This is one of those things I didn’t get to. I didn’t really want to bungee jump again or skydive as I’ve done those in the past and couldn’t find anything that would suit. Probably another jump would have done :(
  14. Learn a programming language (tiny project counts ~3 blog posts)
    0%
    1. Probably need to count this as a failure. At my current job I’ve already written code in Python, Go, C++ – all are languages I’m not comfortable with, but I don’t think I can say I’ve “learned” any of them.
  15. (re)-introduce myself to Machine Learning (basics + TensorFlow)
    0%
    1. I am not doing anything related to ML and therefore it is hard to push myself to learn anything in this area. Failure.
  16. Sleep 8-9 hours, but learn to get up with damn alarm instantly (15 sec). This one might be the most challenging as this is a horrible habit of mine (hitting “snooze” for 2 hours)
    60%
    1. Definitely succeeded in getting enough sleep but still failing miserably in waking right after the alarm.
  17. Limit read-only social media activities to 2 hours a week (scrolling Facebook/Twitter/Instagram/LinkedIn, excl. posting and messaging people) as to produce instead of consuming
    80%
    1. Although I almost never open Facebook or Twitter, my instagram is still a lot of timewaste. In any case I probably should count this a success as I managed to controll how much time I spend here. For instance, those apps are blocked during my working hours and outside of working ours time is limited by digital wellbeing by Google.
  18. Meaningful work related change
    200%
    1. Got promoted at Amazon to SDE3
    2. Started working for Google
  19. Solve 100 leet code problems
    67%
    1. Solved 67% of problems. Here is a link to my profile.
  20. Visit a tech conference and/or some tech meetup(s) (2+ counts)
    50%
    1. Attended one internal virtual Google conference.
  21. Quit regular money wasters (going out for lunch, 5$ coffee, etc, max 1 a week or 52 in a year)
    100%
    1. Due to COVID I’m not going out for lunches or coffees. I do not smoke or drink alcohol. On average I probably had 1.0-1.5 coffee outside per week. I think my new regular money wasters are useless things bought at Amazon.
  22. Reduce coffee (max 1 per day); best if I could go cold turkey
    100%
    1. March started drinking coffee every day at home again (damn due to COVID-19). In August maybe had 1-2 coffees. 1 in September. Few in October. Some in November. To generalize I would say I definitely reduced my coffee consumption, though I didn’t manage to go cold turkey.
  23. Increase focus at work (track screen time and distractions)
    100%
    1. I’ve done few things to achieve this: 1) limited my social apps on phone; 2) separated physically work laptop and access from private laptop and access; 3) organized my home office. More here.
  24. Invest 20% more money in 2020 than in 2019
    100%
    1. Portion of my RSU started vested in Jan putting me ahead for that month; Feb just regular contributions; March invested lump sum of 10% of my base salary into what was a crazy bear market (call me crazy) maybe recession and it turned out to be great timing. Didn’t invest in April other then regular retirement contributions. As of September maxed out my RRSP and added some money to my investments. Plus I got my next portion of Amazon shares which I didn’t sell. Not selling my GOOG stock.

2021 Plan

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

  1. Read all 7 Harry Potter books to my 7y old daughter. That’s 199 chapters making it roughly 4 chapters (65p) per week.
    1. DONE
  2. Teach my daughter basics of programming. Snake game seems to be a good candidate for a year’s project goal.
    1. We had two sessions with my daugher where we created a simple “food” for the snake and are drawing grid.
  3. Teach my 4y old son basics of skiing. Let’s see how many times I can take him out skiing.
    1. Mar: Took him 3 times in total. He alreay learned to ski “pizza”-style. I guess I’m better teacher this time. I’m using ski-wedges (rubber string to keep front of the skies together) and I’m not making the mistake of holding him so that he learns to keep the balance right from the beginning. I should probably classify this as failure, even there was some progress?
  4. Travel outside of Canada and have a boring beach vacation. Fingers crossed.
    1. Not happened.
  5. Have two camping road-trips (long weekends count, but a week+ would be awesome).
    1. DONE. One weekend long and another almost a week long, though with hotels in between.
  6. Set new personal running records (considerations 1K, 1Mile, 5K, 10K and Half-Marathon). Consider running a Marathon (that’s not a healthy distance imo, but people keep asking me if I ran it and I cannot say yes… ogh…).
    1. 79 runs. Set new 5K – 22:43, 10K – 49:49 PR. I will consider this done.
  7. Improve VO2Max to 60 ml/(kg·min) from the current 54. This means I will have to specifically and properly train. Just running 100 times won’t cut it. In combination with my other goals of gaining muscle weight this goal becomes even more difficult.
    1. Max achieved 56. (It seem to be unrealistic to achieve 60 or it would take a lot more dedication for me).
  8. Try out at least one other sport activity. Considerations are: mountain biking, martial arts, archery, whatever, anything counts as long as I try it out.
    1. DONE. Tried real rock climbing, kickboxing, and pole-thingy, bought a bike and biked super-easy mountain trails.
  9. Learn free handstands and snap some cool pics for the next year’s post.
    1. Failed. I made some progress – few low control seconds.
  10. Strength train for 100 hours inclining towards climbing specifics (finger strength; pull-ups; core). Set new personal pullup (19+) and pushup (102+) records.
    1. Way over 100 hours. I calculated > 83hours of separate strength training time, plus there would be maybe another 50 or more of those coming from my climbing activies. New pull-ups PR 20. Didn’t do the pushups.
  11. Gain 5kg of pure muscles (70kg, BMI of 22, fat 10-13%) and post a shirtless comparing pic.
    1. Max achieved was 68. I’m 10.3% body fat. I will delay posting a comparison pic to the next year.
  12. See how far I can get in climbing. Target sending one V8 (7B Font, HEX-5/6) bouldering problem. If this doesn’t say you anything, it is a super-ambitious goal as I can currently do V3s, some V4s. Normally V8 requires years of training and lots of strength. Likely to fail. Shoot for the starts.
    1. DONE (kind-off): rock-climbed 148 times. Sent a couple of HEX-5 (V6-V8, probably these were 7A and not 7B).
  13. Continue sleeping full 8.5 hours.
    1. DONE (based on garmin data I kept sleeping 8.5+ hours for entire year with few exceptions).
  14. Straighten my teeth to a perfect arch :)
    1. DONE. My teeth are straight now. I’m still wearing last sets of aligners and then will need to wear retainers for some time, but the work is done!
  15. Further reduce coffee. Cold turkey is a real option this year.
    1. Had 2 months with 0 coffee intake (Jan, Feb), and many months with few coffees. By the end of the year I’m basically back to daily sonsumption. This means I’m a coffee addict.
  16. Build a strong disciplined morning routine, that includes among other things waking within 5 minutes of alarm going off, drinking full glass of water, short meditation and a full breakfast.
    1. No real discipline, though I do have some kind of routine. I stopped having an alarm. Yeap. I do not have any alarms set and this makes me feel great.
  17. Write 10 blog posts, of which at least 5 are of a technical content.
    1. 1. That’s a failure.
  18. Listen to/read 10 books, of which at least 5 are technical/career ones. (Harry Potter ones don’t count).
    1. Books done: “Time Smart” “Effective C++” “Effective Modern C++” (partially) “Change by Design” “The Manager’s Path” “The Body Keeps the Score” “Fifty Inventions That Shaped The Modern Economy” “Sapiens” “The Art of Thinking Clearly” “The great mental models: Vol 2” “The Ride of a Lifetime” “The Pragmatic Programmer” (relisten) “Finding Flow”
  19. Solve 100 leet code problems (min 10 hard; min 50 medium). Got to keep myself in a good shape, right?
    1. Solved 44 problems. Not much. (total lifetime solved 565)
  20. Deliberately work on loosing my eastern European accent for at least 10 hours. A course with a real teacher would be great.
    1. Failed.
  21. Create a monetizable content and earn 1$. This can be a course on programming, an e-book, a problem solving tutorial, anything really.
    1. Failed.
  22. Become fully proficient in one more programming laguage.
    1. DONE: Gained C/C++ readability badge at work. It kind of means Google now trusts me to write C++ code :) I also finally fill more-or-less comfortable in this language.
  23. Learn Linux. I use Linux every day at work, but I’m limited to basic things and have never deliberately tried to understand this operating system or become proficient in it.
    1. Failed. Linux is now my main non-work operating system. Though still not what I meant.
  24. Learn to complete all work within strickly 8 working hours. Less of stretching of time, less of inefficiencies, less of distruction, more discipline. Efficiency. Time is our most precious resource.
    1. Mar: March was probably one of the most efficient months for me at Google so far. Feb: I’m tracking my time super-precisely and can tell there is close to 0 of time-wasters (news, social, etc) during work hours. Oct: This goes “oke-ish”. Calling this a success even I don’t feel I work enough. My employer seems to be happy, though.
  25. Better track money. I’ve been tracking money since my first paychecks, but in the year 2020 I lost my routines so need to reestablish them.
    1. Mar: on track. Feb: Back on track. Rewamped my “balance and net worth” sheets. Oct: Not sharing too much but I have a hold on money tracking and investing. It is just maybe I can make more if, say, I worked in US or something.
  26. Make or lose 1000$ in a risky investment. Failures are learning experiences.
    1. DONE: I have some crypto ETFs that jumped like hell and I didn’t budge. Jumps were X*1000 so I’m covered for this goal. I have some confidence in risk tollerance now. And no, I do not believe in all this crypto hype.
  27. Invest 20% more money in 2021 than in 2020.
    1. DONE.
  28. Create a painting and/or a drawing. I already know some basics. Just want to do something to really like.
    1. Failed. I just didn’t feel like doing this for entire year. There is still tiny chance before 1 Jan I do this.

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.

Happy New Year!

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!


13 comments


Goodbye Amazon; Hey Google

August 24, 2020 Career, 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.

Aligned few T-shirts for my first working week

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 :) ).


4 comments


Becoming Senior Software Engineer and Career Path

April 4, 2020 Career, Success 14 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.

Señor Engineer
I just had to put this picture for few friends of mine ;)

Recently I got promoted to Senior Software Engineer position at Amazon. This post starts with my career story leading to the place where I am now and finishing with thoughts on titles, their meaning, and further thoughts on professional growth for software engineers. Bear with me, this is a long post with no conclusion.

Career Path so Far

My first job was with a Ukrainian outsourcing company, Softserve Inc. I started there in April 2008 and left the company in December 2011 to pursue new experiences in Western Europe. During those 3.5 years I got promoted twice. When exiting the company I was titled “Senior Software Developer” leading a team of 8 developers. Most of us were young software engineers just some years out of college, we were in a different kind of business than all of my next jobs (outsourcing vs. product).

My first job is still an inspiration on how I should be approaching my career. Being career driven, ambitious, and overly eager to learn non-stop were the main characteristics of me back then. I was brave enough to speak at user group events, and teach others. I’ve just read old post on leaving my first job and it inspires me. My English is horrible, but the meaning is everything:

I joined my second company in Austria as a Software Engineer (intermediate level) and was extremely happy with the quality of software we were producing and everyone’s skills. This was the first time I started learning about distributed systems and just loved working there. I hammered the keyboard non-stop and was happy. As it always is, every story has its end. I left my second company banally to earn more money. Sad but true. They tried to keep me by offering some XX% salary increase, and… drumbeat… a “Senior Software Engineer” title. I rejected. I don’t know if that was the right move, but that clearly was time when I chose money over title or even over happiness at work. Below is a blog post about leaving second job and reasons why I chose money, if you are interested:

I spent only 1.5 years with second company after which I had long 4.5 years with United Nations (well, the IAEA, which is international organization associated to UN). I started as a contractor Software Engineer – my title didn’t really matter as at first I was self-employed, I could probably have called myself “God Of Software Engineering” at “Greatest Software Company In The World” and it would not matter as for the IAEA I was just a contractor and they made me go through airport-like security each and every day for few years. In the end they hired me as a Staff Member with a cryptic title “Systems Analyst / Programmer” putting me in charge of a team of contractors :). This was another bump in my income as suddenly I didn’t have to pay taxes (yes, let me repeat it – I legally did not have to pay any taxes at all).

The place is definitely unlike any other workplace. There were over 100 different nationals working in the same building with me. I worked directly with people from Iraq, Zimbabwe, Azerbaijan, UK, Australia, Canada, China, India, and so many other countries it was virtually impossible to know who is from where. There was so much learning about different cultures. This alone was awesome. There were tons of other benefits related to working at that place. Not everything was great. For instance, I had to come to work in a suite – yes, software engineer in a suite. More seriously I was looking for more growth. Even if I managed to get promoted that would not make any major difference. Maybe, I would just start wearing a tie in addition to suite. Unfortunately, I don’t have a blog post about leaving that place, even though I have so much to share. All I have is this picture of me getting out of a nuclear reactor and tweet:

Up until 2018 I was mostly .NET engineer with desktop, distributed, mobile and web skills. Starting to work for Amazon meant dropping good portion of that knowledge and learning Java and many things from the “dark side” (oh, sorry, that’s the other way around). I’ve joined Amazon as SDE2 and I didn’t mind joining on an intermediate title as I knew that working for one of FAANG sets me on a totally different growth path that brings challenges of a different magnitude. I cannot talk too much about work at Amazon other than what’s public. But it is not a secret that one line of code change could mean MM$ of loss or MM$ of revenue here just because of enormous scale. This is why Amazon always tries to raise the engineering bar. Amazon is a place of insane growth. Love it.

Do titles matter?

So where am I going with all of this? If you followed me so far, you would notice I always skipped titles either for new experience, more money, or growth opportunities.

So do titles matter? I think it depends on how you look at them. You can be “CTO” at company of 10 people making 100K a year, or be a fresh grad Junior Engineer at top company in bay area and make twice as much. But “CTO” might have a chance to grow her company to giant and make millions because she is in a different growth position. It is not only about titles but what they really mean, what level of responsibility they bring, what is the pay band, what impact, knowledge, and skills are expected. Most often companies define levels boiling down to some kind of seniority and scope of responsibilities and then would define different titles having technical track, management track and maybe few more.

Long story short, I think titles do matter but they matter in a context.

When I look at titles of people whom I knew from my first job I get humbled – some of them got promoted 6 times to the likes of “Vice President of Something” or “Senior Solutions Architect” or even something more pompous. Not all of them, though, some of them who were less ambitious or had different goals took different paths. This makes me wondering where I would have ended up had I stayed. I will never know, but should I even care? Should you care about your past decisions and think too much? We should not! Regret is a painful emotional state to avoid. We need to always try to minimize potential regret.

So how to get to the next level?

Everyone of us has a different path in life and in our careers and that is just the way it is. We care about ourselves, our families and people we know and relate to. So for the most part you don’t care about me or my title the same way as I don’t care about your title or other engineers’ titles. That having said, you might be interested in this post as you might be wondering how you can get to your next level or what you can learn. Human nature is not to be happy with what they have and I am ok with this. This is normal.

Here are original bullet points from me:

  • Do your job and do it well. Really well. Master the tools. Balance delivery and long-term perspective.
  • Never ever stop learning. Improve yourself in all areas. Soft and hard skills.
  • Work on projects that have impact and could grow to something big. If you don’t think you are on such a project change the project or change the project.
  • Find a mentor and work with your manager and others to get you where you want to be.
  • Look at what next level implies and do those things. Take responsibilities. Now.
  • Make your work visible and document what you’ve done.
  • Stay healthy. Sleep well.

How much in a promotion is luck?

This is a difficult question. If I take philosophical approach I would say that a lot is due to luck – we just pop up like little candles in different parts of the world and then we fade away, you might have been unlucky to be born in poorest country in the world or your parents might have started preparing you for Stanford in elementary school. You might have worked on a project that suddenly started making millions of dollars growing and riding everyone’s careers with it or you might have worked on failed project and got laid off.

Another cold-blooded view is absolutely deterministic. You are worth exactly what you are worth, meaning that if you somehow think you deserve higher level this is simply wrong as you were not able to determine what it takes to get that what you want and therefore you don’t deserve it. Big companies have data-driven approach to promotions. If you have the data for the next level you will undeniably get it.

My overnight promotion was years in making.

Conclusion?

This was just a story. You can make your own conclusions. I’m just encouraging you not to give up. Feel free to leave me a congratulatory or any other kind of comment.

Among other things, this promotion completes one of the important parts of my 2020 new year resolution. I’m now 12.5% done and more is to come.


14 comments


Approaching a software engineering problem

January 5, 2020 Career, Opinion, Success No comments

How we approach problems often defines whether we succeed or not or how hard success comes to us!

Me ice climbing

This blog post is my humble attempt to come up with some of problem solving advice for software engineers who are starting in their careers. Why would you listen to me? – You don’t have to. In fact, I would argue, that you shouldn’t take anyone’s advice at glance and at the same time be open to evaluate everyone’s advice and then make up your own mind. I do not have many credentials, other than 12 years of experience as a software engineer in various roles (SDE, Sr. SDE, Tech Lead) and various industries (outsourcing, online entertainment, nuclear energy, e-commerce). My experience is different and success is questionable. I am guilty of making career mistakes and solving problems the hard way. My hope here is that the below could save you from making same mistakes.

Worst mistake

The worst mistake of all is to die with regrets but, as not to get too philosophical, we are talking about software here. So…

It is totally normal to get stuck time to time on problems. If you never ever get stuck it might indicate that you are staying in your comfort zone impeding the speed of your progress. Therefore, imho, one of the worst things you could do to yourself at work is to let yourself stay stuck on a problem without any progress or learning and as a result with no advancement to your future career.

Understanding the problem

The first step to approaching a problem is understanding. You’ve got to identify the issues and envision how the success would look like. Sometimes this might be referred to as “working backwards”. More often than not, there will be preprocessing done by business analysts / project managers / senior engineers which results in some kind of requirements (stories, documents, tasks, etc). Your job as a software engineer is to first understand what is wanted from you. Simply state back to requirement givers in your own words what it would solved problem mean. Once you understand the problem completely proceed to the next step.

Strategizing

The second step is strategizing. You need to come up with a potential solution. You might want to brainstorm on options, evaluate them and try to come up with the best one. Decision matrixes and other techniques might help, but don’t bug yourself too much. At this step you might want to create a plan by breaking problem into smaller tasks. You might work on proof of concept or try one or few things out. I do not believe in plans themselves, but I do believe in planning as it makes you think hard about the approach. It is important not to get stuck in “analysis paralysis” mode, so once reasonable time is spent, move on to the next step even if somehow you don’t feel ready. You will never be fully ready. Take on the problem you’ve got. You might learn some new things when doing so which you didn’t anticipate.

Execution

The third step is approach execution. Doesn’t matter how great plan you had, if you fail to execute you fail. Say, you picked option x and it didn’t work out for you, do you continue to push for x or do you switch to option y, do you give up, do you seek help? What do you do? Do you feel how anxiety creeps in?

From my personal observations generally there are two types of execution: erratic and systematic.

Erratic

Basically you just start bashing the keyboard, throwing different copy-pasted blocks of code and praying it is going to work. This is that kind of approach when “<” didn’t work, so you replaced it with “<=” and it worked, but then you realized that your loop had to start with index 1 instead of 0, and so on. Eventually you arrive at the finish line. I bet that most of us, software engineers, have used this approach and it worked at times but then we felt uneasy about it.

Systematic

You think about each piece of code you write and consequences it is going to have, questioning each line of code and thoroughly testing the code. Why do I use “<” instead of “<=”? Why does the loop start at index 0? Should have I used thread-safe data structure here?How would this button look on small screen? Why does this API accept any number of items? I don’t know about framework ABC, so why not read a doc reference first? And so on – you question everything! This approach might seem like taking much more time and it does, but eventually written software has less bugs, is much more maintainable and truly solves the problem. Arguably, maturity of a software engineer can be recognized by observing them solving problems in this systematic way.

Some other bullet points

  1. Reiterating is fine. Although systematic approach wants you to think about each line of code, you might be overwhelmed to do so at once for larger project. In this case coming up with a “skeleton” solution that does something and then building on top of it (maybe changing few “bones” here and there) is totally fine. This goes along with agile methodology as well. Just don’t scarify quality with “oh, this will be one in the next iteration” and eventually never being done.
  2. Do not just copy-paste. As the joke goes: “Dev1: Damn, copied this from StackOverflow and it still doesn’t work. Dev2: Did you copy from the question or the answer?” Although copy-pasting from other parts of the project or SO, for that matter, is totally fine, what’s not fine is not understanding what you are coping or not questioning the quality of the piece of code you are copying. If the code was written by more senior developer or if most of the project is written “this was” this is not a valid justification to not try to see if anything about it could be improved. As a simple example, a developer before you might have took a shortcut by defining style right in html instead of moving it to a css class in separate file.
  3. “Don’t work hard – work smart” – although true, stinks. Most often I heard this from people who were lazier than others. There might be two types of laziness – a) the one that makes you procrastinate, and b) the one that makes you ingenious in problem solving. I’m fine with b) as long as it doesn’t come at cost of quality of your solution in terms of maintainability. Think of someone doing a+=b; b=a-b; a-=b; to swap two integers because they didn’t want an extra variable and now extrapolate this on on system design of your software where no-one could understand what the hell is going on. Long story short, you need to work hard and there is no way around it.
  4. Pause to learn and deliberately practice. At times you might come around something you haven’t worked with before. Stop! Take a moment to understand what it is. Reading one of two pages of documentation or going through “hello world” tutorial might save you a day or few. As an example, you might need to integrate a library into your project and it may look overwhelming as the project is huge. At this point it is best to implement simplest possible project with the library to understand how it works before spending days integrating it and then not understanding why it isn’t working.
  5. Seek help but do your due diligence. It is totally ok to ask others questions – this is the way to learn. At the same time it might not be appreciated to ask something that can be found online or in documentation with a simple query. Also learn to ask how to ask help http://xyproblem.info/
  6. Time bound. Never get stuck on something for too long. Put some boundaries for specific tasks. If x isn’t working, look at your strategy and unstuck yourself. You might need to escalate this with your manager.
  7. Clearly communicate. Very likely you are working in a team and have a manager. Work on improving your communication so that you can convey your status and whether you are blocked and need help. I would advice against obfuscating your status with needless information – just be honest if you are having difficulties.
  8. Retrospect and analyze if you can improve something for the future. Don’t just take everything at its “status quo”. Say, if environment setup for your project is difficult, and always takes time for engineers go ahead and improve it.
  9. Reasonably document your work. Chances are that someone will have to solve a similar problem or that you will need to explain your work at later stages. Documentation is just a tool to help you out in these situations.
  10. Add your bullet-points/thoughts/disagreements in comments!

Conclusion

It is in my personal view that approaching a software problem consists of 1) understanding the problem 2) strategizing about solutions and 3) execution of the strategy. Observation I have made over the years is that engineers tend to solve problems erratically or systematically. More systematic approach supplemented with the above bullet-pointed guidance might be helpful advice for starting software engineers, but be skeptical as this is purely an opinion. Enjoy and let me know if it helps.


No comments


Does Your Software Developer’s CV look Professional?

October 11, 2015 Career, Success 2 comments

imageA first glance look at your resume will rest assure a potential employer that you are not worth hiring if it looks like a crap.

Even if you listed tons of technologies, badly looking resume hints that you don’t care about the quality of things. Employer might think: “He must be writing his code in the same ugly way.”

In this blog post I want to share few things I did to my resume.

Actually, I have more of a CV than a resume. After recent changes I created two different versions of my CV. One is more concise two pages that I would normally use and another is extended 4 pages version. Four pages version contains detailed information on projects I worked on, so it can serve for my future editing, should I need more information.

Being Specific about Contributions and Achievements

Probably, the main thing anyone should do to their CVs is to ensure your future employer will have a clear idea on what you had done before. Obscure general phrases are just destroyers of a resume or CV.

For my own resume I completely rewrote everything into smarter format. I used past tense bullet-point sentences to clearly describe what I did. Let’s have a look at before and after of one concrete example.

Before

This is what I previously had as a summary for my experience at bwin.party company:

“Developing and extending large set of back-end services in scope of enterprise SOA architecture in large betting company. Scalability and performance were top most requirements.”

It was followed by a list of projects I worked on. One of them was statistics service I created. I described it like this:

“Service which fetches huge amount of statistics data from external provider over FTP and transforms it for internal consumption.”

Obviously potential employer looking at this description wouldn’t have any idea at what my contribution to this project was. Was I implementing it from scratch or was I fixing bugs? Or, maybe, I just know something about the system so I listed it.

After

After editing, the summary became:

“Bwin.party is an online betting company. I worked in the company’s sports branch, with a team responsible for backend services. Scalability and performance were the top most requirements. Most services were exposed through REST API; they had to be available 24/7 and withstand extreme loads during championship events.”

Then, I came up with this description for the statistics project:

“Designed, implemented, and launched a new sports statistics system. This system imported data from an external FTP location and made it available on our website through AppFabric Cache.”

This description exactly says what I did and even provides a glance look at some of the technologies used.

English

Another thing I had to improve was my writing. I’m not native English speaker and I’ve never took any English grammar classes. I make many mistakes.

I hired an editing and proofreading company to go through my CV and fix mistakes. I only paid 31 Euro, but my CV became English language error free. Plus they provided a few general suggestions on improving my CV.

You have to be really careful with someone editing your CV, as they might change the meaning unintentionally. For example, they wrote “Fixed a serious performance problem using search engine…” when it really had to be “Fixed a serious performance problem in the site’s search engine…”

There were obvious problems that made their way from times when my English was even weaker. For instance, sentence “I was awarded in nomination “Best Rookie Developer of 2008” in my team of 50 people, so am proud of this, because at that year our team got a lot of new people.” sounds horrible to me. Now it just says: “Was awarded the “Best Rookie Developer of 2008”.

Formatting

I completely changed the format of my CV. I’ve borrowed styling and formatting from my friend’s resume. He’s hired a professional technical writer to create a CV for him.

Before

Previous version was grey 4 pages wall of heavy text with odd formatting.

My old CV formatting

After

The new version is just two pages. It is nicely formatted and is error free. It is available here.

Andriy Buday's CV screenshot

Review

It’s very important that someone reviews your CV. I asked my colleague who does a lot of interviews to review my CV. He said that if CV is short, screener reads through all job posts, but if it is long screening ends at your last job post. So it depends what you want to show. Other thing he thought of, was adding skill grades for different technologies, like C# (major skill), F# (minor skill). I didn’t incorporate this advice, but I’m still considering it.

Photo

I added a new photo to my CV, not the one you currently see. After I showed my CV to my wife, she said that she would never hire someone who looks that frowning and sad. I had to make a new picture with a hint of a smile.

Next Steps

Recommendation Letters

I already have official recommendation letters from two of my previous companies. I’m planning to include those when applying for a job. A recommendation letter for a software developer is not common in Ukraine where I had worked before moving to Austria. But here in Western-Central Europe it is almost a must. I think that it doesn’t do any harm to ask for an official recommendation letter even if it is not common in the country where you live. Ask for it now, otherwise it could be a difficulty to get it few years later.

Cover Letter

I’ve never used a cover letter. It has never came to me that this might be a useful technic. But it might, especially if you are looking for a specific job and want to outline exactly why you are the best match for it. Should I find my “job of dream” I might consider creating dedicated cover letter. For now, I won’t create one. Have you ever used a cover letter? Did it work for you?

Hiring a Professional Resume Writer

I haven’t done this. I also have mixed feelings about hiring someone to write my CV completely from scratch. Probably, they can do a great job. But finding a really worthy professional might take lot of time. Also a good one would cost you few hundreds $. Though, it is definitely a great investment, if you resume looks terrible at the moment.

Conclusion

My resume wasn’t looking good. It isn’t extraordinary great now, but I think I’ve improved it significantly. Main things I did to it, was rewriting it in more concise and descriptive manner, fixing mistakes by hiring a proofreading company, and changing the styling.

Hopefully, this post can be of some help to make your resume look better. I would be really happy to know if it helped.

If you have suggestions on further improvements to my CV, I would really appreciate it.

Update April 2016

There is more to having professionally looking CV / Resume. You should consider having market oriented resume versions.

For instance, described above two pages CV with a photo is common for EU, but it is not a great thing for US market.

In US it is more appropriate to have 1 page resume without any personal information.

As a result I created US oriented one page resume.


2 comments


Book Review: Soft Skills: The software developer’s life manual

October 3, 2015 Book Reviews, Career, Success No comments

After going through short free blogging e-mail course by John Sonmez, I didn’t sign up for the marketing course. I was a bit sceptical about paying few hundreds for the course. But not to miss on the opportunity to learn from John I decided to read his book “Soft Skills”. (Actually I listened to it via Amazon Audible.) The book wasn’t exactly what I expected it to be – it was much more. It’s kind of a book I would like to write myself someday. The book isn’t just about soft skills needed to perform your everyday tasks at work, it is much more generic and broader in topics. The book is about skills you need to succeed in your life as a software developer. “Soft Skills” includes advise on career, productivity, finances and even fitness and nutrition.

There is a lot of unique in the book, but probably you will find yourself familiar with some of the recommendations. For example, in one of the chapters on productivity John suggests using pomodoro technique. Obviously, it isn’t something new. But the author explains how to make it work and also adds few of his own practices. Everybody knows that their health is very important, but unfortunately too many of us neglect to do anything about it. I think emphasis this book does on fitness and health in general is something that makes the book special. Personally, I didn’t really enjoy some of the chapters on finances. Maybe that’s because I’m almost done with my goal of reading 13 books on finances and investing this year. But, still, I think that others might find it useful, plus it is interesting to know about the financial experience of the author himself.

My takeaways

I’ve certainly learned few concrete tricks and technics I’m going to use when searching for my next gig, like creating a resume that stands out, applying for a job, hacking the interview, negotiating effectively and other.

I will also apply some of the productivity recommendations at my current work.

A lot from the section on learning is very practical. Hopefully, concrete steps this section is offering will help me overcome some of the inefficiencies in my learning process. I have to admit that I often learn incorrectly. For example, frequently I first read a book and only then try things out. Intuitively it felt to be an inefficient way of learning, but I continued to do so.

The other big takeaway is health related. This year I started to run (well, again), but this is not enough to feel myself fit and full of energy. The problem is that I’m not consistent in my runs. I will add some scheduled fitness exercises to my runs and will try to follow John’s advise on the topic.

John has managed to retire at age of 33 and even I’m 5 years away from that age I have less aggressive target of retiring at 41. Best takeaway on the financial side was realising that I share same opinions on the matter and have already taken few of the first steps on the way to financial freedom.

Conclusion

Soft Skills” is up to date book with very sensible, practical and actionable advice for any software developer. It has a potential to greatly improve your life – not just your career. I would highly recommend to read this book. I’ve even ordered a printed copy of the book as a gift for my friend for his birthday.


See the book on Amazon or buy it using my my referral link below.


No comments


Book Review: The Passionate Programmer

September 15, 2015 Book Reviews, Success No comments

ThePassionateProgrammerCover

I think I’ve read “The Passionate Programmer” for the second time. Otherwise, I cannot explain why almost everything I read in the book sounded like a “Déjà vu”. Well, even if it was a second time, it’s worth it. Book itself if very easy to read. It is nicely organized in small chapters and contains short real-world stories from different people. I liked reading the book very much. Besides, since recently I started working on getting back on track with my career and blog writing this book came very handy.

What is this book about

Author, Chad Fowler, does really great job advising software developers on their career. This book definitely makes you think about your current position and gives sensible suggestions on possible actions to improve the situation.

The book helps you realize that your skills are just a product. A product that is highly demanded. For any high demand product there is high supply. And it is only a question where you find your product in all the supply available. Is your product a quality one? Are you sure your product won’t become obsolete over time? What is it you do to stand out from the crowd?

My takeaways

There is one take away from the book that I took action on already. I started writing Monday weekly e-mails to my direct manager with list of last week’s completed tasks and the goal for a current week. This is not to make my manager happy nor to make me look nice. I’m doing this for myself. For sure this will keep me focused and provide additional push for completing my work.

These below are some other action items from the book I want to take:

  1. Find out what is now highly demanded and how my skill set correlates with it.
  2. Read something about the industry I work in. Should be interesting, as it is nuclear energy.
  3. I need to put myself in “be the worst” situation.
  4. Proceed more actively with learning another programming language.
  5. Try AngularJs. Since I have experience with EmberJS, it would be nice to compare.
  6. Mentor myself (details in the book).
  7. Do some Kata.
  8. Never go too comfortable. I’m pretty sure my current just is exactly “too comfortable”. Time to change.
  9. Do “Refactotum” exercise (by Stuart Halloway).
  10. “Spend next year trying to become one of the alpha geeks.” This sounds strange, but why not?
  11. Find if I have any monkey traps (things I hold on to way too much).
  12. Go Independent.

You

Go ahead, read the book and create a list of action items for yourself.

Just Be Better Than Yesterday!



No comments


Blog course for Software Developers by simpleprogrammer.com

September 11, 2015 Blog, Success 1 comment

I want to share something with you, especially if you are one of those who’s been following this blog for a while.

Everyone is interested in succeeding. Succeeding for software developers often means boosting their careers. This can be done by mastering the craft and by marketing yourself. Even if you are one of the best programmers in the world, all you will get by only doing you work is just more work. Of course, if you work hard and exceed expectations you will get promotions. Unfortunately this is limited to your organization. And when you move to the next place you have to prove again that you are of great value. Basically, you are left without any sizable portfolio for all your hard work and all you have to show is few pages of a resume. You have to promote yourself online.

One of the best things I did to my career was starting this blog in 2009.

This is also something I would recommend to you. There are people who would like to help you.

To get yourself started just sign up for this free blogging course: http://devcareerboost.com/blog-course/

I’m sharing this because it helped me to activate my writing again. Besides, I completely agree with what John Sonmez (http://simpleprogrammer.com) has to offer in his course. I think that having a quality blog will not only help you boost your career but will also help you to be a better developer over time.

Thanks to the course I’ve finally moved my blog to a self-hosted environment. I hope you like the new design. I’m also planning to keep up with a blogging schedule.

The most important thing about blogging is consistency, probably something you haven’t seen on this blog in the last 2 years.

It is something I want to change. So, I would like to thank John for the inspiration. Thank you!

Share your thoughts and blog links.


1 comment


Book Review: “Give and Take: A revolutionary approach to Success”

November 21, 2013 Book Reviews, Success 2 comments

Give_and_take_cover_3DCan you be a big boss if you are not greedy? Can you move to higher positions if you spend you time giving to others? Isn’t it better to take as much as possible? And to grab every opportunity you have to get promoted? Why would you help others if you don’t get back more or at least equal?

This book argues with conventional view on how people succeed.

The book splits people into three categories: Takers, Matchers, and Givers. It could be that most of people are Matchers. We always try to pay it back. Entire world is build on that – you pay people. There are people who would smash you into the crap if you stand on their way. It is commonly accepted that these people get what they want. There is type of people who help others without second thoughts.

Adam Grant, the author, says that takers get to high positions quickly, but only givers stay there for long. Though it could happen that givers got trapped and become doormats or pushovers, the book brings some tips on this.

One of the reasons I liked the book is that it provides a lot of research information. Book is not written out of thin air it bombards with facts to support ideas. Studies and research results provided in the book are thought-provoking. Just reading them is very interesting and sometimes even exciting.

For example if you were to ask wife and husband to give a percentage of their contribution to their marriage life. Ideally it should sum up to 100% and be 50%/50%, but turns out everyone thinks that they contribute more so you get something close to 130%.

Or did you know that your name could easily affect your choices in life? People with name Dennis are more likely to be Dentist. At least this is something author brings as the fact. On the other hand I just googled why this might be not truth.

There are many more of similar studies and facts about successful people in the book. I enjoyed reading them.

Some are questioning if book is truly bringing new approach to success or it is just useless junk. I found this interesting question posted by Iryna:

Hi Adam,
While reading a book, I decided to conduct a research. I interviewed my friends and co-workers and asked them to pick four values and arrange them from most to less important. I used values from the list presented in Schwartz study.
I found out that all the men picked values from taker list. Wealth, power, pleasure and winning. The majority of women picked helpfulness, responsibility, social justice and compassion. So, according to my research, women tend to be more giving then men. (Was not surprised of course by this result). However, as you know the majority of executive positions are still occupied by men. The question is, does “take and give” approach work when it comes to gender? Or man who is a taker will always be a step ahead of a giving woman?
Thanks,
Iryna

It is very legitimate question. I also think that book brings some controversy thoughts. Splitting people just by givers and takers didn’t seem good enough to picture successful person, since many givers were and are not successful. Frequently because they were doormats/pushovers, burned out or just went unnoticed. I’m wondering if we could maybe come up with idea of successful person that also shares similar properties of giver, but also has what’s best from taker.

Let me try: I think the way to succeed is to give people something that they need and value more than it actually costs for you. Even though I used word “give” and it probably sounded like takers motto. But why would that taker be bad? He is just smart, and besides he is helping others by giving them what they want. Isn’t he? I think that supporting other people is very wise, since they will watch your back. Building solid social network is important and you indeed can only build it by sincerely helping. Giving credit and prising people is also very important and a must.

Important is to know what others need and what it is you can give them back.

I honestly love to give and help, but what I love even more is to get. When I was reading the book I though that I mostly fall into matchers/takers group and was a bit ashamed (since they are bad, right?). But I just took assessment on the website of the book: http://www.giveandtake.com/Home/ChooseAssessment

Here are my results:

image

Doesn’t look that bad, does it? What are your results?

Pay it forward is exactly what this book advocates for. This is what my former scrum master did when she gave me this book and one more book. I’m really thankful her for this. I should be paying forward as well.

Dear readers this blog post is my payment to you. I don’t know you – I just share thoughts with you, but sometimes this might help me. It did in the past, since blogging pays off.

Do I recommend to read this book? YES! Definitely. It worth reading even if in the end you will find yourself not agreeing with some conclusions.


See the book on Amazon or buy it using my my referral link below.


2 comments


Book Review: “So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love”

June 23, 2013 Book Reviews, Career, Success No comments

SoGoodTheyCantIgnoreYou Recently one of my colleagues got so inspired by two books she read, so that she decided to simply start giving them away. She was guided by the “Pay it forward” concept, which “is asking the beneficiary of a good deed to repay it to others instead of to the original benefactor” as per wiki. Basically, if I like books she bought for me (hard copies) and if I like the concept I can continue buying books for other people, so they can spread the ideas and books even more.
So far I read only one of two. The short one, called “So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love” by Cal Newport. It doesn’t talk that much about giving things away, so you probably should wait until I write another review, but continue reading for something more closer to our working lives – to our careers.
Be so good they can’t ignore you” is a quote from comedian Steve Martin that captures what is needed to build a working life you love.
Cal, the author, takes us though dozen of different examples of people who achieved success and who have failed. He starts his book with groundbreaking statement that following your passion could be an epic mistake. He says that since decades books on success tell to find something that is the most appealing to you and simply follow it, they tell you cannot achieve greatness without doing what you love. But many examples Cal brings to the table prove this being wrong. My vision and what Cal also says is that people simply don’t know what they want. They have to try things, but trying all the things around could just easily be waste of time. Lot of things require efforts and work until you really start taking adult steps in it and can do something meaningful, and even more – understand if you really like it or if it was just a play.
As opposite to passion mindset which focuses on what world can offer you, Cal says that you can armor craftsman mindset, which focuses on what you can offer the world, because “regardless of how you feel about your job right now, adopting the craftsman mindset will be the foundation on which you’ll build a compelling career”.
“ The career capital theory of great work […] provides the foundation for all of the ideas that follow it in this book. It claims that the key to work you love is not to follow your passion, but instead to get good at something rare and valuable, and then cash in the “career capital” this generates to acquire the traits that define great jobs. This requires that you approach work with a craftsman mindset and not a passion mindset. ”
Do you know about 10,000-Hour Rule? It says that excellence at performing a complex task requires a critical minimum level of practice. I think it is understandable that sometimes it also requires talent in addition and [EDIT] not every way of spending those hours adds up. Regardless here is my question: how many 10K hours do you have in your life? On normal pace it is close to 10 years. So doesn’t sound like we have capacity to try lots of things in the world and simultaneously be good at them.
At some point in time Cal convinces us that if you have enough career capital and some rare and valuable skills you can push it towards great achievements and this is much better choice than looking for mysterious passion. In the book he also shows how he made decisions and followed “rules” described. I wish him good luck.
As my personal note I would say that book indeed inspires to put more efforts into improving skills I have at the moment. I consider myself quite good in what I do now, but it would be a self-robbery not to continue developing skills and not trying to push them forward. Jumping to something completely else might destroy all I have, instead I’m advised to take little bets.
The book doesn’t take much time to read, thus for some additional inspiration I would definitely recommend it, unless you are now reading some stuff to be so good at what you do, so that they cannot ignore you!


No comments