¿Cuál es la diferencia entre un estudiante de ciencias de la computación y aquellos que aprenden codificación en línea?

Puede aprender todo en línea, pero los empleadores operan con el “reconocimiento de patrones”. Un título en informática te ayudará a superar sus defensas y conseguir un trabajo más fácilmente.


De acuerdo con la Encuesta de Desarrolladores 2015 de Stack Overflow de 26,000 desarrolladores, la mayoría de los desarrolladores no tienen títulos en ciencias de la computación.

Dicho esto, la evidencia anecdótica sugiere que en los niveles más altos de la profesión (Google, por ejemplo), la mayoría de los desarrolladores tienen títulos en informática.

Si piensas en esto por un momento, la razón de esto es obvia. Cuanto más tiempo pases codificando, mejor lo harás.


Y si comenzaste a codificar cuando eras joven, probablemente elegiste la informática como tu especialidad.

Entonces, independientemente de la calidad de la educación recibida, el título en ciencias de la computación se correlaciona con una temprana pasión por las computadoras y, por lo tanto, años adicionales de práctica.

No hay nada mágico en un título en informática. Usted puede
aprenda la teoría necesaria de algunos de los mejores maestros del mundo de forma gratuita en línea. Puede obtener mucha práctica de codificación gratis en línea.

Lo que no puede hacer de forma gratuita en línea es obtener el pedigrí asociado con Stanford o MIT.


El pedigrí es un atajo mental. Pedigree ayuda a los empleadores a comercializarlo.

La gente de Recursos Humanos dirá cosas como “Él es un graduado de Berkeley CS / EE” o “Ella es una estudiante de Stanford CS”. De esta manera, la gente de recursos humanos no técnica puede asumir que tendrá un conocimiento básico de programación, y será lo suficientemente enseñable para aprender sus prácticas y tecnologías específicas de la compañía, sin tener que molestar a un desarrollador para investigar más a fondo.

Hasta que los empleadores adopten prácticas de contratación más objetivas, tal vez el equivalente de codificación de las audiciones ciegas de música, los títulos en informática seguirán siendo importantes. Entonces, si aún no ha elegido una especialización, debería estudiar Ciencias de la Computación o Ingeniería de Software.

Si te especializaste en otra cosa, o te saltaste la universidad por completo, probablemente no valga la pena volver ahora. Solo aprende todo gratis en línea.

Si aprende a codificar en línea, solo tenga en cuenta el sesgo de los departamentos de recursos humanos hacia las personas con títulos de CS, y sepa que tendrá que trabajar un poco más para llegar a los empleadores.

Me hice esta pregunta hace mucho tiempo, antes de inscribirme en mi curso actual de informática. Entonces, ¿qué hace la diferencia entre alguien que aprendió programación en una universidad y alguien que lo hizo solo?

En ambos casos, puede aprender muchos idiomas diferentes a lo largo del camino, dominar la escritura de código en general, conocer diferentes algoritmos y cuáles son mejores para qué función, comprender cómo funciona el sistema operativo, etc. Todos estos conocimientos se pueden encontrar fácilmente en línea.

Encontré mi respuesta alrededor de mi segundo año en mi curso. Para mí, lo que diferencia a un estudiante de CS y alguien que aprendió a codificar por su cuenta es el aspecto de ingeniería de software.

Muchas grandes compañías de software como Google buscan ingenieros de software (busque sus puestos de trabajo). Eso es porque hay una gran diferencia entre un programador y un ingeniero de software.

La ingeniería de software le enseña muchas cosas además de la codificación. Aprende buenos principios de ingeniería de software, aprende a seguir convenciones de código, aprende a escribir código legible y escalable, para que otros que trabajan junto a usted tengan pocos problemas para comprender y desarrollar su código. En un curso de CS, aprende a codificar con otras personas en un solo proyecto, seguir una metodología de desarrollo de software para estructurar, planificar y controlar el desarrollo de un sistema de información. Este tipo de habilidades son difíciles de obtener sin inscribirse en un curso de CS.

Un estudiante principal de CS normalmente haría algunos cursos sobre Algoritmos, Estructuras de datos, Sistema operativo, Compiladores y puede tener algo de experiencia en la programación de bajo nivel.
Entonces él tendría una mejor comprensión de cómo suceden las cosas y cómo se implementan las cosas. Por ejemplo, un estudiante principal de CS puede derivar la complejidad de tiempo y espacio del algoritmo de clasificación matemáticamente en lugar de simplemente leer sobre él. Él sabrá más cosas de bajo nivel que están más cerca del sistema operativo. Así, por ejemplo, en lugar de hacer algunas cosas a ciegas, puede comprender y apreciar la necesidad de usar ciertos comandos de preprocesador.
Como estará al tanto de la implementación del compilador, estará en una mejor posición para escribir código más eficiente.

Por otro lado, un chico que ha aprendido a programar en línea puede tener más experiencia en codificación práctica, como depuración, otras cosas como el conocimiento de bibliotecas, problemas de compatibilidad entre navegadores, control de fuente, etc.

“La informática no tiene más que ver con las computadoras que la astronomía con los telescopios”. Siempre he estado citando a Dijkstra cuando me hacen preguntas como esta.

Una vez había pasado varios días en sitios web para aprender a codificar, como http://www.codecademy.com/ . Están bien hechos y diseñados para principiantes. Desafortunadamente, he olvidado todo lo que aprendí. Sin embargo, no estoy preocupado en absoluto. En primer lugar, debería ver que la codificación es más bien una habilidad básica para un estudiante de CS, confiando en que puede implementar y probar sus diseños. Como cualquier segundo idioma (hablante), le brinda una forma de expresar sus ideas. Al final del día, lo que dices es más importante que cómo lo dices. La codificación necesita práctica, práctica y práctica. La mejor práctica es aplicarlos diariamente.

La mayor diferencia es que una licenciatura en ciencias de la computación, con un título, probablemente tendrá más facilidad para abrirles las puertas. Muchas grandes empresas tienen prácticas de contratación en las que esperan que el candidato tenga algún grado. Francamente, creo que esto es un poco tonto en esta época porque a la mayoría ni siquiera le importa en qué grado está, solo que tienes uno para pasar algún control arbitrario de recursos humanos.

En cualquier caso, un programador de CS y un programador autodidacta podrían tener el mismo nivel de habilidad. De hecho, muchos programadores autodidactas tienen más éxito porque tienen que trabajar más duro. El hecho de que sean autodidactas demuestra que están dispuestos a hacerse responsables y a esforzarse por alcanzar una meta.

Dicho esto, alguien que es un INGENIERO de software real y alguien que aprende a codificar puede ser muy diferente. Obtener ese título de CS y aprender conceptos de ingeniería y resolución de problemas es algo que puede ser bastante difícil de aprender por sí solo. Aquí es donde ese grado tiene algún uso práctico. Un campo de entrenamiento de codificación, como estoy seguro de que sabe, es un curso intensivo que enseña conceptos de programación y cómo codificar. Alguien que asiste a uno de estos programas podría salir listo para trabajar para un puesto de nivel de entrada, pero en realidad no es un ingeniero. La ruta de ingeniería le enseñará metodologías y prácticas que llevarán lo que está haciendo a una plataforma más grande, mientras que el campo de entrenamiento de codificación le enseña a … bueno … a codificar. Esta es la razón por la cual los salarios de la ingeniería de software generalmente tienden un poco más, actualmente en $ 134k / año .

Salario de Ingeniería de Software en Estados Unidos

La ruta CS definitivamente puede abrir puertas y enseñarle una gama más amplia de ideas de la industria, pero al final se puede lograr el éxito en cualquier camino.

La información salarial anterior es de YouWorth. YouWorth es una aplicación móvil gratuita para iOS y Android que rastrea los datos salariales del programador. No solo soy un campeón del producto, sino que lo uso yo mismo. La aplicación permite a cualquier persona importar habilidades de LinkedIn y rastrear su valor en el mercado laboral a lo largo del tiempo. También me notifican si hay un cambio en las habilidades que se están viendo.

Si puede demostrar habilidad para pensar y codificar en todo el campo y tener una red profesional sólida, no necesita un título.

El título le brinda la oportunidad (algunos dirían que lo obliga) a abordar una gama más amplia de temas y conceptos que una caminata aleatoria por Internet y valida su aprendizaje a un nivel mínimo de trabajo. Algunos empleadores también quieren saber que tienes el seguimiento para terminar un título de 4 años, mientras que otros quieren estar seguros de que puedes tomar “órdenes” y hacer lo que se te indica. También existe la investigación de haber aprobado el inglés y los otros cursos de “educación general” que agrega amplitud de conocimiento y pensamiento a un buen graduado. (La última vez que lo verifiqué, el único “CS puro” está sucediendo en entornos académicos o de investigación; en todos los demás lugares, el CS se aplica a algún campo además de la informática por el bien de la informática y el conocimiento específico del dominio es una gran ventaja).

Encuentro el valor de los cursos principales en un título de CS en tener un “arco de carácter” premeditado en la estructura de los requisitos previos / requisitos de grado y los recursos disponibles para empujar / atraer / apoyar a través de la parte más difícil de la curva de aprendizaje . Si no necesita el soporte y la estructura, ciertamente puede aprender cada aspecto por su cuenta, solo puede llevar más de 4 años hacerlo. (Y no, no puedes decir que llevaría 16 meses hacer solo las clases de CS, ya que gran parte de esto se basa en dedicar las horas cada semana para tener 4 años de programación y diseño en tu haber).

Se necesita mucha disciplina para aprender las cosas por su cuenta a una profundidad razonable, especialmente si no tiene a otras personas a su alrededor pasando por la misma curva de aprendizaje, así como a aquellos que lo han precedido y pueden señalar algunos de los trampas Estoy seguro de que obtuvo una muestra de esa idea cuando trató de aprender una nueva pieza de software o biblioteca y se topó con aquellos con una documentación mínima y aquellos con grupos espectaculares de recursos y personas disponibles para ayudarlo a comenzar. Un buen programa de CS proporciona ese mismo conjunto de recursos y comunidad.

Acabo de tener a un amigo en un campamento de programación de 12 semanas. Le encantó y se expuso a un montón de herramientas y métodos que no habría explorado si lo hubiera hecho por su cuenta. Ahora, se encuentra de vuelta en su “vida normal” y sin la estructura del programa que lo empuja a escribir más código, todavía cuestiona su habilidad. Es posible que haya dedicado tantas horas en esas 12 semanas intensivas como un estudiante universitario en el transcurso de un año escolar, pero todavía está al final del año 1 en términos de conocimiento, habilidades y confianza.

No significa que pueda / no pueda codificar o aprender más por su cuenta. Simplemente significa que necesita continuar practicando y aplicando las habilidades, incluso de forma tangencial, para continuar mejorando. No hay duda de que podría haber aprendido las mismas cosas en línea. Tampoco tengo ninguna duda de que él desarrollará más habilidades y saldrá a aprender nuevas habilidades y herramientas en línea, eventualmente.

Aprendí a codificar por mi cuenta mientras crecía. Tomó algunas clases de programación en la escuela secundaria. Aprendí toneladas en la aplicación práctica de conceptos “avanzados” en clases de pregrado. Hice los cursos para una maestría en Matemática Aplicada y Ciencias de la Computación. He estado desarrollando software, especialmente desarrollo web, durante 15 años. Actualmente enseña un programa de pregrado CS.

De todo eso, he tenido una extraña mezcla de trabajo autodidacta y hecho para las clases. Si no hubiera tomado ciertas clases, como IA, todavía tendría una idea superficial de lo que implica. Después de escribir un pequeño programa de aprendizaje automático, tuve una idea mucho mejor de cómo encajan las cosas. Otras clases que evité como la peste (Ingeniería de software) y una década después volví y aprendí por mi cuenta porque vi el valor en el contenido. Y aprender una nueva biblioteca por diversión tiene mucho menos impulso que aprender una nueva biblioteca para poder terminar el trabajo de un cliente. El mismo trato, solo que más, con un título.

Si desea una sección transversal de lo que esperamos que los estudiantes exitosos puedan hacer cuando se gradúen, estos son los resultados actuales de aprendizaje de estudiantes de nivel de licenciatura:

Informática SLOs
1. Amplitud y conexiones : muestra una comprensión general de la amplitud del campo de la informática y su relación con otras ciencias, matemáticas, ingeniería, tecnología de la información y sistemas de información.
2. Desarrollo de software : diseñe e implemente soluciones de software elegantes y prácticas para problemas específicos
3. Opciones de carrera : identifique las opciones de carrera disponibles para los informáticos, tanto dentro como fuera del campo de la informática.
4. Enfoques y abstracción : aborde la solución a un problema informático en los niveles apropiados de abstracción y sea capaz de moverse entre niveles de abstracción.
5. Enfoques y herramientas : elija metodologías de diseño, lenguajes, marcos y herramientas de software adecuados para resolver una tarea informática específica
6. Colaboración : trabaje eficazmente en el desarrollo de software colaborativo
7. Comunicación : exhibir las habilidades de escritura y expresión oral necesarias para comunicarse con otros, tanto dentro como fuera del campo de la informática.
8. Aprendizaje permanente : demuestre las habilidades y hábitos necesarios para el aprendizaje independiente de por vida de los nuevos desarrollos en informática

Tener esto en mente nos da la oportunidad de desarrollar estudiantes en amplitud, incluso si no garantiza mucha profundidad en un área determinada. Incluso mientras obtienes un título, y ciertamente más allá, estarás haciendo una cantidad significativa de aprendizaje independiente. ¿Eso significa que todavía vale la pena obtener el título? Depende de sus circunstancias y de los empleadores que está cortejando (o con suerte, ¿quién lo está cortejando?).

La pieza final que puede faltar para obtener un título es la red de antiguos alumnos. Una vez más, esto está más allá de las otras especialidades de CS, es tener contacto con personas que se dirigen a otros campos. Conocer a ese futuro ingeniero químico o diseñador gráfico puede conducir a un trabajo futuro. Y tener una “conexión” con esos antiguos alumnos que ya están en el mundo y buscan contratar tiene algún valor.

¿Puedes desarrollar todas las habilidades y construir tu red fuera de la escuela? Ciertamente. Y si puedes y lo estás haciendo, ¡sigue así y gasta los $ 150k que podrías haber gastado en la escuela en tu autoeducación!

La informática tiene más que la programación. La programación te enseña cómo hacerlo; Un título en informática explicará por qué hacerlo.

Tomemos, por ejemplo, la base de datos científica. Un curso de programación probablemente le enseñará cómo conectarse a una base de datos, hacer algunas consultas, y eso es todo. Todo eso se cubrirá solo en la primera o segunda semana de un curso de ciencias de bases de datos. El resto del curso hablará sobre cómo funcionan realmente las declaraciones de unión y selección, cómo las bases de datos rastrean las transacciones, cómo se realizan realmente las búsquedas, etc.

En mi título de CS, aprendí sobre cómo los hilos compiten entre sí por los recursos y cómo resolver los puntos muertos, cómo funcionan los algoritmos (amplitud de la primera búsqueda, profundidad de la primera búsqueda, programación dinámica), cómo mejorar la eficiencia de los bucles, las dificultades de la invalidación de caché , los matices de la gestión de la memoria y más.

Muchos de ellos no aparecerán en sus aplicaciones web CRUD típicas, o en la próxima aplicación móvil asesina. Todavía importan, creo que por dos razones

1) Saber cómo funcionan las cosas bajo el capó amplió mi perspectiva y mejoró mi capacidad de analizar y pensar sobre los problemas.

2) Si bien las aplicaciones de esos conceptos avanzados rara vez se utilizan, cuando lo hacen, son importantes. Enhebrar correos electrónicos por su identificación principal requiere una comprensión de la recursividad y BFS. El manejo de una tabla front-end con más de 100 filas requiere una comprensión de cómo almacenar en caché los datos de manera efectiva.

Mi valor de dos centavos

Para antecedentes: soy científico de datos en una gran institución de investigación y he trabajado profesionalmente durante 16 años como ingeniero de software en desarrollo de productos a nivel de inicio, sistemas empresariales e investigación en bioinformática. También fundé mi propia empresa que brinda servicios de ingeniería de software a pequeñas empresas.

El plan de estudios es la principal diferencia. La informática no está codificando. Cuando entrevisto a un ingeniero de software potencial, busco habilidades para resolver problemas, dominio de las tecnologías con las que estamos trabajando, aptitud para aprender nuevas herramientas, tecnologías y dominios (este es crítico) y antecedentes en informática. No me importa cómo viene el candidato. Pero saben mejor qué es una lista vinculada, cómo su rendimiento es diferente de una matriz, cómo usar cada una como una pila y una cola, cómo funcionan las diferentes matrices asociativas (cuándo usar cada una), teoría básica de grafos, teoría relacional básica, cómo realizar un análisis de tiempo de ejecución, y qué significa que algo sea NP completo y que sea indecidible. También pueden crear mejor un modelo de datos para una aplicación de libreta de direcciones y explicar las limitaciones y ventajas del modelo que eligieron.

Se trata de estructuras de datos básicas (y un poco de algoritmos y computabilidad y complejidad). ¿Por qué es importante esto? Es la diferencia entre escribir lo primero que viene a la mente que * podría * funcionar, y saber que algo funcionará incluso antes de comenzar a escribir.

Es mejor que también conozca el control de versiones, los sistemas de compilación automatizados y los marcos de prueba de unidades. Estos son fundamentos de ingeniería de software, no CS, pero también son importantes.

¿Necesitas aprender esto en una clase de un profesor? No, pero no lo aprenderá de un libro “Enséñese cómo programar Javascript en 10 semanas” o un libro similar. Y por lo que he visto, la mayoría de los programadores autodidactas ni siquiera saben que existen estos temas, y mucho menos que son importantes.

Esto varía mucho de manera individual. Aquí hay un aspecto a considerar, además de lo que se ha dicho hasta ahora.

En un grado de CS, eres examinado .

No puede simplemente asistir a conferencias y no hacer tareas o pruebas (o fallará).

No puede omitir el aprendizaje de ciertos conceptos porque puede encontrar otra forma de hacerlo en su proyecto (por ejemplo, no puede omitir el aprendizaje de árboles binarios solo porque Java proporciona la estructura de datos, o no puede omitir el aprendizaje de la programación funcional porque siempre hay una manera de escribir un algoritmo con bucles).

No puedes elegir material.

¿Por qué es esto tan importante? Porque es muy fácil entrar en una situación en la que crees que lo entiendes pero realmente no lo haces. Este video ilustra un ejemplo con Khan Academy and Physics:

La premisa principal es que las personas que piensan haber entendido no necesariamente lo han hecho. (Por cierto, nada contra Khan Academy, es un gran sitio web). Aún más sorprendente es el hallazgo de que la claridad de una conferencia no siempre se correlaciona con la efectividad de una conferencia.

Este es un obstáculo bastante importante, especialmente en ciencias de la computación, donde puede lograr mucho (crear sitios web, juegos, etc.) con relativamente poco conocimiento básico, lo que oscurece aún más el hecho de que sus habilidades nunca fueron realmente evaluadas.

(Por supuesto, no todos los estudiantes de CS toman sus clases lo suficientemente en serio como para que esto sea cierto, y muchos autoaprendices profundizan en sus estudios. Nuevamente, mucho de manera individual).

Un CS tiene más conocimiento sobre MUCHOS temas más que alguien que ha aprendido por sí mismo en Internet.

Esa es la clave. Cantidad, que generalmente significa calidad, pero … no siempre. Y aquí, estoy hablando desde la perspectiva de alguien que ha aprendido solo.

Ahora estoy en mi último año de un título de CS y puedo decir que la diferencia entre alguien que tiene un título de CS y alguien que aprendió a codificar en línea es la misma diferencia entre un redactor y un ingeniero.
Un redactor tiene más práctica en la creación del plan, pero el ingeniero es quien especificó cómo se debe hacer, y él es el que conoce la ciencia detrás de él y sabe cómo usarlo mejor.

Creo que es posible que obtenga una pasantía y tenga éxito, pero las empresas sentirán que corren un gran riesgo al contratarlo porque no tienen confianza en cómo adquirió el conocimiento.
Saber cómo implementar las estructuras de datos y algoritmos correctos es importante, pero he trabajado en pequeñas empresas no tecnológicas antes, y eso no les importa. Mientras su aplicación funcione correctamente dentro de un marco de tiempo aceptable, todo está bien. Ahora, si apunta a empresas como Google, Microsoft y Amazon, es esencial conocer material de matemática discreta, análisis de algoritmos, patrones de diseño, ingeniería de software, etc.

Si no tienes un título de CS pero aún quieres trabajar como desarrollador, te recomiendo que comiences a usar tu creatividad y comiences a crear cosas geniales. Cree sitios web, juegos, aplicaciones móviles … cualquier cosa que las personas usen y que requiera que agudice sus habilidades y conocimientos. Si los empleadores pueden ver que tienes habilidades de programación tangibles a través de tus creaciones, es muy poco probable que no consigas un trabajo 🙂

Necesita un método para demostrar que es un ingeniero valioso.

Un método es estudiar ciencias de la computación en la universidad y obtener un título que certifique que estudiaste CS durante ~ 4 años.

Otro método es desarrollar productos de software, implementarlos y mostrarle al empleador que otras personas han encontrado utilidad en las herramientas que usted ha desarrollado.

El punto es: si me dices que eres un programador, no te voy a creer. Todos los que tienen boca pueden decirme que codifican. Solo los ingenieros reales (en este caso, los informáticos) pueden mostrarme las herramientas que han desarrollado.

PD: Para ser honesto, estoy más impresionado por las personas que estudian algo más que ciencias de la computación en la universidad, y luego usan CS para hacer que el trabajo en su campo principal sea más eficiente: estas personas pueden tener errores en su código a veces, pero un error que cometieron No hacer que gaste dinero en una habilidad que los graduados de CS están enseñando con entusiasmo de forma gratuita.

Contestaré esta pregunta de diferentes maneras:

Primero, ¿por qué las empresas quieren estudiantes en sus programas de pasantías y no otras personas (en nuestro caso programadores o programadores autodidactas)? Y la respuesta a esta pregunta está en el significado o en la historia de esta palabra “pasante” (puede consultar estos artículos aquí en el cuarto párrafo y La evolución de los pasantes).

En segundo lugar, ¿cuál es la diferencia entre alguien que se graduó de una universidad y tenía una formación académica en informática y otro autodidacta, más delgado?

Contestaré esta segunda pregunta usando mi país como ejemplo “Argelia”. Ignorando los últimos dos años 14-15, un chico autodidacta nunca conseguirá un trabajo en una empresa a menos que conozca al propietario, el gerente o alguien que pueda darle un trabajo allí, para unirse a una empresa como pasante, parte- a tiempo completo, necesita un título en ciencias de la computación, incluso si no sabe cómo codificar o nunca escribió una línea de código (es un compañero de copiar / pegar, o deja que su pareja haga las tareas). Pero últimamente, las personas comienzan a pensar de la manera correcta y a contratar a personas sin pedir títulos, pero aún así la preferencia son aquellos que tienen títulos.

tercero, hay una diferencia entre un estudiante de cs major y uno autodidacta (hay excepciones, pero), hablando de mí, yo era un estudiante de informática y el camino era así:
y, por supuesto, debe aprender lenguajes de programación además de c y pascal por su cuenta, utilizando sitios web y libros. Y si un autodidacta quiere enseñarle todos estos cursos a través de Internet, debe tomar muchos cursos en coursera y edx.

Por supuesto, la mayoría de los cursos no serán de utilidad en su trabajo, pero si desea continuar en la línea académica, necesitará la mayoría de ellos en sus investigaciones y en la enseñanza.

La mayoría de los ingenieros autodidactas que he conocido tienen problemas con las preguntas sobre algoritmos, incluso las más sencillas. La mayoría tampoco tiene una idea clara de cosas como la complejidad algorítmica y cómo hacerse una idea de cuán eficiente sería la implementación de un algoritmo. Esto se debe principalmente a que los estudiantes de CS se ven obligados a aprender esto. Lo principal en la programación es el algoritmo, el razonamiento lógico y la resolución de problemas que faltan en aquellos estudiantes que intentaron aprender en línea. Aprenderá solo cosas que verá en línea (en el aprendizaje en línea), y no podrá pensar fuera de la caja porque nunca tendrá la oportunidad de hablar con un mentor en vivo. Un título universitario es lo que demuestra que tienes un nivel básico de comprensión de la informática. Aprendí mucho del lado del lenguaje (básicamente todos los idiomas / API que conozco) porque quería aprenderlos. El lado conceptual (cómo pensar como un ingeniero) se aprendió en la escuela. Por lo tanto, siempre se recomienda aprender en una escuela de programación como Holberton porque nadie sugerirá arriesgarse en caso de carrera al perder el tiempo en tutoriales en línea. La mejor manera es aprender en línea en paralelo con asistir a una escuela de programación.

Bueno, los estudiantes de CS reciben instrucción formal sobre algoritmos y estructuras de datos, lo que realmente mejora la capacidad de razonar y aumenta la lógica. Codecademy y recursos similares se centran en la sintaxis básica, etc., mientras que los estudiantes de CS aprenden la ciencia teórica detrás de la programación de máquinas y la ingeniería de software. Puede encontrar estos recursos en línea, pero es mucho más complejo que aprender la codificación básica. Comenzaría con el curso de algoritmos en curso junto con la programación interactiva con Python. Complemente que el aprendizaje con Codecademy y los libros de la biblioteca, por lo general, aquellos con una calificación alta en Amazon son buenos. También aprendo código en línea, pero también soy estudiante de CS.

Informática! = Codificación.

Esto es algo que la mayoría de las personas que son nuevas en el campo no entienden. La informática es … bueno … una ciencia. La codificación es una forma de comunicación relevante para esta ciencia, pero no solo para ella. El desarrollo de software, por otro lado, es un subconjunto de esta ciencia (pero sigue siendo solo un subconjunto). Para que mi respuesta sea más clara, es como si alguien preguntara, ¿cuál es la diferencia entre un estudiante de biología y alguien que aprendió a operar un laboratorio de biología en línea?

Si compara la lista de cursos de un título de CS con la de los cursos en línea, encontrará que estos últimos suelen ser más específicos que los programas universitarios. Le enseñarán cómo usar las herramientas, los lenguajes y las tecnologías existentes para ser productivo, pero no harán mucho para que realmente comprenda, analice o diseñe construcciones de software, ya que esos marcos de los que aprende a menudo aspirarán a abstraerse Los bits complejos.

Los profesores de ciencias de la computación a menudo descartarán el contenido de esos cursos por centrarse en meros “detalles de implementación”, sin insistir en que son los componentes básicos de cualquier proyecto de software. Los títulos de CS tienden a concentrarse en la ciencia detrás de la informática. Esta diferencia se puede comparar con aprender a escribir o hablar un idioma, versus aprender lingüística y literatura; poder conversar en francés no te ayudará mucho a diseñar un nuevo idioma o componer una gran novela; y la lingüística por sí sola no sustituye a la inmersión lingüística, aunque puede facilitarla. Al igual que con la escritura, ninguno de los tipos es, por supuesto, suficiente para que uno produzca un gran trabajo. La buena práctica sostenida también es esencial para lograr esto.

Como estudiante de diseño de instrucción, puede encontrar que CS y la ruta de acceso de un desarrollador de software es una gran carga, ya que puede arrastrarlo lejos de su especialidad de dominio. Puede que sea mejor comenzar aprendiendo cómo configurar extender su software específico de dominio existente. Es posible que ya tenga un valor considerable para aportar al software como usuario experto, como analista comercial o propietario del producto. Sin embargo, la perspectiva de las personas técnicamente inclinadas de su campo o la comunidad de desarrolladores de un software de código abierto de ID puede tener más que una oferta que un usuario genérico de Quora …

lo más probable es que un experto en CS tenga una mejor comprensión de las características de bajo nivel de los lenguajes en lugar de conocer la clase c ++ que sabrán cómo implementar una lista vinculada. También en teoría tendrían una mejor comprensión de cosas como la memoria interna, tendrían una buena comprensión de lo que son los punteros. tienen una idea bastante buena de cómo funciona el sistema subyacente. Sin embargo, lo que les puede faltar es una comprensión de las bibliotecas de alto nivel con las que puede haber trabajado extensamente … la teoría es que esas se pueden recoger más fácilmente que muchos de los mecanismos subyacentes

Un plan de estudios de Ciencias de la Computación lo guiará a través de lo que podría considerar toda la “cadena de suministro” de un programa. Tendrá cursos de arquitectura informática (cómo funcionan los microchips y cómo manejan el software), sistemas operativos (cómo “el sistema” maneja las solicitudes y gestiona los recursos), compiladores (cómo se traduce su código de alto nivel en lo que funciona sistema y microprocesador esperados), algoritmos (qué es posible mejorar y cuántas cosas se hacen generalmente) e ingeniería de software (cómo se juntan los proyectos), entre otras cosas.

Puedes conseguir un trabajo solo con programación, pero probablemente no quieras hacerlo. Es como tratar de construir una casa sin conocimiento de materiales o leyes de zonificación.

Pero también hay una diferencia mucho más grande: una escuela te da una credencial. Alguien con autoridad ha dicho que pasaste estas clases. Aprender lo que le interesa en línea podría significar que aprendió mucho más, pero también podría significar que eligió los bits que necesitaba en ese momento. Un gerente de contratación debe tomar una decisión rápidamente, por lo que las credenciales son un atajo extremadamente útil.

Resulta que sigo el siguiente hilo en Quora:

¿Qué habilidades carecen comúnmente los programadores autodidactas? ¿Qué debe estudiar un programador autodidacta para ponerse al día con sus compañeros con educación formal?