Elegant Objects


“Elegant Objects” is my first book. It is about object-oriented programming from an idealistic and, maybe, a bit of a futuristic point of view. There are 23 independent recommendations for a practical OOP designer on how to make code cleaner, classes more solid, and architecture more visible. It is available for sale on Amazon (Please don’t forget to review it there!), ISBN: 1519166915. The changelog is here.

Volume 1:
Click to buy
PDF teaser

Volume 2:
Click to buy
PDF teaser

Sep 26, 2019: The first volume was translated to Farsi and published in Iran. Thanks to Majid Abarghooei for making this happen!

June 23, 2019: We started translating to Portuguese.

May 3, 2019: We started to translate it to French.

November 7, 2018: We started translating the first volume to Farsi.

October 12, 2018: I started to work on the 3rd volume. It will be suggest how to refactor the legacy code in order to make it more object-oriented. I will try to make it similar to those popular refactoring books, where recommendations are given to improve the code. Hope to publish it in the first half of 2019. If you want to be a reviewer, please fill out this form.

July 20, 2018: Русское издание вышло в издательстве Питер. Вот анонс на Habr.

April 5, 2018: I posted it to ProductHunt.

February 1, 2018: I signed a contract with Питер, a book publisher in Russia. They will translate the first volume to Russian and print it. The book will also be extended by some questions and answers from the blog, for the most interesting/relevant sections.

Jan 11, 2018: Gitter chat room is closed. For all discussions please join Telegram group. For OOP related questions, please use comment sections in one of these blog posts.

Nov 27, 2017: I purchased the domain elegantobjects.org. Everything that is related to the EO concept will be added there. Please, add yourself to the list of fans or contributors, if you feel like it. We need to build a community, to help our ideas grow!

Nov 17, 2017: I signed a contract with I-manager Publications, an academic book/magazine publisher in India. They will re-print the first volume of the book and distribute it among universities and colleges in India.

Nov 12, 2017: I decided to make a list of positive reviews of the book. The list of negative ones you can find in my list of testimonials. Now it’s time to put together all positive reviews I have. Here it is.

Oct 27, 2017: I signed a contract with Ji & Son, a book publisher in Seoul. They will translate the first volume of the book to Korean and publish it in South Korea.

May 11, 2017: I created funny Telegram stickers, about object-oriented programming. Feel free to use them.


Apr 27, 2017: I’ve got stickers for you. I will give them in exchange for an Amazon review. Please, write an honest five-star review (it’s a joke, any review will work, as long as it’s honest) and email me. I will send you the stickers to your home address, free of charge.

Apr 18, 2017: The second volume of the book is available on Amazon! There are 220 pages, 15 sections, one illustration and zero typos. Table of contents is here.

Mar 31, 2017: Выкладываю в открытый доступ все пять ревью от резидентов подкаста “Разбор Полетов,” с которых начинается руссифицированная версия первого тома: Барух Садогурский, Антон Архипов, Антон Черноусов, Алексей Абашев и Виктор Гамов.

Mar 7, 2017: I’ve started to write the third volume, which will consist entirely of “OOP puzzles.” Just like in math or chess books, there will be questions that you will have to think about and answers at the end of the book. Want to become a reviewer? Please fill out this form.

Feb 24, 2017: The list of reviewers for the second volume is ready (alphabetic order). I’m very sorry if you’re not on the list but wanted to be. There will be more books in the future, so you will still have a chance. Aside from that, you are always welcome to read the book and send me your corrections; they will get you on the “acknowledgment” list. See how others have done that. Here you are:

If you see yourself on the list, please email me and we’ll discuss the practical details. I’ll be ready to mail you the manuscript in a few days.


Feb 23, 2017: Русская версия первого тома опубликована при поддержке подкаста “Разбор Полетов” и ограниченным тиражом в 128 экземпляров. Это не книга на русском языке, а английский оригинальный текст, дополненный вступлениями на русском. Объем книги 330 страниц (оригинальный английский вариант содержит только 229 страниц). Также, это издание начинается с ревью, сделанного пятью участниками подкаста (в порядке получения ревью): Барух Садогурский, Антон Архипов, Антон Черноусов, Алексей Абашев и Виктор Гамов. Купить ее можно, написав письмо на shop@yegor256.com. Повторного тиража на русском языке не будет! Тексты ревью всех пяти участников подкаста я выложу онлайн сразу после продажи последнего экземпляра этого тиража. Цена: $40. Для участников конференций, где я выступаю: $20 (бывают еще скидки).

Feb 7, 2017: This is the full list of everybody who expressed a desire to become a reviewer of the 2nd volume of “Elegant Objects.” I have to select up to 12 people, so please help me with your vote. What does it mean to be a reviewer? It’s easy:

  • I will mail you the draft of the book (a paper copy, not PDF);
  • You criticize it as much as you can;
  • You scan it and send it back to me as a PDF;
  • I’ll take your suggestions and corrections into account;
  • Your name will be included in the list of acknowledgments in the book; and
  • You’ll get a free signed copy of the book.

Pay attention: I need your negative comments, not your positive ones. I don’t really need you to say how much you like the content—that’s pointless. I need you to tell me where it’s missing something, or unclear, or wrong. People on the list are sorted by the date I received their applications. I excluded some really blank applications. If you feel I did that by mistake to your application, please email me.

Show the list

Marcos Douglas B. Santos Marcos Douglas B. Santos I try to make all my code object-oriented. I have a blog about OOP, and I have over 15 years of systems development experience. I was a reviewer of Bloghacks too — Yegor's last published book. 20 votes
John Page John Page I have an annoying habit of finding even the tiniest mistakes (typos, grammar, consistency, etc.) in other people's work. ;) English is my native language, and I have read and re-read most of Yegor's OO publications and have some knowledge and strong opinions in that area. (Though I certainly don't have all the answers, I'm irritatingly good at raising the questions.) 1 vote
Kiryl Karatsetski Kiryl Karatsetski I always look for the best solution to engineering tasks. Software Engineer in Fitbit. 1 vote
Bartosz Bilicki Bartosz Bilicki Software developer with 13 years of expertise. I adore the best clean code, automation, and devops practices, but I am not an object fanatic. When there are simpler tools that do the job, I happily use them (Spring, Hibernate, Jackson, I am looking at you!). Having read >60 IT books, I know how to distinguish useful concepts from theorycrafting and marketing bull****. You will receive an honest and straight review.
Silas Reinagel Silas Reinagel I am a passionate object-oriented programmer with excellent writing/communication skills.
Abhishek Manocha Abhishek Manocha This is the first time for me reviewing a book, but I have two simple reasons: I've worked in the OOPs for the last 12 years, hold a technical architect position, and want to share my knowledge in tangible ways. Second, I resonate with Yegor on many points. I have long been a follower of his blog. 3 votes
Miroslav Genov Miroslav Genov Java developer with more than 10 years of experience who values good designs and clean codebases.
Carlos Miranda Carlos Miranda I have been working for Teamed.io projects for two years. Having worked with his projects, I am very familiar with Yegor's methods.
Yvgen Troshchiy Yvgen Troshchiy I am an enthusiastic specialist with a lot of experience in different projects and companies.
Francesco Bianchi Francesco Bianchi I already reviewed volume 1 of this book and was (maybe?) the first one to encourage Yegor to write it after having some interesting fights with him over his brilliant posts. I've already reviewed 10+ technical books published by Manning and currently collaborate with them as Senior Technical Development Editor. 1 vote
Shawn Fuller Shawn Fuller Years ago I wrote multi-tier web and batch apps in Perl, Java, etc. (I'm currently a business analyst.) Recently, I created a web donation and contact tracker in PHP (MAMP). Reading your book, blog, and David West's book, I realize I did not understand OOP (except for using small class sizes). Like Mulla Nasrudin, who has taken a memory course, said: "I’m improving. Now I can sometimes remember that I have forgotten something." So it is with my OOP abilities. I would bring a combination of enthusiasm and naïveté to reading your manuscript.
Bakkiaraj Bakkiaraj I mostly write code in Perl with Moose Object Oriented concepts. It might be crazy for you, but it does really work. I am a longtime lover of OOP programming, having made SW Build and Test automation tools with Perl + Moose.
Semenkova Oksana Nikolaevna Semenkova Oksana Nikolaevna I'm very passionate about software architecture and want to help you do your book the best. The themes from it are very interesting and useful for the future development and evolution of the Java language and its infrastructure. 1 vote
Andrey Valyaev Andrey Valyaev I want to use OOP correctly. I want to learn from others how to do OOP right. I want to understand some concepts in correct OOP and help to make your book better.
Rakshith Kunchum Rakshith Kunchum I am a graduate student, and I want to master Java in the way the book "Elegant Objects" instructs, not the way academia teaches me.
Diego Mariani Diego Mariani Because I've read all of your articles and I can't agree more. I'm obsessed with true object-oriented programming and software architecture.
Victor Bugaenko Victor Bugaenko Because I really believe in EO conception and want to make it popular in Russia. http://www.eolang.ru/
Patrizio Colomba Patrizio Colomba OP passionate coder!
Raul Estrada Aparicio Raul Estrada Aparicio I've reviewed 256 Bloghacks. I'm the author of books about S.M.A.C.K. stack with Apress and Packt Publishing.
Jonathan Blakes Jonathan Blakes I have no fixed opinion about Yegor's approach to OOP. I have read and re-read the first edition, blog posts, and your comments, taking them all with a pinch of NaCl. My review will be based on the attempted application of these ideas to a large 10+-year-old Java (6+) and Jython/Python codebase for a scientific data acquisition client-server application used by 100+ staff and 1,000+ users 24/7.
Leonid Rozenblyum Leonid Rozenblyum I'm interested in reviewing and improving a cool book.
Ilya Vassilevsky Ilya Vassilevsky My superpower is spotting errors. I reported 5 errors in (published) Volume 1.
Piotr Chmielowski Piotr Chmielowski IMO this is true also in the case of code: “Beauty is the first test; there is no permanent place in the world for ugly mathematics” (Godfrey Harold Hardy). Therefore, we HAVE TO learn how to write beautiful code. 1 vote
Richard Flood Richard Flood Like a lot of others, I am a professional software developer. I have been working professionally for about five years, and the work I produce has been heavily influenced by Yegor's teachings. I would be honored to have the opportunity to help polish his material so it's ready to be viewed by the public.
Nikita Salnikov-Tarnovski Nikita Salnikov-Tarnovski I hope to raise many objections so you can polish your arguments.
Paul Rohorzka Paul Rohorzka I bought (at a horrendous price) and read volume 1, and I liked it for some thoughts while totally dismissing others. I want to contribute a critical voice.
Sebastian Schwarz Sebastian Schwarz I am clean code and EO addicted! My coworkers hate me for only accepting immutable classes in code reviews! Not to mention naming for void and non-void methods. What people call "grammar nazis" in language applies to me for "Elegant Objects." I am a young developer who grew up with clean code, so for me, all these rules are basics and standards. I would love to be part of the volume 2 review team to contribute my passion to the community. Thanks for your vote!
Andriy Kryvtsun Andriy Kryvtsun I like to write efficient and elegant code.
Ricardo de Sousa Job Ricardo de Sousa Job I live in Brazil, and I have your first book. I've worked with development about nine years, and I'm an enthusiast for OO. 2 votes
Alonso Ayala Ortega Alonso Ayala Ortega I pay attention to details. I'm an excellent reviewer.
Igor Dmitriev Igor Dmitriev I pay attention to details. I'm an excellent reviewer.
Paul Holser Paul Holser OO expertise, clean code, fastidious proofreading.
Michał Kordas Michał Kordas My speciality is code quality. On a daily basis, I need to challenge a corporate, procedural "clean code" approach with real object-oriented solutions.
Anton Rybochkin Anton Rybochkin I sleep with an editor.
Fabrício Barros Cabral Fabrício Barros Cabral I'm passionate for object-oriented programming and details. I have 10 years of experience as a researcher, developer, and lecturer. I'm always looking for the best way to explain knowledge to all people. 81 votes
James Kirk James Kirk I am a steadfast supporter of software engineering best practices (TDD, SOLID, DRY) and think that violations of them should be punishable by extended Nickelback listening sessions.

Feb 6, 2017: Good news: The second volume is ready (208 pages). Now it’s time to select the team of reviewers, ship the draft to them, collect their opinions, and publish the book. Hopefully, it will be available on Amazon before March 10. Here is my offer to all new readers of this new book: If you write a decent review about the book (not necessarily positive, but long enough for a detailed review) and post it on your blog, Amazon, and GoodReads, I will refund your $32 (read more about available discounts).

Nov 20, 2016: I’ve received more than 50 emails from those who are interested in reviewing the second volume of the book. With the first volume, I believe, I made a mistake in selecting reviewers. Not all of them were as effective as I was expecting. This time, I will make the process different. I will put all of them on a list and let you vote. The best 12, elected by you, will get the early draft of the second volume and help me review it. To get onto the list, please fill out this simple form.

Aug 22, 2016: I’ve collected all reviews of the book written by readers on their blogs to help you better understand what the book is about, why it’s good, and how it could be better:

Jun 17, 2016: I started a Gitter chat room where we will discuss object-oriented programming and find out what would be appropriate to write about on this blog and in the next volume of the book. Join the chat and stay up-to-date.

Apr 14, 2016: Книгу можно купить в России, Украине, и Беларуссии по цене $35 плюс доставка. Оплатить через PayPal, WebMoney или напрямую на мою карту MasterCard. Пишите на shop@yegor256.com. Вам предложат возможные варианты доставки и вообще помогут.

Apr 10, 2016: I’m starting to work on the second volume of this book. If you are interested in being a reviewer, please send me an email with a short description of yourself and your LinkedIn profile. If you reviewed the first volume, please don’t bother. I want a new group of reviewers.

JPoint 2016
JET Conference 2016
GeeCON 2016
DEVit 2016
JEEConf 2016

Mar 17, 2016: The book just made it into the Top 100 Amazon Best Sellers in the Object-Oriented Design category! There are three reviews already. Many thanks to their authors! It would be great if you published yours—this will greatly help in promoting the manuscript. Besides that, I will be presenting the book at the following conferences over the next few months: JPoint in Moscow, April 22; JETConf in Minsk, April 25; GeeCON in Krakow, May 11; DEVit in Thessaloniki, May 20; and JEEConf in Kyiv, May 21. I will give away a few copies at each event to those who ask the most interesting questions after my presentations. Don’t miss your chance to say hello and get a free book.


Feb 28, 2016: More than 100 books have sold already, in just one week! I’m glad to see that you’re interested in reading it. I haven’t got a single review yet, but I’m sure there will be some. I would like to ask you to post your reviews, either negative or positive, directly to Amazon. I’m getting many requests for an electronic version of the book, but I’m not planning to turn this into an e-book at least until the end of 2018. That’s mostly because I’m greedy. I realize that the moment I publish a Kindle version, it will be available for a free download somewhere. However, some of you have said that the “dead tree” format is not convenient, because it takes up too much space, etc., so here is my offer: You buy a paper book now, read it, take a picture of it, and throw it away so it doesn’t take up space. When an e-book is available, send me that picture and I will send you a Kindle/epub/PDF/whatever file for free. How does that sound?


Feb 22, 2016: The book is published! It is for sale on Amazon. The price is $40.96. The size is 229 pages. The paper is creamy. The cover is mate. I took into account the recommendations and corrections of nine reviewers. Two of them were missed due to technical reasons. I will definitely include them in the next edition. If you decide to buy it, please leave your feedback on Amazon. It will help me attract more readers. After reading, please shoot me an email at book@yegor256.com. I’m very interested in knowing what you think. Thanks!


Jan 27, 2016: This cute cactus, created by Andreea Mironiuc, will be on the cover of the book. For a number of reasons. First, because it’s elegant. Isn’t it? Second, it’s alive, just like all our objects in Java. Right? Third, it’s pretty hard to offend by breaking its skin and treating it as a bag for other objects. And fourth, I just like it.


Jan 19, 2016: Nearly all the reviewers have finished already. I’m waiting for the last two to send me their results, and then I will start making final changes. Fortunately, the overall feedback is positive so far. All reviewers said the book was worth reading. Here is its contents, by the way.


Jan 13, 2016: You can pre-order the book on Amazon.com. The price is $40.96. As promised, the book will be published on Feb 22.


Dec 24, 2015: Here is a small Christmas gift for those who are interested in the book: seven pages from chapter 2.4, which covers a subject I haven’t discussed on the blog yet. This is not exactly the text you will see in the book, though. This is the text my selected 11 reviewers received this week from me by mail. By the way, their names are (in alphabetic order): Andrei Istomin, Aneesh Dogra, Francesco Bianchi, Ion Bordian, Kanstantsin Kamkou, Michal Švec, Nicos Kekchidis, Philip Buuck, Simon Tsai, Thanasis Papapanagiotou, and Xiasong Pan. I hope to receive their reviews by the end of January. Then, I will spend another two to three weeks taking their recommendations into account, and the book will go out at the end of February.


Dec 6, 2015: I’ve received 63 emails so far, and it’s time to choose the best candidates. I will do that in the next few days and email them. I will announce the names of selected reviewers here soon. Thanks a lot to all of you for your readiness to help!


Nov 22, 2015: The book is ready in its first draft, version 0.1. I invite you to become its first reviewer. Send me an email with a short description about yourself. I will select a few reviewers (eight is the number I have in mind now). Then, I will send you a book. It’s free, and I will pay for shipping. You will read it (200 pages), and make your corrections right inside the book. Then, ship it back to me using UPS collect on delivery. Your name will be in the book, on the ninth page, in the list of acknowledgments! I’m interested in your negative feedback mostly. Tell me what is not clear, what is missing, and what needs a more detailed explanation. But please don’t argue with my ideas. I won’t change them based on your review. For example, if I’m saying that a static method is a bad thing and you disagree, don’t try to convince me, as it won’t help :) This is my opinion, and this is what the book is about. However, I’m sure that my explanations and arguments have many flaws. As an early reviewer, you will help me find them. Again, don’t argue with what I’m preaching, but complain about how I do it.


Sep 1, 2015: The manuscript is finished, in its first draft. It took about 200 hours. Most of the ideas were taken from the articles previously published on the blog.


Jul 5, 2015: I started to write it.

sixnines availability badge   GitHub stars