суббота, мая 06, 2006

Хорошие книги по организации кода

Мало знать базовые алгоритмы и синтаксис языка программирования. Надо еще и уметь работать с кодом таким образом, чтобы конечная программа получилась стабильной, масштабируемой, нужно уметь общаться с заказчиками, организовывать процесс работы, руководить программистами.
Хорошо бы книжки по этому поводу почитать, но книжек много разных, хороших и не очень, и не хочется тратить время на ерунду. Поэтому я тщательно отобрала лучшие книги на заданную тему. После долгих раздумий я написала в заголовке поста "книги по организации кода", сюда попадают и книги по работе с кодом, и книги по управлению проектами, и книги, которые рассказывают и о том, и о другом одновременно.

Я привожу ссылки на Amazon и Ozon, потому что участвую в их партнерских программах, то есть, если кто-нибудь что-нибудь по этим ссылкам купит, то мне упадет копеечка. Если вы ненавидете партнерские программы, то злобно сотрите ключик partner из URL'а и копеечка мне, соответственно, не упадет. Кроме того, все эти книги есть в более-менее крупных книжных магазинах, ну и в сети можно порыться, поискать.

Вот эти книги я прочла.


"Refactoring: Improving the Design of Existing Code", Martin Fowler

"Рефакторинг. Улучшение существующего кода" Фаулер М.
Мартин Фаулер доходчиво и с наглядными примерами рассказывает о том, как из плохого кода сделать хороший. Эту книгу я читала на русском и особенно хочется отметить прекрасный перевод. Я даже не поленюсь посмотреть кто именно переводил... Написано "Перевод С.Маккавеева".
"Рефакторинг" на Ozon.ru




"Design Patterns: Elements of Reusable Object-Oriented Software", Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
"Приемы объектно-ориентированного проектирования. Паттерны проектирования", Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.
Классическая книжка по паттернам. Паттерны проектирования на все случаи жизни, с примерами.
"Приемы объектно-ориентированного проектирования. Паттерны проектирования" на Ozon.ru




"The Pragmatic Programmer; From Journeyman to Master", Andrew Hunt, David Thomas
"Программист-прагматик. Путь от подмастерья к мастеру", Э. Хант и др.
Список советов с объяснениями. В том числе разобраны типичные ошибки и методы их исправления. Пожалуй, самая веселая из перечисленных здесь книг. Один пример с вертолетом чего стоит... это надо читать, так не расскажешь.
"Программист-прагматик. Путь от подмастерья к мастеру" на Ozon.ru




"The Mythical Man-Month: Essays on Software Engineering", Frederick P. Brooks
"Мифический человеко-месяц или как создаются программные системы", Брукс Ф.
Классическая книга по ведению проектов. Много рассказывается об ошибках совершенных в конкретных проектах. Несколько нудновата, до конца я ее так и не осилила.

"Мифический человеко-месяц" есть на lib.ru
"Мифический человеко-месяц" на Ozon.ru




"Code Complete", Steve McConnell
"Совершенный код", Макконнелл С.
Читаю сейчас. Пока рассказывается об организации архитектуры приложения, какие решения для каких типов проектов подходят, немного об общении с заказчиком. Живо и с юмором.
"Совершенный код" на Ozon.ru



Следующие книги я не читала, но слышала о них много хорошего, потому собираюсь прочесть. В описании то, что я о них слышала.


"Rapid Development", Steve McConnell
Обычно советуют в довесок к Code Complete.




"Extreme Programming Explained : Embrace Change", Kent Beck
Хорошее введение в экстремальное программирование.




"Programming Pearls (2nd Edition)", Jon Bentley

"Жемчужины программирования", Бентли Дж.
О том, как эффективно решать поставленные задачи.

"Жемчужины программирования" на Ozon.ru




"Agile Software Development", Robert C. Martin
"Быстрая разработка программ: принципы, примеры, практика", Мартин Роберт С.
Я заинтересовалась этой книгой после того, как полазила по сайту Object Mentor.

"Быстрая разработка программ: принципы, примеры, практика" на Ozon.ru




"Software Engineering: An Object-Oriented Perspective", Eric J. Braude
"Технология разработки программного обеспечения", Брауде Э.Д.
С одной стороны вроде как классическая книга по разработке. С другой - ее очень ругают за академичность, оторванность от реальности.

"Технология разработки программного обеспечения" на Ozon.ru




"Peopleware", Tom Demarco, Timothy Lister
"Человеческий фактор: успешные проекты и команды",
Том Демарко, Тимоти Листер

Книга по организации работы программистов, которую очень рекомендует Джоэл Спольски.
Том Демарко написал еще и художественное произведение об управлении программными проектами, The Deadline называется (есть и на русском). Триллер, наверное. :-).

"Человеческий фактор: успешные проекты и команды" на Ozon.ru
"Deadline. Роман об управлении проектами" на Ozon.ru




"Large-Scale C++ Software Design", John Lakos
Несколько устаревшая, но тем не менее очень хорошая книга по построению больших приложений на C++.




"Death March: The Complete Software Developer's Guide to Surviving "Mission Impossible" Projects", Edward Yourdon
"Путь камикадзе, Как разработчику программного обеспечения выжить в безнадёжном проекте", Э. Йордон
Название говорит само за себя :-)


"Путь камикадзе, Как разработчику программного обеспечения выжить в безнадёжном проекте" на Ozon.ru



Если вам есть что добавить, поделитесь, напишите в комментарии.

Ссылки по теме:
Категория Управление на Маниакальном Веблоге. Пока там только одна статья, но, я надеюсь, будут еще.
Художественная литература для программистов

26 коммент.:

Dr.On комментирует...

Ларри Константин, "Человеческий фактор в программировании"
Сборник статей на различные темы - организация проектов, юзабилити, периодически поругивает Билли :)
Мне понравилось.

ivank комментирует...

"Практика программирования", Р. Пайк, Б. Керниган
"Правила прогроаммирования на C&C++", Аллен Голуб

Обе книги не открывают америки, зато очень доходчиво объясняют что такое хорошо и что такое плохо.

Raider комментирует...

Плюс, в случае C++, книги Мэйерса, Саттера и Александреску.

И еще Демарко, Листер, "Человеческий фактор: успешные проекты и команды".

Alena комментирует...

Плюс, в случае C++, книги Мэйерса, Саттера и Александреску.

О, книги по С++, STL - это отдельная большая тема..

И еще Демарко, Листер, "Человеческий фактор: успешные проекты и команды".

А это было :-)

Nop комментирует...

Зря пренебрежительное отношение к Дэ Марко "Deadline".
Очень захватывающая и Умная книга.
Всем советую.

бомж комментирует...

Все книги мусор, их выпускают лишь для того, чтобы заработать. Во всех прописная истина под разными углами. Секретами делиться никто не будет - зачем плодить конкурентов?

Сергей Жуковский комментирует...

http://s.codeby.net/2006/05/08/organizatsiya-koda-kak-vazhno-ponimat-eto/ - спасибо клева.

NetImperia комментирует...

Первую можно скачать тут :
http://web-notes.ru/docs/Martin_Fowler_-_Refactoring/Martin_Fowler_-_Refactoring_(rus).pdf

Анонимный комментирует...

M. Fowler - Patterns of Enterprise Application Architecture

sasha_gud комментирует...

Спасибо за интересную подборку книг. Кое-что очень захотелось прочитать.

kpumuk комментирует...

Присоединюсь к комментарию анонимуса: "Архитектура корпоративных приложений" Фаулера - очень интересная и познавательная книжица.

По поводу "Agile Software Development", Robert C. Martin хочется сказать, что русский перевод - гадость. Если есть возможность - прочитайте в оригинале, книжка интересная.

А вообще подборка хорошая, заинтересовали Code Complete и "Rapid Development", обязательно прочитаю. Спасибо!

Prokrust комментирует...

Фаулер и банда четырех рулят :). Добавлю:
1. Книгу Фаулера "UML основы". Прочтите, даже если не собираетесь их применять. Ключевые куски кода можно очень доходчиво нарисовать.
2. Кент Бек "Экстремальное программирование - разработка через тестирование". РУЛЕЗ! Хочу программировать как Кент Бек :).
3. Джеф Раскин "Интерфейс". От одного из создателей Мака. Как правильно создавать формы.
И кстати, последнее издание Страуструпа по С++ вполне читабельно :).

Alena комментирует...

Кент Бек "Экстремальное программирование - разработка через тестирование". РУЛЕЗ!

Это которая "Test-Driven Development by Example"? Я все собираюсь ее почитать. А можно поподробнее, чем именно она так понравилась? Ее нормально читать не читая Extreme Programming Explained?

Джеф Раскин "Интерфейс".

По поводу дизайна интерфейсов, вообще о юзабилити... Я слышала много хорошего о книге "The Design of Everyday Things" by Donald A. Norman ("Дизайн привычных вещей" Дональд А. Норман).

Alena комментирует...

По поводу "Agile Software Development", Robert C. Martin хочется сказать, что русский перевод - гадость. Если есть возможность - прочитайте в оригинале, книжка интересная.

Кстати, хорошо, что зашла речь про качество перевода. Потому что из-за плохого перевода книга может стать не просто чуть хуже - плохим переводом ее можно просто убить. У меня валяется пара книжек, которые из-за перевода читать невозможно вообще.
По поводу перечисленных здесь книг я уже сказала про "Рефакторинг" - прекрасно переведен. "Мифический человеко-месяц" я тоже читала в переводе, перевод нормальный, но я не уверена, что именно этот перевод продается на Болеро.

Спасибо!

Всем пожалуйста :-)

Prokrust комментирует...

Ее нормально читать не читая Extreme Programming Explained?

Даже нужно! В планировании я для себя ничего не нашел :(. "Test-Driven Development by Example" соответствует названию - автор подробно показывает, как шаг за шагом он добивается выполнения задачи. И показывает что делать если задача не решается чохом. Приводятся паттерны тестирования и XUnit. Хорощий пример как делать максимально быстро и надежно, не заморачиваясь на архитектурных решениях. Желательно предварительно прочесть Рефакторинг и Паттерны.

Анонимный комментирует...

рефакторинг советую только хорошо знающим теорию читать. иначе эта книга принесет оч. много геморроя в виде нерабочего кода.
З.Ы. с некоторыми положениями автора я не совсем согласен (может потому что примеры не совсем удачно выбраны?), но в целом книжка отличная.

kpumuk комментирует...

Кстати, хорошо, что зашла речь про качество перевода. Потому что из-за плохого перевода книга может стать не просто чуть хуже - плохим переводом ее можно просто убить. У меня валяется пара книжек, которые из-за перевода читать невозможно вообще.

Добавлю тогда и про "M. Fowler - Patterns of Enterprise Application Architecture". Перевод слишком заумный. С одной стороны хорошо: ее не получится читать как женский роман, в один глаз влетело, в другой - вылетело. Но, имхо, можно было бы и попроще :-)

Анонимный комментирует...

Alister Cockburn , "Agile Software Development"
Алистер Кобёрн, "Быстрая разработка програмного обеспечения"
про быстрые, гибкие методики разработки вообще-- со стороны методиста :) Сравнивается разработка,методики с тренировками боевых искусств, обучение через действие, три уровня понимания методики\искусства -- для новичка, опытного и мастера. Даются советы, когда, какую и в каком объеме методику применять. По стилю изложения чем-то напоминает "Pragmatic Programmer" для PM-ов

Outlook Blogger комментирует...

Читал "путь камикадзе" - некоторые вещи стоит взять на вооружение.

Denis комментирует...

Читал все указанные книги - готов согласиться, они лучшие в своем роде... Добавлю свои пять копеек в общий список.
Карл Вигерс - "Разработка требований к программному обеспечению". Название говорит само за себя, ИМХО лучшая книга подобного рода.
Эд Салливан - "Время - деньги". О создании работоспособной команды из разработчиков. Великолепная книга.
Рейнвортер - "Как пасти котов". Специфика управление разработчиками. Оценка - посередине между "классно" и "средне".
Влиссидес - "Применение шаблонов проектирования. Дополнительные штрихи". Тот самый Влиссидес из "банды четырех", создавшей книгу "Паттерны...".
Уже упоминавшийся ДеМарко - "Deadline: Роман об управлении проектами". О том, как надо руководить проектами, в форме художественной книги.

dask-net комментирует...

Прелестная подборка ( или выборка :о) ), спасибо!!!

Анонимный комментирует...

sorry za translite:

Kniga "Algorithmics" Avtor ne pomnju.
Tolko na anglijskom yazike. vse ostalnoe moge6 zabit. kstati eto kasaetsa tvoej problemi po pods4etu vistavlennih bitov! uda4i

rust комментирует...

"Разработка через тестирование" Кента Бэка хороша тем, что очень, очень, очень доходчиво объясняет что такое юнит тесты, как их писать и для чего использовать. Первые две главы это пример написания проги в стиле TDD, я, что называется, плакал читая. Остальное паттерны тестирования. В отличии от концовки фаулеровского рефакторинга весьма полезно.

Анонимный комментирует...

Object-Oriented Design Heuristics
By Arthur J. Riel

Доходчиво и просто.

Анонимный комментирует...

Макконелл супер)) рекомендую всем))

Maksim Melnikau комментирует...

Слишком много теории, слишком мало практики из реальной жизни, где необходима и полная обратная совместимость, и разрабатывать нужно быстро с учётом различных специфик, а и иногда и грязный hobby-проект "взлетает", где вместо красоты, гораздо важнее скорость конкретных задач.

В общем, ещё 2 книги, которые мне очень нравяться:
The Architecture Of Open Source и The Architecture Of Open Source Applications, Volume Ii