Подтвердить что ты не робот

Почему программисты-новички, похоже, уклоняются от библиотек?

Я заметил много вопросов от новых программистов, которые можно решить с помощью библиотек. Когда предлагается библиотека, часто они реагируют "Я не хочу использовать библиотеку X". Это кривая обучения? или? Просто любопытно!

4b9b3361

Ответ 1

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

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

Ответ 2

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

Итак, столкнувшись с попыткой решить проблему X, "использование библиотеки" может звучать так же, как "решить проблему Y THEN problem x".

(Кроме того, их преподаватели сказали им не делать этого. Мне удалось пройти весь путь, хотя мой подкласс на С++, не изучая STL, существовал. Мальчик, сделал это, приготовил мою лапшу.)

Ответ 3

Некоторые люди, столкнувшись с проблема, думаю: "Я знаю, я буду использовать библиотеки". Теперь у них есть два проблемы.

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

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

Ответ 4

Почти всегда это потому, что их профессор сказал им, что они не могут.

Иногда это просто потому, что они хотят самим изучить его, но я бы сказал, что это редко.

Ответ 5

Это кривая обучения.

Ответ 6

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

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

Ответ 7

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

Так что для меня просто хотелось посмотреть, смогу ли я это сделать.

Ответ 8

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

По крайней мере, для меня, (пытаясь сделать) сам, мой способ обучения.

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

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

Большая часть очков закрыта (для меня главная - это кривая обучения), но один из них, я думаю, играет роль:

Потому что узнавание о библиотеке менее захватывающее, чем само кодирование одной и той же функциональности.

Ответ 12

Больше библиотек = меньше оплачиваемых часов.

Ответ 13

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

Ответ 14

Потому что это весело.

Ответ 15

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

Ответ 16

Я программист, а не психолог!:)

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

Ответ 17

Когда вы пытаетесь научиться делать что-то, в любое время что-то совершается "магически", вызывая AwesomeClass.doAwesomeStuff(), вы в конечном итоге отдаете часть контроля. Когда вы "новый" и не знаете, что отдаете, или почему это может быть неприятно. Это был мой основной поступок против Rails, когда я впервые изучил его. Так много всего просто "сработало", и я не знал, почему, не копая много источников Rails (чего я обычно не успел сделать).

По крайней мере, что я беру на себя.

Ответ 18

То же самое, что делают более опытные разработчики -

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

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

Ответ 19

Ответ от noob - "Я не уверен, как использовать библиотеки или даже как обращаться к ним или как это работает"

Ответ 20

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

Я думаю, что это одна из тех вещей, где "практика делает совершенным".

Ответ 21

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

Ответ 22

Я думаю, что профессора хотят, чтобы они придерживались основ. Когда я окончил школу под градом, я знал С++, Java и некоторые другие языки, но не имел понятия о библиотеках и фреймворках, используемых в компаниях. Это было похоже на то, что вы знаете java... да, можете ли вы написать сервлет.

Ответ 23

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

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

Ответ 24

Некоторые библиотеки с открытым исходным кодом ошибочны или не эффективны, как другие.

Ответ 25

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

Ответ 26

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

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

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

См. мой случай, я в основном программист на С# и начал изучать javascript для своей работы. Некоторое время назад здесь, в стеке, я задал вопрос о шаблоне puplisher/подписчика javascript. Большинство ребята ответили, что они уже реализованы в таких рамках, как JQuery и прототип, и вы можете легко их повторно использовать.

Приветствия

Рамеш Вель

Ответ 27

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

  • Частью этого как "программистов-новичков" является отсутствие доступа к библиотекам. Если вы не знаете, что они существуют, как вы знаете, чтобы использовать их?
  • Доступно количество доступных опций. Скажем, мне действительно интересно узнать больше о MVC, но если мне нужно выбирать между cakephp и smarty и zend и... хорошо, вы можете быстро увидеть, как работает механизм, чтобы найти способ достижения цели, не вкладывая время в эксперимент, Взгляните на Freshmeat или SourceForge, чтобы лучше понять сложный выбор доступных библиотек.
  • Сомнительная поддержка в сочетании с отрывочной/устаревшей документацией для библиотек. Я хочу использовать этот инструмент, который больше не может работать или может быть оставлен в будущем? Вполне вероятно, что проект будет развиваться, и так будет и для проекта библиотеки. Будет ли его полезность длиться всю жизнь моего проекта или мне потребуется повторная повторная работа?

Ответ 28

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

Ответ 29

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

Ответ 30

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