Подпишись на RSS архива статей

Thursday, July 18, 2019

Получение знаний – спросить или прочитать

Posted by Admin on 09.11.2007

Судьбы у людей очень разные. Программисты не исключение. Один в 40 лет стоит во главе преуспевающей компании, а другой в те же 40 лет остается простым разработчиком. Жалуется на возраст, на то, что с более молодыми тягаться непросто. Идти некуда. Жизнь не сложилась. И т.д. и т.п. Думаю, видели не раз. Отчего так происходит? От чего это зависит? Как этого избежать? Четкого ответа нет. Есть лишь некие мысли на тему, пища для размышления. Этими мыслями я и хочу поделиться.

108-1.jpg

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

Но факт - он и в Африке факт. Тягаться непросто. А значит - проигрывая в скорости мышления, не знаем тайной тропки. Почему? А вот это уже совсем другой вопрос! Как может получиться, что разработчик в 40 лет знает меньше, чем другой в 30? При том, что работает он существенно дольше. Где грабли? Именно об этом и пойдет речь.

Представьте себе ситуацию: вам надо что-то сделать, но вы не знаете, как. Как вы поступите - спросите у кого-то или начнете разбираться сами? Как часто вы поступаете первым способом? Как часто вторым?

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

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

А зачем мне копаться самому, если я могу спросить «гуру» и получить ответ гораздо быстрее?

К сожалению, это произнес один из моих коллег. Почему «к сожалению»? Потому что, по моему мнению, эта практика порочна. Чем именно? Читайте дальше.

Вот возник вопрос. Как сделать ...? Копаться и самому искать - долго. Да и лениво, если честно. А тут сидит «гуру». У него можно получить ответ легко и быстро. Дай-ка спрошу?!

Спросил. Действительно, не отрываясь от дела «гуру» выдал решение. То, что нужно. Вопрос. Как я поступлю в следующий раз?

А точно так же. Спрошу у «гуру». Раз, два, десять, сто... Чем больше раз я получу то, что мне нужно, тем больше вероятность того, что в следующий раз я поступлю так же. Чем больше я буду спрашивать, тем больше я буду знать. Хорошо! Хорошо ли?..

Почему «гуру» так легко отвечает на вопросы? Он сталкивался с этими случаями в практике? Совсем не факт. С частью - возможно. В остальных ситуациях - он просто знает принципы, на основании которых делает выводы для частных случаев.

Вопрос. Что буду знать Я, после того, как получу ответ на вопрос? А буду я знать... ответ для одного частного случая. Не более. Разве что мне объяснят и откуда ноги растут, но это, во-первых, может потребовать много времени, а во-вторых - быстро надоест самому «гуру».

Здесь надо поместить картинку. Жаль, у меня такой нет. Холмик свежей земли, воткнутая в него лопата и табличка со стрелкой вниз: «Собака». Ибо тут она и зарыта. До тех пор, пока я задаю вопросы, я знаю только ответы для частных случаев. Иногда я смогу вывести общие принципы, но это скорее исключение, нежели правило. А следовательно - я обречен спрашивать снова.

Ситуация подобна трясине. Чем больше мы спрашиваем, тем больше привыкаем к этому. Чем больше привыкаем, тем больше спрашиваем. Замкнутый круг. И сколько же времени будем спрашивать? Год? Два?.. Десять... А в 40 лет остается только жаловаться. С молодыми тягаться трудно... Жизнь не сложилась...

Что же получается? А получается, что любимая многими практика задавать вопросы - она выигрышна только в очень ближней перспективе. Сэкономили немного времени. А что было бы, если бы попытались искать самостоятельно?

Кажущийся минус - это отняло бы больше времени. Но вот отняло ли? Я бы сказал - заняло. Ибо за время поиска, во-первых, вы получите гарантированно больше информации, нежели задав вопрос «гуру». Просто потому, что до того момента, как вы найдете то, что вам нужно, вам придется прочитать много другого, не относящегося к проблеме напрямую. А, во-вторых, докопавшись, наконец, вы скорее всего найдете именно общий принцип. Знание которого и делает «гуру» - «гуру». И это - существенный плюс. Ибо в следующей сходной ситуации вы уже не будете тратить время на поиск решения. Более того, знание принципов дает возможность успешно применять их в совсем других областях. Это то, что называется «фундаментальность подхода».

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

Итак, в долгосрочной перспективе получается, что искать самому выгоднее. И именно поэтому мне жаль, что кто-то из моих коллег считает иначе. Тем самым он лишает себя возможности стать «гуру». А следовательно - подвергает себя риску наткнуться на проблемы, когда, откровенно говоря, делать что-то будет уже поздно.

Из любого правила есть исключения. Из того - тоже. Я вовсе не призываю рассчитывать только на себя. Безусловно, «гуру» существуют для того, чтобы к ним обращаться. Только делать это надо с умом. Как я уже показал выше, беготня к «гуру» с любым вопросом может не довести до добра. Однако, безусловно стоит обращаться за помощью в том случае, когда самому заниматься решением проблемы - нерационально. Скажем, когда для решения проблемы требуются знания, получение которых в данный момент займет неоправданно много времени.

Приведу пример. Как и большинство разработчиков я в некоторой степени знаю SQL. Могу спроектировать несложную базу с внешними ключами, каскадными изменениями и т.п. Могу писать несложные запросы. Но любой навороченный update с несколькими условиями, вложенными запросами, упорядочиванием записей и т.п. намного превосходит мои знания в этой области. Безусловно, я могу найти все, что мне надо. Я тешу себя надеждой, что моего интеллекта таки хватит, чтобы разобраться с этими вещами. Но сколько это займет времени? День? Два? Неделю? Весьма вероятно. Учитывая, что я буду идти, фактически, вслепую, ибо не знаю предметной области настолько, чтобы выбрать направление сразу. И, главное, - это все-таки за пределами МОЕЙ предметной области. Я Java-разработчик, с SQL я имею дело постольку-поскольку. И потому - совсем не факт, что мне в будущем понадобятся эти знания настолько, чтобы сейчас потратить кучу времени. Вот это - повод идти к «гуру». Хотя и тут я лично сначала попытаюсь что-то сделать сам. И в любом случае изучу предложенное «гуру» решение, на будущее.

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

Есть также ситуации, когда самому получить знания очень сложно, ибо они происходят из опыта. Классический случай - архитектура приложения. Никто и никогда не скажет, как нужно проектировать, ибо в каждом случае необходимо принимать свое решение. Да, есть такое явление, как шаблоны проектирования. Однако они, во-первых, тоже не панацея, а во-вторых - иногда могут дать и обратный эффект. То, что хорошо в одном случае, может быть плохо в другом. Да и сами шаблоны могут быть реализованы ОЧЕНЬ по-разному. В зависимости от конкретной ситуации необходимо выбрать наиболее подходящее решение. В качестве примера - почитайте статью Реализация шаблона Singleton. Даже такой простой шаблон может быть реализован сильно отличающимися способами. И я еще привел не все способы реализации!

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

Подведем итоги. Личные достижения в области разработки программного обеспечения, как правило, связаны с уровнем профессионализма. Следовательно, если мы не хотим попасть в ситуацию, когда нас будут обходить более молодые - необходимо набирать опыт. Постоянно. Только так можно быть всегда на шаг впереди и оставаться «гуру». А наиболее рациональный (с прицелом на далекое будущее) способ набирать знания - искать ответы самостоятельно. В разумных пределах, разумеется. Если же затраты на поиски неоправданно велики - стоит обратиться к «гуру». Но и это делать с умом.

Надеюсь, суть мыслей ясна. Выбирает же каждый для себя. Сам. И только он отвечает за конечный результат.

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

Основная цель моего присутствия в форуме-- отвечать на вопросы. Зачем? Очень просто. Моя текущая работа охватывает далеко не все области. И если я буду ограничиваться только тем, чем занимаюсь с 10 до 19, то во всем остальном безнадежно отстану. А я все-таки хочу быть профессионалом. Форум же хорош тем, что там всплывают вопросы из ОЧЕНЬ разных областей. И КАЖДЫЙ из этих вопросов становится темой для исследования. Почитать документацию. Закопаться в исходный код. Написать несколько тестов. И, даже ответив на вопрос, можно не останавливаться, а поискать еще и вокруг, раз уж все равно коснулся темы.

Хороший пример. Потребовалось кому-то узнать, как получить доступ к определенной точке изображения. В смысле, прочитать значение пикселя. Сначала я выдал несколько способов. Потом понял, что, собственно говоря, человеку НЕ НУЖНО получать значения, у него изначально неверный подход. Объяснил, как стоит подойти к решению его задачи. И тем не менее - на ближайшую неделю закопался в Java 2D Guide. Зато теперь я знаю, что такое цветовые профили, как представляются изображения и много чего другого.

Таким образом, ответ достаточно прост. Я постоянно отвечаю на вопросы в форуме потому, что таким образом узнаю что-то новое для себя. И именно это позволяет мне быть профессионалом и отвечать на вопросы. Круг замкнулся.

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

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

Первоисточник >>>

Comments

6 Responses to “Получение знаний – спросить или прочитать”
  1. snaky says:

    Хорошая статья. С первой ее частью согласен.
    А вот со второй, которая про вопрос "если ты такой умный, то что ты тут делаешь?" не очень.
    Нельзя быть профессионалом во всем.
    Если я, к примеру, программист на C++, то зачем мне копатся в Java 2D Guide? Да, кругозор - полезная вещь. Но тут не нужо "перегибать палку". Не лучше ли бОльшую часть усилий направить на то, что конкретно тебе интересно, именно на ту облать, который ты занят, в которой хочешь стать "гуру"? Изучать все подряд - не рациаонально. Лучше быть профессионалом в своей конкретной области, чем, как сейчас часто говорят, "аникейщиком" (всего по чуть-чуть).

  2. Вадим says:

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

  3. Пётр says:

    Один работник достал вопросами. Стал отвечать:"Подумай". Говорит:"А зачем, ты ж думаеш".

  4. MusgooD says:

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

  5. Антон says:

    Интересная статья.Благодарю.

  6. Corgan says:

    Спасибо за статью, но я с многим не согламен!! про гуру.

Leave a comment, and if you'd like your own picture to show up next to your comments, go get a gravatar!

home | top