¿La universidad te hace un mejor codificador?

Mira. Soy un estudiante universitario en el Instituto Indio de Tecnología de la Información, Allahabad.

Nada de lo que sé hoy en día: el desarrollo web, Python, C, C ++, Linux, usando API web, es parte de mi curso, ni de ninguna otra universidad competente. La mayor parte de lo que aprendí fue de Google, Youtube y otros tutoriales en línea.

¿Eso significa que venir a la universidad es un desperdicio y podría haber aprendido todo en línea, en casa?

Diablos no!

La universidad no te enseña codificación. Es una habilidad que es autodidacta para la mayoría de los programadores. Mi palabra:

No vayas a la universidad para aprender a codificar. La universidad te convierte en ingeniero, no solo en programador. Un graduado en ciencias de la computación o un ingeniero informático es mucho más que un programador. Un programador / desarrollador sabe cómo usar las herramientas disponibles y hacer algo útil, pero un ingeniero sabe quién hacer las herramientas, el mejor diseño para una herramienta, optimizaciones, análisis, las matemáticas detrás de todo, prueba de por qué una solución funcionaría y mucho. más.

Mi universidad me dio el ambiente en medio de algunas de las mentes más brillantes del país. Esos tipos son mucho más inteligentes que yo. Estar en ese entorno me hizo aprender a manejar las cosas, lo cual es diferente a solo saber usar herramientas.

Han pasado un año y medio, y hay más por recorrer, y apuesto a que mi forma de pensar ha cambiado por completo. La universidad te brinda una gran cantidad de recursos.

Si quiero probar algo, tengo mis laboratorios universitarios allí. Alguien necesita una computadora pesada para el procesamiento gigante, los servidores de la universidad están ahí para los estudiantes. Todo a tasas subsidiadas por el gobierno, no una carga.

Ahora pienso no solo en crear cosas, sino en crear cosas mejores, que funcionen en todas las condiciones. Mis cursos se dieron cuenta del costo de crear variables. Ahora evito crear variables inútilmente.

Por lo general, tenía más interés en el software que en el hardware, pero el curso me hizo (con fuerza) aprender algo de electrónica básica, arquitectura de computadoras, etc., que definitivamente me ayuda a entender las cosas de una mejor manera. Ni siquiera sabría ciertos términos, forma de pensar, organizar, lidiar con la presión a tal ritmo en casa. También aprendes a manejar la parte difícil de la vida.

En resumen, la mayoría de los buenos programadores / programadores / desarrolladores son autodidactas. Lo que aprenden es por su cuenta. Pero el aprendizaje organizado y los recursos disponibles en la universidad son difíciles de administrar en cualquier lugar.

Editar: Recientemente, volví a trabajar en un proyecto de software para compartir archivos donde había usado ciertos bucles para mantener sincronizados los hilos de trabajo. Después de tener los Sistemas Operativos como curso hace unos meses, los sincronicé usando semáforos, variables de condición y mutex. Ahora, el rendimiento ha mejorado mucho.

Nota: He usado primera persona en la mayoría de los lugares. Estas son mis experiencias personales y pueden no ser las mismas para otros. Para comprender la verdad, necesita escuchar argumentos en lugar de buscar la respuesta que le complacería.

Me hicieron esta pregunta bastante, tanto en mi función en Code.org, ayudando a llevar la educación en ciencias de la computación a más escuelas y estudiantes, como también como inversionista / asesor que ha ayudado a docenas de nuevas empresas con la contratación de ingenieros de software. Un artículo reciente del Wall Street Journal despertó mi interés en escribir una respuesta.

Debo decir por adelantado que este artículo es enteramente mi opinión, basado en mis experiencias personales. Las compañías tecnológicas más grandes deben tener muchos datos sobre el éxito de los ingenieros en su fuerza laboral, en correlación con los antecedentes educativos. También agregaría que en Code.org, mi objetivo es ayudar a todos los estudiantes a obtener una exposición fundamental a la informática (tal como aprendí sobre la fotosíntesis o la electricidad en la escuela secundaria) independientemente de si quieren convertirse en abogados, arquitectos o software ingenieros

Mi respuesta corta: ser un ingeniero de software fantástico requiere una combinación de los antecedentes educativos y la experiencia de piratería en el mundo real. Ninguno de los dos es un sustituto del otro.

Una educación universitaria en informática enseñará conceptos que la mayoría de los piratas informáticos nunca aprenden solos (a menos que tomen cursos universitarios en línea). Aquí hay unos ejemplos:

  1. Aprender la teoría detrás de la complejidad algorítmica, para poder demostrar la forma más rápida de implementar una solución a un problema.
  2. Diseñando estructuras de datos realmente complicadas, especialmente en un entorno multiprocesador, para poder crear la arquitectura de datos más óptima para construir algo tan complicado como una fuente de noticias de Facebook, que se personaliza de manera diferente para cada usuario individual, obteniendo datos de más de mil millones perfiles.
  3. Comprender las matemáticas detrás de los algoritmos de criptografía o compresión, y proponer formas completamente nuevas de codificar / decodificar o comprimir / descomprimir datos.

No estoy diciendo que estos temas sean completamente inaccesibles para alguien que no haya tenido una educación universitaria, sino que no son temas con los que naturalmente te encuentras y resuelves por tu cuenta cuando creas una aplicación de iOS en el trabajo. Requieren un estudio bastante profundo, a menudo con la ayuda de un maestro dedicado, durante un período de tiempo más largo.

Mientras tanto, piratear en casa o en el trabajo enseñará métodos prácticos de gran valor que la mayoría de los graduados universitarios no aprenden en ninguna clase (excepto en pasantías de verano). Aquí hay unos ejemplos:

  1. La sintaxis de algunos de los lenguajes de programación más populares utilizados en el lugar de trabajo, ya sea Ruby, ObjectiveC, JavaScript o incluso HTML / CSS, la mayoría de las universidades no enseñan estos lenguajes. La mayoría de las universidades enseñan en C ++, Java y Python. No quiero sugerir que Java o Python sean malos lenguajes, pero si requiere un conocimiento profundo y existente de un idioma diferente, generalmente solo está disponible por experiencia fuera del aula
  2. Cómo crear HTML que funcione en todos los diferentes navegadores, incluso en teléfonos móviles. No es exactamente un trabajo divertido para ningún ingeniero de software, pero es absolutamente crítico para la mayoría del desarrollo web. Como alguien que dirigió el equipo original de Internet Explorer en los años 90, soy muy consciente de los problemas causados ​​cuando Microsoft dejó de lanzar nuevas versiones de IE y se retrasó en su soporte para los estándares web (incluso los estándares web que desempeñó un papel en la invención !). De cualquier manera, trabajar con problemas de compatibilidad entre navegadores y de escritorio a dispositivos móviles requiere experiencia y conocimiento práctico de diferentes versiones de diferentes navegadores, y no hay sustituto para haberlo hecho antes.
  3. Cómo integrarse con cualquier plataforma principal existente, ya sea la plataforma iOS, la plataforma Android, la plataforma Facebook, la plataforma xBox, la plataforma Salesforce, la API de Twitter o cientos de plataformas más pequeñas, casi ninguna de estas se imparte en ninguna clase universitaria.

Al final del día, los mejores ingenieros tienen la educación y la experiencia práctica. Si una empresa requiere un conocimiento inmediato y profundo de una plataforma o lenguaje específico, no hay absolutamente ningún sustituto para la experiencia. Pero un experto en informática afilado y apasionado con educación universitaria puede desarrollar esa experiencia con suficiente tiempo.

Cualquier lenguaje de programación o plataforma se puede aprender en un mes y dominar en 6 meses en el trabajo. Pero una educación universitaria lleva años de estudio dedicado. Como resultado, si me veo obligado a elegir entre educación y experiencia, personalmente elijo la educación. Por supuesto, hay excepciones a todas las reglas, y hay muchos que abandonan la universidad y son genios contratados en un instante. Pero para estar seguro, recomiendo contratar a ambos. Y para el pirata informático que no ha ido a la universidad, recomendaría tomar un curso de algoritmos y estructuras de datos universitarios en línea.

Mi escritor favorito, James Altucher, escribió esto sobre su experiencia con CS en la universidad.

¿Crees que aprendiste algo cuando fuiste a la universidad? ¿O crees que podrías haber aprendido más si eliges no ir a la universidad?

Fui a la universidad entre 1986 y 1989. Lo estaba pagando con deudas, así que me gradué en 3 años. Tomé seis cursos por semestre para poder graduarme temprano. Y tomé cursos todos los veranos. También trabajé alrededor de 30-40 horas a la semana en trabajos para poder pagar mis gastos fuera de tuititon. Incluso entonces me gradué con una enorme deuda.

Me especialicé en informática y aprendí a programar. Pensé que era un muy buen programador cuando me gradué de la universidad. Me enorgullecía pensar que era el mejor ya que estaba seguro de que era mejor que cualquiera de mis compañeros de clase. Mientras estaba en la universidad, programé computadoras para jugar al ajedrez, escribí artículos que se publicaron en conferencias internacionales sobre inteligencia artificial, obtuve As en todas las clases prácticas relacionadas con la programación (aparte de Fortran, ¡uf!), Y luego, por cierto , Obtuve una beca completa para ir a la escuela de posgrado durante dos años. Luego, cuando finalmente tuve un trabajo en el “mundo real” en HBO, la cadena de televisión, mi programación fue tan mala (¡horrible!) Tuve que ir a los cursos ofrecidos en AT&T durante dos meses para poner mi programación en forma . E incluso entonces todavía no estaba listo para hacer una programación real en el mundo real. Probablemente tomó otros seis meses de esfuerzo diario aprender a programar realmente. Tenía pasión por las computadoras y estoy seguro de que si todo lo que hubiera hecho fueran esos cursos de AT&T desde el principio, habría estado bien.

A veces tienes que tirar a un niño al agua para enseñarle a nadar (o dejar que se ahogue). Esa es la forma de aprender. No ser alimentado por la fuerza de los libros de texto escritos hace veinte años y enseñado por profesores con poca experiencia en el mundo real. También es una pena que, a menos que tengas un doctorado, una universidad no te permita enseñar (en la mayoría de los casos). Los doctores son a menudo los más intelectuales pero tienen la menor experiencia en el mundo real. Y para esa gran experiencia tenemos que endeudarnos masivamente ahora “.

Aquí es donde obtuve esa cita de …

Vivir la vida es mejor que morir en la universidad – Altucher Confidential

No. Si aún no conoces algunos lenguajes de programación como segundo idioma, asistir a la universidad probablemente no te ayudará. Realmente no piensas en programar allí (y si eliges una educación bastante mala), piensas en los conceptos matemáticos abstractos de la informática en su mayor parte, como la programación funcional o las matemáticas en general. La educación superior es siempre de naturaleza teórica y esto realmente no lo ayudará con su proyecto de codificación arbitraria realista (si está en casa o en el trabajo). Y en los EE. UU., La educación (superior) es aún más teórica que en Alemania, allí fui educado en su mayor parte, esto tiene lados positivos y negativos.

Si realmente te gusta la programación y te gustan las matemáticas, deberías convertirte en programador. Si realmente te gusta la programación y adoras las matemáticas, entonces deberías dedicarte a la informática. En mi universidad heimat (Universidad de Saarland, muy reconocida por la informática internacionalmente a pesar de su pequeño tamaño), la facultad de informática siempre sufre la falta de una educación matemática profunda, no es que no esté disponible, pero necesitan muchos estudiantes por el dinero y solo pocos son capaces de profundizar en las matemáticas, la informática en su núcleo no carece de nada detrás de las matemáticas, solo se vio obligado a hacerlo, dado que muchas personas están interesadas y no hay miles de matemáticos brillantes en un punto.

Entonces la respuesta general es no. La programación no es realmente lo más importante cuando se trata de ciencias de la computación, la programación en realidad no es muy importante en ciencias de la computación. Uno de mis profesores dijo una vez “como físico siempre eres el mejor científico de la computación”, dado que la educación matemática es realmente buena en física y necesitas habilidades de programación para muchos experimentos (que en realidad están relacionados con el mundo real), aprendes programación y algunos conceptos abstractos desde el principio, y el informático facilitando sus conferencias para que menos personas se separen durante el viaje. Como dije, la programación funcional es más importante en ciencias de la computación, si es que algo es más importante que las matemáticas, y eso es en general exactamente lo contrario de los ideales que usted exige para los lenguajes imperativos que se usan comúnmente en “el mundo real” (no en su ingenuos unicornios académicos y arcoiris mundo de los sueños, disculpen el sarcasmo).

Si realmente ama la programación en su núcleo y desea codificar no solo para ver algunos conceptos abstractos que funcionan, sino que su código realmente hace cualquier cosa, sugeriría que se convierta en un desarrollador de software profesional, no en un científico de la computación, probablemente será mucho más feliz en tu vida posterior No necesita ser un informático para la gran mayoría de las tareas de programación, en su mayor parte será un idealista menos eficiente. Mi padre dice una línea muy alemana de actitud “Los especialistas logran más”, lo que significa que un operador de torno aprendiz es mejor para operar el torno que un Ph.D. físico. Me gustaría terminar aquí y dejar que la gente piense en mis palabras por un momento. Hasta entonces,

Espero poder ayudar un poco.

La respuesta corta es sí. Enumeraría algunas razones:

  • Es importante saber “¿por qué?”. La mayoría de los programadores de autoaprendizaje se centran en “¿cómo?”. Esto lleva a los programadores a usar las herramientas disponibles para ellos, sin pensar, razonando sobre la lógica detrás de esas herramientas. La semana pasada, un programador autodidacta estaba preguntando acerca de un problema de E / S almacenado en búfer que tenía en C. Le sugerí que el búfer se debe vaciar antes de usarlo de esa manera … Si tiene un problema de almacenamiento en búfer, es probable que lo haga. No sé por qué usamos tampones. O por qué debería y no debería usarlos. El problema está en por qué parte, la solución está en cómo (parte de almacenamiento intermedio …). Cuando uno mismo aprende, su enfoque está en las herramientas, las soluciones, pero no sabe por qué tiene el problema, necesita esa solución para comenzar …
  • También es importante conocer algunos antecedentes teóricos. Como ejemplo, la pieza de conocimiento faltante más común, cuya falta me molesta es la normalización de la base de datos. Casi todos los administradores y codificadores de bases de datos (autoaprendidos) que he conocido carecen de esta única información. Cuando se les dice que sienten que es algo muy simple de hacer y planificar (lo cual es), pero en sus plantillas de base de datos siempre hay algunas redundancias innecesarias / dañinas. Esto se debe a que generalmente piensan que realizar una sola selección en una sola tabla es el método de recuperación de datos más eficiente. Algunos no conocen las vistas, otros sí, pero piensan que pueden optimizar la recuperación mejor que la base de datos en sí (que es otra increíblemente ingenua y aterradora, de hecho, la falta de conocimiento. Asumo que visualizan el almacenamiento interno como un archivo de texto gigante …)
  • También hay muchos otros factores, un codificador debe saber, que no están en los libros de programación; Al igual que la administración de memoria, la programación de la CPU, las redes, la optimización del almacenamiento, la organización, algunos dispositivos electrónicos, etc. No sé cuántos programadores saben que la escritura es más lenta que la lectura, no sé si saben que el aumento de MTU aumenta el rendimiento en los servicios de datos pesados, pero no tiene ningún efecto en los servicios de alta interacción de datos pequeños, no sé si son conscientes del hecho de que la temperatura de la CPU cambia de acuerdo con la carga de instrucciones que pasa a través de la tubería … Esto es como conocer solo el papel del acelerador y el freno en un automóvil, pero no ser consciente del funcionamiento de un motor. Para un conductor, esto puede ser aceptable, pero si usted es mecánico, necesita saber las diferencias entre un motor de carburador y un motor de inyección …

Necesita conocer las relaciones reales de causa y efecto en el entorno en el que está trabajando. También necesita conocer la filosofía de diseño detrás de las herramientas que está utilizando, si está desarrollando algo, pero no solo un usuario que pasa … La universidad le brinda ese conocimiento.

TL; DR? Necesitas educación, no necesariamente educación formal. La gente a menudo confunde “educación” con “experiencia del mundo real”, mientras que la segunda es ciertamente un componente de la primera, son cosas diferentes. Asumir que toda educación es “educación formal” también es errónea. No necesita una universidad, un título o una “instrucción de pago” para ser mejor que cualquier otra persona que haya conocido, pero sin duda necesita una educación sólida, sin embargo, lo consigue.

Discuto la noción de que se requiere una educación formal y de pago. Puede obtener un conocimiento equivalente a través de la autoeducación, la aplicación práctica, la revisión por pares, etc. Los recursos están disponibles para cualquier persona con una dirección postal, y el material cuesta mucho menos que, por ejemplo, una universidad estatal / privada.

Probablemente pueda cubrir la mayor parte de las materias de comp-sci en su propio tiempo sin tener que inscribirse en una sola clase. Todo lo que necesita es orientación y acceso a la información.

No digo que no aprenderás más rápido si te dedicas en un ambiente educativo formal, donde la gente puede reunirse y discutir ideas todos los días, pero estoy diciendo que de ninguna manera es un “requisito” para ser el mejor de la raza, y es terriblemente equivocado sugerir que no puedes convertirte en un ingeniero de software, programador informático o hacker de primer nivel sin un título.

Me parece un ideal ofensivo que pagar dinero sea un requisito para ser intelectualmente superior. Todos deberían.

La verdad es que los graduados universitarios son algunos de los peores desarrolladores de la industria, y por una buena razón; Todavía carecen de una parte necesaria de su educación: en realidad lo hacen, también conocido como “aplicación práctica y experiencia en el mundo real”.

Esta es probablemente la razón por la cual cualquier graduado universitario respetuoso repite el mantra “oh, también necesitas experiencia en el mundo real”. La educación formal no es suficiente, y ese es un problema que podría corregirse si las personas no estuvieran tan ocupadas repitiendo lo obvio y aferrándose a sus placas y anillos decodificadores secretos como si fuera lo único que tienen.

Lo que necesita es AUTO DISCIPLINA y APRENDER una amplia gama de temas. Pagar los créditos universitarios no te da eso, te da una hoja de ruta (y una con múltiples deficiencias que deja a casi todos los graduados mal preparados). Para convertirte en el mejor programador que puedas esperar ser REQUIERES: en curso autoeducación, aplicación práctica continua, discusiones continuas con compañeros, habilidades de comprensión y capacidad intelectual para pensar en abstracto. Sacrifique cualquiera de estos y se volverá irrelevante en 5 años o menos. Los que no pueden, en última instancia, no lo hacen. Pueden invertir, consultar, enseñar o administrar, pero ciertamente no “practican” la ingeniería de software.

Creo que si los “profesionales” dejaran de decirle a la gente que “comprara créditos universitarios” y se concentraran en decirle a la gente “esto es lo que necesita saber”, no solo la mitad de la industria sería mejor de lo que es, la mitad que no molestarse con la ‘educación superior’ no sería tratado como ciudadanos de segunda clase por aquellos que lo hicieron.

Se plantea la pregunta de por qué no tenemos más organizaciones sin fines de lucro / sin fines de lucro enfocadas en obtener una “educación profesional”, ¿no es así?

Recuerde, el 99% de aquellos que solo ejercen su oficio al graduarse de la universidad son algunos de los. peor. programadores siempre. Deberías tratar la universidad como un recurso, nada más. Úselo si puede obtenerlo, pero no se desespere si no puede, solo espere invertir la misma cantidad de tiempo y energía en estudiar sin pagar la matrícula para hacerlo.

Por último, el dominio de un lenguaje, plataforma o tecnología lleva un promedio de 2-3 años. Nadie debería abandonar la idea errónea de que pueden lograr el “dominio” de un lenguaje, plataforma o tecnología en menos de un año. No puedes, mirarás hacia atrás en tu trabajo cada año después y dirás “wow, eso fue horrible … pero al menos aprendo y crezco”. Ese no es un aspecto de haber logrado el “dominio” en una cosa, sino todo lo contrario, eso es prueba de que todavía tienes que dominar una cosa … y en mi humilde opinión ESO es cuando sabrás que eres un “mejor programador”.

Mi reacción instintiva a esto es decir: “No, para nada”. Sin embargo, analicemos.

Primero y siempre, convertirse en un mejor programador implica un ciclo de 3 partes: aprendizaje, práctica y evaluación (y luego más aprendizaje, más práctica y más evaluación, etc.).

Aprendizaje

Aquellos de nosotros en la profesión de desarrollo de software ya sabemos que el aprendizaje nunca termina. ¿Estamos tomando cursos universitarios para continuar nuestra educación? Algunos, tal vez, pero la gran mayoría de nosotros estamos haciendo nuestra propia investigación y nos hacemos cargo de nuestro propio aprendizaje. Yo diría que si uno ya está suficientemente motivado para hacer esto, no necesita la universidad para aprender. Lo único que la universidad podría ayudar a esa persona a recomendar qué temas cubrir para establecer una buena base de conocimiento, pero eso se puede obtener mirando un catálogo de cursos o simplemente preguntando a alguien que ya lo ha hecho. Por otro lado, para aquellos que necesitan algo de insistencia y responsabilidad, los cursos universitarios definitivamente pueden proporcionar eso.

Práctica

A menudo me refiero a la práctica como “aprendizaje” en el campo del desarrollo de software porque muchas veces el aprendizaje se realiza a través del trabajo práctico. Definitivamente, existe un conocimiento previo que ayudará a guiar esta práctica (y, sinceramente, agregué la sección anterior como una ocurrencia tardía), pero aquí es donde se gastará la gran mayoría del esfuerzo de aprendizaje de un desarrollador de software joven. La práctica nos enseña cómo tener éxito, fracasar, perseverar y, en última instancia, desarrollar el carácter y la autoconfianza. Si bien la mayoría de las universidades son adecuadas para pasar el material de estudio correcto, diría que, al menos por mi experiencia, hay menos oportunidades para practicar. Mis compañeros de clase en la universidad que no tenían un interés y práctica genuinos terminaron trabajando para compañías de seguros o convirtiéndose en gerentes de proyectos.

Evaluación

El área donde la mayoría de las universidades realmente caen sobre sus caras está en evaluación. Aquí hay algunas consideraciones que tomé en cuenta cuando escribí programas en la universidad:

  1. ¿Se compila?
  2. ¿Toma en las entradas correctas, muestra las salidas correctas?
  3. ¿Seguí las reglas idiosincrásicas bajo las cuales el profesor nos está pidiendo que operemos (no usar goto , interrupciones / continuos dentro de bucles versus condicionales anidados, formato, espacios versus pestañas, etc., etc.)

Mientras pudiera responder afirmativamente a esas tres preguntas, podría garantizar una A. El problema es que ninguna de esas cosas realmente hace a nadie un mejor programador. Para aquellos que no pueden lograr 1 o 2, lo más probable es que estén cambiando los campos. La consideración n. ° 3 a menudo es mucho más dura de lo que es importante. Hoy, cuando escribo el código, tengo en cuenta lo siguiente (en orden):

  1. ¿Este diseño resuelve el problema que necesita resolver? ¿Hay una mejor manera?
  2. ¿Es comprensible mi código? ¿Todas las interfaces / contratos de datos tienen suficiente documentación detallada?
  3. ¿Es rápido? ¿Utiliza demasiada memoria? ¿Dónde necesito optimizar? ¿Cómo se va a usar este código? Frecuencia de invocación? Tamaño de las entradas? Etc.
  4. ¿Estoy siguiendo principios SOLID donde tiene sentido?
  5. ¿Cómo se ve mi cobertura de prueba?

Tuve una clase en la universidad que tomó en cuenta todo eso; El curso de algoritmos enseña técnicas básicas de optimización. Entonces, si bien hay muchas “evaluaciones” en la universidad, muchas de ellas no son relevantes para hacer que los estudiantes sean mejores programadores. Dicho esto, para aquellos que necesitan una palmadita en la espalda de vez en cuando y les gusta complacer a las personas, ese tipo de evaluaciones pueden aumentar la confianza.

Envolviendolo

En resumen, sugeriría cursos universitarios para aquellos que necesitan dirección, motivación, responsabilidad y mucho estímulo para tener éxito como programador. Otra razón para ir a la universidad sería pasar 4 años más de diversión antes de asumir la responsabilidad de algo (al mismo tiempo que eres pobre y creas deudas para pagar después), o para desarrollar “habilidades blandas” porque aún no entiendes Cómo comunicarse con otros seres humanos.

Solo ten cuidado; El desarrollo de software del mundo real apenas se parecerá a nada de lo que hiciste en la escuela, y requiere un conjunto de habilidades muy diferente.

Me atrevo a decir que la universidad me hizo * a mí * un mejor codificador, pero eso se debe principalmente a que en la década de 1980 fue mucho más difícil aprender la codificación por su cuenta, particularmente de manera sistemática.

Se podía hacer, y un buen número de personas lo hizo, pero con los escritorios relativamente caros y de poca potencia del día y el acceso telefónico a BBS (en su mayor parte todavía no hay Internet de consumo), era difícil de aprender sin aulas organizadas y, especialmente – laboratorios de computación bien surtidos y centros académicos de computación.

(No es mi centro de computación, pero UC Berkeley tenía laboratorios de computación para estudiantes con este tipo de terminales).

Si no eras fanático del tipo emprendedor, te ayudaría tener la estructura de aulas, laboratorios, profesores, tareas, proyectos y compañeros de los que puedas aprender.

Definitivamente necesitaba esta estructura, a pesar de que hice la gran mayoría de mi aprendizaje en el laboratorio de computación, no en el aula.

Hoy en día, con vastos recursos para la programación de aprendizaje disponibles en línea, hardware relativamente barato, muchas herramientas gratuitas, especialmente para el desarrollo de software, y comunidades de código abierto donde puedes trabajar en proyectos y colaborar fácilmente con la gente, la universidad puede no ser tan necesaria para aprender programar.

Dicho esto, es probable que todavía dependa de cuánto emprendedor seas. Organizar su propio “plan de estudios de ciencias de la computación”, y realmente aprenderlo, basado en videos en línea no es trivial, incluso hoy en día.

Además, si bien es más fácil encontrar trabajo como programador autodidacta de lo que históricamente ha sido, todavía no es tan fácil. Para tener éxito, aún necesitarás ser mucho más emprendedor de lo que serías si tuvieras un título de una buena universidad.

La pregunta indicada es “¿La universidad te hace un mejor programador?”. Esta es una pregunta difícil porque debería preguntar “¿La educación formal te hace un mejor programador?”, Y actualmente hay más rutas para una educación formal que la universidad. Las escuelas técnicas, las universidades en línea, las clases autodidactas y el simple hecho de recoger un libro de texto o diez y leerlo lo llevarán allí.

Creo que puedo decir, con pocas dudas en el cuarto cuarto, que una persona u organización que sepa cómo hacer algo mejorará sus habilidades de codificación, incluso si es una mejora al enseñarle lo que no debe hacer.

La verdadera pregunta es si la universidad te hace un buen programador. Como es un término muy subjetivo, seré más específico. Los requisitos mínimos para un buen programador son poder producir código que:

  1. carreras
  2. es comprensible para otros programadores
  3. puede corregirse y expandirse sin reescribirlo
  4. no requiere mucha mitigación del tiempo de ejecución (no te despierta a las 3 a.m.)
  5. tiene una interfaz de usuario intuitiva
  6. es eficiente con sus recursos

En mi experiencia, la universidad enseña 1 y 6. La última vez que lo revisé, nadie había impartido una clase sobre “negociación de estándares de codificación”, lo cual es esencial para 2. El n. ° 5 se imparte en clases especializadas que no formaban parte del plan de estudios normal. Lo comprobé.

Entonces, en general, la universidad mejorará tus habilidades de codificación, pero es insuficiente para convertirte en un programador decente.

Creo que la declaración dada es uno de los conceptos erróneos más grandes en el siglo XXI y casi todos creen que es cierto simplemente debido a la falta de conciencia.

Necesitas un título para saber cómo codificar y ser un programador.

Respuesta corta, definitivamente no.

Respuesta larga, bueno, mira esto es lo que pasa con la universidad. Idealmente, una universidad tiene que atender a todo tipo de estudiantes con diferentes niveles de inteligencia. Como dice la famosa declaración, cada niño es diferente. Si bien este podría ser el caso, una universidad te enseñará cómo ser un codificador, te dará una plataforma para ser un codificador. Pero cuando se trata de ser un mejor programador, lo siento amigo mío, estás solo en esta carrera.

La codificación es más un arte que una habilidad, debe descubrirlo por su cuenta en lugar de que alguien le enseñe cómo hacerlo. Una vez más, con la llegada de los cursos en línea (léase: MOOC), ¡aprender a codificar y ser mejores está disponible en Internet GRATIS! Bueno, sí, lo has leído bien y aunque la importancia de la codificación aumenta cada día, cualquiera puede ser un codificador y definitivamente no necesitas la universidad para ser un mejor codificador.

Espero que esto ayude y responda tu pregunta 🙂

Es importante definir mejor qué quiere decir con “programador” a medida que toma algunas de estas respuestas más votadas. Lo que quiero decir es que, si bien los fundamentos de la informática son siempre relevantes, el tipo de trabajo que estás haciendo puede variar mucho. Por ejemplo, ¿estás escribiendo juegos? ¿Sistemas de información? ¿AI? Scripting front-end? Los conjuntos de habilidades que uno elige por sí mismo, a través del estudio formal, a través del estudio casual, etc., se absorberán de manera diferente en función de cómo el individuo ejerza estas habilidades. Piense en los diferentes grados, como CS, CIS, CSE, etc. La forma en que miro esos tres grados es, respectivamente: Software, Software y proceso empresarial, y Software y hardware. Lo que aprenda de cada uno de estos programas tendrá mucho en común, pero el enfoque será completamente diferente.

Mi título es en CIS (Sistemas de Información) que en realidad solía ser un título en negocios, pero ahora es un título en informática. Entonces, en mi programa, aprendí más sobre diseño, planificación, gestión de proyectos, investigación y varios temas relacionados con sistemas completos como la seguridad y la infraestructura. Y, por supuesto, aprendimos a codificar. El proyecto principal fue concebir, diseñar, planificar y crear una pequeña aplicación de software utilizando todo lo que tendrá que enfrentar en una tienda de software típica. Creo que esto me ayudó como programador, porque desde el principio, estaba más preocupado por la visión de alto nivel y cómo cada pieza encajaba; todo lo demás era solo un detalle de implementación. A medida que maduraba, descubrí que pasaba más y más tiempo pensando en arquitectura, estándares y patrones de diseño, y aprendí habilidades de nivel inferior (trabajando en el nivel de bytes) a medida que me encontraba con la necesidad. Mis amigos de CS y CSE tienen mucha más inclinación técnica y tienen un cinturón de herramientas totalmente diferente. Tienden a encontrar soluciones de bajo nivel para muchas tareas simples, torcer bits y administrar la memoria. Estos tipos pueden hacer que cualquier cosa funcione, pero (no todos, pero la mayoría) carecen de sentido comercial y prefieren centrarse en lo que tienen delante. A medida que maduraban, pensaban cada vez más en cosas como el rendimiento y la portabilidad. Entonces, en mi experiencia, es solo una diferencia de enfoque.

Creo que el mayor beneficio de ir a la escuela es el aprendizaje estructurado. Los programas gradualmente lo acercan más y más al tema. Por ejemplo, tuve que tomar una clase de lógica básica de programación antes de tomar mi primera clase de programación. Aprendimos acerca de la lógica y las estructuras de datos en pseudocódigo en lugar de atascarse por los detalles del lenguaje. Entonces, cuando entramos en nuestros primeros cursos de programación, todo tenía más sentido y las lecciones se hicieron más fáciles. Luego, después de eso, tomamos cursos de diseño para evitar que formemos hábitos de simplemente abofetear el código. Aprendimos a pensar en términos de objetos y servicios, luego aplicarles código. Luego, el siguiente curso fue complementar el conocimiento de codificación con el conocimiento web. Luego fue el diseño de la base de datos, luego la programación de la base de datos. Luego, después de eso, estaba aprendiendo cómo modificar un sistema existente. Luego, después de eso, estaba creando un nuevo sistema. Así que fue muy gradual y reconstruyó una imagen más grande, poco a poco. ¡No creo que hubiera conseguido este tipo de progresión por mi cuenta!

Así que no ir a la escuela … para mí eso es solo un tiro de dados. El tipo de desarrollador en el que se convierta realmente depende de lo que tenga en mente. ¿Qué te parece importante? ¿Cómo lo aprendiste? ¿Quién te está asesorando? ¿A quien admiras? ¿Cómo absorbes el material? En mi opinión, ir a la escuela por eso probablemente ampliará tu punto de vista en el campo y, como efecto secundario, te dará muchos más hilos para avanzar a medida que avanzas en tu carrera. En otras palabras, estarás ligeramente expuesto (o al menos introducido) a muchas facetas importantes del campo que no se encontrarán fuera de la puerta, de modo que cuando realmente encuentres el tema 5 años después, sabrás exactamente qué preguntas hacer a pesar de que no tienes experiencia con eso. Quiero decir, todos eventualmente llegarán a ese punto a menos que elijan ser uno de esos programadores que nunca miran fuera de su cubículo (hay MUCHOS de estos) para aprender algo nuevo, pero personalmente siento que la escuela me dio un buen ojo para reconocer las malas soluciones antes de que sucedan, pero eso puede ser algo personal.

Creo que lo más importante de aprender solo o no ir a la escuela es que … bueno … hay MUCHOS desarrolladores TERRIBLES que piensan que son excelentes en lo que hacen. La mayoría de ellos no tienen educación formal … algunos sí, pero la mayoría no. La mayoría de los tipos autodidactas con los que he trabajado mantuvieron la mentalidad “autodidacta”. Es decir, rara vez buscan consejo en la comunidad, no adoptan estándares, reinventan constantemente la rueda y no juegan bien con los demás. Obviamente, esto no es algo exclusivo de los desarrolladores autodidactas, solo digo que es mucho más probable que los desarrolladores autodidactas se conviertan en esa persona, en mi experiencia.

No ir a la escuela no significa que serás malo en lo que haces, pero tu exposición se verá afectada, al menos al principio.

Al final, su conjunto de habilidades será un reflejo directo de SUS pasiones dentro del campo y cuánto tiempo dedicará a dominar la habilidad en lugar de simplemente resolver problemas y reinventar constantemente la rueda.

Un gran problema con los programadores actuales es que carecen de una comprensión fundamental en la estructura del código, el diseño y la escalabilidad.

Primero, necesitamos aclarar algunas cosas: no es necesario que vayas a la universidad para convertirte en un buen programador , de hecho, si pasas todo ese tiempo, no fuiste a la universidad y pasaste ese tiempo para aprender un programa más diverso. plan de estudios en tecnología tendrá más éxito que la mayoría de los estudiantes universitarios. Pero, en general, las personas son flojas y no se toman el tiempo para aprender los fundamentos porque piensan que es una pérdida de tiempo.

Las personas que van a la universidad generalmente son mejores para aprender nuevos lenguajes de programación y pueden comprender el núcleo de lo que está sucediendo, esto se debe a que te enseñan sobre la informática de nivel inferior, las estructuras de datos, los tipos, la funcionalidad, el diseño del código, la eficiencia del código, etc.

La decisión de ir a la universidad y no ir a la universidad para programar esencialmente se reducirá a dos tipos principales de programadores:

  1. Nivel bajo (brogrammers). Estas son personas que generalmente han omitido el plan de estudios principal y no se han tomado el tiempo para aprender los fundamentos de la informática, están siguiendo la mentalidad de rebaño de programación. Algunas de estas personas pueden lograr la programación de alto nivel a través del currículo autodidacta.
  2. Nivel alto Estas son personas que han recibido una educación universitaria adecuada en informática y computación en general. Han utilizado este conocimiento y lo han utilizado para implementar funcionalidades de nivel superior en aplicaciones, tales como; IA, aprendizaje automático, procesamiento de imágenes visuales, reconocimiento de audio, redes neuronales / aprendizaje profundo, estructura de código, gestión de grandes proyectos, etc.

Conclusión Tenga en cuenta que estas son generalizaciones y no digo que tenga que ir a la universidad para lograr una programación de alto nivel o todas las personas que van a la universidad son programadores de alto nivel. La universidad es solo uno de los muchos medios, si realmente quieres convertirte en un gran programador, puedes hacerlo, y la forma en que quieres lograr eso depende de lo que sea mejor para ti.

A menos que tenga pasión por la codificación, ningún título puede ayudarlo. Si quieres convertirte en un codificador superior, sé apasionado.

Hay muchos sitios que pueden mejorar sus habilidades de codificación. Practica en ellos.
Sitios de ejemplo

  • Juez Esfera Online (SPOJ)
  • HackerRank
  • codificador superior
  • Acerca de – Proyecto Euler, etc.

Simplemente sigue esto

while (verdadero) {
Práctica();
}

Solo practica más y más problemas. Sea fuerte en algoritmos y estructuras de datos, y conceptos básicos de CS.

Aquí hay algunas cosas que debes hacer

  • Videos de la conferencia | Introducción a los algoritmos | Ingeniería Eléctrica e Informática | MIT OpenCourseWare
  • Introducción a los algoritmos, 3a edición: 9780262033848: Computer Science Books @ Amazon.com

Como muchos otros han dicho, no lo hace.

Un título de CS puede enseñarle los conceptos básicos de la informática, sobre cómo el sistema procesa el código que escribe al nivel de CPU / Memoria. También puede enseñarle conceptos en un nivel abstracto como OOPS, estructuras de datos, algoritmos. Y tal vez un lenguaje de programación o dos. Los cursos universitarios típicos tienen C / C ++, Java, J2EE para web y quizás Python en su plan de estudios. Todo esto será muy básico, solo aprenderá la sintaxis de un idioma y tendrá que pasar al siguiente.

Para convertirse realmente en un “codificador”, solo necesita codificar. Elija cualquier idioma o marco y elija un proyecto, podría ser su propia idea o también podría codificar algo que alguien ya ha hecho.

Te conviertes en un “top codificador” solo por experiencia. Hay algunas cosas que la universidad no puede enseñarnos. Por ejemplo, los problemas de trabajar con una base de código grande es algo que nunca enfrentarás en la universidad. Sus proyectos no serían algo “grande” y normalmente no trabajará con más de 4 personas en el mismo proyecto. La complejidad agregada por la escala es uno de los muchos problemas que aprenderá solo al codificar y contribuir a muchos proyectos comunitarios.

Codifique tantas horas como pueda en un día, pero no solo escriba el código, debe pensar en el código. Hay muchos libros y publicaciones de blog sobre las mejores prácticas en codificación, sígalas. También puede consultar proyectos de código abierto para ver ejemplos de mejores prácticas en uso.

¡Buena suerte!
Gracias por el A2A.

PD: Tengo un título universitario en electrónica, he estado codificando durante los últimos 3-4 años. He conocido a muchas personas a las que admiro por sus habilidades de codificación, pero ninguna se ha calificado a sí misma como una de las más codificadoras. Comparten este simple hecho de que, independientemente de cuántos idiomas conozcan, cuántos proyectos hayan realizado, siempre les faltará algo para el próximo proyecto en el que trabajen. ¡Así que no persigas convertirte en un “codificador superior”, código porque te encanta!

¡Absolutamente no!

Aquí hay una pequeña información de fondo sobre mí: he asistido a ingeniería de TI en una de las universidades de nivel superior en Pune, India. Soy un emprendedor ardiente y estoy ejecutando mi propia startup desde 2009. Codifico principalmente en PHP, HTML5, CSS3, Javascript y muchas otras tecnologías web. He trabajado en un montón de marcos PHP, incluidos zend, codeigniter, laravel, yii, wordpress, drupal, cakephp, etc.

Ahora para responder a su pregunta: junto con un montón de cosas innecesarias, los lenguajes de programación que la mayoría de las universidades tienen en su plan de estudios son Java, .Net, C, C ++, etc. La educación universitaria me brindó SOLO conocimientos básicos de introducción sobre estos lenguajes. No me enseñó nada acerca de la codificación profesional, los estándares de la industria, cómo codificar y realmente CONSTRUIR ALGO o cómo codificar en equipo para construir algo. Tampoco me enseñó nada sobre MVC . Como estaba haciendo mucho trabajo independiente mientras asistía a la universidad, estaba familiarizado con ciertos aspectos de la codificación profesional. Así que en mi opinión fue una completa pérdida de tiempo.

Hoy en día, uno puede aprender mucho sobre lenguajes de programación y convertirse en un buen programador al referirse a las lecciones de codecademy en la casa del árbol. Y confía en mí, son mucho mejores de lo que todavía están enseñando en las universidades.

Editar: Por cierto, todavía estoy esperando una oportunidad en la que pueda usar dy / dx o cualquiera de las fórmulas de integración que aprendí en ingeniería matemática 3.

Una buena pregunta, seguramente debería decir eso.

Recuerda cómo dijo Peter Gregory en Silicon Valley:

Trabaja en BurgerKing pero no vayas a la universidad

En el país donde vivo, que se llama India, el nombre de su universidad también es una especie de estatus social para los estudiantes y sus padres. Competimos para obtener nuestro rango en uno de los mejores exámenes del país, el JEE (examen de entrada conjunta).

Y luego algunos entran en el IIT, algunos en el NIT y el resto van a lo que les parezca adecuado. En realidad, la universidad es la que decide y no el estudiante. De todos modos, me estaba desviando del tema, por lo que la pregunta era si me convertía en un buen programador. Bueno, yo te preguntaría, ¿qué quieres decir con codificación?

En un lenguaje simple, explicaría que es el acto de resolver sus problemas diarios en forma de programas. Ahora, hablando de la ayuda que se brinda en la universidad, todo depende del estudiante para extraer todo el potencial de la universidad.

Por ejemplo, déjame hablar sobre mi universidad, VIT Chennai (la gente dice que no es bueno, pero como estudiante de CSE, déjame decirte una vez):

  • La mayoría de las salas en todo el bloque académico son laboratorios de computación. Todos ejecutan Linux con alrededor de 5 laboratorios en un piso y 60 computadoras en un laboratorio. Haz las matemáticas. ( +1 a la universidad )
  • A veces sucede que los maestros no tienen mucho conocimiento pero usted tiene google en todo el campus. Todos los laboratorios tienen internet y están abiertos durante todo el día ( +1 al ambiente de la universidad ).
  • Todos los cursos de programación son de laboratorio solo con 6 sesiones por semana. Imagina que nunca tienes que dar ningún examen de programación escrito ( +1 a la universidad ).
  • Aprendí desarrollo web en mi segundo semestre, hice algo de CP pero solo para saber que Internet y programación web estaban allí en mi tercer semestre ( +1 al plan de estudios ).

Lo único que lamento es que, como en las mejores universidades, tienes estudiantes a tu alrededor que hacen que el entorno sea un poco más competitivo. No estoy hablando en términos de GPA. Siempre hay toppers que tienen un GPA más alto que yo. Pero en términos de codificación, diría que esto ayuda mucho. ( -1 para esto ).

Aunque siempre puedes buscar personas de otras universidades y ver su progreso y competir.

Puntos generales: 3/4;

Así que, en general, la universidad tiene un gran impacto para convertirte en un buen programador. Puedes aprender cosas por ti mismo, pero ser bueno en algo requiere un entorno.

PD: Estos son mis pensamientos, ‘universidad para chalta hi rahega’ (la universidad siempre continuará). Mejoremos siempre y sigamos mejorando.

¿Honestamente? No.

Pero la universidad no es para enseñarte cómo codificar, realmente. Te armará con el aparato y las técnicas matemáticas que necesitas (supongo que eres un experto en CS), para usar en tu codificación. El conocimiento de los sistemas y la arquitectura, de los patrones de software, del álgebra lineal y la probabilidad están cubiertos en cualquier curso de CS medio decente. El estudiante diligente los absorberá como una esponja.

La experiencia amarga me ha enseñado que ignorar las herramientas que se te ofrecen en la universidad y concentrarte exclusivamente en la codificación no te dará la recompensa que mereces. Un verdadero programador es aquel que puede resolver problemas en múltiples dominios, de manera contundente y convincente. Los cursos universitarios, si se toman con diligencia e inteligencia, sin duda lo ayudarán a acercarse a ese ideal.

Creo que la mejor manera de hacerlo es esta: refina su codificación a través de proyectos personales. Aprende teoría y matemáticas en la universidad y postúlate en proyectos personales. Ha funcionado para la mayoría de los codificadores increíbles que conozco.

¿Mejor que que? ¿Mejor en qué?

La codificación es como escribir: hay que escribir sobre algo. Puedes conocer la gramática y tener un buen vocabulario, incluso podrías unir algunas oraciones, pero eso no te da una base para escribir una novela, y mucho menos un tratado de no ficción.

La universidad, suponiendo un buen programa (no garantizado), le dará muchos antecedentes en ingeniería, es decir, cómo analizar y abordar problemas. Cómo pensar en algoritmos. Habilidades matemáticas. Un buen programa le dará algunos antecedentes de hardware y algunos sistemas de pensamiento: una cosa es escribir un módulo de código restringido, y otra muy distinta es crear una imagen completa de un sistema distribuido complejo. Un buen programa lo familiarizará con diferentes paradigmas de programación y le dará algunos antecedentes para decidir qué enfoque adoptar para el diseño del sistema (por ejemplo, flujo de datos, orientado a objetos, masivamente concurrente, funcional, …).

En mis días universitarios, podría haber escrito un par de miles de líneas de código, algunas de ensamblador, algunas de Fortran, algunas de LISP, en su mayoría divididas entre conjuntos de problemas y ejercicios de laboratorio. Pero la formación académica me preparó para una gran cantidad de trabajos de nivel de sistema bastante interesantes (sistemas de guerra electrónica, comando y control, gestión de red para la Red de Datos de Defensa, otros), así como para escribir varios códigos, en varios idiomas que elegí subir según sea necesario (desde microcódigo para un procesador integrado, hasta control de procesos, a algunos sitios de comercio electrónico desde cero, antes de que uno simplemente pudiera descargar módulos de varios tipos).

Ahora, ¿soy un “buen programador”? Probablemente no. Nunca ha sido lo que he hecho día tras día, y cada proyecto generalmente ha involucrado una nueva cadena de idioma y herramientas. Soy lento, generalmente tengo que referirme mucho a la documentación, y mi estilo de codificación es probablemente feo (ha pasado un tiempo desde que volví y examiné cualquier cosa).

Pero soy un buen ingeniero de software y (con toda humildad) un muy buen ingeniero de sistemas. También soy bastante bueno contratando y administrando desarrolladores para diseñar piezas de un sistema (tanto hardware como software).

No necesariamente. La universidad ofrece una gran cantidad de recursos para ayudar a las habilidades de desarrollo necesarias para ser buenos en la codificación. Depende del estudiante. He escuchado muchas historias de estudiantes que salen de la universidad que todavía son terribles.

Sin embargo, para el estudiante estudioso que aprovecha estos recursos, de hecho puede hacerlos buenos, si no un gran programador. Yo diría que es seguro asumir que la mayoría de los estudiantes universitarios están mejor preparados para tener éxito en la codificación que decir que alguien solo lo aprende por su cuenta.

No quiere decir que no pueda tener éxito sin él, solo creo que puede modificar el potencial de una persona, que se basa en gran parte en su propio impulso y pasión por la codificación. Alguien que tiene una profunda pasión podría haber sido tan bueno, si no mejor, si fue o no fue a la universidad. Bill Gates y Mark Zuckerburg son conocidos por abandonar la universidad solo para continuar debido a su propio impulso. Por otro lado, tienes a Linus Torvalds, quien escribió el primer prototipo de Linux mientras estaba en la universidad, y el graduado del MIT Richiard Stallman, quien escribió Emacs. Si fueron o no a la universidad, tuvieron éxito porque tenían el impulso.

Para la persona promedio, si se toma en serio ser bueno, entonces la universidad definitivamente los prepara.

Realmente depende del programa en el que se encuentre. Un programa de nivel inferior no será tan estricto en cuanto a quién le otorgue un diploma, e incluso el cumplimiento de sus cursos no necesariamente lo convertirá en un mejor programador. Además, los programas CS van a enseñar cosas muy diferentes de un programa SWE. La mayoría de los trabajos de desarrollador obtienen un valor más inmediato de las habilidades de SWE, mientras que solo una minoría de áreas de desarrollo altamente especializadas dependen directamente de CS (programación AI / ML, desarrollo de compiladores, desarrollo de motores de bases de datos, computación científica, etc.).

Con los programadores autodidactas, muchos adoptan un enfoque de aprendizaje aleatorio: aprenden lo que les interesa en este momento. Esto es más divertido, pero a menudo conduce a: a.) Grandes brechas en el conocimiento, y b.) Una ruta de aprendizaje menos que eficiente.

Ahora, con el advenimiento de MIT OCW, EdX, Udacity, Coursera, etc., es bastante fácil para aquellos con suficiente motivación y autodisciplina trabajar por sí mismos a través de un plan de estudios riguroso y profesionalmente diseñado.

Pero la mayoría de los programadores autodidactas no seguirán ese camino. Ingresan a la fuerza laboral temprano y hacen esencialmente lo que el 99% de todos los programadores (con educación universitaria o no) hacen en ese momento: se centran en las habilidades y el conocimiento inmediatamente aplicables a sus proyectos actuales, que, en la mayoría de los casos, son: nuevos idiomas , nuevas bibliotecas, nuevos marcos, nuevas API, nuevas herramientas de desarrollo, etc.

Todavía puede tener una carrera muy exitosa de esta manera, pero su horizonte será más limitado. Y, si decide que está interesado en más proyectos basados ​​en CS y trata de estudiar esos temas en ese momento, puede terminar deseando haber tomado unos años adicionales de matemáticas o ciencias después de la escuela secundaria.

Ese es uno de los beneficios de obtener una educación formal. Mientras toma álgebra lineal o física o microbio, puede pensar que es inútil para usted como programador. Pero un día puede encontrar la oportunidad de trabajar en un proyecto interdisciplinario o abordar temas avanzados de CS. En ese momento, si tiene los fundamentos académicos necesarios, podrá leer y comprender la literatura disponible, comunicarse mejor con sus homólogos interdisciplinarios y avanzar en el proyecto muy rápidamente. OTOH, si dejaste de tomar matemáticas y ciencias después de la escuela secundaria, es probable que no puedas recoger los fundamentos necesarios en un lapso de tiempo práctico, y esa oportunidad simplemente se te escapará de las manos.

More Interesting

¿Con qué frecuencia te sorprende una optimización de rendimiento?

¿Cómo debo hacer mi investigación en la predicción de defectos de software utilizando el aprendizaje automático?

¿Por qué ni siquiera estoy recibiendo una entrevista para trabajos de ingeniería de software? Llevo 4 años trabajando como ingeniero de software en una empresa francesa en El Cairo. Quiero mudarme a Europa o EE. UU., Así que comencé a postularme a muchos trabajos en LinkedIn.

¿Por qué a algunas personas no les gusta considerar la ingeniería de software una disciplina de ingeniería?

¿Cuáles son las cosas básicas necesarias para saber antes de comenzar el curso de ingeniería informática?

Cómo actualizar a Windows 8.1 si CLG Wi-Fi lo había bloqueado

¿Qué agrega Docker a simplemente LXC?

¿Cómo debo acercarme a mi jefe para cambiar a tiempo parcial? ¿Qué debo esperar?

¿Cómo es trabajar en Silicon Valley como ingeniero de software?

Recientemente me interesé por la programación y no estoy en la universidad. ¿Donde debería empezar?

¿Cómo se ponen al día los nuevos desarrolladores en los proyectos existentes en Google?

¿Es ME CS de BITS Pilani una opción digna para un NITian con 2 años de experiencia en desarrollo de software?

¿Cuál es una buena disciplina para combinar con TI (desarrollo de software) para mejorar la empleabilidad o convertirse en un especialista solicitado?

Cómo ser considerado un genio del código

¿Cuántos lenguajes de programación son suficientes para saber para un ingeniero y cuáles?