Книга «Идеальный программист. Как стать профессионалом разработки ПО»

    imageВсех программистов, которые добиваются успеха в мире разработки ПО, отличает один общий признак: они больше всего заботятся о качестве создаваемого программного обеспечения. Это — основа для них. Потому что они являются профессионалами своего дела. В этой книге леген-дарный эксперт Роберт Мартин (более известный в сообществе как «Дядюшка Боб»), автор бестселлера «Чистый код», рассказывает о том, что значит «быть профессиональным програм-мистом», описывая методы, инструменты и подходы для разработки «идеального ПО». Книга насыщена практическими советами в отношении всех аспектов программирования: от оценки проекта и написания кода до рефакторинга и тестирования. Эта книга — больше, чем описание методов, она о профессиональном подходе к процессу разработки.

    Почему вас заинтересовала эта книга? Наверное, потому что вы — программист, и вас интересует понятие профессионализма. И правильно! Профессионализм — то, чего так отчаянно не хватает в нашей профессии. Я тоже программист. Я занимался программированием 42 года и за это время повидал многое. Меня увольняли. Меня превозносили до небес. Я побывал руководителем группы, начальником, рядовым работником и даже исполнительным директором. Я работал с выдающимися программистами, и я работал со слизняками2. Я занимался разработкой как самых передовых встроенных программных/аппаратных систем, так и корпоративных систем начисления зарплаты. Я программировал на COBOL, FORTRAN, BAL, PDP-8, PDP-11, C, C++, Java, Ruby, Smalltalk и на многих других языках. Я работал с бездарными халявщиками, и я работал c высококвалифицирован-ными профессионалами. Именно последней классификации посвящена эта книга.

    На ее страницах я попытаюсь определить, что же это такое — «быть профессиональным программистом». Я опишу те атрибуты и признаки, которые, на мой взгляд, присущи настоящим профессионалам. Откуда я знаю, что это за атрибуты и признаки? Потому что я познал все это на собственном горьком опыте. Видите ли, когда я поступил на свое первое место работы на должность программиста, никому бы не пришло в голову назвать меня профессионалом.

    Это было в 1969 году. Мне тогда было 17 лет. Мой отец убедил местную фирму под названием ASC нанять меня программистом на неполный рабочий день. (Да, мой отец это умеет. Однажды он на моих глазах встал на пути разгоняющейся машины, поднял руку и приказал: «Стоять!» Машина остановилась. Моему папе вообще трудно отказать.) Меня приняли на работу, посадили в комнату, где хранились все руководства к компьютерам IBM, и заставили записывать в них описания обновлений за несколько лет. Именно тогда я впервые увидел фразу: «Страница намеренно оставлена пустой».

    Через пару дней обновления руководств мой начальник предложил мне написать простую программу на Easycoder. Его просьба вызвала у меня бурный энтузиазм, ведь до этого я еще не написал ни одной программы для настоящего компьютера. Впрочем, я бегло просмотрел несколько книг по Autocoder и примерно представлял, с чего следует начать. Моя программа должна была прочитать записи с магнитной ленты и изменить идентификаторы этих записей. Значения новых идентификаторов начинались с 1 и увеличива-лись на 1 для каждой последующей записи. Записи с обновленными идентификаторами должны были записываться на новую ленту.

    Начальник показал мне полку, на которой лежало множество стопок красных и синих перфокарт. Представьте, что вы купили 50 колод
    игральных карт — 25 красных и 25 синих, а потом положили эти колоды друг на друга. Так выглядели эти стопки. В них чередовались карты красного и синего цвета; каждая «колода», состоявшая примерно из 200 карт, содержала исходный код библиотеки подпрограмм. Программисты просто снимали верхнюю «колоду» со стопки (убедившись, что они взяли только красные или только синие карты) и клали ее в конец своей стопки перфокарт.

    Моя программа была написана на программных формулярах — больших прямоугольных листах бумаги, разделенных на 25 строк и 80 столбцов. Каждая строка соответствовала одной карте. Программа записывалась на формуляре прописными буквами. В последних 6 столбцах каждой строки записывался ее номер. Номера обычно увеличивались с приращением 10, чтобы позднее в стопку можно было вставить новые карты. Формуляры передавались операторам подготовки данных. В компании работало несколько десятков женщин, которые брали формуляры из большого ящика и «набивали» их на клавишных перфораторах. Эти машины были очень похожи на пишущие машинки, но они не печатали вводимые знаки на бумаге, а кодировали их, пробивая отверстия в перфокартах. На следующий день операторы вернули мою программу по внутренней почте. Маленькая стопка перфокарт была завернута в формуляры и перетянута резинкой. Я поискал на перфокартах ошибки набора. Вроде все нормально. Я положил библиотечную колоду в конец своей стопки программ и отнес ее наверх операторам.

    Компьютеры были установлены в машинном зале за закрытыми дверями, в зале с регулируемым микроклиматом и фальшполом (для прокладки кабелей). Я постучал в дверь, суровый оператор забрал у меня колоду и положил ее в другой ящик. Моя программа будет запущена, когда до нее дойдет очередь. На следующий день я получил свою колоду обратно. Она была завернута в листинг и перетянута резинкой. (Да, в те дни мы использовали очень много резинок!).

    Я открыл листинг и увидел, что программа не прошла компиляцию. Сообщения об ошибках в листинге оказались слишком сложными для моего понимания, поэтому я отнес их своему начальнику. Он просмотрел листинг, что-то пробормотал про себя, сделал несколько пометок, взял колоду и приказал следовать за ним. Он прошел в операторскую, сел за свободный перфоратор, исправил все карты с ошибками и добавил еще пару карт. Он на скорую руку объяснил суть происходящего, но все промелькнуло в одно мгновение. Он отнес новую колоду в машинный зал, постучал в дверь, сказал какие-то «волшебные слова» оператору, а затем прошел в компьютер-ный зал. Оператор установил магнитные ленты на накопители и загрузил колоду, пока мы наблюдали. Завертелись ленты, затарахтел принтер — и на этом все кончилось. Программа заработала. На следующий день начальник поблагодарил меня за помощь, и моя работа на этом завершилась. Очевидно, фирма ASC посчитала, что ей некогда нянчиться с 17-летними новичками.

    Впрочем, моя связь с ASC на этом не завершилась. Через несколько месяцев я получил постоянную работу в вечернюю смену в ASC на
    обслуживании принтеров. Эти принтеры печатали всякую ерунду с образов, хранившихся на ленте. Я должен был своевременно заправлять принтеры бумагой, ставить ленты с образами, извлекать замятую бумагу и вообще следить за тем, чтобы машины нормально работали. Все это происходило в 1970 году. Я не мог себе позволить учебу в колледже, да она меня, признаться, не особенно привлекала. Война во Вьетнаме еще не закончилась, и в студенческих городках было неспокойно. Я продолжал штудировать книги по COBOL, Fortran, PL/1, PDP-8 и ассемблеру для IBM 360. Я намеревался обойтись без учебы и как можно быстрее заняться реальным программированием.

    Через год я достиг этой цели — меня повысили до штатного программиста в ASC. Я с двумя друзьями Ричардом и Тимом, которым тоже
    было по 19 лет, трудились вместе с тремя другими программистами над бухгалтерской системой реального времени для фирмы, занимающейся грузовыми перевозками. Мы работали на Varian 620i — простых мини-компьютерах, по архитектуре сходных с PDP-8, не считая того, что у них были 16-разрядные слова и два регистра. Программирование велось на ассемблере.

    Мы написали каждую строку кода в этой системе. Да, без преувеличения каждую. Мы написали операционную систему, обработчики
    прерываний, драйверы ввода/вывода, файловую систему для дисков, систему подгрузки оверлеев и даже компоновщик с динамической
    переадресацией — не говоря уже о коде приложения. Мы написали все это за 8 месяцев, работая по 70–80 часов в неделю для соблюдения немыслимо жестких сроков. Тогда я получал $7200 в год.

    Система была закончена в срок. А потом мы уволились.

    Все произошло внезапно, и расставание не было дружеским. Дело в том, что после всей работы и успешной сдачи системы компания дала нам прибавку всего в 2%. Мы почувствовали себя обманутыми. Некоторые из нас нашли работу в другом месте и попросту подали заявление. К сожалению, я избрал другой, далеко не лучший путь. Мы с приятелем вломились в кабинет директора и уволились вместе с изрядным скандалом. Это доставило нам эмоциональное удовлетворение — примерно на день.

    На следующий день я осознал, что у меня нет работы. Мне было 19 лет, я был безработным без диплома. Я прошел собеседования на несколь-ких вакансиях из области программирования, но они прошли неудачно. Следующие четыре месяца я проработал в мастерской по ремонту газонокосилок, принадлежащей моему сводному брату. К сожалению, ремонтника из меня не вышло, и в конце концов мне пришлось уйти. Я впал в депрессию.

    Я засиживался до трех часов ночи, поедая пиццу и смотря старые фильмы ужасов по черно-белому телевизору моих родителей. Постепенно кошмары стали просачиваться с экрана в мою жизнь. Я валялся в постели до часа дня, потому что не хотел видеть очередной унылый день. Я поступил на курсы математического анализа в региональном колледже и провалил экзамен. Моя жизнь летела под откос. Моя мать поговорила со мной и объяснила, что так жить нельзя и что я был идиотом, когда уволился, не найдя себе новую работу — да еще со скандалом и на пару с приятелем. Она сказала, что увольняться, не имея новой работы, вообще нельзя, и делать это следует спокойно, трезво и в одиночку. Она сказа-ла, что мне следует позвонить старому начальнику и попроситься на старое место — по ее выражению, «проглотить обиду». Девятнадцатилетние парни не склонны признавать свои ошибки, и я не был исключением. Тем не менее обстоятельства взяли верх над гордостью. В конечном итоге я позвонил своему начальнику. И ведь сработало! Он охотно принял меня на $6800 в год, а я охотно принял его предложение.

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

    Наверное, вы подумали, что я усвоил полученный урок и стал профессионалом? Ничего подобного. Это был лишь первый из многих уроков, которые мне еще предстояло усвоить. В дальнейшем меня уволили с одной работы за сорванный по беспечности график и чуть не уволили с другой за случайное разглашение конфиденциальной информации. Я брался за рискованные проекты и заваливал их, не обращаясь за помощью, которая, как я знал, была мне необходима. Я рьяно защищал свои технические решения, даже если они противоречили потребностям заказчиков. Я принял на работу совершенно неквалифицированного человека, который стал тяжким бременем для моего нанимателя. И что хуже всего, из-за моих организационных ошибок уволили двух других людей.

    Так что относитесь к этой книге как к каталогу моих заблуждений, исповеди в моих прегрешениях и сборнику советов, которые помогут вам избежать моих ошибок.

    Более подробно с книгой можно познакомиться на сайте издательства
    Оглавление
    Отрывок

    Для Хаброжителей скидка 25% по купону — Идеальный программист.

    По факту оплаты бумажной книги отправляем на e-mail электронные версии книг, при покупке электронной книги — все доступные версии отправляются пользователям.

    + читатель бесплатно получает электронную книгу (pdf и epub) Сергея Тарасова «Дефрагментация мозга. Софтостроение изнутри»
    Поделиться публикацией
    Похожие публикации
    Комментарии 28
    • +5
      Отличная книга, я бы ее рекомендовал всем ИТшникам, включая менеджеров.
      • 0
        > + читатель бесплатно получает электронную книгу (pdf и epub) Сергея Тарасова «Дефрагментация мозга. Софтостроение изнутри»

        Не сразу понял что этот бонус только к бумажной книге и купил электронную книгу (
        • 0
          Ха, я дважды сам себе злой буратино, еще и скидкой не воспользовался )
          • +2
            бонус идет к бумажной и электронной книге
            напишите пожалуйста в личку номер вашего заказа — пересчитаем с учетом скидки

            • 0
              Спасибо но скидку не надо — ССЗП, да и книга похоже стоит своих денег, интересует только вот почему вторая книжка тогда могла не придти?
              • 0
                Мне очень стыдно, все в архиве, прошу прощения. Надо больше высыпаться. Просто я ожидал что эта книга придет отдельной ссылкой для скачивания
          • 0
            Спасибо, книга интересная. Но я не очень понял, как воспользоваться купоном?
            • 0
              вы кладете книгу в корзину
              в поле «Введите код купона на скидку, если он у вас есть» вводите название купона.

              если есть вопросы — пишите в личку.
            • 0
              По факту оплаты бумажной книги отправляем на e-mail электронные версии книг

              Бумажная книга 455 р., а электронные pdf и еpub по 299 каждая.
              Получается, бумажную книгу купить дешевле, чем два формата электронной?
              • +1
                в данном случае нет, тк по факту оплаты бумажной книги мы одновременно отправляем pdf и epub версию.
                в предыдущих постах нас просили высылать электронные версии тем, кто покупает бумажные книги.
                как просили — так мы и сделали )
                • 0
                  То есть за электронные придется отдельно доплачивать, да?
                  • 0
                    по другим книгам — да.
                    • 0
                      Тогда всё-таки 455 получается дешевле, чем 299+299. Спасибо.
              • +1
                это перевод этой книги?
                На будущее, вставляйте ссылку на оригинал.
                Спасибо
                • 0
                  Захотел купить, оформил заказ — оказалось что мой емейл уже используется.
                  Зашёл в историю почты и узнал, что год назад я уже купил у вас эту книгу. Спасибо что напомнили прочитать :)
                  • 0
                    Бумажных книг не осталось :(
                    хабраэффект?
                    • 0
                      нашли еще 20 экземпляров )
                      • 0
                        Спасибо. Заказ удалось оформить.
                    • 0
                      Нехорошо так:
                      image

                      Уж лучше бы по-английски назывались.

                      А вот за оба формата в комплекте — спасибо, раньше так не было.
                      • 0
                        Кстати, тогда стоит убрать возможность ставить галки на оба формата и удваивать сумму заказа.
                      • 0
                        Хорошая книга, просто здоровская!
                        • 0
                          Скажите, а .epub-версию получится сконвертировать в .mobi? Хочу купить, но у меня Киндл.
                          • 0
                            Да все кроме pdf нормально конвертируется в разные форматы.
                            • 0
                              Однажды какая-то книга у меня отказалась конвертироваться из-за DRM.
                          • 0
                            Теперь еще и за разные типы файлов нужно доплачивать. pdf — 299, epub — заплати еще 299. А ведь верстальщику всего лишь в основном нужно выбрать в программе разный режим сохранения.

                            Хотел купить даже без скидки, но после такого хитропопства я лучше потом ее бесплатно скачаю
                            • +1
                              Кстати, книга уже издавалась в 2012 в электронном виде. На сайте издательства не написаны отличия новой версии как и вообще упоминания, что это новая версия. Наверное, можно и ту взять
                              • 0
                                по этой книге все доступные файлы(pdf и epub) отправляются клиентам
                                об этом написано в посте
                                • 0
                                  Не читал далее фразы «Более подробно с книгой можно познакомиться на сайте издательства» со ссылкой на магазин. А там нужно доплачивать за каждый тип файла из-за чего я не купил бы из принципа

                                  В любом случае уже взял бесплатно эту книгу 2012 года. Отличий в них, наверное, нет. Даже страницы в оглавлении совпадают.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое