it-swarm-es.com

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

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 donde soy, con mucho, el desarrollador con menos experiencia, 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.

27
dustyprogrammer

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

50
Adam Lear

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

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

23
Dan Dyer

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á, debes aplicar activamente nuevos conocimientos.

10
ysolik

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

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

7
JohnFx

Muchos buenos programadores salen de los títulos universitarios de ciencias de la computación, 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 escuché conferencias sobre eso, pero unos años más tarde deseé le presté más atención al terminar aprendiendo un montón de cosas que había archivado como inútiles. De hecho, creo que uno podría usar 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 aprendiendo 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 ...

4
glenatron

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 facilita mucho el aprendizaje real del idioma. (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.) :-)

4
Mason Wheeler

Citaría a Brian Hurt post

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

quien también se refiere a Joel Spolsky's Programa de pregrado y brillante artículo titulado Quién mató al ingeniero de software

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 he aprendido yo mismo.

2
mloskot

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.

1
Karl Bielefeldt

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 obtuve nada de mi título, pero fue mucho menos útil que pasar 4 años en el trabajo.

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

1
RationalGeek

No, en absoluto, estaba fingiendo ser un 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.

1
martjno

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 haciendo pasantías de verano de calidad con IBM ("equipos de velocidad ExtremeBlue" y el programa ExtremeBlue apropiado). Una buena experiencia preprofesional le permitirá omitir un poco de las cosas de nivel de entrada después de graduarse.

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

1
user2348

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 dan 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 promedio de calificaciones.

1
Wizard79

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

Usted está 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), fechas límite artificiales.

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 de ninguna manera son comparables a los 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.

0
HLGEM

Yo era mejor programador que mis maestros en la universidad.

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

0
mouviciel

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 vuelve más corto a medida que ganas experiencia, pero siempre está ahí.

0
Caleb

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.

0
Jeremy