Robert martin: the story of the ideal programmer

Скачать книгу идеальный программист. как стать профессионалом разработки по бесплатно

Ранняя жизнь и образование

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

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

Увлечение компьютерами в нежном возрасте

Роберт Мартин с раннего детства проявлял необыкновенный интерес к компьютерам. Интерес зародился еще до того, как он научился ходить. Последующие наблюдения за программистами в действии и создание собственных программ на BASIC окончательно закрепили его увлечение.

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

Получение степени магистра компьютерных наук

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

Для поступления на магистерскую программу по компьютерным наукам обычно требуется бакалаврская степень в области компьютерных наук, информатики или смежной области.

Помимо прохождения курсовой работы, вам, вероятно, также потребуется выполнить диссертацию или исследовательский проект, чтобы получить степень.

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

Ideal programmer

Book cover

One of the most famous books written by Robert Martin was his work «The Ideal Programmer». In a sense, this work can be called the quintessence of all the positive experience accumulated by Martin over the years of his activity in the field of programming.

Immediately after its release, the book became the «number one bestseller» in its genre, providing Robert with fame not only as a brilliant programmer, but also as a great storyteller.

In his work, Martin outlined the key qualities necessary to succeed in the chosen field of computer engineering, and also spoke about the possible difficulties that may arise in the path of a novice programmer, while noting which aspects of this activity are pay a lot of attention initially, and what problems should be temporarily postponed.

Writing career

Writing books Robert Martin began back in 1995, when he became editor-in-chief of the C++ Report magazine. Having started by publishing several articles on practical programming, Uncle Bob realizes that these articles are only a tiny part of the experience that he could pass on to people who want to follow in his footsteps.

This prompted Robert Martin to write a number of voluminous works on the theory of programming, practical creation of programs. Martin also published several appendices to the work of others.authors dedicated to programming languages. The most famous books of the writer-publicist were translated into Russian and became incredibly popular among domestic amateurs of professional work with personal computers.

Biography

Robert Cecil Martin is one of the most famous specialists in the field of programming and software development. From an early age, the guy was interested in writing programs, as well as developing unique versions of existing applications. By 1970, Robert Martin had gained some authority in the field of programming and was also nicknamed «Uncle Bob».

Twenty years later, in 1990, Martin is recognized as a leading specialist in the field of creating programs for personal computers, which automatically makes Robert internationalconsultant in the programming world.

At the beginning of the new millennium, Uncle Bob and a team of experienced professionals create a unique agile software development methodology based on the principles of the outdated concept of Extreme Programming.

Программирование — это прикладное искусство

Я часто думал, что архитектура и строительство — плохие метафоры для программирования. Мы не создаем полный проект, чтобы потом строить (по нему) от самого фундамента до полностью готового здания.

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

В этом и есть главная суть «Чистого кода». На протяжении всей книги автор проводит идею о том, что программное обеспечение является искусством и сродни живописи. 


xkcd

Но как перейти от простого написания кода к искусству программирования?

По словам Мартина, основными инструментами, которыми мы располагаем, являются непрерывный рефакторинг и разработка на основе тестирования (TDD). Они неотделимы друг от друга, как две стороны медали. Вот некоторые определения.

Рефакторинг — это процесс реструктуризации существующего программного кода без изменения его внешнего поведения.

Разработка через тестирование — это процесс, в котором требования превращаются в конкретные тестовые сценарии, а затем пишется код и проводится успешное тестирование.

Итак, процесс создания программного обеспечения может выглядеть примерно так.

  1. Напишите тесты на еще не разработанную функциональность. Естественно, они не будут работать.
  2. Реализуйте функциональность так, чтобы тесты выполнялись успешно. Пусть даже код сначала будет не самым хорошим.
  3. Итеративно проводите рефакторинг кода не ломая тесты. С каждым разом ваш код будет становиться все более чистым. 

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

Таким образом, основная идея, представленная Мартином, заключается в том, что чистый код — это то, что возникает в процессе и практике разработки, а не создается за один раз.

Седина и оптимизм

В этом году Роберту Мартину исполнится 71 год. Он пишет о совершенном коде, программной архитектуре без лишнего и жизненном опыте — с легкостью и заботой о поколениях разрабов. Его голова полностью седая, а книги все еще издаются. Так что если вам покажется, что книга написана как-то уж очень по-доброму — знайте: автор сохранил оптимизм в свои года, даже если порой это было сложно. А это дорогого стоит.

Советы пригодятся не только программистам. Многие из них универсальны для всех, кто хочет стать в своем деле профессионалом.

Пишите код, создавайте ПО, стремитесь к совершенству. А к нам приходите за патентами и свидетельствами.

Чистый код — это тяжелая работа и соблюдение принципов

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

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

Лично я,  как человек, который страдает от недостатка уверенности, очень оценил этот акцент. Приятно знать, что даже дядя Боб твердо верит, что кодирование — сложное занятие и требует серьезной работы и дисциплины. Чтобы действительно стать профессионалами в написании чистого кода, нам нужно подходить к нашему развитию как программистов итеративно — так же как к написанию кода.

Программирование и книги

В начале 90-х американец основал компанию Object Mentor, в которой с инструкторами проводились занятия по C++, Java, построению шаблонов проектирования, UML, а также по методологии экстремального программирования.

Авторами такого типа написания программ стали Кент Бек, Уорд Каннингем и другие исследователи. Концепция методологии заключалась в следующем. Ученые стремились применять полезные традиционные методы и практики разработки программного обеспечения, подняв их на новый «экстремальный» уровень.

Например, ранее, чтобы провести ревизию кода, один программист занимался непосредственной проверкой кода, написанного вторым разработчиком. «Экстремальный» вариант этой практики диктовал необходимость «парного программирования». В этом случае один сотрудник занимался написанием кода, второй одновременно непрерывно просматривал только что созданный его коллегой материал.

В 1995 году в Prentice-Hall, американском издательстве, специализирующемся на книгах образовательной тематики, вышел первый труд писателя «Разработка объектно-ориентированных приложений на C ++ с использованием метода Буча».

С 1996 по 1999 год Мартин занимал пост главного редактора журнала C++ Report. В 2002-м появилась новая работа исследователя «Быстрая разработка программ. Принципы, примеры, практика». В этом издании повторялись темы, поднятые в первой книге автора, а также раскрывались новые полезные советы по объектно-ориентированному дизайну и разработке в agile-командах.

Книги, выпускаемые американцем, быстро нашли круг читателей и обрели популярность не только в Штатах, но и в других странах. В 2007 году автор порадовал публику работой «Принципы, паттерны и методики гибкой разработки на языке C#». Мартин попытался собрать теоретический материал по теме, а также раскрыл аспекты практического применения гибкой разработки.

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

В 2008 году библиография писателя пополнилась новым творением — трудом под названием «Чистый код. Создание, анализ и рефакторинг». Главный его посыл — грамотное программирование. В издании Роберт подчеркивал, что даже грубо сделанный программный код способен работать. Однако «грязный» код требует дополнительных ресурсов от компании-разработчика.

Поэтому важно научиться сразу создавать «продукт» без помарок, а как это сделать, рассказывается в книге. Здесь автор привел много примеров, изложил принципы и приемы написания и чистки кода, разработал практические сценарии нарастающей сложности

В 2011 году вышел очередной бестселлер ученого «Идеальный программист. Как стать профессионалом разработки ПО». В труде американец рассматривает вопросы, связанные с графиком работы создателя программ, с отрицательными сторонами «состояния потока», с полезностью парного и группового программирования.

Некоторые темы из этой работы получили развитие в книге 2017 года «Чистая архитектура. Искусство разработки программного обеспечения». Издание адресовано разработчикам, аналитикам, архитекторам и другим работникам сферы программирования.

Абстракция важна


Abstruse Goose

Согласно «Чистому коду», если мы хотим убедиться, что наши функции выполняют только одну задачу, нам нужно убедиться, что все команды в каждой функции находятся на одном уровне абстракции.

Мартин иллюстрирует это следующим примером из FitNesse:

Это сочетание как минимум двух уровней абстракции. Первая — это высокоуровневая концепция рендеринга тега hr с заданным размером, вторая — это детали фактического синтаксиса низкоуровневого построения тега. Чтобы проиллюстрировать это, код реорганизован более чисто, как показано ниже:

Примечания:

  • Функция render () теперь отвечает только за создание тега hr.
  • Низкоуровневые детали построения тега теперь делегируются модулю HtmlTag.
  • Форматирование размера абстрагировано в отдельную функцию.

По словам Мартина:

«Разделение уровней абстракции является одной из важнейших функций рефакторинга и одной из самых сложных для достижения успеха».

Теперь я буду уделять этому большее внимание при написании кода в будущем

Programming and books

In the early 90s, the American founded Object Mentor, in which the instructors were conducted on C ++, Java, building design templates, UML, as well as on extreme programming methodologies.

The authors of this type of writing programs became Kent Beck, Ward Cunningham and other researchers. The concept of the methodology was as follows. Scientists have sought to apply useful traditional methods and software development practices by lifting them on a new «extreme» level.

For example, earlier to conduct an audit of the code, one programmer was engaged in a direct audit of the code written by the second developer. «Extreme» version of this practice dictated the need for «pair programming». In this case, one employee was engaged in writing the code, the second simultaneously looked at the material that was just created by his colleague.

In 1995, the first work of the writer «Developing object-oriented applications on C ++ using the Bucha method was published in Prentice-Hall, the American Publishing Service, which specializes in the books of educational topics.

From 1996 to 1999, Martin served as chief editor of C ++ Report magazine. In 2002, there was a new work of the researcher «Fast Development of Programs. Principles, examples, practice. » In this edition, topics raised in the first book of the author were repeated, and new useful tips on object-oriented design and development in Agile teams were revealed.

Books manufactured by the Americans quickly found a circle of readers and gained popularity not only in the states, but also in other countries. In 2007, the author pleased the public with the work «Principles, Patterns and Methods of Flexible Development in C #». Martin tried to collect theoretical material on the topic, and also disclosed aspects of the practical application of flexible development.

It also addresses the methods of refactoring and methods of productive use of types of UML diagrams. The examples of the tasks set are shown, what eroshes and false actions are allowed during solutions, and prompts are given how to avoid it.

In 2008, the writer’s bibliography was replenished with new creation — labor entitled «Clean Code. Creation, analysis and refactoring. » The main send it is competent programming. In the publication, Robert emphasized that even the rudely made program code is able to work. However, the «dirty» code requires additional resources from the developer’s company.

Therefore, it is important to learn how to immediately create a «product» without blots, and how to do it, tells in the book. Here the author led many examples, outlined the principles and techniques for writing and cleaning the code, developed practical scenarios of increasing complexity.

In 2011, the next bestseller of the scientist «The perfect programmer was published. How to become a software development professional. » In Work, the American considers issues related to the schedule of work of the Creator of Programs, with the negative parties of the «flow state», with the usefulness of pair and group programming.

Some topics from this work were developed in the 2017 book «Clean architecture. Software development art. The publication is addressed to developers, analysts, architects and other programming workers.

Работа программистом

Роберт Мартина начинал свою карьеру с должности помощника программиста в одной из бесчисленных контор по производству офисного обеспечения для довольно слабых компьютеров. Однако этот период жизни юноши длился недолго – в скором времени Мартин создает компанию Object Mentor Inc., в рамках которой начинает вести активную деятельность по консультированию всех желающих. Многочисленные тренинги, семинары и конференции, проводимые конторой, приносят Дяде Бобу успех не только в сфере бизнеса, но и в сфере ораторского искусства. Будущий известный писатель учится общаться с аудиторией, обращаться со словом, попутно делясь со слушателями огромным опытом, накопленным в сфере разработки программного обеспечения.

Вдохновение и юношеский максимализм

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

Автор действительно делится провалами, но в этом и задумка: дать новичкам возможность учиться на его опыте. «… Относитесь к этой книге как к каталогу моих заблуждений, исповеди в моих прегрешениях и сборнику советов, которые помогут вам избежать моих ошибок», — резюмирует Роберт Мартин, не скрывая, что местами там будет прямо-таки нытье.

И делайте скидку на то, что кодить Роберт начал в 1969 году, когда ему было всего 17 лет, а персональных компьютеров еще не было. Программы тогда писали на бумажных (!) формулярах, чтобы потом «наборщицы» на их основе вручную набивали перфокарты. Так что считайте это экскурсом в историю IT, отнеситесь к ветерану с фронта разработки с уважением и уловите интригу. Кто знает, быть может в одной из глав он признается, что в его время еще и жили динозавры.

Будьте внимательны к рекомендациям на страницах

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

 • Паттерны проектирования. Вы должны быть способны описать все 24 паттерна из книги «Банды Четырех» и иметь практическое представление о многих паттернах из книг «Pattern-Oriented Software Architecture».

Принципы проектирования. Вы должны знать принципы SOLID и хорошо разбираться в принципах компонентного проектирования.

Методы. Вы должны понимать суть методологий XP, Scrum, экономной, разработки (Lean), Kanban, каскадной разработки, структурного анализа и структурного проектирования.

• Дисциплины. Практикуйтесь в практическом применении разработки через тестирование (TDD), объектно-ориентированного проектирования, структурного программирования, непрерывной интеграции и парного программирования.

Артефакты. Вы должны уметь работать с UML, DFD, структурными диаграммами, сетями Петри, диаграммами переходов, блок-схемами и таблицами решений», — пишет он.

Так что одно другое не исключает. Наоборот, Роберт делится зернами, которые уже отделены от плевел.

Литературное творчество и признание

Роберт Мартин известен не только как блестящий программист, но и как талантливый писатель.

Его книги по программированию стали бестселлерами и переведены на десятки языков.

Его книга “Чистый код” стала основой для создания множества курсов и тренингов по разработке программного обеспечения.

За свой вклад в науку о программировании Роберт Мартин был награжден множеством престижных премий, в том числе премией “Выдающийся писатель” от ACM.

В 2008 году Роберт Мартин был включен в список “100 самых влиятельных людей в сфере информационных технологий” по версии журнала Time.

В 2019 году он был удостоен премии “За заслуги” от ACM, высшей награды в области компьютерных наук.

Сегодня Роберт Мартин продолжает писать книги, читать лекции и консультировать компании по вопросам разработки программного обеспечения.

Его работа внесла значительный вклад в развитие профессии программиста и продолжает вдохновлять новых поколений разработчиков.

Кроме своих технических книг, Роберт Мартин также написал несколько художественных произведений, включая роман “Погружение в реку” и сборник рассказов “Время и место”.

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

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

Его герои часто являются программистами или людьми, чья жизнь так или иначе связана с технологиями.

Мартин использует свой опыт в разработке программного обеспечения, чтобы создать уникальные и запоминающиеся образы и ситуации.

Юлия Плаксина обозреватель технологических новинок

Авторство известных книг по программированию

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

В 1994 году он стал соавтором книги “Принципы, шаблоны и методики объектно-ориентированного проектирования” вместе с Эриком Гаммой, Ричардом Хелмом и Ральфом Джонсоном. Этот труд, также известный как “Банда четверых”, стал одним из самых влиятельных справочников по объектно-ориентированному проектированию, оказав значительное влияние на разработку программного обеспечения в последующие десятилетия.

Получение международных наград и премий

Заслуги Роберта Мартина в области разработки программного обеспечения не остались незамеченными на международной арене. Он стал лауреатом ряда престижных наград, свидетельствующих о признании его вклада в отрасль.

Мартин был удостоен премии Software Development Magazine в 2003 году за свои инновационные идеи в области объектно-ориентированного проектирования. Кроме того, в 2005 году он получил премию Jolt за выдающийся технический вклад в разработку программного обеспечения, присуждаемую за его книгу “Чистая архитектура”. Награда была признанием его вклада в понимание разработки, проектирования и реализации качественных программных систем.

Делай код самодокументирующимся

В разделах, посвященных комментариям, осмысленным именам и форматированию, Мартин обосновывает необходимость самодокументирования кода. Пример этого приведен ниже:

После рефакторинга:

Примечания:

  • Комментарий удален.
  • Условная логика заключена в метод.
  • Поскольку используется метод класса, то можно использовать переменные экземпляра и создавать методы вообще без параметров.
  • Методу дается содержательное название, что очень облегчает понимание его назначения.

«Чистый код» включает в себя полную главу о присвоении имени, которая, по сути, является разработкой правил Тима Оттингера. 

Вот они.

  • Используйте имена, раскрывающие намерения — например, int elapsedTimeInDays, а не int days …
  • Используйте произносимые имена — например, Customer, а не DtaRcrd102
  • Избегайте кодировок — не используйте префикс m_ и не используйте венгерскую нотацию.
  • Выберите одно слово для каждой концепции — не используйте разные наименования типа fetch, retrieve, get для одной и той же операции по сути.

Work as a programmer

Robert Martina started his career as a programmer’s assistant in one of the countless firms producing office software for rather weak computers. However, this period of the young man’s life did not last long — soon Martin creates the company Object Mentor Inc., within which he begins to be active in advising everyone. Numerous trainings, seminars and conferences held by the office bring Uncle Bob success not only in the field of business, but also in the field of public speaking. The future famous writer learns to communicate with the audience, handle the word, along the way sharing with the audience the vast experience gained in the field of software development.

Uncle Bob

1995 год. Манифест Agile разработки.

— Люди и взаимодействие важнее процессов и инструментов.
— Работающий продукт важнее исчерпывающей документации.
— Сотрудничество с клиентом важнее согласования условий контракта.
— Готовность к изменениям важнее следования первоначальному плану.

Работать в фиксированных отрезках времени, вы не можете удлинять эти отрезки.
Оценивать задачи в условных единицах.
Коммуникации с заказчиком.
Непрерывная интеграция.
TDD,
рефакторинг
приёмочное тестирование
Simple Design

Техническая дисциплина — это тот самый клей, который позволял Agile-разработке работать правильно. Agile становится пустым без технических дисциплин. Создаваемый код вырастет во что-то такое, с чем будет всё сложнее и сложнее работать.

Бизнес понимает что такое дисциплина и не может вести бизнес без этого.
И поэтому бизнесу понравился Scrum за его простоту, очевидность и дисциплину, которую он предлагает.
У вас есть спринты, события, планирование

Это важно для бизнеса. И бизнес подумал: да, это круто нам нужны люди, сертифицированные в этом направлении

Но бизнес не понимает нас как программистов. Он не понимает парное программирование, он не понимает Test Driven Development, не понимает рефакторинг. Это просто выходит за рамки его экспертизы. И не должно входить! Эти практики принадлежат нам, нашей отрасли.

Поэтому бизнес не может утвердить или отвергнуть эти практики. А вы не можете прийти к бизнесу и спросить «как вы смотрите на то, что мы будем писать тесты?». Потому что делая так вы пытаетесь переложить свои риски на бизнес. А бизнес не может оценить это и не может оценить риски отсутствия этих практик и откажется!

Часть «программистов» считают, что нам не нужны эти практики и пишут публикации типа «ООП умерло» , «TDD, я сдаюсь», «Парное программирование? Нет!»

Сертификация превратилась в подобие песни сирены, привлекающей откровенно неправильных людей.

Agile был разработан инженерами.
Затем появилась сертификация, а вместе с ней толпы проджект-менеджеров. Они тратили два дня на посещение тусовки и получали значимую для бизнеса бумажку.
Они буквально разрушили Agile-движение, которое сдвинулось в сторону проджект-менеджмента.
Когда вы сейчас думаете про Agile вы вспоминаете Канбан, Лин стартап и т.д. А где технические практики и дисциплины?

Вы отправляетесь на Agile конференцию, а там совсем немного программистов, там не поднимают технических вопросов.

Цель провалена.

Сколько строк кода в современной машине? 10 миллионов строк кода. Зная, как создаются программы, не пугает?
Сколько людей убивает ПО в автомобилях? Тысячи.
Много примеров когда машина таким образом теряла управляемость и разбивалась.
Мы убиваем людей.
Мы пришли в этот бизнес не для того, чтобы убивать людей, но так получается.
И будет только хуже.
Наша цивилизация всё больше полагается на нас.

СEO североамериканской Volkswagen давал показания перед конгрессом, обвиняя разработчиков программного обеспечения.

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

само выступление:

Понравилась статья? Поделиться с друзьями:
Звездный путь
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: