2010-02-24 14 views
13

Soy un empleado relativamente nuevo, y estoy comenzando un proyecto pequeño y bastante simple. El lenguaje en el que se implementará este proyecto aún está por determinarse. La pregunta básicamente se reduce a: ¿Java o Python?¿Cuánto margen de maniobra debo dejar para aprender un nuevo idioma?

Aquí está el dilema: Mi gerente preferiría que se hiciera en Python. No me opongo a eso, pero no tengo experiencia en Python. Realmente me encantaría aprender Python y pensar que podría manejarlo con bastante rapidez (especialmente porque es un proyecto pequeño). PERO el proyecto vence a fines de marzo y debe estar listo para entonces. Así que preferirían tenerlo en Java ya tiempo que en Python y tarde, y no quieren presionarme para que lo haga en Python si creo que no puedo llegar a tiempo.

Disculpe por los antecedentes, pero mi pregunta básicamente es, ¿cuánto tiempo tarda, en promedio, para adaptarse a un nuevo idioma? Sé que esto es subjetivo y personalizado, y depende de qué tan rápido sea el programador en particular ... pero hablando de un programador promedio, o incluso de uno bastante rápido que capta cosas rápidamente, qué porcentaje de un aumento hace la programación en un programa no idioma nativo (pero con conceptos similares) causa? Como en, si este proyecto me llevara aproximadamente 2 semanas en Java o en un lenguaje .NET, ¿cuánto tiempo más puedo llevarme en Python? ¿Puedo suponer que tener el doble de tiempo (es decir, un lenguaje nuevo y desconocido causa un aumento del 50% en el tiempo de programación) es adecuado?

Y se incluye en esta pregunta: por lo que he escuchado, parece ser bastante fácil/intuitivo cambiar de Java a Python. Es esto cierto...?

Gracias a todos por todas las respuestas! No me di cuenta de que hay tantos lados en esta pregunta ... Trataré de elegir una respuesta pronto; cada respuesta me hizo verla de otra manera y es difícil elegir una respuesta.

Respuesta

8

Creo que depende del área del proyecto. Si bien la GUI no es difícil en Python, cualquier tipo de GUI-framework tendrá una curva de aprendizaje algo empinada. Si es una aplicación web, yo diría que vaya por Python. El tiempo adicional para aprender se recupera rápidamente gracias a la facilidad de uso de muchos frameworks de web de Python.

El gran riesgo es que codifique Python tal como lo hace con Java. Muchas de las cosas verdaderas en Java no son ciertas en Python y viceversa. Probablemente hará que su código de Python sea lento y detallado.

Si usted decide intentar Python, leer sobre las trampas más comunes procedentes de Java, por ejemplo: http://dirtsimple.org/2004/12/python-is-not-java.html

+0

Verbose sí, lento será apenas perceptible. –

+0

Paradigmas. Una vez hice exactamente esto, Python codificado como código C# o C++. Y ahora estoy codificando COBOL ... algunos de los otros programadores no quieren matarme cuando hago ciertas cosas ... –

5

La regla empírica de mi jefe es cuando hay una curva de aprendizaje, puede triplicar el tiempo para escribir la aplicación. Entonces, si Java demora dos semanas, entonces Python puede tomar alrededor de 6.

+2

Sin embargo, nunca aprenderá nada nuevo si no comienza ahora. Tomará más tiempo. Sera dificil. Tu jefe quiere que aprendas Python. Aprende Python. –

+0

Su requisito es tenerlo listo para finales de marzo, Python es solo una preferencia, no un requisito. – Robin

+2

@Robin: en realidad, el proyecto solo es "debido". Eso podría ser una preferencia, también. Es poco probable que sea una "fecha límite difícil" como en "todos serán despedidos si no lo haces". Solo es "debido". –

3

Python es como bebé java, lo recogerás en un abrir y cerrar de ojos.

+0

Estoy de acuerdo en que Python sería más fácil de aprender, ¡pero diría que es como Java maduro! :-) – GreenMatt

+1

Si escribe programas Java en sintaxis de Python, lo hará bien. Python hace todo lo que hace Java, y más. Incluso puedes continuar usando ';' si te hace feliz. –

+0

@ S.Lott: pero igual tendrá que marcar * correctamente * su código ... :) –

4

Siempre lleva más tiempo de lo que piensas.

Intente escribir un pequeño programa que haga solo un poco de lo que necesita. Si va a escribir un programa con una GUI, haga un pequeño programa que muestre un cuadro con Hello World y un botón Ok y verá qué tan difícil es eso.

0

¿Está programando o está diseñando/diseñando?

Si está codificando de acuerdo con un diseño que un recurso experimentado de Python ha presentado, entonces me doy a mí mismo 3-4 veces más desde que describió este como un proyecto pequeño y bastante simple.

Si está diseñando/diseñando esto usted mismo, correrá un gran riesgo al intentar aprender un nuevo idioma al mismo tiempo. Hay muchas posibilidades de que pueda diseñar algo al inicio que sea fundamental para su diseño, solo para descubrir que no funciona y necesita reescribir muchas cosas gracias a él.

Dicho esto, presentaría los riesgos y tal a su gerente (demostrando su obvio entusiasmo por aprender Python) y le permitiría hacer la llamada.

+0

El problema es que me lo deja a mí. Él conoce todos los riesgos y todo y quiere que tome mi propia decisión. – charlie

+1

@charlie - Hmmmm ..... En ese caso personalmente iría por Python. Me gusta aprender cosas nuevas y nada les gusta a los de casa como tener un proyecto. Sin embargo, asegúrese de configurar una buena línea de tiempo para comenzar, de modo que pueda hacer un seguimiento de su progreso y asegurarse de que todavía está en marcha. Buena suerte :-) –

2

Bueno, yo diría qué tan rápido retomas Python también depende de qué otros idiomas conozcas (o te sientas cómodo) aparte de Java.Si el único idioma que conoces es Java, no creo que el cambio de Java a Python sea intuitivo o fluido. Para empezar, Java está tipado estáticamente y Python está tipeado dinámicamente, y lleva un tiempo acostumbrarse a la programación OO con Python, incluso si eres experto en usar técnicas OO usando Java. Así que yo diría que respete la línea de tiempo y termine el proyecto a tiempo (o antes :) utilizando Java, ya que esto es lo que exige su trabajo.

Sigue aprendiendo Python y automatiza algunas de las actividades de rutina que haces usando Python para que obtengas un nivel razonable de confianza para trabajar en un proyecto nuevo usando Python.

7

Usted tienen aproximadamente 5 semanas para completar el proyecto. Si está seguro de que la versión de Java demoraría 2 semanas, eso le dejará 3 semanas para darle vueltas con la versión de Python hasta que tenga que darse por vencido. Yo digo que lo haga. Python es relativamente fácil de recuperar. Creo que tres semanas de trabajo son suficientes para saber si puedes terminar antes de la fecha límite.

En mi humilde opinión, esta es una gran excusa para que aprendas un nuevo idioma. Sigue actualizando a tu gerente regularmente con tu progreso. Creo que la decisión correcta se hará evidente a medida que pasa el tiempo.

+0

Whoa, whoa, whoa. Si bien estoy de acuerdo con su opinión al 100%, no pongamos palabras en la boca de su gerente de que esta es una "gran oportunidad" para cualquier cosa. Él dijo: "Mi gerente preferiría que se hiciera en Python". que en la mayoría de las oficinas, el significado sería el siguiente: "Más personas tienen conocimiento básico de Python aquí (más fácil de mantener)", "Python es menos detallado, por lo que es más fácil que alguien lo agregue/corrija/modifique/mantenga". Hecho, y obtiene cosas inteligentes :) –

+0

Es más como un "Me gustaría que aprendieras Python eventualmente y este es un buen proyecto para comenzar". La mayoría de sus cosas se hace en Java, pero muchas cosas secundarias/código de descarte, etc. se hace en Python. – charlie

+0

@Marc Bollinger, tienes razón, él no dice eso en ninguna parte. Debo haberlo deducido de los comentarios y otras cosas. He editado mi respuesta en consecuencia. La parte más importante es que OP no debe ir a sentarse en un agujero durante tres semanas para aprender un nuevo idioma sin actualizar a nadie sobre su progreso. –

2

Si busca "Pythonic" en Google, encontrará mucha discusión sobre cómo hacer las cosas de manera que encaja bien en Python, será fácil de entender para otros usuarios de Python, y así sucesivamente. Siempre lleva un tiempo progresar de un código que simplemente funciona en un idioma para usar bien ese lenguaje, y en el caso de Python, esa curva de aprendizaje es un poco más larga de lo normal.

Al final, diría que la respuesta depende de su edad y personalidad (y su percepción de la "personalidad" de su empleador). Relativamente hablando, Java es el enfoque conservador: reduce los riesgos y, probablemente, brinda la mejor oportunidad de terminar el trabajo a tiempo y dentro del presupuesto. Usar un idioma que no conoces aumenta el riesgo de no brindar lo que se necesita. Lo más probable es que termine escribiéndolo (al menos) dos veces, una vez en una forma que sea bastante similar a lo que habría hecho en Java, y luego otra vez en una forma que sea más Pythonic. Eso bien puede significar algunas noches de retraso, especialmente si te demoras una semana (o algo en ese orden) y te das cuenta de que necesitas (o tienes muchas ganas) reescribir casi todo lo que has hecho hasta ahora.

Principalmente se trata de si te sientes cómodo asumiendo ese riesgo.

2

Diría que si quieres evitar posibles dolores de cabeza, hazlo en Java y aprende Python en casa, tratando de volver a crear una aplicación similar a la que haces en el trabajo, si quieres algo que parezca real . Es probable que, si no está familiarizado con Python, no se aproveche de sus capacidades de todos modos. Una vez que eché un vistazo a la primera aplicación Python que hice, y parecía que escribí una aplicación Object Pascal en la sintaxis de Python

1

En general, si no estoy familiarizado con un idioma, permito al menos un mes para obtener algo cómodo con eso. Dos o tres meses si está fuera de mi "zona de confort" de los lenguajes tipo C.Habiendo dicho eso, creo que Java y Python son lo suficientemente similares como para recortar un poco.

Además, según su propia historia, ¿qué tan buenas son sus estimaciones cuando está familiarizado con un idioma? Si crees que tomará dos semanas hacerlo en Java, ¿qué tan bien puedes confiar en ese cálculo? Personalmente, a veces estoy muy por debajo, incluso cuando creo que estoy siendo pesimista, pero tal vez eres mejor para estimar que yo.

Una parte de mí tiene la tentación de decir "Go for Python". Eso es al menos en parte porque soy un fanático de Python. Sin embargo, como nuevo empleado, probablemente debería causar una buena impresión, y creo que lo hará mejor entregando a tiempo (o temprano) que aprendiendo Python.

Sin embargo, si hay partes que pueden separarse y hacerse de manera limpia en Python, tal vez podría hacer algunas partes en Java y otras partes en Python.

0

Charlie, al ser un nuevo empleado y todo, realmente no debería decidir qué tecnología codificar el proyecto. Esta es una decisión de gestión.

De hecho, aunque la habilidad del equipo se puede utilizar para determinar la tecnología de elección para uno u otro proyecto, hay muchas otras cosas más importantes a tener en cuenta.

¿Cuál tecnología sirve para sus propósitos?suponiendo que realmente se puede hacer en Python y Java:

  • ¿Es el tiempo de salida al mercado realmente importante?
  • Si necesita ampliar su equipo (es decir, ampliar el proyecto), ¿podrá contratar más programadores de Python? ¿Son más o menos costosos que los programadores de Java?
  • ¿Existen otros proyectos en Python en su empresa (o en la empresa de sus clientes)? Un ambiente homogéneo es más fácil de administrar.
  • Conozca las diferencias entre Java y Python y vea cuál se aplica mejor al problema. Por ejemplo, Python probablemente tenga un rendimiento peor que Java ... Pero los programas de Python se pueden programar y probar de forma más rápida.

Y, por supuesto, sí, puede tener en cuenta que hay una curva de aprendizaje. Como dice otra respuesta, Python es muy simple, al igual que Java y casi todos los lenguajes comunes. Lo que te mata es aprender API, SDK, herramientas de depuración, diferencias de entorno, etc.

Otra cosa que saqué de la experiencia: nunca creas que un proyecto está hecho cuando está hecho. Todo cambia, por lo tanto, cuando entrega el producto, su gerente o su cliente (quien quiera que lo use) le pedirá que cambie algo, y una vez que haya terminado con ese cambio, habrá más. El software es un ser vivo ... solo deja de cambiar cuando está muerto.

0

Mi preferencia personal es aprender nuevos idiomas en proyectos personales, y usar herramientas que ya entiendo en proyectos profesionales. Entonces, si fuera yo, haría el proyecto en Java y haría algunos pequeños proyectos de Python en casa.

Pero, por supuesto, aprende mucho más rápido cuando utiliza un nuevo idioma "de verdad" cuarenta horas a la semana, por lo que si cuenta con el apoyo adecuado de la gerencia y compañeros de trabajo, aproveche la oportunidad oportunidad.

Cuestiones relacionadas