¿Debería ser un buen programador inmediatamente después de la universidad?

28

Posible duplicado:
me gradué con una licenciatura en Ciencias de la Computación, pero no siento que esté cerca de ser un programador experto

Recientemente me gradué de la universidad, y desde entonces me he unido a un equipo de desarrollo en el que soy, con mucho, el desarrollador menos experimentado, tal vez con un par de términos de trabajo en mi haber. Mientras tanto, el resto del equipo tiene una experiencia de 5-10 años.

Fui muy buen estudiante y muy buen programador cuando se trataba de tareas y pruebas en botella. He trabajado en algunos proyectos con éxito, pero ahora estoy trabajando con una base de código mucho más grande, y la curva de aprendizaje es mucho más alta.

Me preguntaba cuántos otros desarrolladores comenzaron sus carreras en equipos y se fueron como si apestaran. ¿Cuándo cambia esto? ¿Cómo puedo acelerar el proceso? Mis mayores me están ayudando pero quiero ser genial y mostrar mi valor ahora.

polvo
fuente

Respuestas:

50

Lo interesante del desarrollo de software es que no importa lo bueno que seas, siempre hay alguien mejor o al menos lo suficientemente diferente como para enseñarte algo. Tampoco es raro ver el código escrito hace unos meses y pensar que apesta, independientemente de su nivel de experiencia.

Para mí, una vez que me di cuenta de la brecha entre mis habilidades y las habilidades de mis compañeros de trabajo, comencé a aprender como nunca antes había aprendido: leer el código de otras personas, publicaciones de blog, libros, prestar atención a cómo mis compañeros de trabajo lograron cosas, etc. La universidad me preparó para la informática, pero no para el desarrollo de software. Han pasado casi 4 años y soy un desarrollador de software mucho más fuerte de lo que solía ser. Por lo tanto, simplemente espera y aprende todo lo que puedas de las personas que te rodean. Se pondrá mejor.

Adam Lear
fuente
+1. También me gustó mucho ser el que apesta a algo en el equipo, y me obligó a ajustar mi conocimiento.
27
+1University prepared me for computer science, but not really for software development.
George Marian
1
Espero tener la misma experiencia cuando termine la universidad y obtenga mi primer (oh, espera, segundo) trabajo en el negocio de la programación.
gablin
44
@George: Lo que es peor es que gran parte del desarrollo de software en el mundo real cae bajo el paraguas de "TI", que generalmente se reduce a colocar interfaces de usuario feas en tablas de bases de datos. :( No es exactamente algo para lo que la universidad pueda prepararte.
Adam Paynter
@adam Absolutamente. Aunque a veces entiendo la necesidad, el enfoque "suficientemente bueno" simplemente me vuelve loco.
George Marian
23

No. Aprendí mucho más sobre programación / ingeniería de software en los primeros 6 meses de trabajo después de dejar la universidad que en los años anteriores. Sin embargo, eso no significa que la universidad haya sido una pérdida de tiempo, preparó mi mente y proporcionó los conocimientos básicos para desarrollar.

Por otra parte, mirando hacia atrás, todavía no sabía realmente lo que estaba haciendo en 6 meses.

Dan Dyer
fuente
44
Bien dicho, mis profesores siempre decían: "Hay una gran disparidad entre la industria y la academia". ¡Es difícil de creer hasta que salgas al mundo real y te des cuenta de que sí lo hay!
Chris
Esta. Esto es exactamente por qué una pasantía, no remunerada o lo que sea que pueda obtener, es tan valiosa. Demonios, incluso una pasantía que no sea de programación es mucho más valiosa en experiencia que cualquier clase individual, porque aprendes algunas de las trampas de trabajar con personas.
Kzqai
10

La educación le brinda una base sobre la cual construir, pero no lo preparará para el desarrollo de software en la vida real. Eso viene con experiencia. Definitivamente estaba en la misma situación que usted cuando comencé a programar para un trabajo. Mientras sigas aprendiendo, leyendo libros, publicaciones de blog y aplicando lo que aprendes en tu trabajo , vas a mejorar. La clave es aplicar lo que aprendes. Solo leer no ayudará, tienes que aplicar activamente nuevos conocimientos.

ysolik
fuente
+1 por aplicar lo que aprendes. Olvidé mencionar esa parte. :)
Adam Lear
7

Definitivamente pensé que sí, pero no lo era.

Confía en mí, en algún momento de tu carrera volverás y trabajarás en un código que escribiste, pero que no has tocado durante años y deseas desesperadamente que ningún otro desarrollador profesional vea ese código o sepa que lo escribiste. Eso significa que estás creciendo.

JohnFx
fuente
4

De alguna manera, elegir un lenguaje de programación es muy parecido a elegir un lenguaje natural. Puedes aprender una buena cantidad de teoría en la escuela. Aprendes la gramática y los elementos básicos del vocabulario, y crees que eres bastante bueno, hasta que te encuentras en una conversación real con un hablante nativo, y luego estás completamente perdido.

La forma en que realmente aprendes el idioma, hasta el punto de poder mantener una conversación con hablantes nativos, es hablando el idioma, cada hora de cada día. Esto generalmente significa ir a vivir a un lugar donde se habla. Y ahí es cuando sucede algo interesante. Aunque lo que aprendió en la escuela no tiene valor, en sí mismo, en las calles de un país extranjero, le brinda una base teórica buena y sólida que hace que el aprendizaje de idiomas sea mucho más fácil. (Esa fue mi experiencia con el español, al menos).

La programación es de la misma manera. Lo que aprende en la escuela no lo prepara para el trabajo que tendrá que hacer como un programador real, pero (suponiendo que esté en una escuela competente que no tontee todo en aras de la popularidad) ayuda a prepararse su mente para que cuando llegue el momento de aprender a ser un buen programador, los conceptos fundamentales que necesita ya estén establecidos. (Esa fue mi experiencia con la programación, al menos.) :-)

Mason Wheeler
fuente
2
Buena respuesta, pero no iría tan lejos como para decir que "lo que [he] aprendido en la escuela no tiene valor". Sin embargo, sé a qué estás apuntando.
gablin
4

Muchos buenos programadores salen de los títulos universitarios de informática, en su mayoría los mismos que ingresaron.

Lo que pasa con la informática es que, como la gente ha discutido anteriormente, no es lo mismo que la programación. Estudié muchas cosas en la universidad para las que básicamente no estaba preparado; había muchas cosas que parecían tonterías académicas cuando estaba escuchando conferencias sobre eso, pero unos años más tarde deseé le había prestado más atención al terminar aprendiendo un montón de cosas nuevamente que había archivado como inútiles. De hecho, creo que uno podría hacer unos años de programación en un entorno comercial antes de comenzar una licenciatura en informática si eso es lo que quieres hacer.

También creo que a menudo en la universidad no necesariamente sabes cómo aprender. Muchas cosas que he aprendido por error o al aprender de otros desarrolladores son seguramente cosas que mis profesores y estudiantes de posgrado sabían en la universidad, pero no tenía idea de que sería útil comprenderlas. Preguntarle a la gente sobre los problemas que tiene mientras aprende a hacer algo (y esto se aplica a cualquier cosa realmente) hace que el proceso de aprendizaje sea más fluido y menos doloroso. La mayoría de las cosas que puedes aprender por ti mismo o de otras personas, dado que muchas de las lecciones que he aprendido por mí mismo han sido aprendidas de mis errores dolorosos, elegiría aprender de otras personas cuando pueda ...

glenatron
fuente
2

Citaría la publicación de Brian Hurt

La informática y la programación son cosas separadas

quien también se refiere a la programación de pregrado de Joel Spolsky y al brillante artículo titulado Who Killed the Software Engineer

Todas estas discusiones describen la realidad bastante bien y, en mi opinión, responden su pregunta como "No", porque la universidad no lo convertirá en un buen programador. Necesitas convertirte en un buen programador por tu cuenta.

No tengo un título en CS, pero llevo 8 años programando y desarrollando software profesionalmente. Todas las habilidades de programación que tengo, las aprendí yo mismo.

revs mloskot
fuente
1

No, en absoluto, estaba fingiendo ser programador y lo aprendí por las malas. Obtuve mi primer cliente como freelance y luché muy mal con C / C ++, y finalmente gané. Recuerdo que tomó algunas horas entender que hacer malloc en una estructura no era suficiente para asignar también memoria para los punteros en la estructura.

martjno
fuente
¿Cuál fue tu título original? ¿Tu trabajo duro finalmente valió la pena?
rwong
Soy ingeniero electrónico, era bastante bueno en Matalb, pero con muy poco conocimiento de C / C ++ y Java. Lo creas o no, mi primer trabajo de programación real fue escribir controladores para Windows CE y transferirlo a este dispositivo: eurotech.com/EN/innovation.aspx?pg=wearable . Tuve un poco de ayuda de la compañía, pero básicamente estaba trabajando solo en casa, perdiendo mucho tiempo por muy pequeñas cosas. ¡Pero apuesto a que no olvidé nada! Todavía estoy aprendiendo, pero ahora soy dueño de una startup que hace un programa realmente grande ... así que valió la pena.
Martjno
1

Era un programador bastante bueno cuando me gradué de la universidad. También tuve una oferta de trabajo elegante meses antes incluso de graduarme (que pude rechazar por una aún más elegante).

La clave fue que había trabajado mucho como aficionado, con un trabajo de desarrollo web durante el año escolar, y realizando prácticas de verano de calidad con IBM ("equipos de velocidad ExtremeBlue" y el programa ExtremeBlue propiamente dicho). Una buena experiencia profesional le permitirá omitir un poco de las cosas de nivel de entrada después de graduarse.

(Dicho esto, todavía mejoré mucho en la programación en mis primeros seis meses más o menos en un Real Job (tm). No es que haya terminado después, pero fue cuando realmente estaba mostrando mucho).

usuario2348
fuente
1

Puedo darte una respuesta inversa, ya que llegué directamente de la escuela secundaria al trabajo. Comencé a trabajar como programador de pensamiento propio, y fui casi inmediatamente productivo en el proyecto que me dieron mis empleadores. Tenía algunos compañeros de trabajo que tenían un nuevo título en informática, y no eran productivos en absoluto.

Con el tiempo, algunos compañeros de trabajo graduados mejoraron enormemente sus habilidades, mientras que otros no, y eso no estaba relacionado con su GPA.

Wizard79
fuente
1

La universidad no te enseña a convertirte en un programador del mundo real. Supongo que esto es similar con muchos trabajos en comparación con sus programas de grado. No diría que no obtuve nada de mi título, pero fue mucho menos útil que pasar 4 años en el trabajo.

Pero esta bien. Probablemente, para cada trabajo que comencé, no estaba calificado. Si tiene confianza en sus habilidades y está dedicado al aprendizaje, puede intensificar y hacer el trabajo.

RationalGeek
fuente
1

No creo haber aprendido ningún hecho sobre la programación en general al que no estuviera al menos expuesto en la universidad. Claro, aprendí nuevos lenguajes de programación aquí y allá, aprendí nuevas API, nuevas bases de código y nuevas herramientas, pero los conceptos generales estuvieron presentes en la escuela.

Lo que sí recoge con la experiencia es una especie de instinto que acelera la forma en que se enfoca en un error reportado, o lo lleva directamente a la forma más sólida de escribir código nuevo. Cuando eres nuevo, aún puedes corregir el mismo error o implementar la misma función, pero lleva más tiempo y es más probable que tengas que volver y solucionarlo por un problema imprevisto.

Es por eso que es importante conseguir colegas más experimentados que lo guíen. Ve a ellos y diles: "Así es como creo que esto debería ser manejado. ¿Puedes pensar en una mejor manera?" Eso te brinda el beneficio tanto de la experiencia de descubrirlo por ti mismo como de aprender de la experiencia de los demás.

Karl Bielefeldt
fuente
0

Yo era mejor programador que mis maestros en la universidad.

Luego aprendí buenas prácticas de programación cuando comencé a trabajar.

Mouviciel
fuente
0

Un buen programador siempre está aprendiendo ... aprendiendo una forma diferente de hacer esto o una mejor manera de hacerlo. Lo que sea que tus compañeros programadores tengan que enseñarte, te escucharía.

Jeremy
fuente
0

Una de las cosas que nadie ha mencionado es que los problemas que tiene que resolver en la escuela se reducen deliberadamente para que sea más fácil ver cómo usarlos como técnica específica que se le está enseñando. Usualmente sabes qué técnica se supone que debes usar para ese problema en particular porque es la que acabas de cubrir en clase. Los proyectos de semestre completo son un poco mejores, pero aún son limitados en alcance y complejidad en comparación con el mundo real.

Los proyectos de la vida real son desordenados y evolucionan a lo largo de los años (nuestro software tiene más de diez años y ha estado cambiando continuamente durante ese tiempo) y son tocados por muchas personas diferentes con muchos niveles de habilidad diferentes. Todavía puede estar tocando una versión de base de datos de 10 años y no puede utilizar ninguna técnica SQL más nueva. Es posible que esté utilizando una herramienta que fue excelente hace 8 años, pero que no aprendió en la escuela porque ha sido reemplazada por otra cosa. Pero la compañía no quiere pagar meses de esfuerzo de desarrollo para reemplazarlo por completo.

Estás atrapado en un mundo donde el tiempo para desarrollarse está severamente limitado por lo que el cliente pagará y cuáles son, a veces (OK usualmente), los plazos de entrega.

Es posible que tenga que usar herramientas que el cliente solicitó específicamente. Es posible que tenga requisitos vagos o que tengan poco sentido. Puede estar tratando con un dominio comercial muy complejo del que no sabe nada y, por lo tanto, ni siquiera puede juzgar si los requisitos tienen sentido.

Los problemas del mundo real no son comparables de ninguna manera con los buenos problemas de limpieza que te dan en la escuela. Si no estás confundido y te sientes fuera de lugar durante la mayor parte del primer año, me preocuparía por ti.

HLGEM
fuente
0

Es peor que eso ... después de unos años en este trabajo, te sentirás bastante bien con lo que has aprendido. Pero luego cambiará de trabajo, y su nueva compañía (o tal vez incluso un nuevo grupo dentro de la misma compañía) hará las cosas de manera diferente, y sentirá que está de vuelta en el punto de partida. Habrá diferentes códigos, diferentes estándares de codificación, diferentes herramientas y diferentes procesos, y después de dos días de eso, se preguntará si realmente aprendió algo en su último trabajo. Esta vez superarás esa sensación de pez fuera del agua más rápido, pero aún te llevará más tiempo del que deseas.

Hay un período de adaptación cada vez que cambia de trabajo. Se acorta a medida que ganas experiencia, pero siempre está ahí.

Caleb
fuente