Хорошо, я уже некоторое время учу приятеля программированию. Он очень быстро учится и до сих пор неплохо программирует. Однако у него есть одна «проблема», которую я пытаюсь исправить.
Он подключается и начинает заниматься программированием на высоком уровне, не изучая некоторые основы (он создал полноценное веб-приложение, но все еще не знает нумерацию страниц или управление сессиями).
Это не проблема, хотя. Он продолжает искать новые технологии (Node.js, MongoDB, EC2 и т. Д.). Я пытался сказать ему, что он должен изучить некоторые основы своей RDMS по своему выбору (MySQL), поскольку он использует ее каждый день, прежде чем тратить кучу времени на изучение основ MongoDB (и, возможно, переходить к чему-то новому).
Неужели я здесь не прав, или он должен попытаться сосредоточиться на чем-то одном за раз и получить действительно хорошее в этом?
источник
Ответы:
Лично я думаю, что при обучении программированию может быть хорошей идеей попробовать разные технологии и языки. Сосредоточение внимания на одной технологии имеет очевидное преимущество, которое делает вас очень хорошим в этом, но очевидный недостаток - знание только одной технологии.
Но я думаю, что более важным тонким недостатком является то, что языки и структуры обычно идут с идеологией. Есть много программистов (возможно, большинство программистов), которые применяют только одну идеологию во всем, что они программируют. Часто это происходит потому, что они очень хорошо выучили один фреймворк на одном языке, и теперь они ничего не видят без этих защитных очков.
Специально для кого-то, кто только учится программировать, я не думаю, что это проблема - хотеть попробовать то, что есть, и подождать, чтобы сосредоточиться на чем-то позже. В конце концов, будет сложно написать что-то существенное, не зная прилично хороших технологий.
источник
С обеих сторон есть веские аргументы. Знание « достаточно » о множестве различных технологий, безусловно, ценно. Зная « немного » о множестве различных технологий? Не так много.
Глубокое знание конкретных технологий, безусловно, может быть полезным - ЕСЛИ на них есть постоянный спрос. Знать « все, что нужно знать » о конкретной технологии? ... скорее всего, перебор.
Итак, все это на волоске. Если он заканчивает создавать замечательные приложения с помощью nosql, зачем ему знать разницу между движком InnoDB и движком MyISAM?
источник
Я согласен частично. Ему нужно знать основополагающие принципы - но ему не нужно просто сесть на что-то и получить действительно хорошее в этом. Никто не делает.
Сесть с одной вещью и стать действительно хорошим
В настоящее время я работаю с C # и Microsoft XNA, чтобы сделать игру. Я узнаю много нового о XNA, и, хотя я уже достаточно хорошо разбираюсь в C #, мои знания постепенно расширяются (сегодня я узнал об ограничениях на параметры типа ).
Однако мне не нужно становиться «действительно хорошим» в XNA или C #. Если бы я должен был закончить свой проект сейчас и двигаться дальше и никогда больше не использовать ни один из них, я был бы полностью удовлетворен, и мое обучение продолжилось бы в другом месте.
Принципы важны, хотя
По крайней мере, я понимаю основные принципы. Когда я создаю вещи в C # и XNA, я понимаю, что я делаю, и если я не делаю, я узнаю об этом.
Если бы я написал нумерацию страниц, я бы понял, как работает нумерация страниц. Если ваш друг создал несколько страниц и не знает, как это работает, это проблема. Если бы он не создавал нумерацию страниц, ему не нужно было бы знать, почему.
Проблема здесь в следующем: знает ли он, что такое @ $ #! он делает, или он программист, который не знает, как программировать?
источник
Я предполагаю, что он пытается другие языки, потому что у него есть кое-что, что он хочет построить. Вы всегда можете вернуться к языку или структуре и узнать больше.
Существует тонкая грань между изучением теории / созданием основы и попыткой оставаться мотивированным.
По крайней мере, он не застрял на одном языке. Иногда вы берете хорошее с плохим.
источник
Я нахожу его отношение как актив, а не пассив. Его способность проводить исследования выше среднего. Его кривая обучения также невелика. Почему бы не использовать эту черту, если вы хотите, чтобы он чему-то научился.
Его пытливый ум всегда в движении, почему бы не дать ему направление. Начните с объяснения ему, почему нумерация страниц важна и необходима. Позвольте ему взглянуть на сайты с нумерацией страниц и сайты без них.
Как насчет того, чтобы конструктивно критиковать то, что он делает. «Ух ты, ты сделал что-то классное, но разве не будет лучше, если ты сделаешь это так с упором на оптимизацию и лучшие практики».
Я думаю, что сравнение между хорошей и плохой практикой может действительно стимулировать его разум.
Не ограничивайте его, он в конце концов найдет что-то, что ему понравится, и согласится с этим на некоторое время. Если бы я был тобой, я бы дал ему много учебного материала о том, чем он так увлечен.
Я думаю, что он делает подход сверху вниз, а вы, с другой стороны, хотите, чтобы он подход снизу вверх
источник
Почему это плохо?
Наоборот, я думаю, что это очень хорошо! Это показывает любопытство и стремление учиться. Более того, он хочет найти правильный инструмент для правильной работы! Лучше, чем придерживаться неадекватной технологии первого выбора. ;)
На самом деле, я делаю это так же, как опытный программист. И я рекомендую это. Всякий раз, когда у меня есть новый проект, мое поведение выглядит следующим образом:
Я думаю, что это имеет смысл.
источник
Лично, если бы кто-то сосредоточился только на одной технологии, я бы сказал, что это должен быть C # / Java, используемый вместе с SQL.
Исходя из этого, я считаю, вы можете адаптироваться к любой другой технологии.
Но придерживаться одной технологии может быть ограничением, если парень хочет войти в корпоративную среду.
В идеале, одна объектно-ориентированная платформа, одна мобильная платформа, одна веб-платформа, а затем очень хорошие знания SQL (или любой другой среды БД).
И основы в первую очередь, иначе он застрянет позже!
источник
Неплохо, если он новичок в программировании.
Он увидит, как работают некоторые вещи. Но если он не понимает, что он делает, лучше вообще этого не делать.
У меня была эта проблема с самим собой, я хочу знать все это Java, C, C ++, C #, Phyton, ASP.NET ... и т.д., но я понял, что не могу знать все это, поэтому я сосредоточился на нескольких вещах, и это очень лучше.
Так что он должен делать (посоветовать ему):
Я бы не согласился с @arnaud, если вы всегда изучаете и изучаете новые вещи, когда перед вами новый проект (ну, не полностью). Требуется слишком много времени, чтобы исследовать и изучать новые вещи снова и снова, и некоторые проекты имеют ограничение по времени. Но с другой стороны, если вам нужно научиться чему-то новому, все в порядке: D.
источник
Я согласен с вами, иногда легко получить поверхностное знание конкретной структуры, технологии или языка, но получить реальное понимание, лучше всего участвовать в разработке реального мира до конца и поддерживать его - стать кем-то, кто другие приходите за советом. Желательно стать мастером на все руки, мастером одного, а не мастером на все руки, мастером ни одного . Сказав это, я бы не стал отговаривать его от изучения новых вещей, потому что у него явно хороший энтузиазм.
источник