Alcanzar el estado de programación intermedia [cerrado]

32

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".

George Stocker
fuente
2
He estado jugando con Project Euler recientemente, y solo cubre una gama bastante limitada de técnicas. Todo está muy bien optimizando una función mediante la memorización o la programación dinámica, pero no le ayudará a escribir GUI o aplicaciones web. Los problemas difíciles están diseñados para ser matemáticas difíciles, no codificaciones difíciles.
Muy divertido, por todo eso: no tengo nada en contra, simplemente no está diseñado para ayudarlo a aprender un idioma más allá de los tipos de datos básicos, las estructuras y quizás algunas técnicas de optimización si, como yo, prefiere obtener sus soluciones 0.1s donde sea posible.
@Gortok, estoy de acuerdo en que hay muchas cosas específicas que puede hacer para mejorar su conjunto de habilidades, pero eso ciertamente depende de qué tipo de programación realice. Los desarrolladores de Windows necesitan diferentes habilidades de los programadores de dispositivos integrados, por ejemplo. Creo que la pregunta formulada es, de hecho, demasiado amplia para obtener una buena respuesta.
Nathan Fellman
1
He estado programando desde que tenía 2 años. He fallado en convertirme en el mejor programador del mundo, y ahora odio mi vida. Desearía que mi objetivo fuera ser la mejor estrella porno del mundo.
No sientes que estás avanzando porque tu intuición te dice una brecha entre la práctica académica y la práctica empresarial (del mundo real). Y tu intuición es correcta. La práctica académica se trata de pequeños problemas y ejercicios autónomos. Las empresas están arreglando un error o agregando una función / página web, etc. a un gigante (generalmente). La práctica académica es la recursividad. El negocio es legibilidad y mantenibilidad. La práctica académica es matemática e informática. Los negocios son habilidades de personas y análisis de requisitos tanto como la codificación. Hubiera puesto esto como respuesta, pero la Q está cerrada.
Brad Thomas el

Respuestas:

41

¡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.

Steven A. Lowe
fuente
17
y cuidado con citar a Tolkien, es un hobbit difícil de romper
Steven A. Lowe
1
Bien jugado Sr. Lowe, bien jugado.
kemiller2002
1
En serio, ten una vida fuera de la programación. Uno: hay más en la vida que el código. Dos: se puede aprender mucho de otras disciplinas.
kemiller2002
1
+1 - Bien hecho. Nada reemplaza la práctica (o un buen sentido del humor).
15

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.

Norman Ramsey
fuente
8
No me gusta esta teoría, las personas tienen trabajos a tiempo completo y luego otras responsabilidades. No es responsable suponer que aquellos que no tienen proyectos paralelos no les gusta programar lo suficiente o son malos programadores. Como dice la respuesta aceptada, Tenga una vida fuera de la programación.
10
No estoy de acuerdo: los mejores programadores son como los mejores escritores: literalmente no pueden evitar hacer lo que hacen mejor.
Norman Ramsey el
2
Es posible que no puedan detenerse, pero la vida sí, y por alguna voluntad.
Shannon Severance
@ShannonSeverance, para muchos lo hará, no solo para algunos.
Pacerier
9

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.

Las ovejas se vuelven como las ovejas y las ovejas como las ovejas, pero tampoco son muy largas en el mundo. Con [árboles y] Ents es más rápido y más cercano, y caminan juntos por las edades. - Tolkien

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.

Joshua
fuente
2
¿De alguna manera involucra cheetos? La imagen en mi cabeza involucra cheetos.
2
jajaja "¡No es fácil ser cursi!"
gnovice
¿Etapa larval o etapa Laravel? ;)
Brad Thomas
9

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.

BenAlabastro
fuente
9

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:

  1. ¿Te metiste en editar guerras en línea? Si es así, es posible que esté demostrando que le gusta discutir sobre los detalles dentro de su zona de confort más de lo que le gustaría tratar de comprender el punto de vista de la otra persona.
  2. ¿Piensas que los idiomas son cosas realmente diferentes? C # y Java aportan sus propias plataformas y recursos a la mesa, pero ambos son modelos efectivos de computabilidad. ¿Puedes aprender un nuevo idioma y plataforma lo suficientemente rápido como para que te paguen por hacer el trabajo?
  3. ¿Todavía piensas en las tareas de software como escribir? Si te asignan una tarea en el trabajo, ¿por qué? ¿Para qué se va a usar este código? ¿De qué sistema formará parte? Esa información puede cambiar dramáticamente su solución propuesta.
  4. ¿Has dejado atrás la fase de sabelotodo de tu vida? ¿Estás escuchando al resto del equipo o solo estás tratando de pensar en lo siguiente que debes decir?
  5. ¿Te has dado cuenta de que "hacer una noche entera" para producir una solución de último minuto con errores ya no es impresionante? Después de las primeras ocho horas, puede imaginar fácilmente que el resto del tiempo solo se usó para escribir errores.

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 ...

Bob Cross
fuente
8

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.

Timothy Khouri
fuente
8

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.

destripador
fuente
4

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.

David Norman
fuente
3

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

melaos
fuente
-1

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).

  1. Essential C # : el enlace es para la última edición. De hecho, leí el anterior (C # 4.0) pero supongo que cuanto más nuevo mejor. Este libro también tiene algunas cosas básicas, pero sea paciente y lea ese libro de principio a fin.
  2. C # en profundidad : el enlace es nuevamente para la última edición que se lanzará en 10-15 días. Solo he hojeado el libro, pero mis colegas que lo han leído tienen un gran respeto por esto.

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 .

Asim Ghaffar
fuente
¿Te gustaría explicar por qué votaron negativamente?
Asim Ghaffar