(0) Aprenda lo básico (RAM, ROM, partes de una computadora, etc.) y apréndalos bien.
(a) Una vez en el segundo año de BE, tuve una compañera de clase en BE Comp Engg. ¿Quién, cuando se le preguntó “¿Cuánta RAM tendrá su computadora?” – Respondió “no tendrá estas cosas, estoy tomando una computadora muy básica” … ¿Cómo supe que esto pasó? Porque en algún momento ella vino y me preguntó: “Por favor, ayúdame … ¿sabes qué es RAM y cuál es su propósito?”
(b) Una vez participé en un debate con un profesor de CS sobre piratería de hardware relacionada con la conexión de un teclado junto con un gamepad a un XBOX-1 – sobre por qué, si tiene una interfaz serial, no es fácil multiplexar múltiples dispositivos serial en un solo puerto, pero si tiene una interfaz de bus, digamos USB, luego, si lo desea, puede cortar el cable del XBOX-1 que va a un gamepad, agregar un concentrador USB y un conector USB al cable empalmado, y junto con la conexión al concentrador USB, el cable empalmado con un conector USB, también puede enchufar un teclado USB, y el concentrador USB que ha colocado en el cable del gamepad XBOX-1 empalmado podrá multiplexar tanto el teclado USB como el Controlador de gamepad en el que ha agregado un conector USB.
Para mí era una cuestión de fundamentos: que un bus es una pieza de hardware en la que una señal puede entrar y salir con múltiples puntos y un bus tendrá circuitos para multiplexar señales.
Para el profesor, era una cuestión de desconcierto, porque, a pesar de toda la experiencia del profesor, los fundamentos de los profesores no estaban claros.
(1) Aprende al menos C y C ++ -> lo mejor que puedas. Esto no es opcional.
Aquí es por qué (contado como cuentos de advertencia) debe aprender esto:
(a) Una vez conocí a un chico en un evento de tecnología que estaba hablando sobre Scala / Lisp, y quería mudarse de Bombay a Delhi y postularse a “la mejor compañía de productos globales con sede en NCR” y me pidió que le presentara a alguien Sé quién puede encontrar su currículum: lo conecté con un grupo de muchachos y cada vez que veía un requisito para C / C ++, le enviaría un correo electrónico explicando por qué no necesita saber esto y por qué estos están pasados de moda, etc. Dígale que no fueron ellos sino el gerente de contratación los que especificaron los requisitos y que simplemente harían el currículum vitae, pero él se negaría a escuchar.
En última instancia, consiguió un trabajo en otra empresa … que estaba muy bien financiada, pero que nunca había enviado un producto, que también necesitaba habilidades de hardcore c / c ++ y que pagaba bien.
Dos o tres años más tarde, lo conocí … buscando de nuevo un sitio web que no necesitaba c ++, y muy adicto a las hierbas y los medicamentos contra la ansiedad, y sentí que el mundo lo estaba persiguiendo y enloquecía, el producto que estaban construyendo nunca se construyó … y el equipo fue despedido sin ceremonias.
(b) Tenía un amigo que nunca se enfocaba en c / c ++ y muchas responsabilidades relacionadas con la familia querían mudarse a través del país con su esposa, y cuando le pregunté por qué no esta o esa compañía, dijo que “todos necesitan c / c ++ y estructuras de datos, y soy un tipo de javascript y 2 años después de haber hecho mi mtech en comp sc después de la electrónica, no tengo el tiempo ni el ancho de banda para practicar c / c ++ y estructuras de datos ”
(2) Aprendizaje de algoritmos y estructuras de datos.
Esto no se puede enfatizar lo suficiente. Aquí hay algunos cuentos de advertencia de lo que puede suceder si no lo aprendes lo suficientemente bien.
(a) Vea la advertencia 1 (b) de arriba.
(b) Una vez tuve un interno, que tenía trabajando en un pequeño juego de computadora “Air Parking”, nunca aprendí algos, aunque estaba en el último año, y luego pasó 3 o 4 meses depurando una estructura de datos de lista vinculada. que implementaba por primera vez en su vida.
Más tarde, tuvimos una función de puntaje alto (para insertar un puntaje alto en una lista ordenada de puntajes) y nunca había aprendido ni la clasificación ni la inserción en la lista, ni tampoco había aprendido el manejo de archivos y terminó gastando más y más tiempo tratando de implementar el “insertar puntaje alto en la lista – y escribir en el archivo” – hasta que le entregué su dinero y el certificado de pasantía – y le quité el proyecto – y pasé 15 días lejos de lo que estaba haciendo para solucionar sus errores y enviar el juego.
Desearía haberle quitado el trabajo hace algunos meses, nos habría ahorrado mucho tiempo.
En mi caso, era un gerente inexperto que dirigía una startup de fase inicial de equipo pequeño, en el mundo real, significaría ser rechazado en la etapa de la entrevista O bien, significaría ser marginado y malas evaluaciones O peor, despedido de empresa por ser un bajo rendimiento.
(c) En otro caso, una vez tuve un coautor (de un libro sobre análisis y diseño de algoritmos) que no estaba seguro de si “Infix to Postfix conversion using stack” es un algoritmo LALR o no (lol … pvt Mígame con una conjetura con lógica o pregúntame!)
(d) En otro caso, después de un par de años de programación, fui y participé en un concurso de programación para universitarios en una universidad no muy conocida, donde uno de los problemas de programación era implementar una doble vinculación. -listar con Java– con varias funciones etc.
Sí, sí, me afeité las quemaduras, afiné las cejas e hice un montón de cosas, incluso para parecerme más a un niño.
Bastante bien, fui el único participante que resolvió todas las preguntas en el tiempo designado (creo que 30 minutos), incluida la lista de enlaces en Java, y cuando el profesor me pidió que hiciera una demostración de las preguntas resueltas, me preguntó sobre el enlace. enumere el programa y criticó su diseño y me dijo que aunque el programa creado por otro equipo todavía no funciona (necesita más depuración), está mejor diseñado que mi programa y, por lo tanto, los declarará ganadores.
Más tarde … después del concurso, me crucé con el mismo profesor en el comedor de esa universidad y dije “señor, señor … hágame un comentario …” y le pregunté qué podía haber hecho mejor.
Y compartió sus pensamientos, etc … y en algún momento le pregunté respetuosamente cuánto tiempo tardó en implementar la estructura de datos, cuál fue su enfoque, etc., y cuándo lo hizo él mismo.
Y el profesor dijo: “No necesito implementarlo … si sé cómo hacerlo correctamente, eso es suficiente … ni siquiera tengo tiempo para depurar estas cosas, que es una tarea muy pequeña y tediosa”, y luego le pregunté sobre su vida estudiantil, etc … y se hizo evidente que incluso en sus días de estudiante, era poco probable que alguna vez hubiera implementado una lista doblemente enlazada con las operaciones que hice como parte de las 5 preguntas que resolví en 30 minutos, y mucho menos que lo hice en Java.
Sin embargo, si estás construyendo cosas, esto es importante. Además, debe saber en su corazón que, si debe hacerse, puede hacerlo usted mismo.
(3) Aprenda al menos el sistema operativo Unix / Linux, el shell y las secuencias de comandos de adentro hacia afuera
(a) porque le proporciona una base para aprender lenguajes de scripting de “nivel superior”.
(b) También vea el “Capítulo de muestra gratis” del libro de Edmund Lau, que habla de herramientas y cómo el tiempo que ahorra se incrementa gradualmente. Incluso unos pocos minutos al día.
No puede escribir scripts para simplificar su trabajo hasta que se sienta cómodo con los scripts / un sistema operativo que permite los scripts.
(c) Muchos de los conceptos en los que se basa Unix son importantes tanto para los servidores web / internet como para las redes, así como para comprender los fundamentos de varios “mini sistemas operativos” utilizados en dispositivos integrados.
(4) Si es posible, familiarícese con al menos un nivel más alto / lenguaje de scripting (podría ser PHP O Python O servidor de JavaScript o cualquier otra cosa), pero aprenda al menos un “lenguaje de scripting de nivel superior”.
Preferí PHP en mi día, debido a lo fácil que era después de conocer C y el shell de Unix, y lo fácil que era impactarlo.
Infact después de mis primeros programas de hello-world y jugando con bits y piezas de drupal (convertí un programa de 300 líneas de Java a PHP) y, después de eliminar los errores de sintaxis, ¡funcionó la primera vez! ¡Qué patada! ¡Qué alta!
(5) Sistemas de administración de contenido web del lado del servidor: Familiarícese con al menos un sistema de administración de contenido web del lado del servidor, puede ser Drupal O WordPress O cualquiera de las docenas de otros.
Por qué ? Porque hoy en día, todo está habilitado para la web O conectado a la Internet, y ya sea como acceso directo desde el navegador a través del navegador O como servicio web de fondo que se comunica con una base de datos y proporciona datos a un dispositivo o una aplicación o software: todos deben conectarse a Internet y todos deben extraer datos de la “nube” de alguna manera, y puede “aprender haciendo”, solo si sabe cómo “hacer” tanto en el lado del servidor como en el del cliente.
Por supuesto, en muchos de los cursos anteriores, un curso de CS de cuatro años puede no ser suficiente para dominar las habilidades en todos los niveles, pero es apreciable, por el bien de las propias opciones y el éxito de la carrera, para exponerse y familiarizarse con lo anterior. y al menos un maestro en algunas cosas y en los conceptos básicos y fundamentales de un montón de cosas … incluyendo C / C ++ y Data-structure y los conceptos básicos de los scripts y la web de Unix Shell.
(5) Acerca de los bonos:
Personalmente, creo que todo lo que otros describen, incluso profundizar en CSS O profundizar en DJango, etc., son todos bonos.
Pero hagas lo que hagas, no seas el profesor que enseña compiladores y no puedo responder una pregunta sobre conceptos básicos en un instante y definitivamente no seas el niño (o profesor) que nunca ha implementado una lista enlazada, y considera que la implementación y la depuración están debajo de ellos .
(6) Finalmente:
Los (1) a (5) están en orden de prioridad, primero los más importantes.
Muchas de las personas en los cuentos de advertencia anteriores (¡y todas son personas que son buenos amigos!), Se comprometieron con lo básico, tratando de aprender lo que consideraban hermoso y relevante al costo de lo básico, y luego tropezaron, una y otra vez, y agian !!!
Espero que esto ayude. Te deseo todo lo mejor.
PD: Por favor, perdóneme si se reconoce a sí mismo como uno de los que se describen en los cuentos anteriores, nada personal y pido disculpas si sin saberlo lo lastimé, pero solo mis pensamientos.
NOTA: escribí esta respuesta hace algunos meses, pero dudé antes de publicar porque quería pulirla más e incluir capturas de pantalla y fotos. Bueno, tal vez editaré e incluiré más, pero aparte de upvotes, comentarios, críticas y enlaces de bienvenida, me encantaría. escuchar de todo y ayudar, si es posible, aparte de programar y tratar de construir a lo grande, lo que vivo para las ideas y discusiones interesantes de la tecnología es … ¡después de la programación!