<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-8666058998503471555</id><updated>2012-05-20T23:13:46.979-07:00</updated><category term="Дон Бокс" /><category term="Алан Шаллоуей" /><category term="Тестирование и отладка" /><category term="Стив Макконнелл" /><category term="Джеймс Коплиен" /><category term="Бьерн Страуструп" /><category term="Гради Буч" /><category term="Тим Листер" /><category term="SICP" /><category term="Управление проектами" /><category term="Мартин Фаулер" /><category term="Дейв Томас" /><category term="Брайан Керниган" /><category term="Ли Кэмпбел" /><category term="Фредерик Брукс" /><category term="Боб Мартин" /><category term="Роберт Гласс" /><category term="ООП" /><category term="Энди Хант" /><category term="Бертран Мейер" /><category term="Джон Роббинс" /><category term="С++" /><category term="Альберт Эйнштейн" /><category term="Дж. Ханк Рейнвотер" /><category term="Скотт Мейерс" /><category term="Опрос" /><category term="Философия программирования" /><category term="Джеймс Р. Тротт" /><category term="Архитектура" /><category term="Джоэл Спольски" /><category term="Эдвард Йордон" /><category term="Крис Дейт" /><category term="Шаблоны проектирования" /><category term="Том Демарко" /><title type="text">Цитатник</title><subtitle type="html">Много мыслей, хороших и разных...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default?start-index=26&amp;max-results=25" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/ru-quotes" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogspot/ru-quotes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-512591447786177354</id><published>2012-02-11T10:24:00.001-08:00</published><updated>2012-02-11T10:24:06.817-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Бертран Мейер" /><category scheme="http://www.blogger.com/atom/ns#" term="ООП" /><title type="text">Об иерархиях наследования</title><content type="html">&lt;p align="justify"&gt;Очередная интересная мысль от Бертрана Мейера, на этот раз касается она проектирования иерархий объектов:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Произвольно или нет, но многие учебные презентации создают впечатление, что структуру наследования следует проектировать от наиболее общего (верхней ее части) к более специфическим частям (листьям). В частности, это происходит потому, что лучший способ &lt;strong&gt;описать&lt;/strong&gt; существующую структуру – это идти от общего к частному, от фигур к замкнутым фигурам, затем к многоугольникам, прямоугольникам, квадратам. Но лучший способ описания структуры вовсе не означает, что он является и лучшим способом ее &lt;strong&gt;создания&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;В идеальном мире, населенном совершенными людьми, мы бы сразу же обнаруживали правильные абстракции, выводили бы из них категории, их подкатегории и так далее. &lt;strong&gt;В реальном мире, однако, мы часто вначале обнаруживаем частный случай и лишь потом открываем общую абстракцию&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;И это, действительно так. В некоторых случаях можно довольно точно нарисовать всю иерархию классов, когда четко известны категории бизнес-области и предпочтительный способ их категоризации в программной модели. Причем второе условие тоже очень важно, поскольку одну и ту же систему можно представить в виде разных иерархий, каждая из которых будет предпочтительнее в том или ином случае.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-512591447786177354?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/512591447786177354/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2012/02/blog-post.html#comment-form" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/512591447786177354" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/512591447786177354" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2012/02/blog-post.html" title="Об иерархиях наследования" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-6487597133360759008</id><published>2012-01-29T13:18:00.001-08:00</published><updated>2012-01-29T13:18:14.466-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Бертран Мейер" /><category scheme="http://www.blogger.com/atom/ns#" term="ООП" /><title type="text">Сказка о повторном использовании</title><content type="html">&lt;p align="justify"&gt;Очередная цитата из книги Бертрана Мейера “Объектно-ориентированное конструирование программных систем”. &lt;/p&gt;  &lt;p align="justify"&gt;Эта сказка опубликована в разделе “Сказка о поиске классов”, но мое название, мне кажется более уместным (после прочтения будет ясно, почему).&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Жил да был в стране ООП молодой человек, которому страстно хотелось узнать секрет нахождения классов. Он расспрашивал всех местных мастеров, но никто из них не знал этой тайны.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Будучи подвергнутым публичной епитимии Схемом-Блоком - аббатом Священного Порядка Стрелок и Пузырей, - он решил, что тому известна истина и настал конец его поискам. С трудом он отыскал пещеру Схема, вошел в нее и увидел Схема, погруженного в поиски вечного различия между Классами и Объектами. Осознав, что не здесь обретается истина, без единого вопроса он покинул пещеру и отправился в дальнейшие странствия.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Однажды он нечаянно подслушал разговор двух людей, один из которых занимался вталкиванием какого-то груза в тележку, а другой немедленно его выталкивал. Они шептались о неком старце, знающем секрет классов. Молодой человек решил найти этого великого Мастера. Много дорог он прошел, на многие горы он поднимался, многие реки пересекал, пока не нашел убежище Мастера. Поиски продолжались так долго, что он давно уже перестал быть молодым человеком. Но, как всем пилигримам, ему еще предстояло пройти очищение в течение тридцати трех месяцев, прежде чем он был допущен к объекту своих поисков.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Наконец, в один из темных зимних дней, когда снег покрыл все окружающие горные вершины, он вошел в комнату Мастера. С бьющимся сердцем, пересохшим от волнения голосом он задал свой сакраментальный вопрос: &amp;quot;Мастер, как мне найти классы?&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Мудрец склонил свою голову и ответил медленно и спокойно: &amp;quot;Возвращайся назад, откуда пришел. Классы уже найдены&amp;quot;.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Оглушенный, он и не заметил, как слуги Мастера выводили его прочь. &amp;quot;Мастер&amp;quot;, - теперь он почти кричал, - &amp;quot;пожалуйста, еще только один вопрос. Как называется эта история?&amp;quot; Старый Учитель покачал головой: &amp;quot;Разве ты еще не понял? Это сказка о повторном использовании&amp;quot;.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;К сожалению, что бы нам ни говорили адепты объектной ориентации, на сегодняшний день повторное использование в основном ограничено библиотеками, и в меньшей степени повторным использованием бизнес-классов. Конечно же, у ООП масса других полезных свойств, но без должного мастерства использовать повторно части бизнес логики весьма сложно.&lt;/p&gt;  &lt;p align="justify"&gt;Мейер в своей книге повторяет, наверное, десятки раз о том, что в современном мире проектирование должно сводиться не к “выявления” новых абстракций, а к выбору готовых классов, которые можно было бы использовать повторно.&lt;/p&gt;  &lt;p align="justify"&gt;На данный момент, это все еще является сказкой и я, честно говоря, сомневаюсь, что она когда-либо станет былью.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-6487597133360759008?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/6487597133360759008/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_29.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6487597133360759008" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6487597133360759008" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_29.html" title="Сказка о повторном использовании" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-8939011040191821977</id><published>2012-01-22T11:55:00.001-08:00</published><updated>2012-01-22T12:18:02.665-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Бертран Мейер" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">Как важно быть скромным</title><content type="html">&lt;p align="justify"&gt;Очередная потрясающая цитата от Бертрана Мейера:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Великого проектировщика отличает не то, что у него мало плохих идей, а его умение отказываться от них, умение подавлять свою гордость и отбирать хорошие идеи независимо от того, сгенерированы они им самим или кем-то другим. Некомпетентность и неопытность являются очевидными препятствиями в борьбе за верное решение. Зазнайство может быть столь же плохим.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;А добавить, толком, и нечего:) Интересно было бы узнать, какое количество проектов было угроблено из-за упрямства менеджера, главного архитектора или ключевого человека со стороны заказчика.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-8939011040191821977?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/8939011040191821977/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_6499.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/8939011040191821977" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/8939011040191821977" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_6499.html" title="Как важно быть скромным" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-3434387470259260955</id><published>2012-01-22T10:08:00.001-08:00</published><updated>2012-01-22T10:08:12.314-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Бертран Мейер" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">О сопровождении</title><content type="html">&lt;p align="justify"&gt;Снова добрался до двухкилограммового талмуда Бертрана Мейера &lt;a href="http://www.ozon.ru/context/detail/id/2336754/"&gt;«Объектно-ориентированное конструирование программных систем»&lt;/a&gt;. В одной из глав об объектной методологии разработки ПО, Мейер пишет:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt;Опыт играет ключевую роль в построении больших систем, состоящих из тысяч классов и десятков тысяч строк кода, - здесь опыт незаменим.&lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;i&gt;Такой опыт должен включать все этапы жизненного цикла ПО: анализ, проектирование, реализацию и, конечно же, сопровождение (&lt;b&gt;заключительный аккорд, который только и показывает, выдержали ли ваши решения, принятые на предыдущих этапах, проверку временем и изменениями&lt;/b&gt;).&lt;/i&gt;&lt;/p&gt;  &lt;p align="justify"&gt;И хотя здесь речь идет о методологии разработки ПО, эту же идею можно применить и в других контекстах. Так, например, именно поэтому я не слишком доверяю консультантам или архитекторам, которые не занимаются кодированием. В первом случае, консультант, по сути, не несет ответственности за принятые им решения; и дело здесь не только в отсутствии ответственности, но и в том, что у него просто может не быть опыта проверки временем своих собственных решений.&lt;/p&gt;  &lt;p align="justify"&gt;С архитектурой дела обстоят несколько лучше, поскольку архитектор зачастую остается с командой на протяжении всего жизненного цикла. Но если архитектор не просто тесно сотрудничает с командой, но и пробует решения на своей собственной шкуре, то это, несомненно, будет положительно отражаться на его «архитектурных решениях».&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-3434387470259260955?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/3434387470259260955/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_22.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3434387470259260955" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3434387470259260955" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_22.html" title="О сопровождении" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-6345713336407252666</id><published>2012-01-17T10:51:00.001-08:00</published><updated>2012-01-17T10:51:26.751-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">Об изучении языков программирования</title><content type="html">&lt;p align="justify"&gt;Очередное интересное высказывание, на этот раз найденное в последней книге Бертрана Мейера &lt;a href="http://www.ozon.ru/context/detail/id/6304950/"&gt;“Почувствуй класс”&lt;/a&gt;:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Язык, который не влияет на ваш способ мышления, не стоит изучения.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Алан Перлис&lt;/p&gt;  &lt;p align="justify"&gt;Мысль разумная. Конечно, вокруг языка формируется еще и сообщество с собственной культурой, но я, например, не вижу особого смысла изучать Java для C# программиста или наоборот. Чем сильнее отличается культура, идиомы и паттерны в новом языке программирования, тем, потенциально, больше нового вы для себя узнаете.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-6345713336407252666?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/6345713336407252666/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_17.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6345713336407252666" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6345713336407252666" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post_17.html" title="Об изучении языков программирования" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-7873956218362553249</id><published>2012-01-16T09:48:00.001-08:00</published><updated>2012-01-16T09:48:36.372-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Архитектура" /><title type="text">Влияние психологии команды на архитектуру</title><content type="html">&lt;p align="justify"&gt;Листаю замечательную книгу &lt;a href="http://www.ozon.ru/context/detail/id/5430638/"&gt;“Идеальная архитектура”&lt;/a&gt;, которая, по-сути, является сборником статей “архитектурной” тематики.&lt;/p&gt;  &lt;p align="justify"&gt;Во второй главе есть такое любопытное примечание:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Здоровые отношения в группе разработки вносят непосредственный вклад в архитектуру системы. Нездоровые отношения и гипертрофированные самомнения порождают нездоровые продукты&lt;/em&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Конечно же, здоровые отношения не являются достатоными условиями успешности проекта или залогом создания удачной архитектуры; это лишь необходимое условие. &lt;/p&gt;  &lt;p align="justify"&gt;Только в здоровой атмосфере возможно приняте ошибок, которое практически невозможно при нездоровой атмосфере. А без этого сложно себе представить хорошую архитектуру; ведь ошибки – это лишь вопрос времени, и чем раньше “архитектор” их осознает, тем более качественными будут “управляющие воздействия” по их устранению. Ну а кто же признает свои ошибки при нездоровых отношениях в команде?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-7873956218362553249?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/7873956218362553249/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post.html#comment-form" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7873956218362553249" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7873956218362553249" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2012/01/blog-post.html" title="Влияние психологии команды на архитектуру" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-427958675368076780</id><published>2011-09-10T01:43:00.001-07:00</published><updated>2011-09-10T01:43:54.253-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Шаблоны проектирования" /><category scheme="http://www.blogger.com/atom/ns#" term="ООП" /><title type="text">Еще раз о повторном использовании</title><content type="html">&lt;p align="justify"&gt;Сегодня открыл книгу “банды четырех”, чтобы уточнить определение одного из паттернов проектирования и в первой же главе увидел выделенную когда-то цитату:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Поднаторевшие в объектно-ориентированном проектировании разработчики скажут вам, что обеспеччить “правильный”, то есть в достаточной мере гибкий и пригодный для повторного использования дизайн, с первого раза трудно, если вообще возможно. Прежде чем считать цель достигнутой, они обычно пытаются опробовать найденное решение на нескольких задачах, и каждый раз модифицируют его.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Эрик Липперт, один из разработчиков компилятора C# очень часто говорит о проблеме “преждевременного обобщения” (premature generialization), с которой я, например, сталкиваюсь постоянно.&lt;/p&gt;  &lt;p align="justify"&gt;Многие разработчики разрабатывают повторноиспользуемые компоненты (или выделяют их из своего приложения) принимая во внимание лишь один кейс использования. Они пытаются предсказать будущее, рассматривая какие-то гипотетические кейсы использования или делают “задел на будущее”, который никогда не понадобится. В итоге “библиотечный код” получается излишне сложным и совсем не таким “повторноиспользуемым”, как о нем думал его разработчик.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-427958675368076780?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/427958675368076780/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2011/09/blog-post.html#comment-form" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/427958675368076780" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/427958675368076780" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2011/09/blog-post.html" title="Еще раз о повторном использовании" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-5628710828735777145</id><published>2011-04-27T05:46:00.001-07:00</published><updated>2011-04-27T05:46:52.305-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Боб Мартин" /><title type="text">О паттернах проектирования</title><content type="html">&lt;p align="justify"&gt;Сейчас листаю весьма &lt;a href="http://www.books.ru/shop/books/816634"&gt;интересную книгу&lt;/a&gt; Боба Мартина и наткнулся на следующее высказывание:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;“Паттерны проектирования – чудесная вещь. Они способны помочь в решени многих задач проектирования. Но из того, что они существуют вовсе не следует, что их нужно употреблять к месту и не к месту.”&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;А ведь он чертовски прав; важно не только каким инстрментом мы пользуемся, значительно важнее то, насколько умело и правильно мы это делаем.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-5628710828735777145?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/5628710828735777145/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2011/04/blog-post.html#comment-form" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/5628710828735777145" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/5628710828735777145" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2011/04/blog-post.html" title="О паттернах проектирования" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-6320784888670444474</id><published>2010-12-05T02:11:00.001-08:00</published><updated>2010-12-09T11:40:07.066-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SICP" /><title type="text">О программировании</title><content type="html">&lt;p align="justify"&gt;Первый абзац в предисловии книги SICP (Структура и интерпретация компьютерных программ):&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Программированием занимаются учителя, генералы, диетологи, психологи и родители. Программированию подвергаются армии, ученики и некоторые виды обществ. При решении крупных задач приходится применять последовательно множество программ, бОльшая часть которых возникает прямо в процессе решения. Эти программы узобилуют деталями, относящимися к той конкретной задаче, которую они решают. Если же Вы хотите оценить программирование как интеллектуальную деятельность особого рода, то Вам следует обратиться к программированию компьютеров.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Мне уже нравится эта книга!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-6320784888670444474?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/6320784888670444474/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/12/blog-post.html#comment-form" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6320784888670444474" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6320784888670444474" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/12/blog-post.html" title="О программировании" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-3330933378285812991</id><published>2010-10-23T12:19:00.001-07:00</published><updated>2010-10-23T12:19:52.746-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Брайан Керниган" /><category scheme="http://www.blogger.com/atom/ns#" term="Альберт Эйнштейн" /><category scheme="http://www.blogger.com/atom/ns#" term="Тестирование и отладка" /><title type="text">О разработке ПО, отладке и Эйнштейне</title><content type="html">&lt;p align="justify"&gt;Брайан Керниган (Brian Kernighan) когда-то выразил такую мысль:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Отладка кода в двое сложнее его написания. Поэтому если вы будете писать код на грани своих возможностей, то, по определению, у вас не хватит ума его отладить.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Читая книгу Энди Ханта “Pragmatic Thinking and Learning” в одном из эпиграфов я встретил знаменитую цитату Эйнштейна:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Мы не можем решить проблему тем же способом мышления, посредством которого она появилась.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;И подумал, что если их совместить, то можно прийти к следующему выводу: можно использовать все свои возможности при написании кода, но при отладке вам придется изменить собственный стиль мышления, в противном случае у вас ничего не выйдет.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Оригинальная цитата Брайана Кернигана:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Оригинальная цитата Альберта Эйнштейна:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;We can’t solve problem by using the same kind of thinking we used when we created them.&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-3330933378285812991?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/3330933378285812991/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/10/blog-post_23.html#comment-form" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3330933378285812991" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3330933378285812991" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/10/blog-post_23.html" title="О разработке ПО, отладке и Эйнштейне" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-7835827894435223025</id><published>2010-10-22T11:40:00.001-07:00</published><updated>2010-10-22T11:40:03.872-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ли Кэмпбел" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">О понимании нужного уровня абстракции</title><content type="html">&lt;p align="justify"&gt;В одной из своих &lt;a href="http://leecampbell.blogspot.com/2010/06/rx-part-6-scheduling-and-threading.html"&gt;заметок&lt;/a&gt; о Reactive Extentions Ли Кэмпбел (Lee Campbell) выразил следующую мысль:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;You should always understand at least one layer below what you are coding.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Или в вольном перевод:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Вы должны понимать как минимум на один уровень абстракции ниже того уровня, на котором вы кодируете.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Нужно сказать очень ценное замечание, следование которому поможет вам не только при написании кода, но также при его отладке и сопровождении.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-7835827894435223025?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/7835827894435223025/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/10/blog-post.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7835827894435223025" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7835827894435223025" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/10/blog-post.html" title="О понимании нужного уровня абстракции" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-7210677003619732473</id><published>2010-06-11T08:51:00.001-07:00</published><updated>2010-06-12T03:15:10.042-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">Многопоточность</title><content type="html">&lt;p align="justify"&gt;&lt;em&gt;Если кто-то считает, что многопоточность проста и понятна, убедитесь, что этот человек не принимает важных решений в вашем проекте. Если он их все же принимает – вы в беде!”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Брайан Гетц (Brian Goetz) “Thinking in Java”&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-7210677003619732473?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/7210677003619732473/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/06/blog-post.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7210677003619732473" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7210677003619732473" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/06/blog-post.html" title="Многопоточность" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-437012229317273977</id><published>2010-05-29T00:24:00.001-07:00</published><updated>2010-05-29T00:26:28.398-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Боб Мартин" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">Комментарии</title><content type="html">&lt;p align="justify"&gt;&lt;em&gt;Ничто не помогает так, как уместный комментарий. Ничто не загромождает модуль так, как бессодержательные и безапелляционные комментарии. Ничто не приносит столько вреда, как старый, утративший актуальность комментарий, распространяющий ложь и дезинформацию.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;“Дядюшка” Боб Мартин. “Чистый код”&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-437012229317273977?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/437012229317273977/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post_29.html#comment-form" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/437012229317273977" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/437012229317273977" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post_29.html" title="Комментарии" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-3052913771606518105</id><published>2010-05-13T22:21:00.001-07:00</published><updated>2010-05-13T22:21:18.361-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Боб Мартин" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">Профессионализм</title><content type="html">&lt;p&gt;&lt;em&gt;Профессионализм имеет две составляющие: знания и практический опыт. Вы должны узнать принципы, паттерны, приемы и эвристические правила, известные каждому профессионалу, а также “втереть” полученные знания в свои пальцы, глаза и внутренности усердной работой и практикой.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;“Дядюшка” Боб Мартин. “Чистый Код”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-3052913771606518105?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/3052913771606518105/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post_13.html#comment-form" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3052913771606518105" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3052913771606518105" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post_13.html" title="Профессионализм" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-5576543446839714788</id><published>2010-05-12T03:53:00.001-07:00</published><updated>2010-05-12T03:53:55.985-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Гради Буч" /><category scheme="http://www.blogger.com/atom/ns#" term="Управление проектами" /><title type="text">О взаимозаменяемости разработчиков</title><content type="html">&lt;p&gt;&lt;em&gt;Разработчики - не взаимозаменяемые части, и успешное создание любой сложной системы требует уникальных и разнообразных навыков всех членов целеустремленного коллектива.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-5576543446839714788?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/5576543446839714788/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post_12.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/5576543446839714788" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/5576543446839714788" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post_12.html" title="О взаимозаменяемости разработчиков" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-7813199205390034503</id><published>2010-05-04T04:26:00.001-07:00</published><updated>2010-05-04T04:26:49.894-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Бертран Мейер" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><category scheme="http://www.blogger.com/atom/ns#" term="ООП" /><title type="text">Об изменениях в ПО</title><content type="html">&lt;p&gt;&lt;em&gt;Изменения в ПО неизбежны. Задача в том, чтобы уметь управлять ими&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Бертран Мейер “Объектно-ориентированное конструирование программных систем”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-7813199205390034503?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/7813199205390034503/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7813199205390034503" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7813199205390034503" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/05/blog-post.html" title="Об изменениях в ПО" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-7814817441042689612</id><published>2010-04-19T11:28:00.001-07:00</published><updated>2010-04-19T11:28:38.765-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Управление проектами" /><category scheme="http://www.blogger.com/atom/ns#" term="Дж. Ханк Рейнвотер" /><title type="text">О деньгах</title><content type="html">&lt;p&gt;&lt;em&gt;Можно поддаться соблазну разбрасываться деньгами, как будто они растут на деревьях, опрометчиво полагая, что оплата повышает производительность. На самом деле здесь стоит хорошенько подумать, ведь сегодняшняя роскошь есть завтрашняя потребность. Деньги, подобно власти, оказывают на человека самое что ни на есть деструктивное влияние.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Дж. Ханк Рейнвотер “Как пасти котов”&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-7814817441042689612?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/7814817441042689612/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/blog-post_19.html#comment-form" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7814817441042689612" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/7814817441042689612" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/blog-post_19.html" title="О деньгах" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-6311826755269136606</id><published>2010-04-12T13:16:00.001-07:00</published><updated>2010-04-12T13:16:52.789-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Гради Буч" /><category scheme="http://www.blogger.com/atom/ns#" term="ООП" /><title type="text">Анализ задачи</title><content type="html">&lt;p&gt;&lt;em&gt;Анализ должен объяснить, &lt;strong&gt;что &lt;/strong&gt;делает система, а не то, &lt;strong&gt;как &lt;/strong&gt;она это делает.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-6311826755269136606?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/6311826755269136606/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/blog-post_12.html#comment-form" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6311826755269136606" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6311826755269136606" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/blog-post_12.html" title="Анализ задачи" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-6868015106377153280</id><published>2010-04-12T13:15:00.001-07:00</published><updated>2010-04-12T13:15:00.478-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Гради Буч" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><title type="text">Организация и новые идеи</title><content type="html">&lt;p&gt;&lt;em&gt;Любая организация, которая сама не генерирует новые идеи, либо уже мертва, либо близка к этому.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-6868015106377153280?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/6868015106377153280/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/blog-post.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6868015106377153280" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/6868015106377153280" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/blog-post.html" title="Организация и новые идеи" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-2511887169523302563</id><published>2010-04-06T03:30:00.001-07:00</published><updated>2010-04-06T03:30:06.930-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Управление проектами" /><category scheme="http://www.blogger.com/atom/ns#" term="Дж. Ханк Рейнвотер" /><title type="text">Как пасти котов. Часть 1</title><content type="html">&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_paoZJwM8MDs/S7sNK0fq1gI/AAAAAAAAASw/KjB0_JOG2EY/s1600-h/Image.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Как пасти котов" border="0" alt="Как пасти котов" align="left" src="http://lh3.ggpht.com/_paoZJwM8MDs/S7sNLXl69-I/AAAAAAAAAS0/9t2ColgVbos/Image.jpg?imgmax=800" width="164" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Сегодня я начну публикацию цитат из книги Дж. Ханк Рейнвотера &lt;a href="http://www.ozon.ru/context/detail/id/2409500/"&gt;“Как пасти котов. Наставление для программистов, руководящих другими программистами”&lt;/a&gt;. Мое личное отношение к этой книге весьма неоднозначное. С одной стороны, закладок и подчеркиваний (а соответственно и цитат) набралось достаточное количество, но почему-то эта книга меня не зацепила. Вроде бы и написано все верно, и советов правильных много, и по делу все, но, чего-то мне в ней не хватило.&lt;/p&gt;  &lt;p align="justify"&gt;Еще раз повторюсь, что это мое личное мнение, многим другим людям эта книга очень и очень понравилась, поэтому я не исключаю, что дело скорее во мне. В любом случае я признаю, что в этой книге масса интересных моментов и отличных высказываний, ну а общее впечатление о здесь не очень-то и важно.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Личность в сегодняшних условиях - это опыт плюс прочитанная литература.&lt;/em&gt;    &lt;br /&gt;Введение&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Заниматься менеджментом было бы значительно проще, если бы все подчиненные были как две капли воды похожи на своего начальника.     &lt;br /&gt;&lt;/em&gt;Введение&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Чем лучше вы знаете людей, которыми вам предстоит руководить, тем выше шансы на успех.     &lt;br /&gt;&lt;/em&gt;Глава 1. Как привыкнуть к роли руководителя&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Делегирование невозможно без доверия к своим подчиненным. Для того чтобы построить доверительные отношения, требуется некоторое время, но без них деятельность руководителя обречена на провал.&lt;/em&gt;    &lt;br /&gt;Глава 1. Мало быть крутым - смотри в оба!&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Нам нужны программисты, которые не боятся сложностей, но те из них, которые любят усложнять все и вся, представляют серьезную опасность.     &lt;br /&gt;&lt;/em&gt;Глава 1. Какие бывают породы программистов&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Если хотите похвалить человека, сделайте это на виду у всех. Если считаете нужным покритиковать его, не выносите свои оценки на суд публики. Дело не просто в вежливости - эти правила поведения важны в том смысле, что как похвала, так и порицание одного человека на самом деле оказывают грандиозное влияние на всю группу. Поверьте мне, публичное унижение не способствует повышению продуктивности работы группы. Напротив, похвала, высказанная при всех, причем искренне и по заслугам, способна творить чудеса.     &lt;br /&gt;&lt;/em&gt;Глава 1. Слава, почет и деньги&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Не стоит забывать, что любой руководитель должен оценивать свои успехи исключительно по тому, насколько эффективно работают его подчиненные.     &lt;br /&gt;&lt;/em&gt;Глава 1. Слава, почет и деньги&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-2511887169523302563?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/2511887169523302563/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/1_06.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/2511887169523302563" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/2511887169523302563" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/1_06.html" title="Как пасти котов. Часть 1" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_paoZJwM8MDs/S7sNLXl69-I/AAAAAAAAAS0/9t2ColgVbos/s72-c/Image.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-1149591653116389096</id><published>2010-04-04T08:37:00.001-07:00</published><updated>2010-04-06T03:31:31.687-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><category scheme="http://www.blogger.com/atom/ns#" term="Стив Макконнелл" /><title type="text">Совершенный код. Часть 1</title><content type="html">&lt;p align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_paoZJwM8MDs/S7iyLKoTVPI/AAAAAAAAASo/6mQgx9M8nSI/s1600-h/CodeComplete%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="CodeComplete" border="0" alt="CodeComplete" align="left" src="http://lh6.ggpht.com/_paoZJwM8MDs/S7iyLzxqaXI/AAAAAAAAASs/JMip5Kjyn28/CodeComplete_thumb%5B1%5D.jpg?imgmax=800" width="172" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;В компьютерной индустрии существует не такое уж большое количество книг, не нуждающихся в представлении, и книга Стива Макконнелла “Совершенный код” входит в их число. Если в любой поисковой системе ввести название этой книги, то вы получите сотни отзывов и тысячи мнений. Мое мнение будет простым и коротким однозначно “Must have”, ну а приведенные цитаты смогут доказать (или опровергнуть) мое мнение по отношению к этой книге.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;С концептуальной точки зрения каждая программа уникальна, поэтому трудно или даже невозможно разработать общий набор директив, приводящих к решению во всех случаях. Так что знание общего подхода к проблеме не менее, а то и более ценно, чем знание точных решений конкретных проблем.      &lt;br /&gt;&lt;/em&gt;Глава 2.2 Как использовать метафоры?     &lt;br /&gt;    &lt;br /&gt;&lt;em&gt;Не зависимо от экономических подъемов и спадов хороших программистов всегда не хватает, а жизнь слишком коротка, чтобы тратить ее на работу в отсталом учреждении при наличии множества лучших вариантов.      &lt;br /&gt;&lt;/em&gt;Глава 3.1 Причины неполной подготовки     &lt;br /&gt;    &lt;br /&gt;&lt;em&gt;Как сказал Дэвид Грайс, подход к программированию не должен определяться используемыми инструментами. В связи с этим он проводит различие между программированием на языке (programming in language) и программирование с использованием языка (programming into language). Разработчики, программирующие &amp;quot;на&amp;quot; языке, ограничивают свое мышление конструкциями, непосредственно поддерживаемым языком. Если предоставляемые языком средства примитивны, мысли программистов будут столь же примитивными.      &lt;br /&gt;Разработчики, программирующие &amp;quot;с использованием&amp;quot; языка, сначала решают, какие мысли они хотят выразить, после чего определяют, как выразить их при помощи конкретного языка.       &lt;br /&gt;&lt;/em&gt;Глава 4.3 Волны развития технологий     &lt;br /&gt;    &lt;br /&gt;&lt;em&gt;Хорст Риттел и Мелвин Беббер определили &amp;quot;грязную&amp;quot; проблему как проблему, которую можно ясно определить только путем полного или частичного решения. По сути данный парадокс подразумевает, что проблему нужно &amp;quot;решить&amp;quot; один раз, чтобы получить ее ясное определение, а затем еще раз для создания работоспособного решения.      &lt;br /&gt;&lt;/em&gt;Глава 5.1 Проектирование - &amp;quot;грязная&amp;quot; проблема     &lt;br /&gt;    &lt;br /&gt;&lt;em&gt;Дейкстра пишет, что ни один человек не обладает интеллектом, способным вместить все детали современной компьютерной программы, поэтому нам - разработчикам ПО - не следует пытаться охватить всю программу сразу. Вместо этого мы должны попытаться организовать программы так, чтобы можно было безопасно работать с их отдельными фрагментами по очереди. Целью этого является минимизация объема программы, о котором нужно думать в конкретный момент времени. Можете считать это своеобразным умственным жонглированием: чем больше умственных шаров программа заставляет поддерживать в воздухе, тем выше вероятность того, что вы уроните один из них и допустите ошибку при проектировании или кодировании.&lt;/em&gt;     &lt;br /&gt;Глава 5.2 Важность управления сложностью&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-1149591653116389096?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/1149591653116389096/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/1.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/1149591653116389096" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/1149591653116389096" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/04/1.html" title="Совершенный код. Часть 1" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_paoZJwM8MDs/S7iyLzxqaXI/AAAAAAAAASs/JMip5Kjyn28/s72-c/CodeComplete_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-3138694371518142280</id><published>2010-03-31T00:22:00.001-07:00</published><updated>2010-03-31T00:22:46.440-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Гради Буч" /><category scheme="http://www.blogger.com/atom/ns#" term="ООП" /><title type="text">Объектно-ориентированный анализ и проектирование. Часть 4</title><content type="html">&lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_paoZJwM8MDs/S7L4QK6vuOI/AAAAAAAAASY/FXP940xi2_Q/s1600-h/OOA%20and%20OOP%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="OOA and OOP" border="0" alt="OOA and OOP" align="left" src="http://lh3.ggpht.com/_paoZJwM8MDs/S7L4RFbs_BI/AAAAAAAAASc/ASNaK8xabYM/OOA%20and%20OOP_thumb%5B1%5D.jpg?imgmax=800" width="177" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Возвращаемся к замечательной книге Гради Буча “Объектно-ориентированный анализ и проектирование с примерами приложений”.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Как отмечает Дейкстра, &amp;quot;Способ управления сложными системами был известен еще в древности - &lt;strong&gt;divide et impera &lt;/strong&gt;(разделяй и властвуй)&amp;quot;. При проектировании сложной программной системы необходимо разделять ее на все меньшие и меньшие подсистемы, каждую из которых можно совершенствовать независимо.      &lt;br /&gt;&lt;/em&gt;Глава 1.3 Роль декомпозиции&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Объектная декомпозиция существенно снижает риск при создании сложной программной системы, так как она развивается из меньших систем, в которых мы уже уверены.     &lt;br /&gt;&lt;/em&gt;Глава 1.3 Роль декомпозиции&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Объекты обладают целостностью, которая не должна - а, в действительности, не может - быть нарушена. Объект может только менять состояние, вести себя, управляться или становиться в определенное отношение к другим объектам. Иначе говоря, свойства, которые характеризуют объект и его поведение, остаются неизменными     &lt;br /&gt;&lt;/em&gt;Глава 2.1 OOP, OOD и OOA&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Абстракция и икапсуляция дополняют друг друга: абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается внутренним устройством.&lt;/em&gt;    &lt;br /&gt;Глава 2.1 Инкапсуляция&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Лисков прямо утверждает, что &amp;quot;абстракция будет работать только вместе с инкапсуляцией&amp;quot;. Практически это означает наличие двух частей в классе: интерфейса и реализации. Интерфейс отражает внешнее поведение объекта, описывая абстракцию поведения всех объектов данного класса. Внутренняя реализация описывает представление этой абстракции и механизмы достижения желаемого поведения. Принцип разделения интерфейса и реализации соответствует сути вещей: в интерфейсной части собрано все, что касается взаимодействия данного объекта с любыми другими объектами; реализация скрывает от других объектов все детали, не имеющие отношения к процессу взаимодействия объектов.     &lt;br /&gt;&lt;/em&gt;Глава 2.1 Инкапсуляция&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Разумная инкапсуляция локализует те особенности проекта, которые могут подвергнуться изменениям.     &lt;br /&gt;&lt;/em&gt;Глава 2.1 Инкапсуляция&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Сокрытие информации - понятие относительное: то, что спрятано на одном уровне абстракции, обнаруживается на другом уровне.&lt;/em&gt;    &lt;br /&gt;Глава 2.1 Инкапсуляция&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Деление программы на модули бессистемным образом иногда гораздо хуже, чем отсутствие модульности вообще.     &lt;br /&gt;&lt;/em&gt;Глава 2.1 Модульность&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Следует стремиться построить модули так, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями.     &lt;br /&gt;&lt;/em&gt;Глава 2.1 Модульность&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;При коллективной разработке программ распределение работы осуществляется, как правило, по модульному принципу и правильное разделение проекта минимизирует связи между его участниками.     &lt;br /&gt;&lt;/em&gt;Глава 2.1 Модульность&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Значительное упрощение в понимании сложных задач достигается за счет образования из абстракций иерархической структуры.&lt;/em&gt;    &lt;br /&gt;Глава 2.1 Иерархия&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-3138694371518142280?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/3138694371518142280/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/4.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3138694371518142280" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/3138694371518142280" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/4.html" title="Объектно-ориентированный анализ и проектирование. Часть 4" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_paoZJwM8MDs/S7L4RFbs_BI/AAAAAAAAASc/ASNaK8xabYM/s72-c/OOA%20and%20OOP_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-5899558011953970398</id><published>2010-03-30T04:13:00.001-07:00</published><updated>2010-03-30T04:13:08.703-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><category scheme="http://www.blogger.com/atom/ns#" term="Дон Бокс" /><title type="text">Дон Бокс о переходе на новые технологии</title><content type="html">&lt;p align="justify"&gt;В замечательной книге Дона Бокса “Основы платформы .NET” (Essential .NET) есть очень интересное высказывание о проблемах перехода разработчиков на платформу .NET. И хотя сейчас вопросы перехода на управляемый код уже отошли на второй план (хотя сегодня все еще существует мнение о том, что оверхед “управляемого” кода слишком высок). Главная мысль в том, что “управляемый” код наверняка не является последним витком эволюции разработки ПО, после него обязательно будут другие этапы и витки, к которым все так же будут относиться с недоверием.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Читателям, которых тревожит мысль о потере контроля над программой и передаче его инструментам, разработанным кем-то другим, советую вспомнить замену DOS платформой Windows NT. На первых порах было немало разработчиков, недовольных переходом от ручного управления физической памятью и прерываниями к виртуальной памяти и потокам. Они считали, что это замедлит выполнение программы, наложит дополнительные ограничения, что сыграет на руку только самым ленивым программистам. Многие из этих и подобных аргументов могут быть приведены и против CLR. Только время покажет, является ли среда CLR слишком “абстрактной”. Лично я, однако, убежден, что переход к средам с управляемым выполнением, таким, как CLR или виртуальная машина Java, – существенный шаг вперед, а не назад. Всякий раз, когда программисты оказываются перед выбором между производительностью своего труда и полнотой контроля над программой, в конечном итоге побеждают технологии, обеспечивающие более высокую производительность труда.&lt;/em&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Дополнительные ссылки (подтверждающие то, что Дон Бокс не одинок в своих суждениях):&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://ru-quotes.blogspot.com/2009/12/blog-post_03.html"&gt;Интервью Бярна Страуструпа&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://ru-quotes.blogspot.com/2009/12/3.html"&gt;Программист-прагматик. Инструменты&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-5899558011953970398?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/5899558011953970398/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/blog-post_30.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/5899558011953970398" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/5899558011953970398" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/blog-post_30.html" title="Дон Бокс о переходе на новые технологии" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-2876194248097217988</id><published>2010-03-30T01:38:00.001-07:00</published><updated>2010-03-30T01:38:31.162-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Управление проектами" /><category scheme="http://www.blogger.com/atom/ns#" term="Эдвард Йордон" /><title type="text">Путь камикадзе. Часть 2</title><content type="html">&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_paoZJwM8MDs/S7G4gojd57I/AAAAAAAAASQ/yh721zyGPvc/s1600-h/Death%20March%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Death March" border="0" alt="Death March" align="left" src="http://lh5.ggpht.com/_paoZJwM8MDs/S7G4hbQGx2I/AAAAAAAAASU/DGXToauEWDw/Death%20March_thumb%5B1%5D.jpg?imgmax=800" width="157" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Что-то в последнее время у меня не доходили руки до Цитатника, о чем я прошу прощения и постараюсь исправиться.&lt;/p&gt;  &lt;p align="justify"&gt;Сегодня будет продолжение цитат из замечательной книги Эдварда Йордона “Путь камикадзе”.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Почему люди штурмуют такие опасные горы, как Эверест, несмотря на риск и мучения? Почему они участвуют в марафонских забегах и доводят себя до физического изнеможения в многоборье? Потому что этим они бросают вызов окружающим. Еще больше возбуждает, если ты пытаешься совершить то, что до тебя никто не смог сделать. Например, из пяти миллиардов людей на планете только один может сказать: «Я был первым человеком, ступившим на Луну». Кто-то может подумать, что даже сама попытка совершить нечто подобное - это безумие и эгоизм, а другие, наоборот, хотели бы бросить вызов всем преградам в надежде завоевать славу и общественное признание&lt;/em&gt;.    &lt;br /&gt;Глава 1.4.2 Синдром покорителей Эвереста    &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;Для проведения переговоров нелишними будут такие вопросы, как «обанкротится ли организация, если система будет готова не к 1-му сентября, а к 5-му?» или «все хотят, чтобы работа была сделана хорошо, быстро и дешево. Все знают, что реально можно выполнить только два требования из трех. Какие именно два для вас важнее?»&lt;/i&gt;    &lt;br /&gt;Глава 3.2 Допустимые компромиссы    &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;Преднамеренно или нет, но менеджера проекта часто ставят в положение, когда от него требуется быстро дать «грубую оценку» времени и количеству персонала, требуемым для реализации каких-либо частей проекта; и достаточно один раз сболтнуть об этом окружающим, как эти оценки могут превратиться в жесткие, не подлежащие изменению требования. Таким образом, в любой подобной ситуации менеджеру необходимо ответить что-либо наподобие: «Мне нужен один день (или неделя, или месяц - или даже час!), чтобы сделать необходимые расчеты, тогда я смогу дать оценку. Я отправлю ее по электронной почте».     &lt;br /&gt;&lt;/i&gt;Глава 3.4 Стратегии переговоров    &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;Будьте настойчивы в отстаивании права формировать свою собственную команду. Можно ожидать от команды сверхурочной работы, но при этом помните, что они участвуют в марафоне и могут пробежать в спринтерском темпе только последние 100 ярдов. Добейтесь для них щедрого вознаграждения, если проект закончится успешно, но не дразните их обещаниями будущих экстраординарных наград, потому что это только собьет их с толку. Приложите максимум усилий для создания спаянной и дружной команды, готовой к сотрудничеству; очень важно обладать необходимой квалификацией, однако еще более важно, чтобы она была дополнена психологической совместимостью. Все сказанное должно способствовать максимальному единению участников проекта.&lt;/i&gt;    &lt;br /&gt;Глава 4. Человеческий фактор в безнадежных проектах    &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;Один из ключевых моментов в безнадежных проектах состоит в том, что некоторые требования не просто останутся невыполненными до официального срока завершения проекта, но и не будут выполнены никогда. Если предположить, что известное правило «80-20» справедливо, то проектная команда сможет добиться 80 процентов «эффекта» от разработанной системы, реализовав 20 процентов требований к ней - при условии правильного выбора этих 20 процентов.     &lt;br /&gt;&lt;/i&gt;Глава 5.1 Концепция &amp;quot;triage&amp;quot;    &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;&amp;quot;Если единственным вашим инструментом является молоток, то все ваши проблемы выглядят как гвозди&amp;quot;     &lt;br /&gt;Поговорка ветеранов разработчиков      &lt;br /&gt;&lt;/i&gt;Глава 5.2 Важность управления требованиями    &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;В действительности нужна система, которая достаточно дешева, достаточно производительна, обладает достаточными возможностями, достаточно устойчива и будет готова достаточно скоро - вот в чем заключается их определение «достаточно хорошего» ПО.     &lt;br /&gt;&lt;/i&gt;Глава 5.4 &amp;quot;Достаточно хорошее&amp;quot; программное обеспечение    &lt;br /&gt;    &lt;br /&gt;&lt;i&gt;Мы предполагаем, что малое количество дефектов равносильно лучшему качеству, и полагаем, что пользователь всегда предпочитает такое качество - хотя существуют обстоятельства, когда пользователь готов пойти на компромисс и примириться с некоторыми ошибками в обмен на более скорое завершение работы или возможность продукта работать на различных программных/технических платформах и др.     &lt;br /&gt;&lt;/i&gt;Глава 5.4 &amp;quot;Достаточно хорошее&amp;quot; программное обеспечение&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-2876194248097217988?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/2876194248097217988/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/2_30.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/2876194248097217988" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/2876194248097217988" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/2_30.html" title="Путь камикадзе. Часть 2" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_paoZJwM8MDs/S7G4hbQGx2I/AAAAAAAAASU/DGXToauEWDw/s72-c/Death%20March_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8666058998503471555.post-8418603458036926610</id><published>2010-03-05T00:00:00.001-08:00</published><updated>2010-03-05T00:00:53.388-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Алан Шаллоуей" /><category scheme="http://www.blogger.com/atom/ns#" term="Философия программирования" /><category scheme="http://www.blogger.com/atom/ns#" term="Джеймс Р. Тротт" /><category scheme="http://www.blogger.com/atom/ns#" term="ООП" /><title type="text">Алан Шаллоуей и Джеймс Р. Тротт. Шаблоны проектирования. Несколько слов о работе с заказчиком</title><content type="html">&lt;p align="justify"&gt;&lt;a href="http://lh5.ggpht.com/_paoZJwM8MDs/S5C5_Zl7iuI/AAAAAAAAAM0/qO08X8ZcklM/s1600-h/Design%20Patterns%20Explained%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Design Patterns Explained" border="0" alt="Design Patterns Explained" align="left" src="http://lh5.ggpht.com/_paoZJwM8MDs/S5C5_xY5KiI/AAAAAAAAAM4/n1fEQC-I-Js/Design%20Patterns%20Explained_thumb%5B1%5D.jpg?imgmax=800" width="170" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Это последняя цитата из замечательной книги Алана Шаллоуейа и Джеймса Тротта “Шаблоны проектирования”, которую я хотел бы здесь опубликовать. Честно говоря сам я не ожидал, что в такой небольшой книге как эта окажется такое количество интересных цитат, но перечитывая свои записи даже спустя года два после прочтения книги я все еще нахожу их весьма интересными.&lt;/p&gt;  &lt;p align="justify"&gt;Последняя цитата (да, всего одна) касается очень популярной темы среди авторов книг (но о которой все еще не знают все разработчики) - теме общения с заказчиком. Об этом действительно говорится много (отличная подборка высказываний есть у Джоэла Спольски, см. “Секреты айсберга”), но я об этом впервые прочел именно в этой книге.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;em&gt;Обширный опыт общения с заказчиками позволил мне понять несколько важных моментов.     &lt;br /&gt;- Как правило, заказчики знают проблемную область очень хорошо (более того, они знают ее лучше, чем я когда-либо буду знать).      &lt;br /&gt;- Чаще всего заказчики не воспринимают предметную область на концептуальном уровне, как это принято у разработчиков. Напротив, они говорят о конкретных проявлениях тех или иных частных случаев.      &lt;br /&gt;- Заказчики часто используют определение &amp;quot;всегда&amp;quot;, но на самом деле следовало бы говорить &amp;quot;обычно&amp;quot;.      &lt;br /&gt;- Также часто они используют определение &amp;quot;никогда&amp;quot;, подразумевая &amp;quot;редко&amp;quot;.      &lt;br /&gt;- Заказчики часто утверждают, что рассказали обо всех возможных ситуациях, тогда как в действительности речь шла только о том, что случается &lt;b&gt;обычно&lt;/b&gt;.      &lt;br /&gt;Подводя итог, можно сказать, что я полностью доверяю объяснениям заказчиков, когда они дают ответы на заданные мной конкретные вопросы, но с большим сомнением отношусь к их общим рассуждениям. Я всегда стараюсь вести диалог с заказчиком на максимально конкретном уровне. Даже те из заказчиков, которые полагают, что они способны осмыслить задачу на концептуальном уровне, в попытках оказать помощью разработчику часто переоценивают свои возможности.      &lt;br /&gt;&lt;/em&gt;Глава 20. Вариации в учебном примере - система международной электронной торговли&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Все цитаты из книги книги Алана Шаллоуейа и Джеймса Тротта “Шаблоны проектирования”:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://ru-quotes.blogspot.com/2010/01/1_14.html"&gt;Часть 1&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://ru-quotes.blogspot.com/2010/03/2.html"&gt;Часть 2&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://ru-quotes.blogspot.com/2010/03/3_04.html"&gt;Часть 3&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://ru-quotes.blogspot.com/2010/03/blog-post.html"&gt;Несколько слов о работе с заказчиком&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8666058998503471555-8418603458036926610?l=ru-quotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ru-quotes.blogspot.com/feeds/8418603458036926610/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/blog-post.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/8418603458036926610" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8666058998503471555/posts/default/8418603458036926610" /><link rel="alternate" type="text/html" href="http://ru-quotes.blogspot.com/2010/03/blog-post.html" title="Алан Шаллоуей и Джеймс Р. Тротт. Шаблоны проектирования. Несколько слов о работе с заказчиком" /><author><name>Sergey Teplyakov</name><uri>https://profiles.google.com/108967431947412296254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-2weHUILo1ns/AAAAAAAAAAI/AAAAAAAABRo/POab-anD6xA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_paoZJwM8MDs/S5C5_xY5KiI/AAAAAAAAAM4/n1fEQC-I-Js/s72-c/Design%20Patterns%20Explained_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

