Не думаю, что кто-нибудь сможет решить вашу проблему в Stackoverflow. На ваш выбор инструментов, методов и процессов гораздо больше влияют социальные ограничения, например, что хочет ваш босс и что вы хотите, то технические достоинства. Это не обязательно плохо.
Краткий ответ: «Используйте то, что будет наиболее приятным для разработчиков». Если всем нравится Python больше, чем Perl, по какой-то причине они, вероятно, сделают больше в Python. Если им нравится Ruby больше, чем Python, это одно и то же.
Некоторые вещи для оценки как часть вашего выбора:
- Что уже знают разработчики?
- Чему они больше всего хотят научиться?
- Сколько еженедельного времени ваша команда может потратить на изучение новых вещей (например, обеденных семинаров, официальных занятий и т. Д.)?
- Что большинство людей в сообществе используют для работы с инструментом, который вам необходим для поддержки? Например, Fisheye имеет Java API и несколько примеров REST для Perl и Python. Если вы пишете расширения Fisheye, Java, кажется, победит там. Если вы просто получаете доступ к данным Fisheye, любой язык может использовать REST.
- Какова основная часть вашей кодовой базы? Что вы можете заменить и что вы должны продолжать поддерживать? Я считаю, что многие компании не могут ответить на этот вопрос, потому что каждый разработчик добавляет две новые технологии, о которых они никому не рассказывают. :)
- Какие платформы вам нужно поддерживать? Некоторые языки имеют проблемы с платформой, и я имею в виду не только Windows против Unix. У вас есть устаревшее оборудование, которое вы должны поддерживать? Ваш инструмент работает на этом?
- Какая часть продукции, которую вы производите, может принести пользу другим подразделениям компании? Что используют другие команды?
- Знают ли люди, отстаивающие один инструмент, достаточно хорошо, чтобы стать его защитником? Я спрашиваю Какие пять вещей он ненавидит в вашем любимом языке? Если люди не могут назвать пять действительных вещей, которые не соответствуют их языку или инструменту, у них недостаточно опыта.
Более длинный ответ
Люди склонны сводить это к техническому аргументу, потому что они боятся признать свои предубеждения или изучить, почему они думают так, как думают. Ваш босс может предпочесть bash и Perl, потому что именно этим он занимался, когда начинал. Вам может понравиться Python, потому что у вас есть личная близость к тому, как Python делает вещи. Мне нравится Perl, потому что мне нравится его гибкость и DWIMmery. Как и в любой социальной ситуации, разных людей будут привлекать разные части разных вещей. То, что ты любишь шоколад, не делает ванили злом. Я мог бы дать вам много хороших аргументов, почему Perl может быть полезен, но это не значит, что что-то еще не может дать вам такое же значение.
Какие проблемы мы решаем с помощью скриптов?
На этот вопрос ты должен ответить сам. :)
Нам нужна библиотека общих функций нашей команды, или большинство наших проектов более изолированно?
Скорее всего, это хорошая вещь в Python, Perl, Ruby, Java и почти любом другом языке, который вы можете выбрать. Я думаю, что эта часть вашего требования не зависит от языка. Независимо от того, какой вы выберете, вы, вероятно, захотите это сделать.
Чего стоит ожидать, чтобы мои коллеги учились?
Хороший разработчик должен уметь работать с несколькими разными языками, по крайней мере, до уровня ученика. Эти языки должны включать в себя те, которые имеют совершенно разные предположения о том, как люди выражают проблемы, например, набор {Smalltalk Perl C Lisp Java}.
Лучшие разработчики, с которыми я нанимался и работал, всегда хотели использовать правильный инструмент для работы вместо того, чтобы делать работу именно для инструмента. У них может быть свой любимый язык, но они не слишком (не слишком) жалуются об использовании другого инструмента, когда это имело больше смысла.
Однако многие «разработчики», похоже, думают, что им платят за игру с их любимым инструментом. Вам нужно преобразовать их в людей, которые считают, что у них есть набор инструментов для решения проблем, которые создают ценность для бизнеса.
И помните, вы никогда не прекращаете учиться. Как разработчику, вам не нужно выбирать один язык, а затем защищать его своей жизнью, отказываясь от всех других, от болезней и здоровья и так далее. Хорошие разработчики будут продолжать отслеживать новые технологии и оценивать их на предмет полезности для своих задач. Тот факт, что вы выбираете один инструмент перед другим, не означает, что вы перестаете обращать внимание.
Неважно, что вы выберете, кто-то будет жаловаться. Не ищите решения, которое делает всех счастливыми. Нет никого, кроме как избавиться от недовольных разработчиков.
Какие языки дают нам наибольшую простоту разработки и простоту модификации?
Опытный практикующий практически на любом языке будет думать, что его выбранный язык легче всего развивать, модифицировать и поддерживать. Неквалифицированные практикующие, как правило, обвиняют язык и инструменты в своих проблемах. У некоторых языков есть более крутые кривые изучения, а у некоторых есть большие выплаты. Толерантность человека с немедленным удовлетворением является важным фактором здесь.
При этом на разных языках сложились разные культуры и разные наборы инструментов. Людям Perl нравятся vi или emacs, людям Ruby нравится TextMate, людям Java нравится Eclipse или IntelliJ. Это не всегда так, но культура, которая развивается вокруг инструментов, часто более важна, чем технические детали инструмента. Если вашим разработчикам нравится конкретный инструмент типа , им, вероятно, понравится язык, основанный на культуре такого инструмента.
Некоторым процессам и инструментам требуется больше времени, чтобы привыкнуть или получить больше образования, но они могут иметь большие преимущества при правильном использовании. Другие инструменты помогут вам быстрее приступить к работе, но могут не дать вам пути к более значительным вещам, таким как межгрупповая разработка. Однако хитрость заключается в том, чтобы не кодировать инструменты, чтобы не застревать в каком-либо конкретном наборе инструментов.