¿Qué tan difícil es Python y Django para un desarrollador web Java / .NET? [cerrado]

19

Hace un par de meses comencé un nuevo trabajo en una pequeña empresa donde actualmente lidero todos los esfuerzos de desarrollo presentes y futuros. Personalmente, tengo años de experiencia en el diseño y desarrollo de software principalmente de Java, pero también desde una perspectiva .NET. Recogí .NET más adelante en mi carrera con gran facilidad y literalmente no necesité capacitación para comenzar a ejecutar, y además de eso, me ayudó a comprender y apreciar realmente la universalidad de muchas mejores prácticas y temas comunes al ver dos perspectivas diferentes para resolver el mismo problema.

Mi jefe tiene una compañía de inicio y, sin divulgar demasiada información, necesitaba una aplicación web moderadamente sofisticada que se integrara en Google Maps para construir rutas.

Contrató la aplicación web a la que se comprometieron en exceso, se entregó en gran medida y corrió el plazo, actualmente se encuentra en una lucha para tratar de recuperar al menos parte del dinero que invirtió. Tiene el código fuente del sitio tal como está en este momento, pero tiene una lista de cosas que le gustaría arreglar y agregar antes de ponerlo en funcionamiento.

Me preguntó si me gustaría hacer esto por un lado para obtener dinero extra, pero el problema es que el sitio fue escrito en Python usando Django, que no tengo experiencia en absoluto. Le dije que realmente no soy la mejor persona para esto porque no sé prácticamente nada sobre Python o Django y que tendría que aprenderlo desde cero. Siento que no sería justo para mí facturarle cada hora por mi tiempo si estoy usando ese tiempo aprendiendo un idioma y una plataforma.

Según el resumen de mi nivel de experiencia, ¿qué tan difícil o cuánto tiempo adivinarías que me tomaría recoger esto? Si crees que es una pérdida de tiempo, ¿alguien podría recomendar una sugerencia sobre dónde encontrar desarrolladores web con experiencia en Python? El dinero es una preocupación para él en este momento, por lo que ya no tiene el mayor presupuesto.

árbol de arce
fuente
10
¿Por qué preguntar? ¿Crees que va a ser difícil porque .Net te hizo estúpido? Es solo código. ¿Qué tan difícil puede ser?
S.Lott
1
@ S.Lott, no se trata de ser capaz o no, simplemente no quiero tomar un trabajo para el que no estoy calificado cuando la persona que me paga tiene un presupuesto limitado y es mi gerente directo para mi fuente PRIMARIA de ingresos . Ciertamente no me gustaría pegarle a él.
maple_shaft
1
¿Realmente no vas a tener que intentar hacer un pedazo y ver si funciona? Nadie aquí puede poner un valor a su tiempo.
JeffO
2
Creo que te estás haciendo un mal servicio. Sospecho que dada su experiencia reciente, su gerente preferiría tener a alguien en quien confiar para decirle la verdad, incluso si la verdad es "No estoy familiarizado con ese marco pero estoy dispuesto a intentarlo". Al menos deberías poder decirle si la fuente que ha recuperado vale algo.
Benjol
2
@Benjol, "Al menos deberías poder decirle si la fuente que ha recuperado vale algo" Y eso es exactamente lo que temo. El hecho de que pueda encontrar un tutorial de Django Hello World en un par de horas no significa que tenga la experiencia y el conocimiento para hacer estimaciones precisas o incluso juzgar la calidad del código. Por lo que sé, el código de espagueti y las 8,000 funciones de línea son la forma en que se supone que se deben hacer las cosas en Python.
maple_shaft

Respuestas:

15

Python es tan fácil de aprender como podría ser un idioma, que es uno de los principales puntos de venta del idioma. Como alguien que tiene mucha experiencia en idiomas OO, está en una excelente posición para comenzar. Las únicas diferencias fundamentales entre Python y Java / C # son

  1. Mecanografía de pato / falta de seguridad de tipo.
  2. Funciones de primera clase.

Entiendo por qué sientes que no eres el mejor hombre para el trabajo, y es posible que no progreses tanto en tu primera semana como los demás. Por otro lado, tu jefe confía en ti, y algunas personas poco confiables lo han quemado y conocían a Python mejor que tú.

Si le preocupa abusar de la confianza de su jefe, ofrezca darle Nhoras pro bono. (Tú decides qué Nes). Al final de ese tiempo puedes decidir si vales la tarifa por hora. En el peor de los casos, tendrá un sentido mucho mejor de Python / Django al final de ese tiempo.

Eric Wilson
fuente
Ese es un pensamiento interesante para darle algo de tiempo libre para nuestros dos beneficios. ¿Tal vez solo tengo miedo de un compromiso?
maple_shaft
Si se trata de diferencias fundamentales, entonces C # dev sabiendo que JavaScript debería tener muchas dificultades ... ¿estoy en lo correcto?
Konrad Morawski
3
C # tiene funciones de primera clase, solo la mayoría de los desarrolladores no las usan
#justsaying
@Morawski Sí, si conoce uno de Java, C # o C ++ Y uno de Perl, Ruby o JavaScript, entonces aprender Python es muy fácil.
Eric Wilson
Lo que dijo @ sa93. Además (maldición, yo y mis comentarios fuera de tema ...), no soy realmente del tipo fanático de Microsoft (de hecho, soy mucho más un Pythonista), pero es bastante impresionante cuántas funciones funcionales han agregado a través de los diversos lanzamientos. C # 5.0 se ha convertido en un lenguaje bastante útil (en comparación con otros idiomas relacionados * tos * java * tos * VB * tos *)
Nadir Sampaoli
8

Como programador C incorporado que terminó trabajando en una aplicación web Python / Django como un proyecto de skunk-works, puedo testificar que los conceptos básicos son fáciles de aprender.

Python generalmente es muy fácil de manejar. Personalmente, la documentación de Python no me pareció muy útil, siempre parece más una memoria auxiliar para alguien que ya conoce Python, pero la web está llena de ejemplos útiles. Es posible que desee probar The Python Challenge una noche y ver cómo le va.

Recomendaría mucho Django. Hace un muy buen trabajo abstrayendo el acceso a la base de datos y proporciona suficiente utilidad que también lo he utilizado posteriormente para proyectos web sin componente de base de datos. En general, si piensa en algo que desea lograr, ya habrá un método con un nombre obvio. La documentación también es muy buena.

Django es muy sencillo de instalar, por lo que te recomiendo que lo pruebes y veas cómo te va. Un par de noches jugando con Python y Django debería darte suficiente confianza para decidir si estarías contento de emprender el trabajo requerido.

Luke Graham
fuente
4

El paradigma Python / Django es ciertamente diferente a las pilas .NET o Java. Si se siente cómodo con varios paradigmas de programación (y con esto me refiero a funcional frente a OO y estático frente a dinámico), entonces probablemente podrá llevarlo a cabo. Según @EricWilson, Python no es demasiado difícil de aprender (solo prepárate para ser balístico sobre la sangría == ámbito de aplicación; p).

Es el viejo adagio de que "Inteligente y hace las cosas" late "x familiaridad con un idioma".

Si comprende bien la pila web subyacente (HTTP, ciclos de solicitud / respuesta, etc.) y las API de terceros (Google), entonces será un poco más fácil también.

También necesitarás ayuda para esos momentos WTF. Asegúrese de unirse a la comunidad de desarrolladores de Python / Django, ya sea su grupo de usuarios local, un foro en línea o un pequeño sitio llamado StackExchange :)

Oh, solo pensé en otra cosa. Hazte la prueba de fuego. En una tarde o una tarde de fin de semana, descargue e instale Python y Django y vea con qué facilidad asimila los tutoriales. Una prueba básica que me hago es construir una pantalla CRUD para un objeto de dominio ficticio. Si no puedo hacer eso (y no hay vergüenza, por cierto), entonces no soy la persona adecuada o la pila apesta;)

Por último, tendría cuidado con el lado $ de las cosas aquí. Si siempre ha querido recoger esta pila de tecnología, entonces quizás ambos se están haciendo un favor, de lo contrario, huele un poco a que su gerente confía en su buena voluntad para arreglar las cosas a bajo costo a expensas de su valioso tiempo .

Martijn Verburg
fuente
"de lo contrario, huele un poco a que su gerente confía en su buena voluntad para arreglar las cosas a bajo costo a expensas de su valioso tiempo" No le disgusto por eso, todos tenemos nuestros mejores intereses en el corazón, especialmente porque yo No estoy obligado a ayudarlo de ninguna manera. Si tomo esa decisión y me arrepiento, entonces solo tengo la culpa.
maple_shaft
1

No puedo comentar sobre el valor de Django, pero creo que aprender Python podría ser una buena inversión de tu tiempo. Sin embargo, no solo para este proyecto ...

Como desarrollador de Java, encuentro a Jython invaluable, y desearía haber sabido sobre IronPython cuando estaba desarrollando con C # (fui C #> Java en lugar de Java a C #).

El hecho de que tenga toda la biblioteca java disponible para su script Jython es excelente, y con frecuencia uso pruebas unitarias Jython para probar clases POJO usando objetos Mock.

Incluso proporcionamos una consola Jython en nuestra aplicación para que los usuarios puedan escribir sus propias rutinas, con acceso total tanto a las bibliotecas de Java como a la nuestra. Es muy agradable poder mostrar a los usuarios cómo escribir scripts simples y hacer que automaticen todo tipo de cosas ellos mismos sin tener que hacer toda esa automatización por ellos.

Claro, Jython no es perfecto: está rezagado (2.5) un poco por detrás de CPython (3.2) e incluso IronPython (2.7), pero eso lo hace contemporáneo con el libro de Guido . * 8 ')

Mark Booth
fuente
0

Pasé una o dos semanas aprendiendo los conceptos básicos de Python y Django (finalmente decidí ir con Rails por otras razones) después de hacer solo el trabajo de C #. Al principio fue un poco difícil de asimilar, pero Django es relativamente sencillo; La parte más difícil que encontré fue descubrir exactamente cómo escribir el código necesario en Python. Django en sí es bastante simple; No lo he tocado en más de un año, pero probablemente aún podría hacer algo trivial. Sin embargo, se vuelve un poco más complicado con el uso de objetos genéricos y algunas plantillas y vistas más complicadas.

Una cosa que encontré que fue extraño para entender es la idea de que todos sus modelos de Django están en el models.pyarchivo; Estoy seguro de que podría crear diferentes archivos e importarlos todos (sin embargo, no lo intenté), pero eso solo se sintió "mal" al usar C #, donde es muy malo tener varias clases en el mismo archivo a menos que uno esté algún tipo de clase privada solo utilizada por la otra clase. El resto no fue demasiado difícil, aunque si no estás tan familiarizado con MVC (o MTV en lenguaje Django), esa es una pequeña curva de aprendizaje en sí misma.

Wayne Molina
fuente