(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Искусство программирования?

Источник: the-programmer
the-programmer

 

Искусство программирования?

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

Начало


Так сложилось, что на текущем месте работы программисты предоставлены самим себе. То есть, конечно, кодят на благо предприятия, но совершенно бесконтрольно, вплоть до отсутствия банального тестера. ТЗ даже на "тяжелые" программы редко превышает объема в три листа А4 (один из которых - подписи всех причастных).

Звонки по поводу проблем с ПО направляются напрямую программистам. С этого всё и началось.

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

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

Опус о творческих личностях


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

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

Действия таких людей имеют определенный вектор, но его параметры задаются не числами с плавающей точкой, а направлением "зюйд-зюйд-вест". Это касается не только походов в магазин (покупать что-то по списку с такими людьми просто нереально), но и вообще всего, включая творчество.

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

Творческие программисты


Возвращаемся к беседе о программистах. В ходе общения выяснилось, что некоторые коллеги не без гордости говорят о себе как о представителях "творческой профессии". При этом они действительно используют творческий подход ("вектор зюйд-зюйд-вест") с практически полным набором атрибутов. В результате появляются модули совершенно чудаковатой связности, классы с иерархией "тут вот такую фигуру сделаю", методы волшебным образом делятся на "интересные" (хорошо проработанные, с четкой обработкой ошибок - вроде реализации шифрования и сетевых протоколов) и "неинтересные" (километровые листинги экспортирования данных, с кучей копипаста).

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

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

Мораль сей басни


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

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

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

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 21.06.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
FastReport.Mono Single License
WinRAR 5.x 1 лицензия
Microsoft 365 Business Basic (corporate)
ABViewer Enterprise пользовательская
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Программирование на Visual С++
Adobe Photoshop: алхимия дизайна
Новые программы для Windows
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100