¿Qué CS101 debería aprender todo ingeniero de software autodidacta?

  • Iteración eficiente y correcta: la diferencia entre los bucles UNTIL-do y WHILE-do, las situaciones correctas para el uso de cada uno; cómo escribir pruebas de bucle sin crear variables de “marca” adicionales y rarezas confusas en general.
  • Búsqueda y clasificación fundamentales: cómo escribir una búsqueda binaria en una lista ordenada; breve y específico para la lista involucrada. Algoritmos de clasificación fundamentales pero eficientes: clasificación de shell y clasificación de fusión para ejemplos. CS101 hace que uno escriba tales cosas por sí mismo: en la vida real, las bibliotecas se encargan de esto, pero los ingenieros de software (autodidactas y de otro tipo) necesitan aprender y luchar con problemas de búsqueda y clasificación como parte de convertirse en un verdadero programador profesional.
  • Potentes estructuras de datos fundamentales, por ejemplo: ¿Qué es un árbol B en lugar de un árbol binario y cómo escribir todas las rutinas CRUD para cada uno?
  • Cómo estructurar la lógica de alternancia (IF-THEN-ELSE) para que se comunique con el codificador del mantenedor y genere el comportamiento informático previsto. Las pruebas deben ser “naturales” para el mantenedor. Cada programa de computadora es un acto de comunicación dual: transmitir el comportamiento a la máquina y, al mismo tiempo, transmitir significado y justificación al futuro codificador de mantenedor que necesita comprender para mejorar de manera segura y efectiva. Si su lógica de prueba IF es “difícil de asimilar” (contiene muchos NOT o XOR), debe escribir comentarios cuidadosos, enfocados (y breves) que expliquen. La práctica bajo capacitación formal en la que otros leen y evalúan el código (es decir , CS101 de alta calidad ) da esta lección. Los programadores autodidactas deben buscar mentores que estén dispuestos a leer el código y ayudarlo a aprender este poco de magia.

  1. Lógica booleana Y O NO XOR, tablas de verdad, reducción lógica. No solo aprendas, internaliza hasta el punto de hacerlo sin pensar.
  2. Clasificación de datos, indexación, listas, búsquedas de diferentes tipos de datos, sin depender de la funcionalidad que proporcione el idioma elegido. Lo harás todos los días a partir de ahora.
  3. ¿Cuál es la mejor y más rápida forma de repartir una baraja de cartas? Esta es mi pregunta de entrevista tecnológica favorita.