Soy un ingeniero de software que ha programado puestos en VBA (¡aunque no me atrevo a considerar esa experiencia 'real', ya que fue prueba y error!), Perl con CGI, C # y ASP.NET. Los dos últimos son de posgrado, con mi entrada en el "mundo real". Tengo 2 años fuera de la universidad y he tenido 5 años de experiencia (total) en los idiomas que he mencionado. Sin embargo, cuando se trata de mi currículum, solo puedo poner 2 años menos para C #, y menos de un año menos para ASP.NET.
Siento que conozco C #, pero todavía tengo que pasar tiempo preguntando "¿Qué hace este método?", Mientras que algunos de los ingenieros de nivel superior pueden decir de inmediato: "Oh, el Método X hace esto, sin haberlo visto nunca". método antes ". Así que sé empíricamente que hay un abismo allí, pero no estoy exactamente seguro de cómo salvarlo. Comencé a programar en el Proyecto Euler , y tomé un libro sobre patrones de diseño, pero todavía siento que paso cada día pisando agua, en lugar de seguir adelante.
Eso no quiere decir que no siento que haya progresado, solo significa que hasta donde llego cada día, todavía veo la cima de la montaña a lo lejos.
Mi pregunta es esta: ¿Cómo superaste esta meseta? ¿Cuánto tiempo te llevó? ¿Qué métodos me pueden sugerir para ayudarme en esto?
Leí Code Complete , The Mythical Man Month y CLR a través de C #, segunda edición . Mi pregunta es: ¿qué hago ahora?
Editar : acabo de encontrar esta pregunta en proyectos para un programador de nivel intermedio. Creo que se suma a la discusión (aunque no suplanta mi pregunta). Como tal, lo agrego a la pregunta como "Para obtener más información".
fuente
Respuestas:
¡Felicidades!
De su descripción, usted es un desarrollador intermedio.
Esta fase durará entre 3 y 8 años, dependiendo de su disposición a aprender más allá del problema del momento.
Para acelerar el proceso, lea, navegue, haga un blog, vaya a reuniones de grupos de usuarios, encuentre un mentor, haga una investigación independiente, codifique proyectos paralelos y entérese de nuevas tecnologías. Esto puede reducir uno o dos años del tiempo.
O podrías tener una vida fuera de la programación ;-)
En serio, mantente al día e introspectivo, pero apaga la cosa #% $ @ de vez en cuando
Anexo: cuando salga, recuerde usar pantalones.
fuente
Una de las mejores maneras de subir la montaña es escribir algo para ti porque quieres. Los mejores programadores tienen respuestas maravillosas a la pregunta "¿Cuál es el programa más interesante que has escrito en tu tiempo libre?" Si no está escribiendo ningún código en su tiempo libre, no ama su oficio lo suficiente como para mejorarlo.
fuente
Debes pasar por la etapa larval.
Aunque ahora programo en VB.NET en Windows, pasé por una etapa larval en Linux x86 con el ensamblaje como mi idioma principal.
Por un tiempo, debes dedicarte al oficio hasta que lo domines. Los llamados instintos de un programador maestro son comportamientos realmente aprendidos. Es una cultura compartida. Los programadores deben pensar entre sí y como la máquina.
Saber y entender Las habilidades más importantes no son las vinculadas a un idioma específico, sino que se pueden aplicar a casi cualquier idioma. Conozca los conceptos, búsquelos tanto en problemas como en idiomas, prepárese para inventar cosas nuevas cuando sea necesario.
Este es el camino a la grandeza.
fuente
He estado programando desde que tenía 8 años ... Voy a tener 33 años en Nochebuena. Todavía veo la montaña en la distancia. No importa cuán lejos llegues, siempre hay más para aprender.
Obtenga los paradigmas en su haber y descubra cómo el lenguaje en el que está codificando actualmente implementa esos paradigmas. La programación es una experiencia de por vida que siempre tiene más que aprender. Esa es la alegría, no importa lo competente que seas, siempre hay más.
Una forma de aprender cosas nuevas que normalmente no aprendería es pasar tiempo aquí y en otros foros de programación como Bytes y Experts Exchange donde la gente hace preguntas. Si puede responder la pregunta, siga adelante, si no puede, intente y descubra cómo completar la tarea usted mismo, no solo el OP apreciará su esfuerzo y asistencia, sino que también aprenderá algo nuevo.
Descubro que aprendo más al ayudar a otras personas a encontrar respuestas a cosas que aún no sé que nunca, simplemente programando mis cosas cotidianas, lo que hago día tras día.
fuente
El estado de programación intermedio implica que te estás mudando de la mentalidad de "mono más rápido" y entras en el ámbito de querer construir sistemas reales como carrera. Este es un cambio profesional importante y, francamente, no se trata realmente de habilidades técnicas. Trabajar en el nivel intermedio (también conocido como "desarrollador") requiere un conjunto de habilidades de personas significativamente avanzado.
Aquí hay algunos síntomas en los que podría pensar:
El mejor resumen que se me ocurre es que el programador intermedio (o "desarrollador") ha aprendido a ser más productivo en ocho horas de trabajo para poder irse a casa y tener una vida fuera del trabajo.
Puntos de bonificación otorgados si logras encontrar un cónyuge y reproducir ...
fuente
Lo que estás haciendo ahora es genial, pero si quieres acelerar increíblemente tu progreso, puedes hacer dos cosas adicionales:
1) "Enseñar": una forma sencilla de hacer esto es iniciar un blog e intentar contribuir con algo útil de forma regular (tal vez semanalmente). Apunta a cosas que has aprendido recientemente o que aún no sabes . Eso significa que te obligarás a investigar, comprender y volver a expandirte.
Por cierto, puedes registrarte fácilmente en una cuenta de SingingEels en la que obtienes un blog gratuito en una comunidad de desarrollo existente.
2) Escriba muchos miniprogramas: con esto quiero decir aproximadamente 1 por semana. Puede usar esto junto con lo anterior ... o simplemente por diversión. Lo que hice como desarrollador joven fue elegir aleatoriamente (no estoy bromeando) un espacio de nombres en el marco .NET. En eso, elige una clase que nunca hayas visto / usado antes, y crea un pequeño programa que lo use.
fuente
Intentar
Leer MÁS libros Recoja esos grandes títulos de Amazon y léalos. Por ejemplo, el autor de Code Complete había escrito un gran libro sobre ingeniería de software: desarrollo rápido de software, compre uno y léalo.
Aprenda un lenguaje de programación diferente Vale la pena estudiar un lenguaje de script como python / ruby. O tal vez un lenguaje de programación funcional :) Esto puede cambiar su mente de programación. Puede saber que algunos de los patrones GOF no son necesarios para ese tipo de idiomas.
Únase a una comunidad Las personas pueden intercambiar sus pensamientos escuchando a otros y haciendo presentaciones.
fuente
Encuentra programadores inteligentes y aprende de ellos. Imitarlos Observe las cosas que hacen de manera diferente que usted.
¿Su empresa hace revisiones de código? Esa es una de las mejores formas de aprender. Es posible que se sorprenda de las sugerencias que hacen los programadores más avanzados y de las cosas que piensan mientras codifican.
fuente
qué tal involucrarse en otro proyecto de código abierto en curso, de modo que al menos su trabajo valga la pena para alguien y pueda aprender e interactuar con otros desarrolladores más avanzados que trabajan en el mundo real.
para que al menos no estés limitado en lo que quieres aprender o qué tipo de proyecto quieres hacer. y ya es una herramienta gratuita que está utilizando, puede estar orgulloso de haber ayudado a mejorarla.
y se muestra bien con tu currículum también. :)
así que si eso todavía te deja algo de tiempo libre, ¿por qué no mantener un blog documentando tu aprendizaje, experiencias y demás? quién sabe, podrías ser el próximo joel en software o codificación de horror: p
fuente
Para sobresalir como desarrollador de C #, lea los siguientes dos. Tenga en cuenta que el enfoque de estos libros está más en el lenguaje (C #) no en el framework (.NET).
Ya ha leído CLR a través de C # , de lo contrario, esa es probablemente la tercera sugerencia de cualquiera para los desarrolladores de C #.
Esto también debería hacerte un mejor desarrollador: Pautas de diseño del marco y trabajar eficazmente con código heredado .
fuente