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.
fuente
University prepared me for computer science, but not really for software development.
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.
fuente
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.
fuente
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.
fuente
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.) :-)
fuente
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 ...
fuente
Citaría la publicación de Brian Hurt
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.
fuente
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.
fuente
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).
fuente
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.
fuente
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.
fuente
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.
fuente
Yo era mejor programador que mis maestros en la universidad.
Luego aprendí buenas prácticas de programación cuando comencé a trabajar.
fuente
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.
fuente
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.
fuente
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í.
fuente