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


19

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

У мого боса є стартап-компанія на стороні, і не розголошуючи занадто багато інформації, у нього була потреба в помірно складному веб-додатку, який інтегрується в Карти Google для створення маршрутів.

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

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

На основі підсумків рівня мого досвіду, наскільки складно чи скільки часу ви гадаєте, що це знадобиться мені? Якщо ви думаєте, що трата часу може хтось порекомендувати, де знайти досвідчених веб-розробників Python? Гроші хвилюють його зараз, тому він більше не має найбільшого бюджету.


10
Чому питати? Ви думаєте, що це буде важко, тому що. Нет зробив вас дурним? Це просто код. Як важко це може бути?
С.Лотт

1
@ S.Lott, Це не питання здатності чи ні, я просто не хочу брати роботу, на яку я не кваліфікований, коли особа, яка платить мені, має обмежений бюджет і є моїм безпосереднім менеджером для мого ПЕРВИЧНОГО джерела доходу . Я, звичайно, не хотів би його дотримуватися.
maple_shaft

1
Невже вам не доведеться спробувати зробити якийсь фрагмент і подивитися, чи працює він? Ніхто тут не може поставити значення для вашого часу.
JeffO

2
Я думаю, ти робиш собі послугу. Я підозрюю, що, зважаючи на його недавній досвід, у вашого менеджера скоріше буде когось, кому він може довіряти, щоб сказати йому правду, навіть якщо правда "Я не знайомий з цією рамкою, але я готовий". Ви, принаймні, зможете йому сказати, чи джерело, яке він відновив, навіть чогось вартує.
Бенжол

2
@Benjol: "Ви, принаймні, зможете йому сказати, чи джерело, яке він відновив, навіть чогось варте". І саме цього я боюся. Тільки тому, що я міг розібратися підручник з привітним привітанням Django за пару годин, не означає, що у мене є досвід і знання, щоб зробити точні оцінки або навіть судити про якість коду. Наскільки я знаю, код спагетті та 8000 лінійних функцій - це так, як слід робити в Python.
maple_shaft

Відповіді:


15

Python настільки ж простий у вивченні, як і мова, яка є однією з головних точок продажу мови. Як хтось із досвідченими мовами OO, ви зможете почати. Єдині принципові відмінності між Python та Java / C # є

  1. Введення качок / відсутність безпеки типу.
  2. Функції першого класу.

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

Якщо ви турбуєтесь про зловживання довірою ваших начальників, запропонуйте йому приділити Nкілька годин про добро. (Ви вирішуєте, що Nце.) Після закінчення цього часу ви можете вирішити, чи варто вам погодинної ставки. У гіршому випадку, ви матимете набагато краще відчуття Python / Django наприкінці того часу.


Ось цікава думка дати йому вільний час для обох наших переваг. Може, я просто боюся зобов’язань?
maple_shaft

Якщо це принципові відмінності, то C # розробка, що знає JavaScript, взагалі повинна мати великі труднощі ... чи я правильно?
Конрад Моравський

3
C # має функції першого класу, просто більшість розробників не використовує їх #justsaying
sa93

@Morawski Так, якщо ви знаєте один з Java, C # або C ++ AND одного з Perl, Ruby або JavaScript, то вивчення Python - це легкий вітер.
Ерік Вілсон

Що сказав @ sa93. Крім того (чорт, я та мої коментарі поза темою ..), я насправді не фанат Microsoft (насправді я набагато більше пітоністів), але вражає, скільки функціональних функцій вони додавали через різні випуски. C # 5.0 став досить корисною мовою (порівняно з іншими спорідненими мовами * кашель * java * кашель * VB * кашель *)
Nadir Sampaoli

8

Як вбудований програміст на C, який закінчив працювати над веб-додатком Python / Django як проект, який працює з скунсом, я можу засвідчити, що основи легко підібрати.

Python, як правило, дуже легко зрозуміти. Я особисто не вважав, що сама документація python є дуже корисною - вона завжди здається помічником спогаду для того, хто вже знає python - але в Інтернеті повно корисних прикладів. Ви можете спробувати спробувати The Python Challenge одного вечора і побачити, як ви дістаєтесь.

Я б ретельно рекомендував Джанго. Це дуже добре справляється з обмеженням доступу до бази даних і забезпечує достатню корисність, що я згодом також використовував її для веб-проектів без компонентів бази даних. Як правило, якщо ви думаєте про щось, чого хочете досягти, знайдеться метод із очевидною назвою, що вже є. Документація теж дуже добре.

Джанго дуже простий в монтажі, тому я б настійно радив вам просто перейти і подивитися, як ви дістаєтесь. Кілька вечорів, граючи з Python та Django, повинні дати вам достатньо впевненості, щоб вирішити, чи будете ви раді виконати необхідну роботу.


4

Парадигма Python / Django, безумовно, відрізняється від стеків .NET або Java. Якщо вам подобається кілька парадигм програмування (під цим я маю на увазі функціональні проти OO та статичні проти динамічних), ви, ймовірно, зможете зняти це. Відповідно до @EricWilson, Python не так вже й важкий у навчанні (просто будьте готові до балістичного розгляду про відступ == сфера застосування; p).

Це стара приказка, що "Розумний і все робиться" перемагає "х кількість ознайомлення з мовою".

Якщо ви добре розумієте базовий веб-стек (HTTP, цикли запитів / відповідей тощо) та сторонні API (Google), тоді це буде також трохи простіше.

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

О, просто подумав про щось інше. Зробіть собі здати лакмусовий тест. Увечері чи вдень у вихідні завантажте та встановіть Python та Django і подивіться, як легко ви робите уроки. Основний тест, який я даю собі, - це побудова екрана CRUD для об'єкта манекена. Якщо я не можу цього зробити (і в цьому немає сорому BTW), то я не потрібна людина або стек смокче;)

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


"в іншому випадку це трохи пахне вашим менеджером, покладаючись на вашу доброзичливість, щоб виправити речі дешево за рахунок вашого цінного часу". Я не переживаю його за це, у нас всі в душі наші інтереси, тим більше що я я ні в якому разі не зобов'язаний допомагати йому. Якщо я роблю цей вибір і шкодую про це, то я винен лише сам.
maple_shaft

1

Я не можу коментувати цінність Джанго, але думаю, що вивчення Python могло б стати гарною інвестицією вашого часу. Не тільки для цього проекту, хоча ...

Як розробник Java, я вважаю, що Jython є безцінним, і я хотів би, щоб я знав про IronPython, коли я розробляв C # (я перейшов на C #> Java, а не на Java до C #).

Той факт, що для вашого сценарію Jython доступна вся бібліотека Java, є відмінним, і я часто використовую тести Jython-одиниць для тестування класів POJO за допомогою Mock-об'єктів.

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

Звичайно, Jython не є ідеальним - він відстає (2,5) дещо відстає від CPython (3,2) і навіть IronPython (2,7), але це просто робить його сучасним із книги Гуйдо . * 8 ')


0

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

Одне, що мені здалося, що дивно загорнути голову, - це думка, що всі ваші моделі Django є у models.pyфайлі; Я впевнений, що ви можете створити різні файли та імпортувати їх усі (я цього не пробував), але в цьому випадку він відчув себе "неправильно", коли використовується C #, коли дуже погано мати кілька класів в одному файлі, якщо один якийсь приватний клас, який використовується лише іншим класом. Решта це взагалі було не надто складно, хоча якщо ви не такий знайомий з MVC (або MTV в мові Django), це сама невелика крива навчання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.