November 2, 2024 Opinion, Success No comments
November 2, 2024 Opinion, Success No comments
Everything in life happens for the first time (and last time for that matter), but some things don’t happen at all. First kiss, first job, first home, first kid, first gray hair. Success isn’t guaranteed and failure isn’t unavoidable.
There is this martial arts dojo next to where I live. I used to walk past it and see people practice. I never did any martial arts so it was very intimidating and uncomfortable to sign up there. Everyone appeared many levels above me, and true I would get punched in the face during sparrings. Year and a half past that I have fun and feel super comfortable during our light fights. Outside of the gym this gives a psychological sense of security (it is a false sense to some degree, though, but the effect is there).
I have never been to any sauna until maybe 30 years old. I always thought of saunas as some weird place where completely naked people sweat, so it was very uncomfortable to go to sauna at first. Now I can easily outsit many people there. I love saunas.
On one of my recent work trips there was a junior engineer on our team who would strike up a conversation with everyone, literary. It was amazing for me to observe this person: while buying coffee he would chat with a barista, he would join a random group of colleagues to chat about whatever. I mean, I have seen many extraverted people, but this was another level, so I followed his example and pushed myself to talk to strangers. On the flight back I started talking to a person next to me and had a great pleasurable chat that killed the entire flight’s time. This is because I pushed myself into discomfort, not because it was natural to me.
Being in a senior position at work requires stepping outside of comfort and talking to a lot of people I see for the first time. I have been observing how other leaders are doing this. I found that for myself I need to imitate what they are doing. The behavior appears to have common and fairly simple patterns: being respectful, thanking people for what they do, catching the essence of the message, speaking but also giving others opportunity to talk, etc. Topic for another discussion, but pushing yourself to be more like a leader makes you a leader.
You need to sign-up to give that presentation at work, you need to have that uncomfortable discussion, you need to pick that daunting project, you need to step outside of your comfort zone and embrace the challenge. Growth only happens when you stretch beyond what you already know or what feels safe. Biggest successes in life come from risk taking and discomfort! (yes, there is a chance you will fail, otherwise it won’t be a risk).
This blog post is mainly a short self-reminder about the importance of embracing uncertainty and intentionally stepping into the discomfort territory. Do it – you will emerge stronger on the way out.
I signed up to showcase my rock climbing hobby at work during DEI&B fair next week. This is a bit uncomfortable, let’s see how it goes. More to come…
September 7, 2024 Career, Opinion, Success, Uncategorized No comments
Somehow I became a generalist software engineer with a diverse domain experience. I started career with C# and moved to Javascript and then to Java and now C++. I worked for healthcare, online entertainment, nuclear energy, e-commerce, and advertising industries. In this blog post I want to share some of the details of these experiences and conclude on whether being a generalist is better than being a niche engineer.
The very first program I ever wrote was in QuickBasic in grade 6 (1999). The school computer I wrote this was only capable of running some version of DOS. Computers at university ran Windows and I learned to code in C/C++/C# + some more obscure languages (Prolog, Algol, Pascal). In my first job I wrote desktop and mobile solutions using MS technologies, mostly written in C# with WPF & WCF. My next gig was all about performant backend services with a mixed technology stack backing a multi-million user website. At my next job I found myself translating nuclear material accounting code from the 70/80s written in PL/I that ran on mainframe into Javascript or C#. Most engineers who wrote the original PL/I code either retired or died. This job taught me that I can love a dynamic programming language. Then I moved to work for Amazon, it was all about launching new business workflows and scaling it with Java services backed by AWS and ReactJS frontend. Now at Google I mainly write in C++, but from another perspective for me there was a big shift from working on products towards working on infrastructure that supports traffic for billions of users.
Now I want to have a look at all of the same jobs but from a different perspective. The first projects I worked on were for healthcare providers. Honestly, I didn’t give myself much thought about the morbidity of the things, the fact that much of the software was for hospices didn’t bother me as I was operating on the level of tasks. It was only later when I was working on a mobile app for nurses to visit patients at their homes did I internalize what this all was for. Next job probably wasn’t that noble – it was in online entertainment, more specifically sports betting. I even had an account with a competitor and placed small bets on sport events to understand how they do things compared to us. Saving the world from making more atomic bombs? Yep – that was my next job, kind of. On the ground what I was doing was merely software for IAEA (UN) and its agents who went to nuclear facilities and collected nuclear material data, performed different checks and recorded them in the app for later analysis. I got a chance to visit a nuclear reactor and learn how it works. Next gig was about enabling small companies to sell more stuff at Amazon. This was about enabling an entire channel of dropshipping for the India marketplace: loading inventory into Amazon systems, processing customer orders, invoicing, etc. This allowed me to have a good view on how e-commerce works. These days I work on supporting online advertisement from inside by working on infrastructure and tooling that allows other engineers at Google to deliver solutions to show you relevant Ads. I know ads may sound like a bad thing, but the free internet exists thanks to ads. Ads pay for those transatlantic underwater internet cables and all the other things that power today’s internet.
All of the companies I worked for were very different culturally. First job was a very homogeneous environment, all of us were Ukrainians, fairly young and we worked for our American customers who on their side were also culturally similar among themselves. I think communication gaps existed due to time zone differences and English language skills on our side. Next job was maybe half Austrians and another half of East europeans. The product we worked on was our own so I think we cared about its success a lot. I am actually not sure if I fit into this environment culturally, but I thrived on the technical front and delivering results. At the same time this was when I made many new friends who remain friends until now and I even stayed at their home on my recent trip to Europe. The United Nations is definitely a culturally most unusual environment I had to work in, mainly because of the diversity of nationalities and backgrounds. Any day at the UN premises there were people from over 100 different countries, my team alone had people from all of the continents. Something that was a bit less diverse was age, as many of the people who work for the UN are accomplished individuals with some years behind their backs. This was the place of internalizing that not everybody has the same life views on it and it’s all ok. It was extremely fascinating to learn from my colleagues. I would say that on a macro level both Amazon and Google are culturally similar – we are ambitious technically savvy individuals striving to make an impact. Though on another level Amazon is a fast paced, high intensity, customer centric, and deadline driven company whereis Google is more mission driven, long-term oriented, with more emphasis on innovation.
I can probably wear many other lenses to look at my past experiences, such as, Impact, Scale, Learning, Personal Fulfillment, WLB, Collaboration, Communication, etc. But even with the 3 lenses above it is clear that the diversity of technologies, domains, and cultures pushed me to become a generalist software engineer. Arguably, this isn’t necessarily a good thing, being extremely deep into one technology and domain can land you a ludicrously high paying job. I saw people sticking around and climbing corporate ladder rapidly, something that I couldn’t do with all the switched I did, and at the same time I saw directors being laid off just because there is no need for their role any longer. In today’s economies of scale the winner takes all. If you are at the right place and time and win the game – it is all yours. On the other hand, if you are not that “winner”, adaptability gives you an advantage of switching when needed and grabbing at least some piece of the pie or, maybe, a chance to win another game next time. I don’t know what is right, the above was my journey and it continues. What are your thoughts on going broad vs deep in your software engineering career?
September 1, 2024 Opinion, Success No comments
“They reproduce – that’s how you know!”
During one of my business trips, I had an interesting encounter with a person responsible for maintenance of the fish tanks in the office. As we chatted about his work, he shared an insightful moment. His employer wanted to measure the results of his work and had once asked him, “How do we know you’re doing a good job?” He pointed to the fish tank and proudly said: “See those little fish? Fish in this tank reproduce in captivity and that’s how you know I’m doing a great job.”
In this post I would like to go over my experiences with measuring success and work results in the context of different jobs I had. I want to highlight some personal learnings from each of these experiences.
In my first role I didn’t care about the business metrics or showing the results of my work, I was a grinding machine – I had a job and I had it done. Did my management care about the work I did? I bet they did, otherwise they wouldn’t put me through two promos. With my first experiences of leading a team I started looking at things like tasks completed, sprint burndowns, etc. In retrospect I was very focused on tracking “work completion” for myself and my team that I might have overlooked connecting this work to actual business impact. I was lucky someone did this for me and our work delivered results but if I was there now I would have spent more time understanding the business.
At my next job, my team owned multiple backend services where performance metrics were critical. “We need to handle 7TPS on a single node, how many nodes do we need to handle the entire traffic?” “This API is slow and has weird behavior of being very slow for some of the requests. Can we figure out the bottleneck and get P99 of requests <150ms?” I think this was the job when I truly understood how technical solutions connect to business success. I found the performance bottleneck and this allowed for a “bet from autocomplete” feature launch which improved user engagement by xx%. (Btw, the bottleneck was a forceful garbage collection as a way of reducing memory, instead I got rid of this memory optimization and instead asked for more memory on servers hosting the service).
Things were somewhat strange at my next job. At first I worked on an app for IAEA agents to use to record their activities during their visits to nuclear facilities around the world. I didn’t know exactly how they measured their success even though I was curious. But later I had a chance to work on a scientific/statistical tool that would take raw nuclear material accounting data and perform all kinds of analysis of the data, come up with reports and KPIs. In a way this was a measurement product by itself.
Amazon is famous for being data driven and measuring everything. When I worked there everything had to be backed by data. And this wasn’t just for engineers. Same standard applied throughout the entire company. My promo had to be backed by the list of all the projects I completed, impact they had, stats on code, etc, etc. Dates mattered a lot as well. Market is ruthless and requires things to be completed before the deadline (think Prime Day, Re:Invent).
Google is another example of an extremely data driven company and I have had a chance to work on things related to how Google makes decisions based on data. Effect of any smallest change is measured on a small percentage of traffic in order to make an informed decision. There is an experiment almost behind any code change. Google taught me to always add a section “Landed Impact” at the end of every design doc and then populate it post launching the document with specific realized impact. Google had so much impact on my life that I’m setting my personal goals using OKR methodology. If you want some related reading, consider reading the book “Measure what matters”.
Understanding the success of a project is about aligning technical results with business outcomes. For example, if you’re optimizing code for faster processing, link this improvement to reduced server costs or increase in revenue, and then measure all of these components. And from a career perspective, you always want to be able to say what you did and what impact it had. The impact has to be stated in numbers and should have some meaning behind it. People should care about your numbers. If no one cares about your numbers, think again if what you are doing is worth doing.
August 24, 2024 Opinion, Success No comments
This is original content by Andriy Buday.
One of my observations both in myself and in others is that being consistent is hard, especially in starting something new or in high effort activities. Think about when you get inspired to go to the gym every other day only to discover it is hard to find time, or think about when people talk about yet another self-help book that promises success if you just follow some simple morning ritual and “x rules of success” only to realize following those rules is unrealistic, or think about someone who fell in love and puts effort into looking and behaving exemplary only to revert to the baseline after some time.
Arguably, it is in human nature to have waves of inspiration, attempting something, and abandoning it if it doesn’t pay off instantly or after it has paid off. Lack of time, competing priorities, procrastination, laziness, waiting for a better time, just not feeling like it.
In this post I would like to document for myself and to share some of the instances of things that worked for me and didn’t work for me. I will try to analyze my own behavior to see if any of this can be generalized and if there is a way to figure out a way to make things work.
Let’s start with some scenarios where I had success but then consistency faded away in a very long run:
Now let’s look at some of the cyclic scenarios when I returned to the old consistency for some periods of time:
And now I want to examine two cases where I consistently improve consistency if that makes sense.
It is great to get inspired and I recommend deliberately looking for sources of inspiration: read books, look for mentors, create plans for yourself. With that having said, inspiration lacks durability and this is where work to build and maintain habits starts, it is hard and often results in failure. In my experience, starting something and then failing is OK as long as you start the cycle again and again, pushing the time of a failure further and further away in any given cycle. It is critical to ensure that your cycles are the right ones (another topic), but eventually your cycles will connect into one uninterrupted wavy line that takes you to your goals. Don’t give up!
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!
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.
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 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.
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:
There was a t-shirt swap. Thank you, IAEA friends, for the great years. I am officially Amazonian now. pic.twitter.com/KADEUuk6iW
— Andriy Buday (@andriybuday) January 26, 2018
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.
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.
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:
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
October 11, 2015 Career, Success 2 comments
A 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.
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.
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 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.
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”.
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.
Previous version was grey 4 pages wall of heavy text with odd formatting.
The new version is just two pages. It is nicely formatted and is error free. It is available here.
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.
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.
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.
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?
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.
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.
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.
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.
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.
“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.