+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 91.78 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

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

21.06.2012 16:34
the-programmer

 

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

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

Начало


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

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

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

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

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

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

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

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



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года