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

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

Каковы технические вопросы, на которые я просто должен отвечать, прежде чем я подхожу к кому-то о введении нового языка?

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

PS: (def X clojure)

4b9b3361

Ответ 1

Производительность с языком не является ни единственным фактором, ни простым скаляром сама по себе. Важные вопросы:

  • Насколько легко выучить язык, если он еще не знаком с людьми в команде?
  • Насколько легко стать экспертом на языке?
  • Имеет ли команда доступ к одному или нескольким языковым экспертам, у которых есть пропускная способность, чтобы сделать необходимое наставничество?
  • Доступны ли хорошие учебные материалы (книги, блоги, учебные пособия) и каналы поддержки (форумы, IRC, списки рассылки)?
  • Предоставляет ли язык (или некоторую структуру на этом языке) грамотному программисту быстрее писать то, что вы используете сейчас?
  • Насколько поддерживаемым является язык? Насколько читаемым является синтаксис для компетентного программиста, впервые встретившегося с другим кодом? (Подумайте о APL и Perl.)
  • Является ли язык каким-то образом более подходящим для вашей проблемной области, чем то, что вы используете сейчас (например, функциональные языки для распределенных вычислений)?
  • Насколько хорошо подходит язык/платформа для бизнеса, не связанные со скоростью разработки (например, производительность, масштабируемость)?
  • Каковы доступные инструменты, и что они стоят? Имеется ли отладчик? IDE? Рефакторинг и поддержка unit test встроены в среду IDE? Создавать инструменты управления и развертывания?

Ответ 2

Краш-курс в политике для инженеров...

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

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

Если вы хотите использовать Ruby:

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

Если вы хотите использовать Clojure:

Вы лучше прототипируете систему по выходным и вечерам и представляете ее как решаемую проблему. Подчеркните параллельную разработку Java/ Clojure ( "при ​​необходимости вся система может быть записана в Clojure Java" ) Сделать все аргументы Java, а затем сказать что-то о "лучшем из обоих миров"

Ответ 3

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

  • Что я могу сделать, если я выберу новый язык, который я раньше не мог сделать?
  • Что я могу сделать быстрее, чем в настоящее время с новым языком?
  • Как остальная часть команды справится с введением нового языка?
  • Если бы я ушел, мог ли кто-то еще новый на язык забрать, где я остановился, не слишком много проблем?

Ответ 4

Что такое бизнес-пример?

Это сводится к ROI (возврат инвестиций).

Это не только индивидуальная производительность, но:

  • вся команда

  • Влияние на жизненный цикл продукта

  • ремонтопригодность

и др.

Ответ 5

Как легко это выбрать? Я считаю, что это не так важно.

Есть ли поддержка IDE? Довольно важно, но вы можете работать без него.

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

Ответ 6

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

Критерии, которые мы рассмотрели:

  • Можем ли мы использовать фон Java/JVM для команды и интегрироваться с существующим продуктом на основе Java?
  • Можно ли достичь производительности наравне с Java?
  • Можем ли мы создавать поточно поддерживаемые поддерживаемые программы?
  • Можем ли мы использовать более высокий уровень абстракции
  • Можем ли мы нанять/обучить людей работать на этом языке?
  • Можем ли мы поддерживать большую базу кода на языке?
  • Доступны ли достаточные инструменты для эффективной работы на языке?
  • Есть ли активное сообщество людей, которые выращивают язык и библиотеки?

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

Ответ 7

Что предложит ваш новый язык, что существующий язык еще не существует?

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

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

Ответ 8

Как это улучшит мою производительность?

Если это невозможно, ответьте и вернитесь домой.

Ответ 9

Какой смысл?/Почему?

Как это облегчит мою работу?

Ответ 10

Q1: Могу ли я нанимать людей с этими навыками?

Q2: Когда я звоню нашим менеджерам учетных записей партнеров по аутсорсингу и спрашиваю, сколько будет стоить типичная стоимость проекта с фиксированной стоимостью, если это делается обычным способом или выполняется с использованием языка X, является множителем более 1?

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

Ответ 11

Хороший вопрос, который нужно задать, - это размер сообщества вокруг языка/рамки. Например, Ruby/rails имеет значительное сообщество вокруг него, что сделало бы меня более комфортным, чтобы я не был "первым ребенком на блоке", чтобы иметь дело с конкретной проблемой.

Ответ 12

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