This is page one of the online book "How to Become a Good Software Engineer: Advice from Programmers from Facebook, Amazon, Microsoft and more".

Table of Contents:


This ebook is a collection of rare nuggets of wisdom, as well as the often forgotten basic concepts that make one a good software engineer.

It is the result of extensive research; interviewing the most experienced and successful software engineers, whom I was lucky enough to talk to.

We will start by explaining what makes a good software engineer and then we will investigate the routes to becoming one, the tools that can help, and the best ways to solve problems.

If you want to take part in my research or recommend an exceptional software engineer, tweet me or send an email.

Heroes of this ebook

I want to say a huge “thank you” to the heroes of this ebook who agreed to share their programming career path.

  • Alex Khismatulin, Lead Frontend Engineer at Squire
  • Alexander Efremenkov, Senior Android Engineer at Bold, Google developers expert
  • Anton Kireev, Backend Engineer at Avito
  • Artur Badretdinov, Lead Android Engineer at Squire
  • Denis Bazhenov, Technical Lead at Farpost
  • Dmitry Fedorenko, CTO at 100sp.ru
  • Roman Dmitrienko, Team Lead at drom.ru
  • Ruslan Torobaev, Team Lead at ok.ru
  • Vadim Tsesko, Lead Software Engineer at ok.ru and educator, ex-Head of Backend Infrastructure at Yandex
  • Vlad Popov, Software Architect at Kinaxis

Some wished to remain anonymous.

  • a software engineer from Facebook
  • an ex-Amazon, ex-Microsoft software engineer
  • a software engineer from JetBrains
  • a software engineer from ok.ru

How to read this ebook

The main text is made up of the distilled thoughts of the heroes of this ebook. My job here is to summarize and highlight the most important.

The formatting used in the ebook will be as follows:

“Quotes are given in this style” - Dmitry Shvetsov

Text [in square brackets] is where  I supplement the quotes with my own words so that the meaning is clear. Quotes taken out of context can be difficult to understand in the way that the author intended.

You will also find comments like this [DS: in italics]. These are my own thoughts; given in addition to the words of the heroes.

Next page: What makes a good software engineer?