Поиск-внедрение

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

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

90% кода уже написано до нас, задача заключается только в том, чтобы его найти. Понимание этого и способность быстро решить  задачу поиска и определяет разницу между студентом программистского факультета и
опытным программистом. А вовсе не скорость печати или виртуозное владение шаблонами C++.

Подход к решению любой программистской задачи должен быть единообразным (я бы назвал его «поиск-внедрение»):

  1. ищем похожие решения во всех доступных источниках;
  2. если находим, выясняем, можно ли использовать (проверяем лицензию);
  3. если да, разрабатываем наиболее удобный вариант повторного использования:
      • в виде внешней библиотеки (статической, динамической);
      • переделка или адаптации кода (если позволяет лицензия)
      • интеграции решений из найденного кода в существующий (это, кстати, наиболее тонкий и неочевидный вариант с точки зрения лицензии на код, нужно быть особенно осторожными);
  4. если не находим, пишем (собираем) из тех частей, которые удалось найти, также не забываем подумать, как сделать новый код максимально доступным в рамках его лицензии (как минимум это означает доступность в рамках коллектива).

Существуют разные источники информации:

  • MSDN, BDN и прочие интегрированные системы помощи;
  • интернет в общем (кодерские сайты, форумы, страницы разработчиков)
  • другие разработчики (коллеги, авторы используемых библиотек и другие)

При этом технологии поиска для каждого источника разные. Я, например, частенько замечаю у сотрудников полное неумение  искать информацию в msdn по связке index-see also или search-see also. Нет нужной команды в индексе — все руки опускаются. А все потому, что не учат поиску.

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

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

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

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

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

Статья впервые опубликована в авторской колонке сетевого журнала «Компьютерная графика и мультимедиа» ).

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

На платформе WordPress.com. Тема: Baskerville 2, автор: Anders Noren.

Вверх ↑

%d такие блоггеры, как: