¿Cómo compensan los mejores programadores sin experiencia en CS su falta de conocimiento de CS?

Supongo que por “antecedentes de CS” te refieres a “grado de CS”: bueno, soy un programador autodidacta. Si bien creo que estoy lejos de ser un “programador superior”, creo que todos podemos asumir con seguridad que cada programador superior siguió un camino de estudio, autodisciplina y mucha práctica .

Si puedo decirlo yo mismo, también agregaría que la ruta de autodidacta generalmente te mantiene más humilde y más consciente de lo poco que sabes , al menos en comparación con el Joe promedio que puede terminar pensando que un título significa “lo hizo” en términos de conocimiento de CS.

En una nota al margen, he encontrado que en algunas ocasiones raras, la falta de una educación formal en CS me ha ayudado a pensar fuera de la caja. Más de una vez resolví un tipo de problema relativamente común por primera vez, y luego descubrí que básicamente todos lo resolvieron de una manera similar (una forma que no conocía).

En ocasiones más raras, cuando el problema tenía algunos giros, como, por ejemplo, tener una matriz bidimensional que era una matriz de columnas, no la matriz habitual de filas, comparé con su versión estándar y descubrí que mi solución era aún mejor, al menos en cuanto a rendimiento 🙂

Aquí está la receta que hacen muchos programadores excelentes, con títulos de CS y sin ellos.

Digamos que está tratando de aprender un concepto, digamos el algoritmo A *.

1. Lea sobre esto en wiki .

Aquí en nuestro ejemplo. Un * algoritmo de búsqueda. Obtenga la descripción básica.

2. Mire al proponente original del algoritmo.

¡Aquí está Peter Hard, Nils Nilsson y Bertram Raphael de Stanford! ¡Y el papel también está aquí! Abordar la fuente.

Hart, PE; Nilsson, NJ; Raphael, B. (1968). “Una base formal para la determinación heurística de rutas de costo mínimo”. IEEE Transactions on Systems Science and Cybernetics SSC4 4 (2): 100–107. doi: 10.1109 / TSSC.1968.300136.

3. Lea sobre los componentes originales sobre los que se basa.

Aquí vemos que es una extensión del algoritmo de Djikstra. Por lo tanto, debemos examinar el algoritmo de Dijkstra a través de los pasos 1 a 3. Este es un proceso recursivo.

4. Implemente un ejemplo de juguete o trabaje con ejemplos.

Necesita pasar un tiempo razonando sobre lo que aprende. La forma más fácil de ver si realmente comprende es tratar de implementar una versión simple o trabajar sus propios ejemplos a través del algoritmo.

5. Repita 1-4 tanto como sea necesario hasta que obtenga conocimiento funcional de lo que está tratando de aprender.

¡La clave es aprovechar el conocimiento de otras personas!

Esto es cierto para los grandes programadores, ya sea que él o ella tenga una educación formal o no.

Solo una pequeña porción de programación se basa en el conocimiento de la informática. Ayuda a tener una comprensión amplia de los principios básicos de CS, pero la codificación se trata principalmente de organización y ejecución. A excepción de las aplicaciones de vanguardia, los algoritmos, patrones de diseño y temas teóricos cubiertos en la mayoría de los programas de CS están disponibles gratuitamente para cualquier persona en línea.

Decir que no tenían experiencia en CS es burlarse de ellos. El hecho de que alguien no tenga un título universitario no significa que no tenga experiencia en CS. Mira a Bill Gates, por ejemplo. O Steve Jobs, que sabía más sobre computadoras que tú y yo somos capaces de olvidar.