Насколько сложно Python и Django подобрать для веб-разработчика на Java / .NET? [закрыто]

19

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

У моего босса есть стартап-компания, и, не разглашая слишком много информации, ему понадобилось умеренно сложное веб-приложение, которое интегрируется в Google Maps для построения маршрутов.

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

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

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

maple_shaft
источник
10
Зачем спрашивать? Как вы думаете, это будет трудно, потому что .Net сделал вас глупым? Это просто код. Как трудно это может быть?
С.Лотт
1
@ S.Lott, дело не в способности или нет, я просто не хочу устраиваться на работу, на которую я не имею права, когда человек, платящий мне, имеет ограниченный бюджет и является моим непосредственным руководителем для моего первичного источника дохода , Я, конечно, не хотел бы привязывать его к нему.
maple_shaft
1
Неужели вам не придется пытаться сделать это и посмотреть, работает ли это? Никто здесь не может оценить ваше время.
JeffO
2
Я думаю, что вы оказываете себе медвежью услугу. Я подозреваю, что, учитывая его недавний опыт, ваш менеджер предпочел бы кого-то, кому он может доверять, чтобы сказать ему правду, даже если правда заключается в том, что «я не знаком с этой концепцией, но хочу попробовать». По крайней мере, вы должны сказать ему, что источник, который он нашел, хоть чего-нибудь стоит.
Бенджол
2
@Benjol, «Ты должен хотя бы сказать ему, если источник, который он нашел, хоть чего-нибудь стоит» И это именно то, чего я боюсь. То, что я смог за пару часов найти учебник по Django Hello World, не означает, что у меня есть опыт и знания, чтобы делать точные оценки или даже судить о качестве кода. Насколько я знаю, спагетти-код и 8000 строковых функций - это то, что должно быть сделано в Python.
maple_shaft

Ответы:

15

Python практически так же прост в изучении, как и язык, что является одним из главных преимуществ этого языка. Как человек с большим опытом работы с ОО-языками, у вас прекрасная возможность начать. Единственные фундаментальные различия между Python и Java / C #

  1. Печатание утки / отсутствие безопасности типа.
  2. Функции первого класса.

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

Если вы беспокоитесь о злоупотреблении доверием своего босса, предложите ему Nчасами работать бесплатно. (Вы решаете, что Nесть.) В конце этого времени вы можете решить, стоит ли вам почасовая ставка. В худшем случае у вас будет гораздо лучшее понимание Python / Django в конце этого времени.

Эрик Уилсон
источник
Это интересная мысль, чтобы дать ему немного свободного времени для обеих наших выгод. Может быть, я просто боюсь обязательств?
maple_shaft
Если это фундаментальные различия, то C # dev, зная, что JavaScript должен вообще иметь большие трудности ... я прав?
Конрад Моравский
3
C # имеет функции первого класса, но большинство разработчиков не используют их #justsaying
sa93
@Morawski Да, если вы знаете одну из Java, C # или C ++ и одну из Perl, Ruby или JavaScript, то изучение Python очень просто.
Эрик Уилсон
Что @ sa93 сказал. Также (блин, я и мои не по теме комментарии ..), я не фанат Microsoft (на самом деле я гораздо больше Pythonistas), но довольно впечатляюще, сколько функциональных возможностей они добавили через различные выпуски. C # 5.0 стал довольно удобным языком (по сравнению с другими родственными языками * кашель * java * кашель * VB * кашель *)
Надир Сампаоли
8

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

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

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

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

Люк Грэм
источник
4

Парадигма Python / Django, безусловно, отличается от стеков .NET или Java. Если вы знакомы с несколькими парадигмами программирования (и под этим я подразумеваю функциональность против ОО и статичность против динамики), вы, вероятно, сможете это осуществить. Согласно @EricWilson, Python не так уж сложен в изучении (просто будьте готовы к баллистике в отношении отступа == scope; p).

Это старая поговорка, что «Умный и готовый материал» превосходит «количество знакомых с языком».

Если вы хорошо понимаете базовый веб-стек (HTTP, циклы запросов / ответов и т. Д.) И сторонние API (Google), то это будет немного проще.

Вам также понадобится помощь для тех моментов WTF. Убедитесь, что вы присоединились к сообществу разработчиков Python / Django, будь то локальная группа пользователей, онлайн-форум или небольшой сайт под названием StackExchange :)

О, просто подумал о чем-то другом. Сделай себе лакмусовый тест. Вечером или выходным днем ​​скачайте и установите Python и Django и посмотрите, насколько легко вы освоите учебники. Основной тест, который я даю себе, - это создание экрана CRUD для фиктивного доменного объекта. Если я не могу этого сделать (и в этом нет ничего постыдного), тогда я не тот человек, или стек отстой;)

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

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

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

Как Java-разработчик, я считаю Jython бесценным, и мне хотелось бы знать о IronPython, когда я разрабатывал на C # (я перешел на C #> Java, а не Java на C #).

Тот факт, что у вас есть вся java-библиотека для вашего скрипта Jython, превосходен, и я часто использую модульные тесты Jython для тестирования классов POJO с использованием объектов Mock.

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

Конечно, Jython не идеален - он немного отстает (2.5) от CPython (3.2) и даже IronPython (2.7), но это только делает его современным с книгой Гвидо . * 8' )

Марк Бут
источник
0

Я потратил неделю или две на изучение основ Python и Django (в конце концов я решил использовать Rails по другим причинам) после выполнения только работы на C #. Поначалу было немного трудно ухватиться, но Джанго относительно прост; самая сложная часть, которую я обнаружил, это выяснить, как именно написать необходимый код на Python. Сам Джанго довольно прост; Я не касался этого больше года, но, вероятно, все еще мог бы сделать что-то тривиальное. Однако с использованием общих объектов и некоторых более сложных шаблонов и представлений все становится немного сложнее.

Одна вещь, которую я нашел странной, чтобы обернуть мою голову, это идея, что все ваши модели Django находятся в models.pyфайле; Я уверен, что вы могли бы создавать разные файлы и импортировать их все (однако я не пробовал это делать), но это само по себе было «неправильно» при использовании в C #, где очень плохо иметь несколько классов в одном файле, если один какой-то частный класс, используемый только другим классом. В остальном это было совсем не сложно, хотя, если вы не очень хорошо знакомы с MVC (или MTV на языке Django), это небольшая кривая обучения сама по себе.

Уэйн Молина
источник