Почему разработчики должны идти в ногу с технологиями и методологиями? [закрыто]

28

Мне всегда дают совет, что разработчики должны быть в курсе новейших технологий - таких как webrtc, обновления html5 и css3 и новые библиотеки js, методологии программного обеспечения, такие как TDD, DDD и BDD.

Вопрос почему ? Почему мы должны постоянно обновляться? Разве мы не можем просто придерживаться того, что мы знаем, и стать лучше с этим?

Верн Анчета
источник
16
В разработке программного обеспечения есть толчок к тому, чтобы сделать и то, и другое: познакомиться с некоторыми технологиями и не отставать от постоянно меняющихся новых технологий. Отчасти поэтому чертовски сложно найти хороших разработчиков.
joshin4colours
2
Что касается голосования до конца, я думаю, что это справедливый вопрос, и я не могу найти точную копию на сайте. Просто, пожалуйста, постарайтесь следить за плохими ответами, чтобы мы могли их очистить.
maple_shaft
4
Я не понимаю, почему программисты как класс должны «быть в курсе» последних достижений «веб-технологий» для того, что обе эти концепции на самом деле означают на практике. Любопытный ум и постоянное обучение, безусловно, имеют решающее значение для личностного роста в любой профессии, но ложная дилемма, предполагающая, что «веб-технология» является единственной осью личностного роста, делает этот вопрос слишком загруженным для моих вкусов. Глядя критически на высоко проголосовавшие ответы - кто-нибудь из них даже отвечает на вопрос, кроме предложения банальностей поощрения и мотивационных лозунгов, чтобы "остаться в игре"?
bmike
1
@bmike: Я согласен с вами: конечно, любопытный ум будет постоянно изучать новые вещи. В этом случае новые вещи означают что-то, чего вы не знаете, это может быть интересный язык программирования, который существует уже 40 лет или дольше (например, Lisp). Индустрия подталкивает нас к обновлению и рассмотрению последних вещей, интересных, более эффективных по умолчанию. Мой главный вопрос: изучение технологии, которая вам не нужна, только потому, что она новая, - пустая трата времени.
Джорджио
1
@RobertHarvey Это не так, как будто вопрос задает вопрос "Как?" или что?" как это было бы NC. Это вопрос ПОЧЕМУ, и я лично чувствую, что это актуально и подотчетно.
maple_shaft

Ответы:

42

Новые технологии появляются по причине. Обычно причина в том, что они более эффективны или эффективны при выполнении определенной задачи.

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

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

анонимное
источник
3
+1: изучение новых технологий часто полезно, даже если вы никогда не применяете эту технологию напрямую : новые взгляды и перспективы, которые она предоставляет, безусловно, могут применяться с использованием «старых» технологий.
Иоахим Зауэр
7
С другой стороны, прыжки на каждой новой технологии также могут быть контрпродуктивными, потому что многие из них исчезают так же быстро, как и всплывают на поверхность.
Гордон Белл
@GordonBell - Верно ... Я не могу говорить за кого-то еще, но я обычно не испытываю воды с новыми технологиями, пока они, по крайней мере, не покажут признаки или потенциал того, чтобы стать более "мейнстримом" - что приносит преимущества от множества документация, помогающая обучению, пользовательская база и т. д.
Anonymous
Они часто возникают для удовлетворения потребностей в научных кругах, но не в реальном мире. Ты должен написать тезис о чем-то .
dbracey
@dbracey: Да, и двадцать лет спустя какая-то крупная компания может найти этот тезис о том, что исследователи превратились в какую-то зрелую технологию и начинают продавать ее как новую технологию .
Джорджио
27

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

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

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


1 Например, выбрав COBOL вместо PL / I в начале вашей карьеры в 1965 году.

2 Это работает как для естественных языков, так и для языков программирования.

dasblinkenlight
источник
1
+1 @dasblinkenlight Мне нравится это утверждение: «... заблаговременное изучение новых вещей поможет вам сократить время обучения, когда следующий технологический сдвиг придет к вам в отрасль». Вот почему я сейчас учусь Опа
Энтони
12

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

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

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

Telastyn
источник
2
Ничто не бесит меня больше на работе, чем необходимость застрять в команде с программистом, который пишет код, как он делал 10 лет назад. Рамки развивались. Инструменты развивались. Разве ты не хочешь облегчить свою работу? Вы не видите плотников, использующих ручные сверла и ручные пилы весь день, когда у них есть электроинструменты. Они развивались. И, как и в любой профессии, изобретены новые инструменты для удовлетворения потребностей. Неиспользование нового инструмента и попытки взломать что-либо вместе старым способом, как правило, наносит ущерб качеству строящегося объекта. Будь то в коде или в лесу.
CaffGeek
2
«Фреймворки развивались. Инструменты развивались. Разве вы не хотите облегчить свою работу?»: Существует бесконечное множество способов решения определенных проблем, и иногда новый инструмент или язык не лучше, а просто эквивалентен старому. Но у вас гораздо больше опыта со старым, чтобы вы могли быть более продуктивным с ним. Мы слишком часто предполагаем, что NEW == ЛУЧШЕ. Вместо этого мы всегда должны оспаривать это утверждение.
Джорджио
2
@ Джорджио - Одно дело иметь здоровый скептицизм по поводу «следующего большого события». Это еще один, чтобы положить голову в песок, как реальный прогресс проходит мимо вас. Последнее слишком распространено.
Теластин
4
@Telastyn: я бы назначил 50% на оба подхода: иногда у меня складывается впечатление, что новая технология продвигается только потому, что она новая. И это только альтернативный (не лучший) способ ведения дел. Таким образом, мы должны потратить месяцы, чтобы стать опытными с новой технологией, и после этого мы снова становимся такими же продуктивными, как и со старой. Но, конечно, вы правы в том, что опускать голову в песок тоже неправильно, и всегда нужно следить за новыми вещами.
Джорджио
@ Джорджио, откуда ты знаешь, что новый путь лучше или нет, если ты не узнаешь или не попробуешь его?
CaffGeek
7

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

Лично я работаю на встраиваемых устройствах, выучил C, и это хорошо сработало для меня.

Но я все еще изучаю новые вещи на довольно регулярной основе. Сокеты, библиотеки SQL, ncurses, объекты в C. И методологии слабо связаны с технологиями. Модульное тестирование ужасно преподавалось в моей школе, и я только сейчас обдумываю его. Я только что услышал о внедрении зависимостей на днях и понял, что именно так я решил мою последнюю проблему с модульным тестированием функции консоли.

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

Филипп
источник
+1: хороший ответ. Нужно изучать технологии, которые нужны или сочтены полезными. Новые технологии важны, и нужно смотреть вокруг, чтобы знать, что происходит. Но NEW не должен быть единственным критерием выбора того, что мы изучаем. Кроме того, если C соответствует вашим потребностям в программировании, я согласен, что он может быть хорошим языком для работы, даже если он существует уже давно.
Джорджио
Это также указывает на то, что новые технологии часто представляют собой несколько слоев поверх существующих старых технологий. В чем реализована ваша виртуальная машина? C или C ++.
dbracey
Внедрение зависимости - это просто новое имя для очень старой идеи.
MarkJ
6

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

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

Шумиха и путаница в технологии программного обеспечения умножают изменения, с которыми нам приходится сталкиваться изо дня в день. Но электронная технология на самом деле это быстро развивается, и толкая программное обеспечение вместе с ним. Там много реальных изменений. Мы по-прежнему ездим на машинах, летим на самолетах и ​​летим в космос на тех же транспортных средствах, которые мы использовали в 1965 году. Но электронное оборудование 1995 года безнадежно устарело.

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

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

RalphChapin
источник
+1: я согласен с вами по поводу обмана. К сожалению, много инноваций - это реклама, и мы должны выбирать новые технологии, на которые мы тратим время очень тщательно. Одной из шумих на данный момент являются лямбды (которые, кстати, я считаю очень полезной концепцией): они должны быть у каждого современного языка (C #, C ++, Java?), Иначе это уже не круто! Но лямбды существуют уже 50 лет, и никого не волновало, когда эти языки были изначально разработаны. Теперь они добавляются в качестве запоздалой мысли, просто чтобы последовать последней рекламе. ;-)
Джорджио
@ Джорджио: Я надеюсь, что не Java. Лямбда - хороший пример (хотя проще и поэтому менее хлопотный, чем некоторые). Я использую их в C #, и я люблю их, но единственный человек, который когда-либо пожалеет, что не знает, кто они, - это человек, которому только что сказали исправить код, который их полон.
RalphChapin
Что вы подразумеваете под «я надеюсь, что не Java»? Что они не будут введены? Я люблю и использую лямбды (в Scheme, Haskell): это довольно простая концепция. Но в C #, C ++ и Java они кажутся мне поздним дополнением, которое как-то не соответствует остальной части языка. Я сомневаюсь, что изобретатели не знали Лисп, но решили, что лямбды не принадлежат этим языкам. Теперь они стали необходимостью. Итак, я очень люблю лямбды, но в C #, C ++ и Java они кажутся просто обманом, который используется для продажи новых компиляторов, книг и так далее.
Джорджио
1
@ Джорджио: Java - (или был) скорее минималистский язык. Вам не нужно много знать (например, лямбды), чтобы понять, что написал кто-то еще. Мне нравится это. C # - максималистский язык. Каждая новая линия может представить технологии, которые вы никогда не видели раньше. Писать взрыв, меньше читать. Ни один из них не нуждается в лямбда-выражениях, хотя в C # они помогают больше, чем в Java по причинам синтаксиса. Но они классные и сохраняют пару строк кода. Другими словами, вы правы. Но это C #, а не Java. Еще.
RalphChapin
1
@iconoclast: с 20-летним опытом работы программистом я не считаю себя новичком. Тем не менее, тот факт, что Java является (был) относительно простым и чистым языком, делает меня более продуктивным (я могу разрабатывать более сложное программное обеспечение с меньшими усилиями). Я думаю, что это неправильное представление о том, что простой язык предназначен для начинающих: простой язык позволит любому программисту с любым уровнем опыта больше сосредоточиться на определенных аспектах разработки (например, на управлении сложной архитектурой, рефакторинге), потому что они тратят меньше времени на работу с другие аспекты (например, управление памятью, загадочный синтаксис и т. д.).
Джорджио
3

ИМХО, вам нужно найти баланс. Это требует навыков и опыта.

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

Но вы также должны увидеть, как развивается этот язык, и понять динамику разработки программного обеспечения в целом. Будет ли Java через 10 лет, останется ли Phyton там, будет ли PHP заменен на .NET и Mono?

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

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

кодировщик
источник
2

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

С другой стороны, я думаю, что иногда в некоторых инновациях также присутствует ажиотаж: некоторые идеи очень старые, но только в последние годы их заставляют стать мейнстримом. Иногда у меня складывается впечатление, что новый язык программирования (или его новая версия) продвигается только потому, что «новое - лучше», а новая технология означает новые книги, новые инструменты программирования, новые компиляторы, новые курсы программирования или, другими словами, доход.

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

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

Джорджио
источник
2

Потому что «придерживаться того, что вы знаете» означает неспособность «стать лучше». Вам не нужно применять каждую новую практику и рамки, которые появляются, но вы должны по крайней мере иметь обоснованное мнение о популярных. В веб-разработке просто задавать вопрос было бы ужасно для интервьюера. Веб-разработчик изобилует карьерными трупами людей, которые хотели прекратить изучать новые вещи после 2000 года, и это так и должно быть, потому что они делают больше работы для всех нас. Держитесь подальше от dev, если вас это не интересует. Это паршивое соотношение $ / час, если часть, где вы изучаете новые вещи, чувствует себя как работа.

Эрик Реппен
источник
Потому что «придерживаться того, что вы знаете», означает неспособность «стать лучше». Один из способов понять это состоит в том, что, придерживаясь одной и той же технологии в течение более длительного времени, вы получаете более глубокие знания об этом, в то время как переходите от одной технологии. последующие каждые два или три года позволят вам иметь только поверхностные знания, то есть вы никогда не будете действительно знакомы ни с одним из них.
Джорджио
Я не стал бы понимать JavaScript так же хорошо, как я, если бы я немного не разветвлялся и не понимал его с точки зрения того, как на самом деле работают другие языки, или следил за текущими представлениями о наилучшей практике и изучал то, что на самом деле делают люди. капот их рамок и библиотек. Я не думаю, что это действительно возможно улучшить как разработчик с разумной скоростью карьеры без регулярного знакомства с новыми идеями.
Эрик Реппен
Реппен: Я полностью с тобой согласен.
Джорджио