Dans quelle mesure Python et Django sont-ils difficiles à choisir pour un développeur Web Java / .NET? [fermé]

19

Je viens de commencer un nouvel emploi il y a quelques mois dans une petite entreprise où je dirige actuellement tous les efforts de développement présents et futurs. J'ai personnellement des années d'expérience dans la conception et le développement de logiciels principalement Java mais aussi dans une perspective .NET. J'ai repris .NET plus tard dans ma carrière avec une grande facilité et je n'ai littéralement eu besoin d'aucune formation pour commencer à fonctionner, et en plus cela m'a aidé à vraiment saisir et apprécier l'universalité de nombreuses meilleures pratiques et thèmes communs en voyant deux perspectives différentes pour résoudre le même problème.

Mon patron a une start-up à côté, et sans divulguer trop d'informations, il avait besoin d'une application Web modérément sophistiquée qui s'intègre à Google Maps pour créer des itinéraires.

Il a sous-traité l'application Web dans laquelle ils ont fait des promesses, ont été largement sous-livrés et a dépassé le délai, il se bat actuellement pour essayer de récupérer au moins une partie de l'argent qu'il a investi. Il a le code source du site tel qu'il est actuellement, mais il a une liste de choses qu'il aimerait corriger et ajouter avant de le mettre en ligne.

Il m'a demandé si je voulais faire ça en plus pour de l'argent supplémentaire, mais le problème est que le site a été écrit en Python avec Django, que je n'ai aucune expérience. Je lui ai dit que je ne suis vraiment pas la meilleure personne pour cela car je ne sais pratiquement rien de Python ou Django et je devrais l'apprendre à partir de zéro. Je pense qu'il ne serait pas juste pour moi de le facturer à l'heure pour mon temps si j'utilise ce temps pour apprendre une langue et une plateforme.

Sur la base du résumé de mon niveau d'expérience, combien de difficultés ou combien de temps pensez-vous qu'il me faudrait pour ramasser cela? Si vous pensez que c'est une perte de temps, quelqu'un pourrait-il recommander une suggestion pour trouver des développeurs Web Python expérimentés? L'argent est une préoccupation pour lui en ce moment donc il n'a plus le plus gros budget.

maple_shaft
la source
10
Pourquoi demander? Pensez-vous que ça va être difficile parce que .Net vous a rendu stupide? C'est juste du code. À quel point cela peut-il être dur?
S.Lott
1
@ S.Lott, il ne s'agit pas d'être capable ou non, je ne veux tout simplement pas prendre un emploi pour lequel je ne suis pas qualifié lorsque la personne qui me paie a un budget limité et est mon manager direct pour ma principale source de revenus . Je ne voudrais certainement pas lui en tenir compte.
maple_shaft
1
N'allez-vous pas vraiment devoir essayer d'en faire un morceau et voir si cela fonctionne? Personne ici ne peut évaluer votre temps.
JeffO
2
Je pense que vous vous rendez un mauvais service. Je soupçonne que compte tenu de son expérience récente, votre manager préfère avoir quelqu'un en qui il peut avoir confiance pour lui dire la vérité, même si la vérité est "je ne connais pas ce cadre mais je suis prêt à essayer". Vous devriez au moins pouvoir lui dire si la source qu'il a récupérée vaut même quelque chose.
Benjol
2
@Benjol, "Vous devriez au moins pouvoir lui dire si la source qu'il a récupérée vaut même quelque chose" Et c'est exactement ce dont j'ai peur. Ce n'est pas parce que j'ai pu comprendre un tutoriel Django Hello World en quelques heures que j'ai l'expérience et les connaissances nécessaires pour faire des estimations précises ou même juger de la qualité du code. Pour autant que je sache, le code spaghetti et les 8 000 fonctions de ligne sont la façon dont les choses sont censées être faites en Python.
maple_shaft

Réponses:

15

Python est à peu près aussi facile à apprendre qu'une langue pourrait l'être, ce qui est l'un des principaux arguments de vente de la langue. En tant que personne très expérimentée dans les langues OO, vous êtes en excellente position pour commencer. Les seules différences fondamentales entre Python et Java / C # sont

  1. Typage de canard / manque de sécurité du type.
  2. Fonctions de première classe.

Je comprends pourquoi vous sentez que vous n'êtes pas le meilleur homme pour le travail, et vous ne pouvez pas faire autant de progrès au cours de votre première semaine que les autres. D'un autre côté, votre patron vous fait confiance, et il vient d'être brûlé par des gens indignes de confiance qui connaissaient mieux Python que vous.

Si vous craignez d'abuser de la confiance de votre patron, offrez-lui de lui donner des Nheures gratuitement. (Vous décidez de ce qui Nest.) À la fin de cette période, vous pouvez décider si vous valez le taux horaire. Dans le pire des cas, vous aurez une bien meilleure idée de Python / Django à la fin de cette période.

Eric Wilson
la source
C'est une pensée intéressante pour lui donner du temps libre pour nos deux avantages. Peut-être que j'ai juste peur d'un engagement?
maple_shaft
Si ce sont des différences fondamentales, alors C # dev sachant que JavaScript devrait avoir beaucoup de difficulté ... ai-je raison?
Konrad Morawski
3
C # a des fonctions de première classe, la plupart des développeurs ne les utilisent pas #justsaying
sa93
@Morawski Oui, si vous connaissez Java, C # ou C ++ ET Perl, Ruby ou JavaScript, alors apprendre Python est un jeu d'enfant.
Eric Wilson
Qu'est-ce que @ sa93 a dit. Aussi (bon sang, moi et mes commentaires hors sujet ..), je ne suis pas vraiment du type fan de Microsoft (en fait, je suis beaucoup plus un Pythonistas), mais c'est assez impressionnant de voir combien de fonctionnalités fonctionnelles ils ont ajoutées à travers les différentes versions. C # 5.0 est devenu une langue assez utilisable (par rapport à d'autres langues apparentées * toux * java * toux * VB * toux *)
Nadir Sampaoli
8

En tant que programmeur C intégré qui a fini par travailler sur une application Web Python / Django en tant que projet Skunk-Works, je peux témoigner que les bases sont faciles à comprendre.

Python est généralement très simple à maîtriser. Personnellement, je n'ai pas trouvé la documentation python elle-même très utile - elle ressemble toujours plus à un aide-mémoire pour quelqu'un qui connaît déjà python - mais le Web regorge d'exemples utiles. Vous voudrez peut-être essayer The Python Challenge un soir et voir comment vous vous y prendrez.

Je recommanderais vivement Django. Il fait un très bon travail d'abstraction de l'accès à la base de données et fournit suffisamment d'utilité que je l'ai également utilisé par la suite pour des projets Web sans composant de base de données. Généralement, si vous pensez à quelque chose que vous souhaitez réaliser, il y aura une méthode avec un nom évident déjà fourni. La documentation est également très bonne.

Django est très simple à installer donc je vous suggère fortement de l'essayer et de voir comment vous vous en sortez. Quelques soirées jouant avec Python et Django devraient vous donner suffisamment de confiance pour décider si vous seriez heureux d'entreprendre le travail requis.

Luke Graham
la source
4

Le paradigme Python / Django est certainement différent des piles .NET ou Java. Si vous êtes à l'aise avec plusieurs paradigmes de programmation (et j'entends par là fonctionnel vs OO et statique vs dynamique), vous pourrez probablement le faire. Selon @EricWilson, Python n'est pas trop difficile à apprendre (préparez-vous simplement à vous balancer sur la chose indentation == scope; p).

C'est le vieil adage selon lequel «Smart et fait avancer les choses» bat «x familiarité avec une langue».

Si vous avez une bonne compréhension de la pile Web sous-jacente (HTTP, cycles de demande / réponse, etc.) et des API tierces (Google), cela sera également un peu plus facile.

Vous aurez également besoin d'aide pour ces moments WTF. Assurez-vous d'être connecté à la hanche à une communauté de développeurs Python / Django, que ce soit votre groupe d'utilisateurs local, un forum en ligne ou un petit site appelé StackExchange :)

Oh, je viens de penser à autre chose. Faites-vous passer le test décisif. Dans une soirée ou un week-end après-midi, téléchargez et installez Python et Django et voyez avec quelle facilité vous grok les tutoriels. Un test de base que je me donne consiste à créer un écran CRUD pour un objet de domaine factice. Si je ne peux pas faire ça (et il n'y a pas de honte en BTW) alors je ne suis pas la bonne personne ou la pile est nulle;)

Enfin, je serais prudent avec le côté $ des choses ici. Si vous avez toujours voulu récupérer cette pile technologique, alors peut-être que vous vous faites mutuellement plaisir, sinon cela sent un peu comme votre manager qui compte sur votre bonne volonté pour faire réparer les choses à bon marché au détriment de votre temps précieux .

Martijn Verburg
la source
"Sinon ça sent un peu comme votre manager qui compte sur votre bonne volonté pour réparer des trucs bon marché au détriment de votre temps précieux" Je ne lui en veux pas, nous avons tous à cœur nos intérêts, surtout depuis ne suis en aucun cas obligé de l'aider. Si je fais ce choix et que je le regrette, je n'ai que moi-même à blâmer.
maple_shaft
1

Je ne peux pas commenter la valeur de Django, mais je pense que l'apprentissage de Python pourrait être un bon investissement de votre temps. Mais pas seulement pour ce projet ...

En tant que développeur java, je trouve Jython inestimable et j'aurais aimé connaître IronPython lorsque je développais avec C # (je suis allé C #> Java plutôt que Java en C #).

Le fait que vous ayez toute la bibliothèque java à la disposition de votre script Jython est excellent, et j'ai fréquemment utilisé des tests unitaires Jython pour tester les classes POJO à l' aide d'objets Mock.

Nous fournissons même une console Jython dans notre application afin que les utilisateurs puissent écrire leurs propres routines, avec un accès complet aux bibliothèques java et aux nôtres. C'est tellement agréable de pouvoir montrer aux utilisateurs comment écrire des scripts simples et de les faire automatiser eux-mêmes toutes sortes de choses sans avoir à faire toute cette automatisation pour eux.

Bien sûr, Jython n'est pas parfait - il traîne (2.5) quelque peu derrière CPython (3.2) et même IronPython (2.7), mais cela le rend juste contemporain avec le livre de Guido . * 8 ')

Mark Booth
la source
0

J'ai passé une semaine ou deux à apprendre les bases de Python et Django (j'ai finalement décidé d'aller avec Rails pour d'autres raisons) après avoir fait uniquement du travail C #. C'était un peu difficile à grogner au début mais Django est relativement simple; la partie la plus difficile que j'ai trouvée était de savoir exactement comment écrire le code nécessaire en Python. Django lui-même est assez simple; Je n'y ai pas touché depuis plus d'un an, mais je pourrais probablement encore faire quelque chose de trivial. Cela devient un peu plus compliqué avec l'utilisation d'objets génériques et de modèles et de vues plus complexes.

Une chose que j'ai trouvée étrange pour envelopper ma tête est l'idée que tous vos modèles Django sont dans le models.pyfichier; Je suis sûr que vous pouvez créer des fichiers différents et les importer tous (je n'ai pas essayé cela, cependant), mais cela seul me semblait "mauvais" d'être utilisé en C # où il est très mauvais d'avoir plusieurs classes dans le même fichier, à moins qu'une ne soit une sorte de classe privée utilisée uniquement par l'autre classe. Le reste n'était pas trop difficile du tout, bien que si vous n'êtes pas familier avec MVC (ou MTV dans le langage Django), c'est une petite courbe d'apprentissage en soi.

Wayne Molina
la source