Read Facts and Fallacies of Software Engineering by Robert L. Glass Online

facts-and-fallacies-of-software-engineering

The practice of building software is a "new kid on the block" technology. Though it may not seem this way for those who have been in the field for most of their careers, in the overall scheme of professions, software builders are relative "newbies." In the short history of the software field, a lot of facts have been identified, and a lot of fallacies promulgated. Those faThe practice of building software is a "new kid on the block" technology. Though it may not seem this way for those who have been in the field for most of their careers, in the overall scheme of professions, software builders are relative "newbies." In the short history of the software field, a lot of facts have been identified, and a lot of fallacies promulgated. Those facts and fallacies are what this book is about. There's a problem with those facts-and, as you might imagine, those fallacies. Many of these fundamentally important facts are learned by a software engineer, but over the short lifespan of the software field, all too many of them have been forgotten. While reading Facts and Fallacies of Software Engineering , you may experience moments of "Oh, yes, I had forgotten that," alongside some "Is that really true?" thoughts. The author of this book doesn't shy away from controversy. In fact, each of the facts and fallacies is accompanied by a discussion of whatever controversy envelops it. You may find yourself agreeing with a lot of the facts and fallacies, yet emotionally disturbed by a few of them! Whether you agree or disagree, you will learn why the author has been called "the premier curmudgeon of software practice." These facts and fallacies are fundamental to the software building field-forget or neglect them at your peril!...

Title : Facts and Fallacies of Software Engineering
Author :
Rating :
ISBN : 9780321117427
Format Type : Paperback
Number of Pages : 224 Pages
Status : Available For Download
Last checked : 21 Minutes ago!

Facts and Fallacies of Software Engineering Reviews

  • Igor Tsinman
    2018-12-13 23:52

    "Факты и заблуждения профессионального программирования" Роберта Гласса это ещё одна книга о том как успешно делать проекты, особенно SW проекты. В книге вы не найдете готовые рецепты, но найдете много правильных вопросов. В этом собственно, как мне показалось, и ценность этой книги. Сильная сторона книги ещё в том, что автор чётко аргументирует/подтверждает свои мысли, даёт ссылки на книги, статьи и т.д.Для себя я определил, что основная мысль автора: "Проектирование программного продукта это эвристическая, изнурительная и напряженная интеллектуальная/умственная работа, с плохо предсказуемыми результатами".Книга начинается с прикольных букв F: frequently forgotten fundamental facts (and) few fallacies. Вот для начала пару цитат из книги: • " ... среди нас стало намного больше шарлатанов, продающих всяческие зелья и предсказывающих судьбу, чем нормальных людей, которые занимаются настоящим делом и несут знание в массы"• "«великим разработчикам» надо платить «столько, сколько они заслуживают»"• "Хороший менеджмент важнее хорошей технологии"Автор, определяет проблемы отрасли, представляя факты. 55 фактов объеденные в несколько категорий:• О менеджменте • О жизненном цикле • О качестве• Об исследованияхЗаблуждения объединены аналогичным образом:• О менеджменте• О жизненном цикле• Об обученииОглавление это просто нумерация Фактов. Факт 1, Факт 2, и т.д. Понять что-то из этого невозможно, как прочитать определенную главу непонятно. Выход только один читать все подряд. По мере чтения глав я выписывал/делал заметки, чтобы ориентироваться было легче. Дальше очень сжато смысл фактов. Это позволит вам создать четкое представление по этим фактам, даже не читая книгу))):Факт 01 - Самый важный фактор в разработке ПО – это не методы и средства, применяемые программистами, а сами программисты.Факт 02 - По результатам исследования персональных отличий лучшие программисты до 28 раз превосходят слабейших. Если учесть, что оплата их труда когда не бывает соразмерной, то лучший программист и есть самое выгодное приобретение в индустрии ПО.Факт 03 - Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше.Факт 04 - Условия труда оказывают сильное влияние на продуктивность и качество результата.Факт 05 - Рекламный звон вокруг инструментов и методов это чума индустрии ПО. Большая часть усовершенствований средств и методов приводит к увеличению производительности и качества примерно на 5 – 35%. Но многие из этих усовершенствований были заявлены как дающие преимущество «на порядок».Факт 06 - Изучение нового метода или средства сначала понижает производительность программистов и качество продукта. Пользу из обучения можно извлечь только после того, как пройдена кривая обучения. Поэтому вводить новые методы и средства имеет смысл, только если а) видеть их реальную ценность и б) проявлять терпение в ожидании выигрыша.Факт 07 - Разработчики много говорят об инструментальных средствах. Они пробуют довольно многие, приобретают их в достаточном количестве, но практически не работают с ними.Факт 08 - Чаще всего одной из причин неуправляемости проекта является плохая оценка.Факт 09 - Большинство оценок в проектах ПО делается в начале жизненного цикла.И это не смущает нас, пока мы не понимаем, что оценки получены раньше, чем определены требования, и соответственно раньше, чем задача изучена. Следовательно, оценка обычно делается не вовремя.Факт 10 - Большинство оценок в проектах ПО делают либо топ менеджеры, либо сотрудники, занимающиеся маркетингом, а вовсе не те, кто будет создавать ПО, или их руководители. Таким образом, оценку делают не те люди.Факт 11 - Оценки в проектах ПО редко уточняются впоследствии. Другими словами, оценки, сделанные не теми людьми и не в то время, как правило, не корректируются.Факт 12 - Раз оценки настолько неправильны, то не так уж много причин беспокоиться о том, что программные проекты не завершаются в сроки, задаваемые оценками. Однако всех это беспокоит.Факт 13 - Между менеджерами и программистами нет контакта. В одном исследовании, посвященном проекту, в котором не были соблюдены параметры, за данные на основании оценки, и который рассматривался руководством как неудачный, говорится, что технические исполнители отозвались о нем как о самом удачном проекте, над которым они когда либо работали.Факт 14 - Анализ осуществимости проекта почти всегда дает ответ «да».Факт 15 - Повторное использование «в миниатюре» (в библиотеках подпрограмм) появилось почти 50 лет назад, и решение этой задачи отработано хорошо.Факт 16 - Задача повторного использования «в крупном масштабе» (в компонентах) остается по большей части нерешенной, хотя все согласны с тем, что сделать это очень важно.Факт 17 - Успех повторного использования в крупном масштабе бывает максимальным в семействах родственных систем и потому зависит от предметной области. Это сужает потенциальную применимость повторного использования в крупном масштабе.Факт 18 - В практике повторного использования есть два «правила трех»: а) многократно используемые компоненты в три раза более трудоемки, чем одноразовые компоненты; и б) многократно используемый компонент должен быть испробован в трех различных приложениях, прежде чем его можно будет считать достаточно общим, чтобы допустить в библиотеку компонентов.Факт 19 - Модификация повторно используемого кода крайне чревата ошибками. Если надо изменить более 20 25% кода компонента, то лучше переписать его с самого начала.Факт 20 - Повторное использование паттернов проектирования – это решение проблем, сопутствующих повторному использованию кода.Факт 21 - Увеличение сложности задачи на 25% приводит к усложнению программного решения на 100%. Это не условие, которое можно попытаться изменить (хотя сложность всегда желательно свести минимуму), это реальное положение дел.Факт 22 - Восемьдесят процентов работ по созданию ПО приходится на интеллектуальную деятельность. Изрядную долю последней можно смело отнести к креативной. И лишь небольшую часть – к технической.Факт 23 - Одной из двух самых распространенных причин неуправляемости проектов являются изменчивые требования.Факт 24 - Исправление ошибок в требованиях обходится дороже всего, если они обнаружены на этапе эксплуатации, и дешевле всего, если это происходит на ранних этапах разработки.Факт 25 - Требования, которых нет, – это такая ошибка, исправить которую труднее всего.Факт 26 - По мере продвижения от начальных требований к архитектуре на нас обрушивается шквал «производных требований» (требований к конкретному проектному решению), вызванный сложностью процесса. Список этих производных требований часто в 50 раз длиннее изначального.Факт 27 - Лучшее проектное решение задачи программирования редко бывает единственным.Факт 28 - Проектирование – это сложный итеративный процесс. Первоначальное проектное решение, скорее, всего окажется неверным и, безусловно, не оптимальным.Факт 29 - Программисты переходят от проектирования к кодированию тогда, когда задача разобрана до уровня «примитивов», которыми владеет проектировщик. Если кодировщик и проектировщик – это разные люди, то примитивы проектировщика, вероятно, не будут совпадать с примитивами кодировщика и это приведет к неприятностям.Факт 30 - COBOL – это очень плохой язык, но все остальные (для обработки бизнес данных) гораздо хуже.Факт 31 - Фаза устранения ошибок – самая трудоемкая в жизненном цикле.Факт 32 - Оказывается, что в ПО, о котором типичный программист думает, что оно тщательно протестированно, нередко проверено выполнение лишь 55–60% логических путей. Применение автоматизированных средств, таких как анализаторы покрытия, позволяет повысить эту долю примерно до 85–90%. Протестировать 100% логических путей ПО практически невозможно.Факт 33 - Даже если бы 100%%тестовое покрытие было возможно, оно не годилось бы на роль критерия достаточности тестирования. Примерно 35% дефектов ПО вызвано пропущенными логическими путями и еще 40% связаны с выполнением уникальной комбинации логических путей. Их не выявить при 100% покрытии тестами.Факт 34 - Без инструментальных средств почти невозможно качественно проделать работу по устранению ошибок. Широко применяются отладчики – в отличие от других инструментов, например анализаторов тестового покрытия.Факт 35 - Тесты редко автоматизируются. То есть определенные процессы тестирования могут и должны быть автоматизированы. Но значительную часть работы, связанной с тестированием, автоматизировать нельзя.Факт 36 - Важным дополнением к инструментам тестирования является созданный программистом встроенный отладочный код, желательно, включаемый в объектный код в зависимости от директив компиляции.Факт 37 - Тщательные инспекции позволяют устранить до 90% ошибок из программного продукта до того, как будет запущен первый эталонный тест.Факт 38 - Тщательные инспекции дают множество выгод, но они не могут заменить тестирование.Факт 39 - Общепризнано, что обзоры, сделанные постфактум (их также называют ретроспективными), важны как с точки зрения интересов потребителя (пользователя ПО), так и с точки зрения совершенствования процесса. Однако в большинстве организаций ретроспективные обзоры не делаются.Факт 40 - В инспекциях наряду с техническими факторами присутствует и социальный. Уделять большее внимание чему то одному в ущерб другому – прямой путь к катастрофе.Факт 41 - Стоимость сопровождения обычно составляет от 40 до 80% (в среднем 60%) стоимости ПО. Следовательно, эта фаза его жизненного цикла, возможно, самая важная.Факт 42 - Примерно 60% расходов на сопровождение приходится на улучшение кода и около 17% – на исправление ошибок. Таким образом, в основном сопровождение и поддержка ПО заключается в добавлении в него новых возможностей, а не в его исправлении.Факт 43 - Сопровождение – это решение, а не проблема.Факт 44 - Если сравнивать задачи разработки и сопровождения ПО, то они по большей части одинаковы, – за исключением дополнительной задачи сопровождения, формулируемой как «изучение сопровождаемого продукта». Она занимает примерно 30% времени, уходящего на сопровождение в целом, и этот вид деятельности преобладает в сопровождении. Таким образом, можно сказать, что сопровождение более трудоемко, чем разработка.Факт 45 - Улучшение качества разработки ПО приводит к тому, что сопровождения становится больше, а не меньше.Факт 46 - Качество есть совокупность свойств. Факт 47 - Качество не определяется удовлетворением пользователя, соответствием требованиям заказчика, приемлемостью цены и соблюдением сроков сдачи продукта или надежностью.Факт 48 - Есть такие ошибки, к которым предрасположено большинство программистов.Факт 49 - Ошибки имеют тенденцию образовывать скопления.Факт 50 - Для устранения ошибок еще не выработан какой то один, лучший подход.Продолжение рецензии в комментарии к этой рецензии (оказывается на GR есть ограничение в 20К chars)))

  • Graham
    2018-11-19 03:59

    There are two main lessons I gleaned from this book. The first is that the easiest way to produce successful software is to hirer the best software developers you can acquire. Based on several studies listed in the book, the best developers are up to 30 times more productive than the worst developers. This make procuring quality developers the most effective decision in managing a software project. The second important lesson is the benefit of code being looked at by multiple people. This is not to be interpreted as one large code review with all developers once per quarter. Instead code reviews seem to be more beneficial with only a few developers, and done as frequently as possible.

  • Bruno Figares
    2018-11-22 23:03

    garbage

  • Brett
    2018-11-20 04:58

    This book gets 4 stars for being pleasant to read, well-structured, and efficiently impactful. I would have liked to see more studies supporting the facts and fallacies. A more accurate title for this book might be “55 Opinions and Fallacies Which are Probably Mostly Supported by Evidence”. Since Glass has a ton of industry experience, academic experience, and he’s written 25+ books it’s probably safe to accept his opinions for facts. He is very aware that some facts and fallacies will be controversial and addresses those dissenting opinions. The book also feels a little naive at times as it seems to argue that a lot of problems in software engineering are the result of management just not understanding engineering. I agree management could benefit by being more understanding of engineers, but it goes both ways and I think engineers need to be much more understanding of the realities of running a business. The number one takeaway from this book is how valuable it is to be able to bridge the gap between engineering and management. If you are able to do that, and do it well, you will be extremely impactful in an organization.Pleasant to ReadGlass’s personality comes through in his writing which makes the book feel less academic and more fun to read (he is known as the “premier curmudgeon” of software practice). The writing is informal, but gets right to the point. Also, the book is succinct and moves along pretty quickly – each fact or fallacy only covers a couple of pages.Well-StructuredThink of this book more like a table of contents. Each fact or fallacy is quickly summarized with a discussion and controversy. Then Glass provides references and sources if you want to look further. A lot of the sources are his own books. A lot of the sources are well-regarded books like the Mythical Man Month, Peopleware, and Refactoring.Efficiently ImpactfulThis book gets right to the point which means you can read it fast, and still get a lot out of it. I found myself agreeing with most of the facts and fallacies, disagreeing with a few, and being surprised by a few new ideas. I learned the most from the sections about estimation and maintenance. I also loved his opinion that we should teach new programmers to program by having them read programs (not write them).More Opinion than FactA lot of the so-called “facts” feel more like opinions. But they are probably right, so it doesn’t matter much. Regardless, it would be nice to see more studies backing up the facts. For example, the fact that “For every 25 percent increase in problem complexity, there is a 100 percent increase in solution complexity” is a pretty extraordinary claim. It seems like it’s probably true-ish, but it seems too clean-cut to be true. How can this be true in every setting? Another one is “Enhancements represent roughly 60 percent of maintenance costs.” Is this really true? And how many studies have replicated these results? You’d need to go and do the due diligence to be sure.ConclusionOverall, I highly recommend this book for software engineers and managers of software engineers. It is a quick read and will have an immediate pay-off. If you learn one thing from this book it is the importance of being able to explain to management why things should be done a certain way. If you can explain the why and explain it well you will have happy managers and happy engineers.

  • Karl Becker
    2018-12-02 01:02

    Full disclosure: I did more skimming of this book than focused reading. Still, I think it had some good lessons to take away, and can have its main points be digested rather quickly. How I read it was I read the author's introduction, which discusses his methodology of putting together this book, and then went through each of the facts and fallacies listed by the author and thought about how that may or may not apply to my software development team. I took notes on each one that I thought would have pretty good applicability to my team, and read those entries thoroughly. Because it's an older book, there are certainly some things that are a little outdated now on the cusp of 2018, but there's plenty here that is still just as true now as it was 10, 20, or 30 years ago.A few of my favorites, which could be considered controversial to some:* Errors tend to cluster. "Half the errors are found in 15% of the modules."* Maintenance is a solution, not a problem.* "Understanding the existing product" consumes 30% of the total maintenance time and is the dominenant maintenance activity. So maintenance is more difficult than initial development.* For every 25% increase in problem complexity, 100% increase in complexity of the software solution. The answer to a feasibility study is almost always "yes" - be wary of doing them on your team if you already have a desired outcome in mind, and always welcome the answer of "no." (I felt really good about this, because our team did a feasibility study recently and rejected the feasibility of doing something!)

  • Betty
    2018-12-14 20:57

    I liked some of the facts and their presentation but most is just a repetition of the author's previous work. I give him credit for all the work he has done! It's a great legacy. Just this type of a recipe book with a general attitude 'that's how this is, learn from me' does not resonate well with me. Some facts I liked and the references are helpful, if I need to look up a specific number.

  • Eduardo Díaz
    2018-11-23 00:50

    Contiene algunos de la aforismos conocidos. Pero no hay mucho más de lo que ya han dicho otros autores, como Brooks. Es entretenido y fácil de leer, pero no se si sea de gran aporte. Las 3 estrellas porque algunos de los dichos de Glass son muy ciertos.

  • Melvin Hazeleger
    2018-12-15 04:16

    Very good book. More fact intense than other books and if a fact/fallacy is opinion-based, it is at least stated as such.Since it is published in 2002 it might not be as up to date anymore, but many facts stand the test of time.

  • Philipp
    2018-12-08 05:11

    55 'facts' and 10 'fallacies' on the practice of software engineering: from managing, to planning, to programming etc. The structure is always the same, first the fact in one or two sentences, then one or two pages discussing the fact, then a page of the controversy (criticisms, or opponents of the 'fact'), then some sources. As such, the book is quick reading, you can read one or two 'facts' on the bus.Of course, the author's opinions shine through - he really doesn't like vendor salespeople (they hype too much), managers should stay out of the way of programmers since managers don't know what programming is about, etc.Some of these facts I've heard by now (the book is, after all, 12 years old), some of them overlap with The Mythical Man Month, some I hadn't heard before, some don't apply to me (bioinformatics programming: where neither plan nor design prevail).Just a taste for a couple of interesting facts and fallacies: - projects run late mostly because of faulty schedules and estimates- most errors are errors of omitted coding logic (hard to test for)- 100% test coverage is impossible (this is now widely accepted) and useless anyway- the (average) wisdom of the software field is not increasing (what experienced programmers learn is evened out by newbies arriving, and for a long time the number of newbies is growing)- programming should be taught by reading code instead of writing it (I don't agree with that one - too frustrating to read code if you've never before seen it)- better software engineering development leads to more maintenance, not less (possibly because it's easier to add new features and change old ones)- my favourite 'fallacy': 'software needs more methodologies' - nicely summarized here: http://programming-motherfucker.com/ (NSFW language)Recommended for: All programmers.Bonus best quote (in itself a quote):Reality is the murder of a beautiful theory by a gang of ugly facts.

  • Evan Wondrasek
    2018-11-25 01:56

    What I liked: The author has decades of personal experience in software development, and the wisdom he's gathered over the years is absolutely apparent. This book was littered with valuable anecdotal gems that all software developers should hear.What I didn't like: So much of this book was anecdotal. Don't get me wrong, I'm can appreciate anecdotes from a wise individual, but it's hard for me to accept "facts", especially with specific numbers attached to them, with nothing but anecdotal evidence provided. Several times while reading this book I was astounded by what I read; in one section where he was citing his sources, he refused to cite the source for a fact because "I prefer not to provide sources for these alternate and erroneous views of sotware quality [...]". Many of the sources cited in this book are in references to books written by the author himself, which is a red flag in my world of reference integrity.I've read several software development books, and writing quality matters in topics like these. The author's writing quality was fair, but this book could benefit from another revision by an editor.

  • Boris
    2018-12-12 20:50

    Книга толковая. Читается довольно легко - как художественная, но с айтишным сюжетом. Ее вполне можно читать параллельно с чтением например какой-нибудь сугубо технический литературы типа Рихтера, Албахари, Эспозито и т.п. В голове оно не должно перемешаться. Читаю эту книгу уже не первый раз. Первый раз еще начинающим разработчиком - интересно, но тогда за живое не задело. И теперь перечитал уже имея за плечами боевой опыт разработчика ПО. Структурировал в голове мысли по теме. С фактами и заблуждениями трудно не согласиться. В основе них здравый смысл, а это пожалуй главный критерий. Большинство фактов и заблуждений актуальны и сейчас несмотря на возраст книги. Да и сам автор мне в дедушки годится, много повидал, опыта у него вагон и маленькая тележка. При всей кажущейся динамичности нашей айтишной сферы со всеми ее новыми технологиями, проблемы и нюансы описанные еще в прошлом веке не изменились. Мой вердикт - читать стоит!

  • David
    2018-12-01 22:06

    The facts and fallacies presented in this book are very interesting in the sense that we are aware of many of them and no one does anything about it. I really liked how the author focus a lot on maintenance; something that programmers spent most of their time doing, but very few realize of its difficulties and time-span. One thing that bugs me is related to the book references for some of the facts/fallacies. Most of them have really good resources (from NASA for example); however, many other resources come from his own work. I would've had more confidence if there were less citations from his own work. Not saying that having own work citations is bad, but having many of them seem suspicious. I do recommend the book to any software developer of any level of expertise. Even managers can get a huge benefit from reading it.

  • Khanh
    2018-11-19 04:03

    Some facts I used to be believe become fallacies in the author point of view.Some of author's opinions agreed with mine. This book is good for introducing to the Software Engineering field.The maintainance part is one of the best I think. Cause he pointed out many of the problems when running a maintainance project.His definition about quality really impressed me. Quality should be measured base on multiple perspective instead of Customer satisfaction + On Schedule and on Budget. They are some (from the management point of view maybe enough) but not all. Technologist expectations are also important. That's why we should reduce the distance and make our communication clear between Tech guys and Manage guys.Nice book and worth thinking after read it.

  • Marcin Malinowski
    2018-11-14 21:10

    This book can really get on your nerves. Author seems too self-confident, as resources he points mainly his own works, material may look outdated here and there, I don't think he gets XP...But don't be fooled! There is a lot of good stuff in it. Especially about the maintenance (I fully agree with author that it's very neglected subject) e.g. "Fact 46: Maintenance is solution, not a problem". The more maintenance you have, the more successful is your product. WAT!? Stop and think about it. Most of the book is like that! Even if you don't agree with those facts & fallacies you start to think for yourself and sometimes questions are more important than definite answers.

  • Greg
    2018-11-29 21:01

    This book is kind of motherhood and apple pie for software engineers and provides the engineer's perspective on why software projects fail. Nobody has really figured out how to make good software on time and on budget. This book just brings some reality to the picture that the hucksters with the latest fad - CASE! Agile!, ... - still don't have all the answers.

  • Andreea Lucau
    2018-12-04 05:11

    Interesting, a little bit from a different "age" (just 12 years ago seems so far away).Some of the facts surprised me, but most of them are just things you kind of feel. One of the most surprising ones for me was one related to cause of errors: most of the errors are due to omission and case that were just not cover in the code.

  • Jesper
    2018-11-20 02:11

    A lot of interesting stuff in this book. I was surprised to find that so much of what seems like current material has been around for so long.I found this book referenced in Code Complete as a good intro book to software engineering, I would agree with that assessment. This book makes for a good complement to Clean Coder, in particular the "facts" regarding maintenance.

  • John
    2018-12-14 03:13

    Meh.If you want a good read on evidence based software development, go to Making Software instead. I don't really rate the rigour in the choice of sources (quotes his own studies here and there), nor necessarily draw the same conclusions.

  • Angelo
    2018-12-06 00:08

    I did not really enjoy reading this book. It felt very idiosyncratic on the side of the author: most references in the book are actually self-references, and for a book written in 2003, it feels really dated. I would not recommend this book.

  • Robert Chapman
    2018-12-02 04:17

    Although published in 2002, this is still one of the best books I have read about the software industry. ALmost 10 years later the facts in this book still ring true today. This is a must read for everyone from coder to executive.

  • Steve
    2018-11-21 23:09

    A good collection explaining best practices in the field of software development. If you've been in the field for a while, you'll have already figured a lot of this stuf out, but it's good to see it collected in one place.

  • Joe
    2018-11-27 02:15

    Jewel of a book and a great source for quotes to use with your management.

  • Mark
    2018-12-14 04:51

    Decent overview of various practical issues in programming.

  • John Sovereign
    2018-12-11 02:17

    When I start a new working relationship, I usually ask if they’ve read this book. If they haven’t I usually restart the relationship with a little microservice “book club”. ;-)

  • Zeyad Etman
    2018-12-06 03:48

    i was confuesd about something, and this book make me more confused.i think i should read it again or take the facts i agree with only.in general i loved this book.

  • Alex Allain
    2018-12-15 21:53

    This book is depressing; it's too easy to see your own mistakes in it. Of course, that's very valuable. This is more philosophy than actionable information.

  • Christer
    2018-12-06 03:53

    Review here

  • Nathaniel
    2018-12-01 21:06

    Really dated.

  • Mohammad Fouad
    2018-11-25 22:58

    Timeless book. I guess I would not appreciate it until I gained practical experience in the field. A must read for any senior developer or team leader.