Quanto è difficile scegliere Python e Django per uno sviluppatore web Java / .NET? [chiuso]


19

Ho appena iniziato un nuovo lavoro un paio di mesi fa presso una piccola azienda dove attualmente sto conducendo tutti gli sforzi di sviluppo presenti e futuri. Personalmente ho anni di esperienza nella progettazione e nello sviluppo di software principalmente da Java ma anche da una prospettiva .NET. Ho acquisito .NET più tardi nella mia carriera con grande facilità e non ho richiesto letteralmente alcun addestramento per andare in pista, e per di più mi ha aiutato a cogliere e apprezzare veramente l'universalità di molte migliori pratiche e temi comuni vedendo due diverse prospettive per risolvere lo stesso problema.

Il mio capo ha una società di avvio sul lato e, senza divulgare troppe informazioni, aveva bisogno di un'applicazione web moderatamente sofisticata che si integri in Google Maps per costruire percorsi.

Ha appaltato l'applicazione web alla quale hanno promesso troppo, in gran parte insufficiente, e ha superato la scadenza, attualmente è in lotta per cercare di recuperare almeno parte dei soldi che ha investito. Ha il codice sorgente per il sito come è in questo momento, ma ha un elenco di cose che vorrebbe sistemare e aggiungere prima di andare a vivere con esso.

Mi ha chiesto se volevo farlo sul lato per qualche soldo in più, ma il problema è che il sito è stato scritto in Python usando Django, di cui non ho alcuna esperienza. Gli ho detto che non sono davvero la persona migliore per questo perché non so praticamente nulla di Python o Django e dovrei impararlo da zero. Sento che non sarebbe giusto per me fatturarlo ogni ora se sto usando quel tempo per imparare una lingua e una piattaforma.

In base al riepilogo del mio livello di esperienza, quanto difficile o quanto tempo indovineresti per me a prenderlo? Se pensi che sia una perdita di tempo qualcuno potrebbe consigliare un suggerimento su dove trovare sviluppatori web Python esperti? Il denaro è una preoccupazione per lui in questo momento, quindi non ha più il budget maggiore.


10
Perchè chiedere? Pensi che sarà difficile perché .Net ti ha reso stupido? È solo codice. Quanto può essere difficile?
S.Lott

1
@ S. Lott, Non si tratta di essere capaci o no, semplicemente non voglio prendere un lavoro per cui non sono qualificato quando la persona che mi paga ha un budget limitato ed è il mio diretto responsabile per la mia fonte di reddito PRIMARY . Certamente non vorrei attaccarlo a lui.
maple_shaft

1
Non devi davvero provare a farne un pezzo e vedere se funziona? Nessuno qui può dare un valore al tuo tempo.
JeffO,

2
Penso che ti stai facendo un disservizio. Ho il sospetto che, data la sua recente esperienza, il tuo manager preferirebbe avere qualcuno di cui si possa fidare per dirgli la verità, anche se la verità è "Non ho familiarità con quel quadro ma sono disposto a provare". Dovresti almeno essere in grado di dirgli se la fonte che ha recuperato vale persino qualcosa.
Benjol,

2
@ Benjol, "Dovresti almeno essere in grado di dirgli se la fonte che ha recuperato vale persino qualcosa" Ed è esattamente ciò di cui ho paura. Solo perché sono riuscito a capire un tutorial di Django Hello World in un paio d'ore non significa che ho l'esperienza e le conoscenze per fare stime accurate o persino giudicare la qualità del codice. Per quanto ne so, il codice spaghetti e le funzioni di 8.000 linee sono il modo in cui si dovrebbero fare le cose in Python.
maple_shaft

Risposte:


15

Python è tanto facile da imparare quanto potrebbe essere una lingua, che è uno dei principali punti di forza della lingua. Come qualcuno che ha molta esperienza nelle lingue OO, sei in un'ottima posizione per iniziare. Le uniche differenze fondamentali tra Python e Java / C # sono

  1. Duck-typing / mancanza di sicurezza del tipo.
  2. Funzioni di prima classe.

Capisco perché ritieni di non essere l'uomo migliore per il lavoro e potresti non fare progressi nella prima settimana come gli altri. D'altra parte, il tuo capo si fida di te ed è appena stato bruciato da alcune persone inaffidabili che conoscevano Python meglio di te.

Se sei preoccupato di abusare della fiducia dei tuoi capi, offriti di offrirgli Nore pro bono. (Decidi tu cosa Nè.) Alla fine di quel periodo puoi decidere se valga la tariffa oraria. Nel peggiore dei casi, avrai un senso molto migliore di Python / Django alla fine di quel periodo.


Questo è un pensiero interessante per concedergli un po 'di tempo libero per entrambi i nostri benefici. Forse ho solo paura di un impegno?
maple_shaft

Se queste sono differenze fondamentali, allora lo sviluppatore C # che conosce JavaScript dovrebbe avere molte difficoltà a tutti ... ho ragione?
Konrad Morawski,

3
C # ha funzioni di prima classe, solo la maggior parte degli sviluppatori non le usa #justsaying
sa93

@Morawski Sì, se conosci Java, C # o C ++ E uno di Perl, Ruby o JavaScript, imparare Python è un gioco da ragazzi.
Eric Wilson,

Cosa ha detto @ sa93. Inoltre (accidenti, io e i miei commenti fuori tema ..), non sono proprio il tipo di fan di Microsoft (in realtà sono molto più di un Pythonistas), ma è piuttosto impressionante quante funzioni funzionali hanno aggiunto attraverso le varie versioni. C # 5.0 è diventato una lingua abbastanza utilizzabile (rispetto ad altre lingue correlate * tosse * java * tosse * VB * tosse *)
Nadir Sampaoli,

8

Come programmatore C incorporato che ha finito per lavorare su un'app Web Python / Django come progetto skunk-works, posso testimoniare che le basi sono facili da imparare.

Python è generalmente molto semplice da gestire. Personalmente non ho trovato la documentazione di Python stessa molto utile - sembra sempre più un libro di memorie per qualcuno che già conosce Python - ma il web è pieno di esempi utili. Potresti provare The Python Challenge una sera e vedere come vai avanti.

Consiglio vivamente Django. Fa un ottimo lavoro nell'astrarre l'accesso al database e fornisce abbastanza utilità che l'ho anche successivamente usato per progetti web senza componenti di database. Generalmente se pensi a qualcosa che vuoi ottenere ci sarà un metodo con un nome ovvio già fornito. Anche la documentazione è molto buona.

Django è molto semplice da installare, quindi ti consiglio vivamente di provare e vedere come andare avanti. Un paio di sere giocando con Python e Django dovrebbero darti abbastanza sicurezza per decidere se saresti felice di intraprendere il lavoro richiesto.


4

Il paradigma Python / Django è sicuramente diverso dagli stack .NET o Java. Se ti senti a tuo agio con diversi paradigmi di programmazione (e con questo intendo funzionale vs OO e statico vs dinamico), probabilmente sarai in grado di farlo. Come per @EricWilson, Python non è troppo difficile da imparare (basta essere pronti a diventare balistici riguardo all'indentation == scope scope; p).

È il vecchio adagio che "Smart e ottiene cose fatte" batte "x quantità di familiarità con una lingua".

Se hai una buona conoscenza dello stack web sottostante (HTTP, cicli di richiesta / risposta ecc.) E delle API di terze parti (Google), sarà anche un po 'più semplice.

Avrai anche bisogno di aiuto per quei momenti WTF. Assicurati di essere entrato a far parte di una community di sviluppatori Python / Django, che si tratti del tuo gruppo di utenti locale, di un forum online o di un piccolo sito chiamato StackExchange :)

Oh, ho pensato solo a qualcos'altro. Fatti fare la cartina di tornasole. In una sera o in un pomeriggio del fine settimana, scarica e installa Python e Django e scopri con che facilità fai il tutorial. Un test di base che mi concedo è la creazione di uno schermo CRUD per un oggetto di dominio fittizio. Se non posso farlo (e non c'è vergogna in questo BTW), allora non sono la persona giusta o lo stack fa schifo;)

Infine, starei attento con il lato $ delle cose qui. Se hai sempre voluto raccogliere questo stack tecnologico, forse ti stai facendo entrambi un favore, altrimenti ha un odore un po 'come il tuo manager fa affidamento sulla tua buona volontà per sistemare le cose a buon mercato a spese del tuo prezioso tempo .


"altrimenti puzza un po 'come se il tuo manager si affidasse alla tua buona volontà per sistemare cose a buon mercato a spese del tuo prezioso tempo" Non lo rammarico, tutti abbiamo a cuore i nostri migliori interessi, soprattutto perché non ho l'obbligo di aiutarlo in alcun modo. Se faccio questa scelta e me ne pento, allora ho solo me stesso da incolpare.
maple_shaft

1

Non posso commentare il valore di Django, ma penso che imparare Python potrebbe essere un buon investimento per il tuo tempo. Non solo per questo progetto però ...

Come sviluppatore Java, trovo Jython inestimabile e vorrei sapere di IronPython mentre stavo sviluppando con C # (sono passato da C #> Java piuttosto che da Java a C #).

Il fatto che tu abbia l'intera libreria java disponibile per il tuo script Jython è eccellente e ho usato frequentemente i test unitari Jython per testare le classi POJO usando oggetti Mock.

Forniamo persino una console Jython nella nostra applicazione in modo che gli utenti possano eseguire lo script delle proprie routine, con pieno accesso sia alle librerie Java che alle nostre. È così bello essere in grado di mostrare agli utenti come scrivere semplici script e far loro automatizzare ogni genere di cose da soli senza dover fare tutta quell'automazione per loro.

Certo, Jython non è perfetto - è in ritardo (2.5) in qualche modo dietro CPython (3.2) e persino IronPython (2.7), ma questo lo rende semplicemente contemporaneo con il libro di Guido . * 8' )


0

Ho trascorso una settimana o due a raccogliere le basi di Python e Django (alla fine ho deciso di andare con Rails per altri motivi) dopo aver fatto solo lavori in C #. All'inizio è stato un po 'difficile brontolare ma Django è relativamente semplice; la parte più difficile che ho trovato è stata capire esattamente come scrivere il codice necessario in Python. Lo stesso Django è piuttosto semplice; Non lo tocco da più di un anno ma probabilmente potrei ancora fare qualcosa di banale. Tuttavia, diventa un po 'più complicato usare oggetti generici e alcuni modelli e viste più coinvolti.

Una cosa che ho scoperto che era strano avvolgere la mia testa è l'idea che tutti i tuoi modelli Django siano nel models.pyfile; Sono sicuro che potresti creare file diversi e importarli tutti (non l'ho provato, tuttavia), ma quello da solo sembrava "sbagliato" essere utilizzato in C # dove è molto male avere più classi nello stesso file a meno che non lo sia una sorta di classe privata utilizzata solo dall'altra classe. Il resto non è stato affatto difficile, anche se se non hai familiarità con MVC (o MTV nel linguaggio di Django), questa è una piccola curva di apprendimento in sé.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.