Второй день подряд занимался классификацией и сохранением перечня и библиотеки профессиональной литературы. Результатами этого можно назвать с десяток разных книг, добавленных в корпоративный sharepoint, для развития коллег и своего собственного удобства. Большинство из книг я читал и в определённом роде люблю, некоторые - пробегал глазами, некоторые и вовсе не открывал толком. Но, том не менее, я уверен, у каждого эксперта и специалиста должна быть такая подборка. Вглубь своей специализации - кодинга, тестирования и архитектуры, так и в перефирии - в смежные области, языки, паттерны и методологии управления, хотя, как обычно, по иронии судьбы, это должно больше волновать и занимать в развитии начальство.
Итак, отойдя от рутины, вероятно, пополняемый список "хорошей" литературы. Многие из книг, что стоят у меня на полке или те, которые мне сложилось прочесть, сюда не войдут из-за того, что они недостаточно хороши и конечно совсем не Must Read.
Программирование и БД
Бьерн Страуструп - Язык программирования С++.
Книга в лишних представлениях не нуждается. Это библия языка от его создателя.
Том Сван - Освоение Borland C++. Для меня серия из этих трёх книг, плюс один справичник стала первой стоящей книгой по программированию, на основе которой я написал не так уж и мало программ на C и CPP. В этой серии описывается язык от самых простых случаев на си до функционального ООП программирования, в том числе с использованием STL. Несмотря на то, что в названии фигурирует Borland, эти книги в первую очередь о языке, хотя некоторые особенности в дальнейшем, безусловно стали для меня полезными при использовании Borland Builder \ Embarcadero Studio. В заключение скажу, что у автора очень лёгкий язык, и от него же существует книга по ассемблеру, которую я, как не знаток, не берусь судить.
А. Я. Архангельский - Программирование в C++ Builder 6 и 2006. Это, пожалуй лушая, наиболее полная и доступная книга по IDE Borland Builder. У меня побывали на руках книги начиная с 4ого до 2006ого, но по сути, они лишь отличались в последующих книгах лишь описанием дополнительной функциональности, а так же к изданию прилагались справочники по языку\среде и описание особенностей работы с сетевыми технологиями. Эта книга была основной рабочей лошадкой вместе с книгой Страуструпа и постоянно была со мной.
Д. Кнут - Искусство программирования. Классика жанра, ныне семитомник, примеры алгоритмов и идеологии языков программирования.
Г. Уоррен - Алгоритмические трюки для программистов. Более известная как Hacker's Delight. Если честно, то я использовал её куда как чаще, чем Кнута. В книге от корки до корки - практика, которой грех не пользоваться.
Дж. Сик, Л. Ли, Э. Ламсдэйн - C++ Boost Graph Library. Справочник по Boost.
Qt 4: Программирование GUI на С++ Изд. 2-е. Книга от создателей кроссплатформенной библиотеки.
Троелсен Эндрю - Язык программирования C# 2010 и платформа .NET 4Начиная с .NET 2, эта книга, после долгого выбора, оказалась наиболее полной и удачной для понимания всего подхода к разработки ПО на от Microsoft.
Молли Э. Хольцшлаг - Использование HTML 4. Книги от Молли - это что-то волшебное, так, не особо интересуясь после HTML я с упоением читал её книги по Flash и Actionscript. И эта книга - лучшее и исчерпывающее издание, что было написано про до-веб-два-нольную эпоху и про HTML4, просто, что младенцу написать портал на Dynamic HTML + CSS не составит большого труда.
Питер Лабберс - HTML 5 для профессионалов. К сожалению, по HTML5 от Молли книги я пока не увидел, но в данный момент я читаю именно эту книгу.
Максим Кузнецов, Игорь Симдянов - MySQL на примерах. К сожалению, с книгами по БД всё обстоит из рук вон плохо, и единственная книга, задержавшаяся на моей основной полке стала именно эта, реальная и практичная книга. Ни по Interbase, ни по Oracle мной подобного уровня качества и доступности найдено не было. По самому же SQL лучше либо использовать один из многочисленных интерактивных сайтов, либо классику жанра:
Грабер М. - SQL. SQL и всё про него.
Марк Лутц - Изучаем Python. Моя рабочая лошадка в мире Python.
Хассан Гома - UML-проектирование систем реального времени параллельных и распределенных приложений. Я достаточно давно искал адекватную книгу по UML, но лишь когда получив практический опыт длиной в несколько лет, до меня дошла эта книга, по иронии судьбы, сильно кореллируя со спецификой моей работы. Книга очень подробная, и наконец-то, в отиличие от высокоуровневых или бизнес UML-моделей описывает реальные методы построения UML моделей для ПО как высокого, так и низкого уровня.
Barr Michael - Programming Embedded Systems in C and C++. Эта книга описывает специфику разработки приложений под встроенные системы. Подобная книга существует для специфики GNU GCC, однако в реальности наиболее применима именно это издание, т.к. оно наиболее универсально для понимание в свете применения специфичных компиляторов и систем для встроенных систем.
ANSI C90\99 стандарты.
Законы Мерфи для программистов и инженеров.
Тестирование
Бейзер Б. - Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем. Пожалуй, очень сложно найти универсальную и полную книгу по тестированию ПО. Лучшая книга - это книга опыта и допытывания до сути, метод проб и ошибок. И рекомендации и внутренние требования компании. Но, тем не менее эта книга наиболее близко описывает теорию реального тестированию систем.
Кент Бек - Экстремальное программирование: разработка через тестирование.Наиболее реалистичный подход к тестированию и написанию хороших приложений описывает эта книга. С другой стороны, для embedded RT-систем TDD непременим.
Jeff Tian - Software Quality Engineering : Testing, Quality Assurance, and Quantifiable Improvement. Самой лучшей книгой по QA и тестированию для меня оказалась эта, так как она весьма подробно, с практической точки зрения описывает теорию тестирования ПО.
Glenford J. Myers, Corey Sandler, Tom Badgett, Todd M. Thomas - The Art of Software Testing. Лучшей англоязычной теоретической книгой по тестированию для меня оказалась эта книга. В ней не так много примеров и практики, но она имеет хорошее структурное построение и проливает свет на создание хороших требований к будущему легко проверяемому ПО и их прочтение для тестирования.
Elfriede Dustin - Effective Software Testing: 50 Specific Ways to Improve Your Testing. Это ещё одна книга по тестированию ПО, которую я могу отметить.
Методология
Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес - Приемы объектно-ориентированного проектирования. Паттерны проектирования. Я не могу однозначно выбрать книгу по паттернам проектирования, т.к. эту книгу я читаю, когда надо задуматься или проанализировать глубоко и вдумчиво проблематику, но так же пользуюсь и второй:
Фримен Эр., Фримен Эл. - Паттерны проектирования. Когда надо найти подход быстро и просто, и не всегда серьёзно.
Мартин Фаулер - Рефакторинг. Улучшение существующего кода. Эту книгу проще всего описать так: когда мне говорят "переделай этот модуль" - я обращаюсь к ней.
Роберт Мартин - Чистый код. Создание, анализ и рефакторинг. Тем не менее существует этот более основательный, философский труд. Чтобы писать код чисто, безусловно, надо прочесть эту книгу, неспеша и вдумчиво.
Макконнелл С. - Совершенный код.. Однако есть одна книга, которую обязан прочитать любой специалист и профессионал. Именно эта книга описывает все законы и внутренние нюансы разработки, написания, тестирования, поддержкой и управления программным продуктом. Читать. Обязательно. Без вариантов.
Дж. Ханк Рейнвотер - Как пасти котов. Наставление для программистов, руководящих другими программистами. Пособие для управление проектом и программистами, входящими в проект. Очень любопытное развивающее чтиво.
Законы Мерфи для тестирования и качества.
Авионика
TBD
DO-178B. Главный стандарт для разработки ПО в авиации.
NASA MC/DC. Этот стандарт определяет необходимый уровень и методологию покрытия критичного ПО для тестирования и сертификации по стандартам aerospace.
MISRA. Guidelines For The Use Of The C Language In Vehicle based software. Требования к ПО согласно европейский стандартам Motor Industry Software Reliability Association.
Вообще говоря, сложно выделить каких-то ТОП-5 книг. Если книги хорошие, то они остаются до тех пор, пока они востребованы. И сложно остановаться только на хороших, т.к. быт программиста и инженера - это постоянное обучение, гибкость и развитие. Где стоит остановиться на шаг - и ты уже не сможешь быть инженером-программистом, архитектором ПО. Или просто создателем.
P.S. в процессе написания поста нашёл любопытный сайт -
BookMix, который позволяет отметить прочитанные или запланированные к прочтению книги.