Не учитесь программировать у форумов – читайте книги и документацию

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

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

Сразу оговорюсь. Я не против форумов как таковых. Более того я ни в коем случае не преследую цель кого-либо осудить или оскорбить. Нет.

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

Особенности формата

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

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

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

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

Мотивация

Как показывает практика, большинство ищет советы на бесплатных ресурсах.

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

Обычно ответы на форумах можно отнести к одной из следующих категорий:

  • Краткое словесное описание решения;
  • Минимальный пример кода, иллюстрирующий принцип решения;
  • Ссылка на другие материалы форума с обсуждением аналогичного вопроса. Далее см. предыдущие категории.

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

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

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

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

А, это всё напрямую влияет на качество Вашей собственной программы.

Особо хочется сказать о ссылках на предыдущие материалы или копировании решения с них.

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

Коммерческие интересы и уровень квалификации

Здесь находится самое больное место у очень и очень многих форумов.

Ведь они бесплатны, а даже за «бесплатный сыр» (хостинг, домен и т.д.) нужно платить.

Как зарабатывают форумы? Правильный ответ – при помощи размещения рекламы. А, доход от рекламы, в свою очередь, напрямую зависит от посещаемости сайта.

Кого больше и кто обеспечит, соответственно, наиболее высокую посещаемость и доходность площадки?

  • Профессионалы с многолетним опытом, обладающие соответствующими знаниями и навыками. Почти не задающие вопросов;
  • Новички, которые ещё не обладают ни тем, ни другим, но самостоятельно изучают программирование (в ВУЗе или в рамках самообразования, не важно) и к этому стремятся;
  • Искатели готовых решений в лице:
    • Студентов, которые не хотят ни учиться, ни устраиваться на работу;
    • Людей, которые не хотят утруждать себя даже работой с поисковыми системами, не говоря уже про всё остальное («на форме дадут, пусть по ссылке, но готовое»);
    • Людей, которые пришли в программирование далеко не по велению души (этот вопрос достаточно глубоко затронут в статье «Желающим переквалифицироваться в программистов»);
    • Других подобных категорий пользователей.

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

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

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

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

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

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

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

Тему с примером (сообщение #3) можно найти здесь.

Задача. Реализовать автозаполнение ComboBox (Delphi) таким образом, чтобы при вводе автоматически подставлялись только те данные, которые удовлетворяют вводимому значению (совпадают с начальной частью вводимого слова без учета регистра).

Реализация автора совета вполне рабочая (стиль оформления кода сохранён):

Однако будет более грамотным решением уйти от принудительного выхода из цикла. Например, так:

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

В данном случае вместо того чтобы при работе с «классическим» ADO.NET воспользоваться SQL для выборки единичной записи используется поиск по DataTable.

И что же? Вместо того чтобы вежливо указать автору на ошибочность такого подхода и предложить более удачные варианты было просто выдано решение задачи в первоначальной постановке. Причём во всех мыслимых вариантах от цикла for до LINQ. Как будто выполняли задание «конкурса на лучшую реализацию».

Про SQL, а тем более паттерны, в частности тот же «Репозиторий», никто даже и не вспомнил.

Правда в одном из ответов есть скромная отсылка к Entity Framework. Только на фоне всего остального содержания она выглядит, по меньшей мере, не серьёзно. Если предлагать хорошее, то почему не сделать это сразу?

Делайте выводы сами.

Справедливости ради, следует отметить, что далеко не все форумы страдают описанным недостатком. Особенно в тяжёлой форме.

Многие пытаются сохранять равновесие между интересами различных групп пользователей и многим это даже в значительной степени удаётся.

Как говорится, было бы желание…

У кого же учиться программировать?

Самое лучшее решение уже указано в названии статьи – книги и документация.

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

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

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

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

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

Ни один форум не способен заменить литературу. В особенности документацию. Иначе это будет уже не форум, а что-то другое.

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

Поэтому, по мере профессионального роста велика вероятность, что Вы сами будете обращаться на форумы всё меньше и меньше.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *