En primer lugar, no debe tratar de obtener una educación CS “completa” para cambiar de carrera. CS es bastante vasto. Se extiende desde el ensamblaje hasta el sistema integrado, la web, el hardware, los sistemas operativos y los juegos. Trataré de darle diferentes elecciones que pueda hacer. Y créeme, para cambiar de carrera tendrás que estar un poco más concentrado. Nadie sabe todo CS.
Entonces, aquí va.
Si clasifica CS por materias, se espera que sepa un poco de estas,
1. Estructuras de datos : es una palabra elegante para almacenar cosas. Como verá en su experiencia, necesitará almacenar datos. La forma en que lo haga depende de los requisitos, el conocimiento y la experiencia y, en la mayoría de los casos, las compensaciones.
Sabrás que conoces las estructuras de datos cuando entiendas este chiste. Tu madre es tan gorda que se sentó en un árbol binario y lo convirtió en una lista vinculada.
Para aprender esto, puede comenzar aquí: UC Berkeley CS61B Data Structures
2. Algoritmos: la sabiduría de la informática. Puedes hacer cualquier cosa, pero el punto es qué tan eficientemente. Esta es la sabiduría recopilada de décadas. Sus problemas han sido resueltos por otra persona. Usa sus conocimientos. A veces tendrá la oportunidad de aprovechar ese conocimiento. Pero eso es raro. Sabrás que sabes algoritmos cuando entiendas este chiste,
Yo mamá es tan gorda, incluso Dijkstra no pudo encontrar un camino a su alrededor. Puede obtener más información aquí:
MIT 6.006 Introducción a los algoritmos, otoño de 2011
MIT – Introducción a los algoritmos
Libros
Manual de diseño de algoritmos de Skiena (basado en C)
Algoritmos de Robert Sedgewick y Kevin Wayne (basados en Java)
CLRS (Si no escribo esto aquí, la gente me matará. Entonces … tengo que escribir) (agnóstico del lenguaje)
- ¿Qué trayectorias profesionales suelen seguir los funcionarios del servicio exterior de EE. UU. Si dejan el servicio exterior?
- ¿Cuál fue el mayor problema de trabajo que enfrentó? ¿Y cómo resolviste eso?
- ¿Cómo sabremos si somos seleccionados o no después de la entrevista en TCS?
- Gano $ 88K en Michigan, me ofrecen un trabajo en Palo Alto, CA (Automotriz). ¿Cuánto debo pedir para mantener el mismo ingreso / ahorro de disposición?
- ¿Es demasiado tarde para ser programador si ya tengo 28 años y no tengo experiencia en CS? Tengo una maestría en ciencias aplicadas, pero quiero ser programador y aprender ingeniería de software. ¿Tengo que comenzar como estudiante de informática?
3. Bases de datos: Bueno, en resumen, nunca tienes suficiente memoria (más sobre esto más adelante). Entonces, estas bestias lo ayudan a almacenar y recuperar sus datos lo más rápido posible. Décadas de investigación han entrado en esto. Entonces, ¿por qué preocuparse? Los aspectos más teóricos que puedes aprender aquí:
Sistemas de bases de datos
Sobre la base de conceptos teóricos, hay MySQL. Puede comprar Head First SQL para aprender cómo aplicar prácticamente su conocimiento a sus problemas. Básicamente, sus datos están en la tabla. Algunas tablas bonitas y de buen comportamiento regidas por las matemáticas (no necesita preocuparse por ellas). En este campo, escuchará acerca de los términos como Oracle, SQL Server, Sybase, etc. Además, puede adivinar el contexto en el debate SQL vs NoSQL. No tomes partido. Aprende primero.
4. Sistemas operativos: esto es complicado. De alguna manera se espera que sepa cómo funcionan las cosas. No es necesario ser un maestro a menos que sea necesario. Pero es bueno, a veces es esencial saberlo. Sabrás que conoces el sistema operativo cuando puedas entender esta broma,
Programador: tuve un problema, usé hilos para resolverlo. Ahora tengo dos problemas.
Créeme, es gracioso. Bien, volviendo, puedes aprender sobre los sistemas operativos aquí: Computer Science 162, 001 – Fall 2014
5. Redes: este es el sistema circulatorio del mundo. Toda la información que circula por las arterias y venas. Una buena idea será más que útil. Puedes aprender sobre esto aquí: Conferencias de video | Ingeniería de sistemas informáticos | Ingeniería Eléctrica e Informática | MIT OpenCourseWare
Ahí vas. Estos cinco temas son los pesos pesados. Todos estos temas tienen sus homólogos avanzados. DS avanzado, algoritmos avanzados, sistemas operativos avanzados, informática de alto rendimiento, etc. Estos están disponibles como MOOC de UCB, MIT, Caltech, etc. Simplemente navegue.
CS se basa en las matemáticas. Entonces para una mejor apreciación del tema. Puedes ver esto: Matemáticas para la informática
Además, antes de profundizar demasiado … revise algunos cursos de tipo CS 101. Casi todas las universidades tienen estos cursos. Haz uno que te convenga. Aquí hay un ejemplo: Introducción a la informática y la programación
Ahora, todo su conocimiento es nulo si no puede hablar el lenguaje de CS. Ahora, esto es discutible. Altamente polémico. Entonces, daré mi opinión. Aprendí Java en la escuela. Yo trabajo en eso. Estoy cómodo en eso. Lo encuentro asombroso.
Antes de recomendar cualquier cosa como primer idioma, déjame decirte qué hacen los lenguajes de programación. En resumen, las computadoras son tontas. Los humanos son inteligentes. Los humanos también son amables, por lo que intentan hacer que las computadoras sean inteligentes diciéndoles qué hacer. Los humanos también son egoístas. Cuando las computadoras saben qué hacer. Los humanos les obligan a hacer su trabajo mientras se sientan todo el día y miran videos de gatos. De acuerdo, el problema es que los humanos hablan humanos y las computadoras hablan 0 y 1. Para comunicarse, los humanos inventaron lenguajes de programación. 0 y 1 son máquinas (con mnemotecnia), luego vinieron idiomas como B (o A). Luego C, C ++, Java, Python. Otros también, como PHP y Perl y Objective C. Son enormes. Por lo tanto, debe elegir al menos uno.
Sugeriría, ir con Python como primer idioma. Fácil de aprender y hacer cosas del mundo real que lo alentarán. Entonces ve por Java. Te hace empleable en casi cualquier parte del mundo. Web. Móvil. Nube. En todos lados.
Puedes aprender Python desde aquí: Python para principiantes – Curso de capacitación de Python – Udemy (está disponible por $ 10 … así que date prisa). Además, soy un gran admirador de Head First Books. Así que ve a buscar Head First Python.
Para Java también, tome un curso en Udemy o el canal newboston en Youtube . Comprar Head First Java. Y lo más importante, comience a codificar. Nada importa si no puedes / no quieres / no haces esto.
Un mejor enfoque sería implementar lo que aprenderá en los cursos de Algoritmo y Estructura de datos. Intenta escribir al menos 20k líneas de código. Obtendrá una sensación y estará listo para cambiar.
Ahora, algunos temas no tan famosos:
1. Compiladores: muy difícil. No lo sé porque no entiendo esta broma, Yo mamá es tan gorda que no se puede expresar con una gramática libre de contexto.
2. Lógica digital / Arquitectura informática / Arquitectura avanzada: es bueno saber cosas. Y sí … entender las bases binarias y otras es imprescindible. Estos temas tratan realmente de hacer una computadora. Con todos los flip flops SR y autobuses y registros, DRAM, SRAM, etc.
Entonces … basado en esto. Tienes una idea justa de qué esperar de un graduado de CS. Puede completar su conocimiento cuando sea necesario.
Ahora, viniendo al mundo, verás a muchas personas trabajando en diferentes áreas de CS. Trataré de clasificarlos según mi conocimiento limitado.
1. Desarrolladores web: más comunes. Fácil de comenzar Fácil de ver algo tangible (tan tangible como CS puede proporcionar: p). Por lo general, estas personas conocen HTML / CSS / Java Script / JQuery para front-end (Lo que ves en el navegador). En el back-end (lo que sucede detrás de escena), Java, Python, PHP, a veces JavaScript o Perl están trabajando para darle lo que desea. Por ejemplo, la página de inicio de Google es front-end, cuando buscas algo … las pequeñas hadas trabajan para obtener tus resultados. Esas hadas conocen Java, C ++, Python, etc. Puedes aprender desarrollo web aquí:
El curso completo para desarrolladores web: crea 14 sitios web
Tutorial HTML
2. Desarrolladores móviles: el elegante campo de los móviles. Estos chicos trabajan en teléfonos Android o iOS o Windows. Para Android, escribirás Java principalmente. Para iOS, vaya con Swift (nuevo lenguaje). C # (supongo) para Windows. Puedes hacer un curso sobre cualquiera de ellos en Udemy o encontrar el curso en Youtube.
3. DBA: los chicos que se especializan en bases de datos. Hacen certificaciones de Oracle o Microsoft y trabajan muy duro para mantener sus datos seguros y accesibles.
4. Administradores de red: estos tipos mantienen las cosas vivas. Escuchará sobre exámenes como MCSE, CCNA de Microsoft y Cisco. Tengo un conocimiento limitado aquí.
5. Los programadores integrados: la gente trabaja desde 8051 microcontroladores hasta la NASA. Todo lo electrónico que ves a tu alrededor tiene una pequeña computadora dentro. Estos están en miles de millones. Desde autos hasta lavadoras y relojes. Están en todos lados. Lenguaje más preferido: C
6. Desarrolladores de Kernel / OS: Estas son personas que hacen su Windows, OS X y Linux. Si escuchas a alguien comparar Windows y Linux. Sal de allí … este debate no es más que una pérdida de tiempo. Pero ya sabes el contexto. Trabajan principalmente en C / C ++. Puedes comenzar con el libro de Robert Love. Buscalo en Google.
7. Desarrolladores de juegos: estas personas te traen Batman, FIFA, CS, CoD, etc. Los encontrarás trabajando principalmente en C / C ++. Se han desarrollado enormes motores de juego para facilitar su trabajo. No sé cómo comenzar en este campo. Pregúntale a alguien en Quora. Lo mejor en este momento será entrar en juegos móviles. Nunca se sabe cuando tienes suerte.
8. Científicos de datos: este es un chico nuevo en el bloque. Amalgama de base de datos, estadística, matemática y sentido común. Escuchará palabras como Big Data, Hadoop, etc. Puede aprenderlo en Coursera. Cuenta con un curso de Data Science.
Y hay muchos más. Se actualizará si encuentra algo más.
Ahora, como nota final. Me gustaría pedirle que se haga esta pregunta. ¿Por qué CS? Sé que es un cliché. Pero créanme … sin la motivación adecuada … no podrán superar el hola mundial de escribir código. Sí, hay bombo publicitario. Sí, es un campo extremadamente increíble. Pero créame, cuando el código funciona el viernes y deja de funcionar el lunes, lamentará estar allí. Además, lo mejor de hacer algo mientras se presionan las teclas también es hermoso.
También te advertiré contra la frustración que conlleva aprender inicialmente este campo. No te rindas Y sí … incluso si te vuelves competente, estarás desactualizado en 5 años. Entonces … sigue aprendiendo … desaprender y volver a aprender. Ese es el único mantra aquí. Siempre cree que puedes hacer cualquier cosa. Así que sal y comienza a codificar.
Esto ya es demasiado largo ahora, actualizaré sobre enfrentar entrevistas más tarde. Y sí, estos solo te ayudarán a comenzar.
Estoy disponible para cualquier duda y donas
Dios estoy agotado. Todo lo mejor.