Cómo lidiar con la tecnología de software en constante cambioLa tecnología en la industria del software cambia rápidamente Las personas involucradas en trabajos relacionados con el software siempre deben prestar atención al nacimiento y desarrollo de nuevas tecnologías para poder hacerlo. mantenerse al día con la tendencia de la tecnología. Entonces, ¿cómo debemos afrontar esta situación? Este artículo le dará algo de inspiración. ¿Cuál es su actitud hacia las nuevas tecnologías que cambian rápidamente? Cuando me encuentro con nuevas tecnologías, aprendo sobre ellas pero no les pongo mucho esfuerzo (como NoSQL, Node.js, etc.). Estas tecnologías aún no están maduras y sólo necesitan mantenerse al día. Una década o más de tecnología puede ser un umbral. Algunas personas dicen que la tecnología se actualiza muy rápidamente, pero yo no creo que sea así en absoluto. Las tecnologías inmaduras surgen sin cesar, pero las tecnologías maduras como Unix tienen una historia de más de 40 años, el lenguaje C tiene una historia de más de 40 años, C++ tiene una historia de más de 30 años, TCP/IP tiene una historia de Más de 20 años, y Java tiene una historia de casi 20 años ……. Entonces, si nos fijamos en las tecnologías maduras, no hay muchas. Mi punto es que para comprender la tecnología, definitivamente es necesario comprender todo el desarrollo histórico y la evolución de la tecnología informática. Porque hay que entender la trayectoria de la pelota, no la posición de la pelota, y para entender la trayectoria de la pelota, hay que saber cómo se ha comportado históricamente. Si desea ejecutar una línea de tecnología, la aparición de Unix en la década de 1970 fue un hito en el desarrollo de software, y C de ese período fue un hito en los lenguajes. (En ese momento, todos los proyectos se basaban en Unix/C, y el mundo entero escribía software en estos dos lenguajes; Linux siguió a Unix y Windows se desarrolló usando C/C++. El C++ que surgió en ese momento fue naturalmente aceptado. Los sistemas empresariales también han migrado naturalmente a C++. C++ ha tomado el relevo de C, pero su problema es que no tiene una arquitectura empresarial y es demasiado arbitrario. De lo contrario, C++ no estaría muy cerca de C, es solo C. Allí. No hubo un marco de arquitectura empresarial durante mucho tiempo. Después de la invención de Java, IBM se hizo cargo de las necesidades de la parte de arquitectura empresarial. La aparición de J2EE hizo que C/C ++ se extendiera en términos de evolución del lenguaje. Más tarde apareció .NET, pero desafortunadamente solo se limita a la plataforma Windows. Se trata de software empresarial. El nivel de idioma incluye C->C++->Java y el sistema operativo incluye Unix->Linux/Windows. conocimientos necesarios para el desarrollo de software Hay Ethernet->IP->TCP/UDP La otra línea es Internet (HTML/CSS/JS/LAMP.... Soy un preocupado por la tecnología, y estas son cosas que no se pueden dar). Además, desde una perspectiva arquitectónica, podemos ver que desde la era independiente hasta la estructura C/S (la interfaz, la lógica empresarial y los datos SQL están todos en el cliente, y solo en el servicio de base de datos). la biblioteca está en estructura S a B/S (use un navegador para actuar como Cliente, pero la programación tradicional ASP/PHP/JSP/Perl/CGI y otra programación junta la interfaz, la lógica de negocios y SQL), pero la estructura B/S (use un navegador para actuar como Cliente, pero ASP/PHP/JSP/Perl/CGI tradicional y otra programación también combinan la interfaz, la lógica de negocios y SQL) pero coloque estas cosas en el servidor web y el middleware posterior, hay otro; capa de lógica de negocios, que se coloca en algo llamado App Server, una estructura clásica de tres niveles; luego, a la estructura distribuida, la capa de negocios se distribuye y la capa de datos se distribuye a la arquitectura de nube actual; servidor: todo se trasladó al servidor. Podemos ver que los cambios en la tecnología se han estado trasladando al back-end, y el front-end es solo el navegador o el teléfono móvil. Entonces, podemos ver la tendencia de desarrollo de toda la tecnología. Si comprende estos cambios y el proceso de "llenar los pozos", tendrá una buena comprensión de la tecnología. Además, he escuchado a muchas personas decir que algunas tecnologías no son aplicables y que algunas tecnologías son demasiado académicas, pero para ello. Yo, ya sea aplicado o académico, puedo leerlo, así que no tengo que preocuparme por tener más conocimientos.
¿Por qué molestarse en separar el campo aplicado y el campo académico? Se trata de conocimiento, sólo hay que aprenderlo bien. El desarrollo de la ciencia y la tecnología debe tener sus raíces en la historia, no en el futuro. No me digan qué tan grandioso es el futuro de esta tecnología (en el ArchSummit de InfoQ, un chico de Microsoft habló sobre Node. La nueva tecnología permite muchas cosas sofisticadas. Pero creo que las tecnologías son creadas por sus predecesores, y sólo las tecnologías creadas por sus predecesores son eternas. Por lo tanto, no tiene sentido decir "tal o cual (tecnología) será muy popular. Sólo hablaremos de ello cuando se vuelva popular, tenga muchas aplicaciones y se haga a gran escala". Algunas personas dicen: "No importa si no aprendes C/C++". Mi respuesta es: si ni siquiera puedes aprender la base técnica, ¿qué más puedes aprender? Estos son los fundamentos, el contexto y los maestros del desarrollo informático. ¿Cómo no aprender estas cosas? Además, también debemos mirar profundamente toda la cultura informática, que creo que se originó en la familia Unix/C (tenga en cuenta que dije cultura en lugar de tecnología). Sin embargo, en entornos aplicados, la demanda de nuevas tecnologías es alta. ¿Cuál cree que debería ser el enfoque de la educación en informática? La mayor parte de lo que se enseña en las escuelas es tecnología intensiva en conocimiento, pero la mayoría de las empresas de la sociedad requieren mucha mano de obra. ¿Qué es una empresa intensiva en mano de obra? Hacer papas fritas en McDonald's es un trabajo que requiere mucha mano de obra y que no requiere los conocimientos que se enseñan en la escuela. Lo que aprendiste en la escuela te será útil cuando dejes de freír papas fritas y pases a un trabajo más grande y profesional. Algunas personas dicen que un lenguaje o una tecnología son suficientemente buenos siempre que puedan resolver un problema, pero yo no lo creo. Creo que al menos deberías entender el desarrollo y evolución de estos. Y si desea resolver algunos problemas técnicos y comerciales, debe dominar una determinada tecnología para estudiarla en profundidad y aprenderla como un arte. Las tres puertas del desarrollo de software: la primera puerta son las funciones comerciales. En esta puerta, solo necesita saber programar. La segunda puerta es el rendimiento comercial. En esta puerta, las tecnologías básicas serán de gran utilidad, como: Sistema operativo. gestión de archivos, programación de procesos, gestión de memoria, modelo de red de siete capas, protocolo TCP/UDP, uso de lenguajes, compilación e implementación de bibliotecas de clases, estructuras de datos, algoritmos, etc. El tercer curso es Business Intelligence. En este curso, encontrará que muchas cosas son muy académicas, como algoritmos de búsqueda, algoritmos de recomendación, predicción, estadísticas, aprendizaje automático, reconocimiento de imágenes, arquitectura y algoritmos distribuidos, etc. Necesito leer muchos artículos de las escuelas de informática. En resumen, depende principalmente de su experiencia profesional. Si trabaja como mano de obra todo el día, utiliza técnicas simples y prácticas, pero si realiza un trabajo intensivo en conocimientos, debe investigar detenidamente. que lo que necesitas son conocimientos teóricos. Por ejemplo, para la asignación de inventario transfronteriza que hice antes, necesitaba conocer el algoritmo de ruta más corta. El sistema de pronóstico de inventario en el que estoy trabajando actualmente en Amazon requiere sólidos modelos matemáticos, algoritmos y capacidades de minería de datos. Creo que los verdaderos maestros provienen del mundo académico intensivo en conocimiento. Lo que los hace más fuertes es que pueden aplicar estos fundamentos teóricos a su negocio actual. Pero, lamentablemente, nuestra educación nacional actual no combina bien el conocimiento teórico de estos académicos con los problemas prácticos de negocios. Por ejemplo, algunas tablas hash o estructuras de datos de árbol binario. Si nuestra escuela puede conectar este conocimiento con problemas comerciales reales, el efecto será muy bueno, como: diseñar un sistema de consulta para direcciones IP y ubicaciones geográficas, diseñar una base de datos NoSQL distribuida. , O diseñar una aplicación de recuperación de ubicación geográfica, etc. Al aprender sistemas operativos, sería más interesante si los profesores pudieran guiar a los estudiantes a fabricar teléfonos móviles o sistemas operativos integrados, o estudiar el código fuente de Unix System V o Linux. Al aprender la red, si los profesores pueden hacer que los estudiantes presten atención a las características de Ethernet y TCP/IP y depurarlas, si los profesores pueden crear un sistema de mensajería pub/sub o un servidor de red similar a Nginx en la red, el efecto será ser mejor. Sería más interesante si pudiéramos guiar a los estudiantes para que practicaran una herramienta gráfica o un motor de juego en el proceso de aprendizaje de gráficos. En resumen, nuestra educación está demasiado desconectada de la realidad. Lo que enseñamos está seriamente atrasado y desconectado tanto en la tecnología como en la práctica. No podemos enseñar a los estudiantes conocimientos teóricos a través de problemas técnicos o comerciales prácticos, lo cual es un fracaso.