Должен ли новый программист сосредоточиться на одной технологии, пока он не владеет ею? [закрыто]


10

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

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

Это не проблема, хотя. Он продолжает искать новые технологии (Node.js, MongoDB, EC2 и т. Д.). Я пытался сказать ему, что он должен изучить некоторые основы своей RDMS по своему выбору (MySQL), поскольку он использует ее каждый день, прежде чем тратить кучу времени на изучение основ MongoDB (и, возможно, переходить к чему-то новому).

Неужели я здесь не прав, или он должен попытаться сосредоточиться на чем-то одном за раз и получить действительно хорошее в этом?


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

Кроме того, какую технологию следует изучить?

@ ThorbjørnRavnAndersen Не одна технология, а стек LAMP - это то, с чем он работает каждый день. Я думаю, что он должен изучить все основные / относящиеся к своей работе детали о MySQL, Apache, PHP и JavaScript как минимум.
Брэндон Вамбольдт

1
Тогда вы, по сути, ответили на свой вопрос «нет».

1
Разве он не изучает сразу несколько технологий, таких как веб, базы данных и т. Д.? Каковы границы того, что представляет собой технология здесь?
JB King

Ответы:


18

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

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

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


2
+1 за второй абзац. Я бы добавил, что изучение различных языков, фреймворков и API-интерфейсов может многому научить вас, ПОЧЕМУ дизайнеры решили реализовать данный язык / фреймворк / API так, как они это сделали. Предоставление учащемуся более глубокого понимания программирования и программного обеспечения в целом. По крайней мере, имхо
Джейми Тейлор

+1 Бывают ситуации, когда вы научитесь фокусироваться, например, когда у вас есть «настоящая» работа по программированию. Но как получить работу, если вы работали только с одной структурой? Научитесь писать что-то в более чем одной структуре / библиотеке, чтобы вы могли дополнить свое резюме и показать, что вы не склонны к какой-то конкретной технологии. ;-) Вы можете узнать такие вещи, как нумерация страниц и RMDB позже, когда вы получите реальный контекст для этого.
Спойк

@Spoike У него «настоящая» работа по программированию, поэтому я пытаюсь заставить его сосредоточиться на технологиях, которые он использует каждый день для этой работы
Брэндон Вамбольдт

1
@RougeCoder: Дайте ему соответствующие задачи (постройте этот гигантский список, отфильтруйте элементы, нарисуйте диаграмму с сгруппированными образцами и т. Д.), Чтобы он мог научиться делать концепции, о которых вы хотите, чтобы он знал. Если таких задач нет, у него нет контекста, чтобы заставить эти знания придерживаться.
Спойк

1
Раньше я думал, что это BS или, по крайней мере, преувеличение, когда люди говорили что-то вроде «изучение функционального программирования заставляет вас думать иначе». Оказывается, они сокращали эффект, который он оказывает на ваш код. Мой код уже совершенно другой, и я еще не владею своим функциональным языком выбора и не пытаюсь изменить способ написания кода. Это действительно сенсационное сообщение.
Стивен Эверс

5

С обеих сторон есть веские аргументы. Знание « достаточно » о множестве различных технологий, безусловно, ценно. Зная « немного » о множестве различных технологий? Не так много.

Глубокое знание конкретных технологий, безусловно, может быть полезным - ЕСЛИ на них есть постоянный спрос. Знать « все, что нужно знать » о конкретной технологии? ... скорее всего, перебор.

Итак, все это на волоске. Если он заканчивает создавать замечательные приложения с помощью nosql, зачем ему знать разницу между движком InnoDB и движком MyISAM?


Ну, разница между InnoDB и MyISAM в основном транзакции. Если он не понимает транзакции, у него есть шанс правильно работать с такими понятиями, как «возможная последовательность»?
Майкл Боргвардт

Pardon? Никто не сказал, что он не понимает транзакции, и то, что я написал, вовсе не подразумевало этого.
2012 г.

3

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

Сесть с одной вещью и стать действительно хорошим

В настоящее время я работаю с C # и Microsoft XNA, чтобы сделать игру. Я узнаю много нового о XNA, и, хотя я уже достаточно хорошо разбираюсь в C #, мои знания постепенно расширяются (сегодня я узнал об ограничениях на параметры типа ).

Однако мне не нужно становиться «действительно хорошим» в XNA или C #. Если бы я должен был закончить свой проект сейчас и двигаться дальше и никогда больше не использовать ни один из них, я был бы полностью удовлетворен, и мое обучение продолжилось бы в другом месте.

Принципы важны, хотя

По крайней мере, я понимаю основные принципы. Когда я создаю вещи в C # и XNA, я понимаю, что я делаю, и если я не делаю, я узнаю об этом.

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

Проблема здесь в следующем: знает ли он, что такое @ $ #! он делает, или он программист, который не знает, как программировать?


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

Да, и это является проблемой. Если он пишет код, он не понимает, что он на полпути к тому, чтобы быть программистом копирования и вставки, и быть программистом, который понятия не имеет, что он делает.
doppelgreener

3

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

Существует тонкая грань между изучением теории / созданием основы и попыткой оставаться мотивированным.

По крайней мере, он не застрял на одном языке. Иногда вы берете хорошее с плохим.


3

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

Его пытливый ум всегда в движении, почему бы не дать ему направление. Начните с объяснения ему, почему нумерация страниц важна и необходима. Позвольте ему взглянуть на сайты с нумерацией страниц и сайты без них.

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

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

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

Я думаю, что он делает подход сверху вниз, а вы, с другой стороны, хотите, чтобы он подход снизу вверх


1

Почему это плохо?

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

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

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

Я думаю, что это имеет смысл.


1

Лично, если бы кто-то сосредоточился только на одной технологии, я бы сказал, что это должен быть C # / Java, используемый вместе с SQL.

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

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

В идеале, одна объектно-ориентированная платформа, одна мобильная платформа, одна веб-платформа, а затем очень хорошие знания SQL (или любой другой среды БД).

И основы в первую очередь, иначе он застрянет позже!


0

Неплохо, если он новичок в программировании.

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

У меня была эта проблема с самим собой, я хочу знать все это Java, C, C ++, C #, Phyton, ASP.NET ... и т.д., но я понял, что не могу знать все это, поэтому я сосредоточился на нескольких вещах, и это очень лучше.

Так что он должен делать (посоветовать ему):

  1. Подумай, что ты хочешь делать
  2. Изучите все варианты
  3. Найди то, что тебе подходит
  4. Узнать его
  5. Никогда не переставай учиться

Я бы не согласился с @arnaud, если вы всегда изучаете и изучаете новые вещи, когда перед вами новый проект (ну, не полностью). Требуется слишком много времени, чтобы исследовать и изучать новые вещи снова и снова, и некоторые проекты имеют ограничение по времени. Но с другой стороны, если вам нужно научиться чему-то новому, все в порядке: D.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.