2010-01-27 13 views
57

¿Tiene alguna de las mejores prácticas al comenzar a trabajar en un proyecto que utiliza tecnología o un idioma con el que nunca ha trabajado?Iniciar un proyecto con nueva tecnología o idioma

¿Continúas con lo que sabes y aprendes más a medida que surgen obstáculos o tienes algún requisito previo que siempre pasas?

La pregunta es, de hecho, qué medidas adicionales tomaría en comparación con trabajar en un tema conocido.

EDIT: Y desde un punto de vista de la gestión, ¿cómo manejarías ese caso?

  • ¿Cómo calculo el tiempo del proyecto?
  • ¿Prefiere asignar un programador experimentado (proyecto más incómodo) o prefiere asignar a los más jóvenes (quienquiera que sea, tendrán que aprender de todos modos)?

Todavía la misma pregunta realmente maneja estos proyectos de manera diferente?

+1

¿podría especificar "tecnología"? es esa plataforma? ¿marco de referencia? ¿biblioteca? o cualquiera de esos? – back2dos

+0

Cualquiera de esos realmente. Aunque lo que tenía en mente cuando surgió la pregunta era más sobre la biblioteca y/o el marco. – Jla

Respuesta

20

Mi enfoque preferido para la evaluación de tecnología es el uso de los siguientes pasos:

  • identificar los debe tener características Decidir cuáles son las características más importantes que necesitas a la tecnología. Esto forma sus criterios de aceptación.

  • Investigue la tecnología para obtener una primera impresión. Usted está buscando información tales como el coste, la adopción de la comunidad, la madurez, las características, problemas de licencia, la compatibilidad con el software existente

  • hacer una comparación relativa. Identifica una pequeña aplicación de "mascota" que conozcas al revés. La ventaja de esto es que no tiene que pensar en los requisitos, y lo ha implementado antes de usar tecnologías que ya entiende. Elija una aplicación "mascota" que llegue a los principales puntos de implementación de sus proyectos típicos. P.ej. Verá que muchos desarrolladores de aplicaciones web implementan un motor de blogs simple como una forma de evaluar o demostrar una tecnología. Los clientes de Twitter también han estado de moda últimamente.

  • Evite distracciones La clave para una evaluación efectiva es enfocarse y no permitir que se atasque con problemas periféricos. P.ej. no se preocupe por el diseño CSS de la GUI si su tarea de evaluación es mirar un marco web. A veces es mejor realizar una evaluación de las tareas de la casilla de tiempo para forzarte a enfocarte en lo que puedes lograr de manera realista.

3

Siempre, siempre lea los tutoriales equivalentes "Hello world" y continúe desde allí.

+0

¡Esto debería ser lo primero que hagas! Luego pase a un proyecto de "mascota" con el que está familiarizado. Una vez que te familiarices con la nueva tecnología, entonces comienzas a trabajar en tu proyecto. –

1

En mi trabajo anterior, tenemos biblioteca de libros.

Cada vez que tenemos un nuevo proyecto con un nuevo idioma o tecnología, simplemente vamos allí y tomamos algunos libros y comenzamos a probarlos paso a paso.

1

Intento leer sobre el tema en cuestión. Mira qué otras soluciones hay disponibles (porque seamos sinceros, ¿con qué frecuencia no se ha hecho antes?). También trato de experimentar un poco con la tecnología si es posible.

2

Para mí, lo importante que debe recordar es que no tiene que saberlo todo de una vez.

Empiezo a buscar pequeños trozos hasta que los entiendo - luego miro piezas más grandes.

También miro la imagen completa, luego voy a entrar en más detalles.

En cierto momento, los dos deberían cumplir (¡espero!), Y todo encaja.

Mi enfoque habitual es comenzar a trabajar en partes pequeñas de un sistema con el fin de obtener una mayor comprensión: a medida que trabajo en él e interactúo con otras partes, aprendo cada vez más. Esto es cierto para usar una nueva tecnología, comenzar con lo básico y seguir adelante.

10

Siempre tengo un bloc de notas a mano.

Por cada día que estoy usando el nuevo idioma/framework/API pondré la fecha de ese día como encabezado. Y debajo de eso, anotaré cualquier rareza interesante que haya visto ese día. La razón es que lo encuentro. A menudo tendré que volver a visitar algo dos o tres veces antes de que quede grabado en mi mente. Tener notas para referirse es una gran ayuda.

+3

+1 para evitar el error: "Lo he visto, lo sé": p – Jla

+0

Estoy buscando cuadernos lineales, por lo que he estado experimentando con Wiki alojados localmente. –

3

Normalmente me acerco a esto en dos frentes, en paralelo.

  1. Lea un buen tutorial o libro sobre el tema.
  2. Comience a implementar pequeños fragmentos de funcionalidad relevantes para su aplicación/proyecto, de abajo hacia arriba, en este nuevo idioma & tecnología. Esta es una "programación exploratoria", usará muchos Google aquí y leerá un código escrito por otros para comprender cómo funcionan las cosas

Tener dos en paralelo significa que se beneficiarán tanto de lo teórico como práctico, y estará menos aburrido Ninguno se puede omitir, en mi humilde opinión. Muchos se apresuran al código sin leer, y generalmente da como resultado un código no idiomático malo.

1

Igual que comenzaría un proyecto en un idioma que ya conozco, excepto que el manual estaría un poco más cerca.

2

Recientemente comencé un nuevo proyecto usando Wicket y postgreSQL. ninguno de los cuales he usado antes.

Recomiendo encarecidamente que tan pronto como haya dominado los conceptos básicos, si tiene alguna interacción con otras tecnologías (como DB), intente practicar la integración a ellos también. Se garantiza que también encontrará desafíos allí.

Es mejor para usted resolver estos desafíos al principio para que sepa a qué se enfrentará y pueda planear a su alrededor más adelante en su proyecto, cuando sea necesario realizar cambios significativos.

13

La mayoría de los casos, escribo un programa que he escrito en otros idiomas y que no me da dolor de cabeza desde una perspectiva conceptual. Para mí es una red neuronal, otros usan rayos raytracers sencillos o lo que sea.

Luego verá qué es difícil acerca del idioma y dónde las cosas difieren de lo que usted conoce. Simplemente no empieces con el proyecto real de inmediato.

5

Normalmente, primero se investiga si esta tecnología se adapta a su proyecto en absoluto.

Si lo hace, siga adelante y comience el proyecto, superando los obstáculos sobre la marcha.

Lo más importante aquí es definir los casos problemáticos potenciales, las dudas que tiene sobre la tecnología y resolverlas con la prioridad. Si puede interactuar con otra tecnología, si es compatible con algún protocolo, si puede implementar su arquitectura deseada con él, si es lo suficientemente eficiente en ciertos casos. La idea es identificar primero si un barco (su producto) puede moverse en absoluto antes de comenzar a pulir el casco, para que no invierta demasiado tiempo y esfuerzo en algo que al final no funcione.

Hablando de pasos previos, se recomienda buscar historias de proyectos equivalentes completados con esta tecnología. Proyectos con complejidad/tamaño comparable, arquitectura general, implementación de cosas específicas que te gustaría tener. Esto debería darte una idea de lo que puede y lo que no se puede hacer.

3

Practicar primero con el tutorial "hello world" es un muy buen punto de partida.

Además, para obtener la mayor cantidad, siempre trato de responder la pregunta: ¿Por qué se hace de esta manera y no de esa manera?

Mi objetivo es obtener la filosofía detrás de la tecnología, para conocer el panorama general y la intención del creador, es decir, qué problema resuelve su tecnología.

2

yo diría que la mayoría de la cual entras esta manera:

  • leer el cómo/foros/...
  • resolver el problema (después de todo esto es probablemente por qué está utilizando algo que no lo hace sabe)
  • después de algún tiempo y el conocimiento acumulado ... Refactor/reescritura su código original
+0

Me pregunto acerca de su último punto. ¿No hay riesgo de que te pases la vida reescribiendo un código viejo? – Jla

+0

estoy de acuerdo, buen punto :) – asdf

+0

No, no es así si no estás refabri- cando de vez en cuando te quedas atascado con un código feo que has escrito cuando no sabías todo lo que sabes ahora. Pero, por supuesto, debe asegurarse de contar con pruebas unitarias para cubrir sus bases. – Drejc

5

inicio un nuevo documento de Google Docs llamado "XXXX Biblia "donde XXXX es la nueva tecnología en cuestión. Entonces cada pequeño obstáculo o truco o gotcha entra en eso.

+0

+1 en la documentación. Estoy tratando de hacer algo similar, pero con un blog como mi arma de documentación de elección, simplemente hace que sea más fácil compartir – Jimmy

1

El mejor consejo que puedo darte es el del problema. ¿Es la tecnología adecuada para el problema que estás tratando de resolver?

Si ha sido respondida y la respuesta es sí.

  1. Tome notas, que se mencionó anteriormente.
  2. Mire videos, tiendo a aprender mucho más fácilmente al ver y entender lo que la persona está haciendo.
  3. Tenga la documentación a mano.
1

Tal vez esto está un poco fuera de su alcance, pero:

  1. Usted debe decidir acerca de su proceso de desarrollo, lo cual es bastante independiente del lenguaje.

  2. Esto incluirá cómo se realizará su prueba, así

  3. Usted tiene que mirar a las mejores prácticas de la persona que son bien conocidos en esta tecnología (para el código, que puede ser a la vista de codificación prácticas de proyectos de código abierto bien conocidos)

  4. tratar de encontrar algunos libros muy recomendables y que tienen altos índices de audiencia en las librerías electrónicas

  5. de correo electrónico y en contacto con las personas que son bien conocidos en este campo y que dejaron sus mensajes de correo electrónico en algún proyecto En la página, se sorprenderá de la cantidad de personas que se toman el tiempo de responder a sus correos electrónicos cuando les pide consejo cortésmente.

Trate de no perderse demasiado profundamente en las cuestiones de aplicación/herramienta dependiente cuando no es crítica, y adoptar las mejores prácticas y convenciones temprana cuando empiece a usar una nueva tecnología sería mi consejo.

Anthony

0

Leer y aprender algo no es una buena manera. Cualquiera tiende a olvidar lo que lee. Así que siempre empiezo con un pequeño programa, algo así como un mundo de hola, y me doy una palmadita de "buen chico" en el hombro solo por un impulso.
Luego comienza a buscar blogs y leer sobre prácticas que otros gurús han descubierto por el camino difícil. Y anótelo en un bloc de notas con el nombre de la tecnología o el idioma. También escriba una breve línea sobre por qué se guarda el enlace para que pueda regresar si es necesario. También pongo una estrella después del trazador de líneas si es algo relacionado con el proyecto que tengo que comenzar.
El próximo paso será configurar un inicio de proyecto base con el trabajo disponible. Mientras tanto, consulte el documento de idioma tanto como sea posible para que pueda leer y probar cosas.

0

Para mí, siempre el enfoque de prueba y error funcionó bien. Leí información básica sobre el nuevo idioma/tecnología, pero después de eso, a menos que me moje las manos y los pies en la tecnología, generalmente no aprendo mucho. No estoy seguro de si es una buena práctica, pero así es como aprendo.

Incluso si la empresa no adopta la nueva tecnología, habría aprendido un nuevo idioma. Por supuesto, esta podría no ser la forma en que la administración quiere que abordes las cosas.

1

Si necesita aprender múltiples tecnologías nuevas (por ejemplo, en el momento en que estoy aprendiendo Entity Framework + ASP.Net MVC 2), le sugiero que cree una implementación de referencia de extremo a extremo. Intente encontrar la mejor manera de crearlo y luego "copie" esta referencia a otras áreas del programa/sitio web, etc.

1

Comenzaría por preguntar si el uso de una nueva tecnología o lenguaje es una buena idea. A veces puede parecer muy importante utilizar la última tecnología en un proyecto que tiene grandes esperanzas. A menudo, cuando he sido seducido así, he descubierto que lo último brillante es tan defectuoso como la tecnología que ya conocía.

En muchos casos, si realmente le importa el proyecto, es mejor que se quede con lo que ya sabe.

2

¡Permita mucho tiempo extra!

Siempre cometerá errores sin darse cuenta - en lugar de perder mucho tiempo tratando de evitar los errores que ni siquiera sabe por qué son errores, solo acepta que cometerá errores y permitirá hora de volver atrás y corregirlos.

0

cuando se trata de lenguas, hay una cosa que puedo decir:

si se utiliza el lenguaje es en realidad vale la pena, que todo el código que va a escribir dentro de los primeros 6 meses va a ser basura, medido por lo que el lenguaje puede hacer ... hay una regla importante a seguir: no intente usar los modismos que conoce de otro lugar en ese nuevo idioma, y ​​quejarse si el idioma no lo admite ... más bien intente obtener un una descripción general de las características especiales del idioma y las expresiones idiomáticas prevalentes, y trata de enfocarse en expresar soluciones usando esas ... probar nuevos enfoques promovidos por ese idioma ... de lo contrario, la elección de cambiar de idioma no tiene sentido.

0

Haga spikes según sea necesario para comprender la nueva tecnología. Esto se puede hacer como learning tests (pruebas unitarias) para preservar el conocimiento.

0

Al intentar aprender un nuevo idioma, recomendaría al acecho en el IRC. Muchos de los principales lenguajes y tecnologías tienen canales en freenode y simplemente observar lo que las personas están hablando es una excelente manera de conocer los aspectos que ni siquiera habrías considerado al hacer tu propia lectura de un tutorial o libro sobre el tema.

Por supuesto, IRC será un gran lugar para hacer preguntas cuando empiezas a toparse con obstáculos, sin embargo, te recomiendo que pongas todas esas preguntas en papel y las dejes mientras investigas más. A menudo toma un tiempo para que los términos y la sintaxis desconocidos encajen en su cerebro y puedan retroceder y tachar, o reevaluar cualquier preocupación anterior que haya encontrado que me resulta muy útil.

Cuestiones relacionadas