Te haces esta pregunta en la universidad. Las lecciones parecen demasiado fundamentales, y la industria parece estar construida “sobre el hombro de gigantes”, sin necesidad de reinventar la rueda nuevamente.
Una vez que pase unos años en la industria, descubrirá:
La ley de las abstracciones permeables
- ¿Cuáles son algunos de los trabajos de desarrollo de Python en empresas como Google, Amazon y Microsoft? ¿Cómo se debe preparar para ellos?
- ¿Las redes de computadoras son un área aburrida? Si observa las preguntas de las redes de computadoras en Quora, son escasas y no son emocionantes en comparación con otros campos.
- ¿Cuánto dinero se necesita para construir mis propios softwares de divisas?
- ¿Cuál es el orden del curso para desarrollar software?
- ¿Por qué a los programadores les gusta usar guiones bajos (_) tanto?
Ver:
http://en.wikipedia.org/wiki/Lea…
http://www.joelonsoftware.com/ar…
Esto es lo que nuestro amigo Fred Yeomans llama aquí sabiendo lo que está “oculto”, algo que una persona con una formación académica fundamental puede hacer mejor que alguien que ha adquirido habilidades en el camino. En esencia, cada algoritmo que “reutiliza” es una abstracción. Y “Como acuñó Spolsky, ‘Todas las abstracciones no triviales, hasta cierto punto, tienen fugas’. ”
El ejemplo simple es un automóvil. Puede comprar y conducir un automóvil durante mucho tiempo sin tener que saber lo más mínimo sobre lo que hay debajo del capó. Pero cualquier conductor experimentado le dirá que tarde o temprano se quedará perplejo si no conoce las partes internas. Olvidarás poner aceite, te quedarás sin gasolina, quemar el motor o abusar del auto. El “cuerpo” que encapsula las partes internas de un automóvil, en otras palabras, es una abstracción permeable, ya que en realidad no lo protege de la necesidad de saber qué hay dentro.
Lo mismo ocurre con la ingeniería de software. Por ejemplo, “ordenar” y “filtrar” se abstrajeron y resolvieron hace décadas. Pero aquí en Google, el mismo problema surgió nuevamente cuando algo tan gigantesco y en constante expansión como el universo de Internet tuvo que ser ordenado y filtrado (buscado). La abstracción de la clasificación y el filtrado resultó “permeable” a los primeros signos de que no se podía indexar todo en la memoria de una sola computadora. De hecho, la cantidad de computadoras que necesita usar para indexar Internet aumenta con el tamaño de Internet. En efecto, el algoritmo tuvo que reinventarse para ejecutarse en una arquitectura distribuida. (Ver MapReduce: http://en.wikipedia.org/wiki/Map…) Y esta no será la última vez que ocurra la reinvención. Cualquier cambio fundamental en la arquitectura de la industria, por ejemplo, computadoras cuánticas o nanocomputadoras, puede redefinir completamente cómo el mundo implementaría estos algoritmos. Al igual que el motor eléctrico está redefiniendo lo que hay debajo del capó en un automóvil.
La tecnología se reinventa cada vez más rápidamente debido a estos cambios sísmicos en los supuestos sobre los que se basa. Solía ser cada 1000 años que estos supuestos cambiaron. Desde el Renacimiento, se convirtió cada 100 años. Desde la Revolución Industrial, comenzó a suceder cada 10 años. En la era de Internet, cada año presenta un cambio por el cual usted, entre la próxima generación de ingenieros, tendrá que reinventar todas las ruedas que hemos creado hasta ahora.