Сколько дрейфа я должен оставить мной для изучения нового языка?

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

Вот дилемма: Мой менеджер предпочел бы, чтобы это было сделано в Python. Я не возражаю против этого, но у меня нет опыта в Python. Я действительно любил бы изучать Python и думать, что я мог управлять им справедливо быстро (тем более, что это - маленький проект). НО проект должен в конце марта и должен быть готов к тому времени. Таким образом, у них был бы он в Java и вовремя, чем в Python и поздно, и они не хотят оказывать давление на меня, чтобы сделать это в Python, если я думаю, что не могу сделать его вовремя.

Извините за фон - но мой вопрос в основном, сколько времени занимает, в среднем, для адаптации к новому языку? Я знаю, что это субъективно и персонализировано, и зависит от того, как быстро конкретный программист..., но говорящий о среднем программисте или даже несколько быстром, который берет вещи быстро, какой процент увеличения делает программирование на неродном языке (но с подобными понятиями) причина? Как в, если этот проект взял бы меня приблизительно 2 недели в Java или языке.NET, насколько дольше он может взять меня в Python? Я могу предположить, что наличие дважды количества времени (т.е. новый, незнакомый язык вызывает 50%-е увеличение программирования времени) соответствует?

И включенный в этот вопрос - от того, что я услышал, это, кажется, довольно легко/интуитивно переключить от Java до Python. Действительно ли это верно...?

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

13
задан murgatroid99 17 May 2012 в 13:35
поделиться

12 ответов

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

Большой риск состоит в том, что вы будете писать код на Python так же, как и на Java. Многие вещи, истинные в Java, неверны в Python и наоборот. Вероятно, это сделает ваш код Python медленным и многословным.

Если вы решили попробовать Python, ознакомьтесь с распространенными ошибками Java, например: http://dirtsimple.org/2004/12/python-is-not-java. html

8
ответ дан 1 December 2019 в 19:49
поделиться

У вас есть примерно 5 недель на завершение проекта. Если вы уверены, что версия Java займет 2 недели, у вас останется 3 недели на то, чтобы возиться с версией Python, пока вам не придется отказаться. Я говорю: дерзай. Python относительно легко освоить. Думаю, трех недель работы достаточно, чтобы понять, успеешь ли ты закончить в срок.

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

7
ответ дан 1 December 2019 в 19:49
поделиться

Эмпирическое правило моего босса - каждый раз, когда возникает кривая обучения, оно может утроить время на написание приложения. Итак, если Java займет у вас две недели, то Python может занять около 6.

5
ответ дан 1 December 2019 в 19:49
поделиться

Это всегда занимает больше времени, чем вы думаете.

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

4
ответ дан 1 December 2019 в 19:49
поделиться

Python похож на маленькую java, вы поймете его на ветру.

3
ответ дан 1 December 2019 в 19:49
поделиться

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

Продолжайте изучать Python и автоматизируйте некоторые рутинные действия, которые вы выполняете с помощью Python, чтобы получить разумный уровень уверенности для работы над новым проектом с использованием Python.

2
ответ дан 1 December 2019 в 19:49
поделиться

Я бы сказал, что если вы хотите избежать возможных головных болей, делайте это на Java и изучайте Python дома, пытаясь воссоздать похожее приложение на тот, который вы делаете на работе, если хотите чего-то реального. Скорее всего, если вы не знакомы с Python, вы все равно не воспользуетесь его возможностями. Как только я взглянул на первое созданное мной приложение Python, мне показалось, что я написал приложение Object Pascal с синтаксисом Python

1
ответ дан 1 December 2019 в 19:49
поделиться

Если вы введете в Google "Pythonic", вы найдете много дискуссий о том, как делать что-то таким образом, который хорошо сочетается с Python и который будет легко понять другим Python. пользователи и так далее. Всегда требуется время, чтобы перейти от кода, который просто работает на языке, к хорошему использованию этого языка - а в случае Python эта кривая обучения немного длиннее, чем обычно.

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

Это в основном сводится к вопросу о том, комфортно ли вам идти на такой риск.

2
ответ дан 1 December 2019 в 19:49
поделиться

Обычно, если я не знаком с языком, я даю хотя бы месяц, чтобы немного освоиться с ним. Два-три месяца, если это выходит за рамки моей «зоны комфорта» Си-подобных языков. Сказав это, я думаю, что Java и Python достаточно похожи, чтобы вы могли немного их урезать.

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

Часть меня испытывает искушение сказать «Пойдите для Python». По крайней мере, отчасти потому, что я фанат Python. Однако, как новый сотрудник, вы, вероятно, должны произвести хорошее впечатление, и я думаю, что вы сделаете это лучше, выполнив вовремя (или раньше), чем изучая Python.

Однако, если есть части, которые можно четко разделить и выполнить на Python, возможно, вы могли бы сделать некоторые части на Java, а другие - на Python.

1
ответ дан 1 December 2019 в 19:49
поделиться

Чарли, так как ты новый сотрудник и все такое, тебе не следует решать, какую технологию кодировать в проекте. Это решение руководства.

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

Какая технология хорошо служит вашим целям? Предполагая, что это действительно можно сделать на python и java:

  • Действительно ли важно время вывода на рынок?
  • Если вам нужно расширить ваша команда (т.е. расширит проект), сможете ли вы нанять больше программистов Python? Они дороже или дешевле, чем программисты на Java?
  • Существуют ли другие проекты на Python на вашем предприятии (или на предприятии ваших клиентов)? Однородную среду легче администрировать.
  • Изучите различия между Java и Python и посмотрите, какой из них лучше подходит для решения проблемы. Например, Python, вероятно, работает хуже, чем Java ... Но программы на Python можно программировать и тестировать гораздо быстрее.

И, конечно, да, вы можете принять во внимание, что есть кривая обучения. Как сказал другой ответ, Python очень прост, как и Java и почти все распространенные языки. Что убивает, так это изучение API, SDK, инструментов отладки, различий в среде и т. Д.

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

0
ответ дан 1 December 2019 в 19:49
поделиться

Вы просто программируете или проектируете/архитектурируете?

Если вы кодите по проекту, который выложил опытный Python-ресурс, то я бы дал себе в 3-4 раза больше времени, поскольку вы описали это как небольшой, довольно простой проект.

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

Учитывая это, я бы рассказал о рисках и прочем вашему менеджеру (показывая ваш очевидный энтузиазм в изучении Python), и пусть он примет решение.

0
ответ дан 1 December 2019 в 19:49
поделиться

Лично я предпочитаю изучать новые языки в личных проектах и ​​использовать инструменты, которые я уже знаю, в профессиональных проектах. Так что, если бы это был я, я бы сделал проект на Java и несколько небольших проектов Python дома.

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

0
ответ дан 1 December 2019 в 19:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: