2009-05-14 21 views
10

Me licencié en informática en diciembre y he adquirido una posición en Ingeniería de software. He estado golpeando mi cabeza contra la pared durante 2 meses tratando de aprender Hibernate, Spring y todo lo demás que me han echado en mi primer proyecto. Antes de aceptar este trabajo, tenía experiencia solo en programación. La arquitectura de aplicaciones y las herramientas de ingeniería han sido muy difíciles de comprender. Esperaba que alguien pudiera decirme un buen lugar para comenzar a entender cómo funcionan las aplicaciones web basadas en Java. Hay tantos componentes y no puedo entender cómo va todo junto. Entonces, mis preguntas sonDe informático a ingeniero de software

  1. ¿Cómo hacer para aprender una nueva tecnología?
  2. ¿Qué enfoque es el mejor para aprender múltiples tecnologías al mismo tiempo?
+1

¿Qué tiene Hibernate y Spring y todo lo demás que no entiendes? Es solo código. – mquander

+19

@mquander - Ahhh la arrogancia de la juventud. – willcodejavaforfood

+0

Creo que es entender cómo todo hace clic juntos. Actualmente estoy usando Maven, Flex, Spring e Hibernate. Todos son nuevos para mí, así que pueden ser realmente confusos. –

Respuesta

21

Comience con lo básico.

Con esto quiero decir solo servlets y un contenedor web, probablemente Tomcat. Debe comprender el ciclo de vida del servlet sin importar los marcos que arroje después.

A continuación, si lo desea, agregue JSPs a la mezcla. Los JSP son simplemente servlets glorificados de todos modos (están compilados en código de servlet y luego en bytecode).

Después de eso agregue un marco MVC. Hace años que solía ser Struts (1). Hoy en día es un poco más difícil. Me gusta Spring MVC, pero eso también se basa en Spring. Y creo que estarías mejor (por ahora) pasando por alto más frameworks de tipo Ajaxy (como Tapestry o Wicket) o las soluciones más integrales (como Seam) como una sobreexplotación del problema. El punto que intentas comprender aquí es cuál es el concepto de MVC, cómo funciona y por qué lo haces.

Después de eso agregue Spring. El punto aquí es aprender el principio de Inyección de Dependencia/Inversión de Control (IoC). Este es un concepto extremadamente importante en el desarrollo moderno de Java y el desarrollo de software en general.

Lo anterior en realidad sigue cómo estas tecnologías evolucionaron, en el orden en que evolucionaron. Lo hicieron por una razón y seguir ese camino te ayudará a entender eso.

No escuche a nadie que le diga que no necesita comprender conceptos y tecnologías de bajo nivel como la API de servlet puro. No tiene sentido.

+0

+1. Como un científico de la computación me convertí en ingeniero de software, estoy de acuerdo: la conciencia de la estructura y el funcionamiento de toda la pila, de arriba a abajo, es invaluable. –

8

Creo que vale la pena echarle un vistazo al libro de Mike Gunderloy Coder to Developer.

Respecto al aprendizaje de una nueva tecnología, realmente no hay mejor manera que solo usarla y practice with it tanto como sea posible.

7

Mi forma de aprender es construir algo por mi cuenta. Normalmente selecciono algo trivial que puede implementarse rápidamente y luego uso la tecnología empresarial XYZ del momento para poder explorar y conocer los detalles. De hecho, estoy haciendo esto mismo ya que estoy tratando de aprender ASP.NET MVC.

1
  1. Simplemente tiene que empezar a trabajar con las herramientas para tener una idea de ellas.
  2. Me gustaría ir a buscar en la web y comenzar a leer libros y sitios web sobre las tecnologías que está utilizando.
  3. Empezaría a buscar en la web qué libros sobre ingeniería de software en general debería leer. There are questions here surrounding this topic.
  4. Pregunte a los otros ingenieros que trabaja con preguntas sobre cómo hacen las cosas y por qué lo hacen de esa manera.
2
2

teoría & práctica

  1. de lectura (es decir, Primavera en Acción es impresionante, blogs, etc)
  2. la práctica (es decir, escribir código, obtener retroalimentación)
  3. Goto 1
2

Me gustó mucho este libro cuando se pasa de asp.net a JSP Head First Servlets & JSP, Second Edition.

Excelente manual para alguien que conoce la programación y la web, pero no mucho sobre cómo jsp, servlets y mvc trabajan juntos.

3

En el momento en que sea un experto en sus herramientas y en los idiomas/tecnología que está utilizando, una nueva cosecha de niños utilizará nuevas herramientas mejores y los idiomas/tecnología. Tendrás que aprender de esos para conseguir un trabajo. Así que acostúmbrate a este proceso

+0

¡más de 25 años de lo que dijiste! +1 – Taptronic

2

Solo sigue. No es inusual pasar 2 meses en un nuevo trabajo como programador y aún sentir que te hundes en las arenas movedizas. He tenido casos en los que me tomó hasta 6 meses en un nuevo trabajo para llegar a una etapa en la que siento que finalmente doy la vuelta y eso es después de 10 años de experiencia como programador. Aunque en ese caso entender el código base era como tratar de descifrar los jeroglíficos egipcios.

1

Comprobación de la realidad: como un nuevo graduado que ingresa a la fuerza de trabajo, usted está pasando por el mismo proceso que el resto de nosotros. Estás ingresando a una ecología que es totalmente diferente de la que aprendiste durante un período de años. Va a haber una curva de aprendizaje sin importar el trabajo que realice y los buenos empleadores lo entienden.

Para hacer frente a sus preguntas de forma rápida:

, ¿cómo ir sobre el aprendizaje de una nueva tecnología?

Leer, practicar, cometer errores, repetir. El producto más valioso de este proceso será preguntas específicas que puede formular a sus nuevos compañeros de trabajo (y en Stack Overflow). Recuerde, hacer buenas preguntas en realidad te hace parecer más inteligente. Hacer preguntas generales de barrido o "No lo entiendo" simplemente te hace molesto ...

¿Qué enfoque es mejor para aprender varias tecnologías en el al mismo tiempo?

Haz una lista priorizada de cosas que necesitas aprender y luego trabaja en la lista. No puede aprender todo el comercio web en un fin de semana. Sin embargo, puedes aprender sobre aspectos específicos de Hibernate en una tarde. Lea su nueva base de códigos con un IDE en la mano y comience a explorar las API que en realidad son utilizadas. Si puede centrarse solo en los puntos relevantes de todas estas nuevas herramientas, es posible que realmente se encuentre progresando más rápido de lo que esperaba.

-1

RTFM !! En serio, LEER y LEER y LEER. Luego, aplique, LEA, cometa errores, LEE, retroceda para descubrir qué hizo mal, LEA, arregle, LEA, aplique nuevamente una y otra vez.

¿He dicho LEER? :-) Lo digo en serio. Lea todo lo que pueda tener en sus manos. Google es tu amigo. StackOverflow es tu amigo. ¡Existen excelentes libros y publicaciones como this one los describen, y más! ¡¡Buena suerte!!

+3

RTFM no parece apropiado aquí. Muchos de los proyectos de Código Abierto que están listos para producción tienen documentación deficiente (incompleta/no amigable) (no estoy diciendo nada en particular aquí). De hecho, si golpea su cabeza contra la pared, probablemente significa que ha leído los documentos. – user54579

1

Estuve en tu misma posición hace 2 años. Realmente no se puede esperar que aprendas los marcos populares y la arquitectura mientras estás en la escuela: estás allí para aprender teorías de informática y cómo programar. Afortunadamente, durante el trabajo puede dedicar tiempo a aprender sobre Spring, Hibernate, etc., pero si no, tendrá que pasar un tiempo por su cuenta.

Si estas estructuras son nuevas para usted, le sugiero que obtenga un libro para el aprendizaje metódico y "tutorial" en lugar de buscar aleatoriamente en Google o tratar de leer la documentación de referencia. Definitivamente haría esto por Hibernate. Así es como aprendí la popular pila J2EE al principio, pero ahora puedo leer la documentación que viene con los frameworks.

De todos modos, comenzará a encontrar que todas las tecnologías J2EE están relacionadas de alguna manera, y que recogerá pequeñas partes de otras tecnologías relacionadas mientras aprende una específica. Por ejemplo, aprender JSF va de la mano con JSP.

2

Tuve que pasar por algo así hace un año cuando comencé mi trabajo. Mi solución fue leer cada parte de nuestra base de código que pude tener en mis manos. Si tiene problemas con la primavera, esto es especialmente útil. Rastrea a través de todos los archivos de configuración qué sucede y dónde se relaciona con el código, dónde cambian las cosas y por qué. En cuanto a la hibernación, juegue con ella y lea la documentación de la anotación (esa fue la parte más difícil para mí).

Finalmente, se ofrece como voluntario para cualquier proyecto aleatorio que surja, especialmente si nunca has trabajado con esas tecnologías. He trabajado en muchos proyectos durante el último año que no tienen nada que ver con mi trabajo diario y he aprendido más de esos proyectos que mis cuatro años en la universidad.

Buena suerte

+1

Tenga cuidado con esa respuesta ... Al parecer, leer no es un curso de acción recomendado. – Taptronic

1

El primero que hay que asimilar es la especificación Servlet, ya que describe todas las características básicas que las aplicaciones Java Web adhieren básicamente a. No es una lectura ligera, pero solo una comprensión general te llevará bastante lejos.

3

Todas las buenas respuestas, y mientras usted está luchando con él, tal vez usted podría enviar un poco de retroalimentación a sus profesores:

  • El mundo real lo agradecería muchísimo si se paga un poco más de atención a lo el mundo real necesita
1

No utilice Hibernate hasta que conozca JDBC por completo.

No dice si tiene antecedentes en bases de datos relacionales o SQL. Ambos son esenciales.

Me encanta Spring, pero debes darte cuenta de que no necesitas tragarte todo para obtener beneficio de ello. Por ejemplo, puede sacar mucho provecho de una interfaz de usuario web Spring utilizando JSP y el módulo JDBC. Deje Hibernate por ahora hasta que se sienta cómodo con Spring.

La resolución de problemas, especialmente en informática, consiste en descomponer problemas grandes en problemas más pequeños. Reduzca el tamaño de su problema y concéntrese en una cosa. Las aplicaciones web con JDBC, Spring y Hibernate serían mi progresión recomendada.

2

Honestamente, hombre, si pudieras obtener a través de la informática en la universidad, la fuerza de trabajo es honestamente más fácil, simplemente diferente. Nunca deberías tener que apretar tu cerebro tan fuerte como lo hiciste en la universidad, bueno esta ha sido mi experiencia de todos modos. No hay mucha diferencia entre un científico informático y un ingeniero de software de todos modos, diferencias muy sutiles pero bastante intercambiables.

Mi consejo es que se asegure de que domina con XHTML/CSS/Javascript/SQL antes de pasar a marcos de aprendizaje y librerías de scripts sofisticados como hibernate, jQuery, etc. Probablemente ya sea por su historial, pero si no, estos fundamentos básicos le permitirán comprender lo que realmente está sucediendo cuando sus sofisticados frameworks están generando automáticamente código por todas partes, y así sucesivamente.

Conozco personas que han ido directamente a ORM sin conocer el SQL en profundidad. Les encanta ORM, pero realmente no entienden lo que sucede debajo y luchan cuando el pequeño ORM crea un SQL realmente ineficiente, porque no tienen ni idea de cómo anularlo y escribir el suyo.

También tenga en cuenta que la hibernación y algunos frameworks como este pueden ser un montón de inflado y no siempre la mejor manera de lograr tareas simples. Pueden ser extremadamente exagerados para muchas cosas. De nuevo, regrese a sus idiomas de pan y mantequilla primero. Construye algo sin un marco. Si luego aprende que experimentó muchas codificaciones repetitivas, doblando, raspando y pegando, alto mantenimiento, tome las lecciones de esto y luego muévase a un marco que se adapte a sus necesidades.

Pero una vez que te familiarices con esta mierda, tu cerebro de informática entrará en turbo y te resultará bastante fácil.

0

Encuentra un mentor que respetes y haz lo que ellos hacen.

Como un joven graduado de CS tuve la suerte de engancharme con un arquitecto muy experimentado. Ahora, esto es lo que necesita saber sobre los arquitectos experimentados, ellos (nosotros) somos flojos. Ellos (nosotros) te dejaremos sacar muchas cosas de sus platos, te dejaremos hacerlo y luego te diremos por qué está mal. Aprovecha ese proceso si puedes.

0

Una cosa que hago al aprender nuevas tecnologías o técnicas es escribir una pequeña aplicación de ejemplo. Hay una serie de buenos tutoriales para Hibernate, Spring MVC y Maven. La clave es limitar el número de cosas que intentas a la vez: será más fácil descubrir a Maven, por ejemplo, si te concentras en Maven sin tirar Spring e Hibernate en la mezcla. Una vez que se sienta cómodo con una cosa, puede comenzar otro microproyecto.

Tener un mentor también ayuda.Te encontrarás en situaciones (técnicas y no técnicas) en las que necesitas a alguien con quien hablar. No tengas miedo de pedir consejo a personas más experimentadas con las que trabajas.

1

Vengo de una Informática & Grado de ingeniería de ingeniería de software. Tengo una técnica que uso cuando trato de aprender nuevas tecnologías. Por lo general, es así.

  1. Normalmente trato de leer algunos de los documentos sobre la tecnología y tomar nota de los puntos clave.
  2. Intento ponerme las manos en un tutorial e implementarlo.
  3. Una vez que el tutorial se está ejecutando como debería, le hago modificaciones hasta que me sienta cómodo.

No puedo garantizar que funcione para usted, pero me ayuda mucho.

Cuestiones relacionadas