Soy desarrollador de PHP y recientemente comencé a trabajar con CodeIgniter. Parece que cada vez que busco algo relacionado con CodeIgniter, las publicaciones de blog y lo que no son generalmente de '09 o '10, por lo que me hizo pensar, ¿CodeIgniter sigue siendo relevante y será en el futuro? ¿Hay otro marco que está teniendo lugar?
Lo mismo ocurre con otros lenguajes y marcos también. ¿En qué momento abandonas el aprendizaje de ciertos idiomas o marcos? ¿Hay alguna manera fácil de encontrar aquellos que están surgiendo y que vale la pena recoger?
Respuestas:
No es una ciencia exacta, así que no espere poder predecir las tendencias futuras en el panorama tecnológico más de 5 años con certeza.
Pero buscaría todo lo siguiente:
fuente
No hay forma de saber si algo va a ser una prueba futura en la que preferiría centrarme si la tecnología me ayuda a resolver el problema que tengo hoy. Abandonaría el aprendizaje de un determinado idioma o marco cuando ya no funcione para resolver sus problemas.
Participe en la comunidad que representa lo que está haciendo y puede tener una buena idea de lo que va y viene, pero aun así prefiero pasar mi tiempo con la mejor herramienta para el trabajo, no lo que está de moda o lo que creo que estará de moda. año o dos a partir de ahora.
fuente
No hay forma de determinar definitivamente si algo es una prueba futura. Lo más cercano que puede llegar es determinar el nivel de actividad en torno a un lenguaje o marco en particular: si hay mucha actividad de desarrollador, generalmente es una buena señal de que el lenguaje / marco está aumentando en popularidad y será viable por un tiempo . El inverso indica que hay menos entusiasmo y que el soporte (a través de foros de desarrolladores) puede ser más difícil de conseguir.
Mientras su lenguaje / marco de elección resuelva el problema que está tratando de resolver, no debería tener que preocuparse por el futuro, a menos que esté trabajando claramente con una tecnología moribunda. La tecnología sigue cambiando: una cosa que puede hacer es realizar un seguimiento de las tendencias de la industria. Aprender nuevos lenguajes / marcos de programación, como se señala en este hilo , puede ayudarlo a mantenerse al día con las tendencias y le brinda la oportunidad de evaluar continuamente nuevas herramientas.
fuente
La "prueba de futuro" tiene que ver tanto con la fuerza de voluntad y la terquedad como con las preocupaciones más pragmáticas.
Un ejemplo extremo es este . Sparkle Filters TODAVÍA FUNCIONA con una computadora IBM 402 de finales de los años 40 como su sistema de contabilidad. Esta es una máquina que se programa utilizando enchufes eléctricos en lugar de "archivos".
Personalmente, he tenido experiencia con una compañía que aún mantiene máquinas basadas en MS-DOS dentro de instrumentos especializados que están diseñados para funcionar durante décadas. Incluso he descartado un PDP operativo tan tarde como 1997.
¡Diría que si su compañía recibe una visita del museo de historia de la computadora, como lo hicieron Sparkle Filters, eso sería una señal de que usted (o sus antepasados) han logrado "proteger el sistema" con éxito!
fuente
Puedo responder si una tecnología en particular está preparada para el futuro; la respuesta es casi seguro que no, ya que no pusiste un calendario en esto.
Para responder a esta pregunta, necesitará agregar más detalles a los requisitos. Por ejemplo:
La elección de un lenguaje / marco / tecnología es realmente una parte de la gestión de riesgos en el proyecto. Al igual que con todos los riesgos, deberá considerar una serie de factores (estoy tratando de mantener este breve) y luego tomar medidas para reducirlo a un nivel apropiado para la situación en cuestión.
Como con la mayoría de las cosas en la vida, la actividad que involucra el menor riesgo puede no ser la mejor opción.
En resumen, con cuánta incertidumbre está preparado para vivir en comparación con los beneficios que va a cosechar al usar durante el tiempo de vida esperado del proyecto.
Cuanto más tiempo desees mirar hacia el futuro, menos certeza habrá. Si está satisfecho con solo preocuparse por los próximos 2 años, por ejemplo, su elección será mucho más fácil de hacer (y dejará muchas más opciones disponibles para usted) que elegir algo que deba estar disponible durante los próximos 10 años.
fuente
Hay tantos factores en esto que diría que es imposible. Entre las cosas que podrían salir mal están:
Al final no importa tanto. CodeIgniter trabaja para usted y le ofrece lo que desea. Nada de lo que haga dejará de funcionar porque las publicaciones en el blog son antiguas o la tasa de publicación se ha ralentizado. Así que mi consejo sería usar lo que funciona ahora y lidiar con el futuro cuando llegue.
fuente
Un framework PHP, Symfony, explicó esto perfectamente en su sitio .
fuente
La clave es la paciencia. Paciencia, paciencia, paciencia. No hay forma segura de predecir el futuro. (¿tuve que escribir eso?) Pero si le das a la nueva tecnología un par de años y observas cómo se adopta, tendrás una buena idea de si se arraigará o no y si es adecuada para proyectos a largo plazo / inversión de tiempo .
Entonces, cuando aparezca NextNewThing (tm), siéntase libre de subirse al carro ... simplemente no por nada importante en los primeros años.
fuente
La respuesta de Mikeras es bastante agradable. Agregaré que la preparación para el futuro es un tipo de seguridad o gestión de riesgos realmente. A menudo requiere que renuncies a ciertas comodidades y beneficios de costo / productividad ahora para evitar problemas más adelante. He estado haciendo tecnología a prueba de futuro durante bastante tiempo. Hay ciertos patrones que pueden ayudar. Aquí hay algunos.
Los datos deben almacenarse en un formato abierto que sea fácil de extraer o transformar más tarde. Los formatos de archivo extraños son una gran técnica de bloqueo y área de trampa en general. Además, prefiera enfoques más simples como CSV, ASN.1 o JSON en lugar de basura complicada como XML o, por ejemplo, formato Word 97;). La idea es que sea lo suficientemente simple como para combinar un analizador usted mismo y el analizador de formato de bajo nivel es reutilizable en sus aplicaciones.
Idealmente, las aplicaciones deberían tener incorporadas interfaces neutrales y de proveedores, además de una descripción precisa de lo que hacen. Debe diseñar cosas donde pueda cambiar o desechar la implementación sin romper nada. Además, mudarse a una nueva plataforma es fácil si su método de llamar a procedimientos o procesar datos funciona en todas las plataformas. Entonces, las interfaces son lo más importante para corregir. Cuanto más simple, rápido y abierto sea el método de implementación de la interfaz, mejor.
La pila debe ser completamente de código abierto y libre de modificar. Las licencias GPL, LGPL, BSD, MIT, etc. están bien en este ángulo. La idea es que, si la comunidad comienza a desaparecer, entonces la pila podría necesitar ser movida a un nuevo [hardware / OS / protocolo / etc.]. Y necesitas el código para hacer eso.
El diseño de la pila debe ser extremadamente modular, y cada pieza debe ser entendida por una sola persona. Esto hace que sea más fácil para un nuevo grupo recogerlo y mantenerlo. Tener incluso los niveles más bajos del tiempo de ejecución, las bibliotecas y el compilador se pueden tener muy en cuenta si se necesita portar. A menudo, solo esa parte se puede portar y todo su código anterior funcionará.
Su aplicación debe hacerse de forma modular que elimine los detalles de la plataforma para minimizar el reproceso en esa área. Ayuda a estructurar las funciones en bloques de entrada / procesamiento / salida donde sea posible también. Esto puede ayudar a un análisis de lo que se verá afectado por un puerto (y el análisis de corrección en general a la 'metodología de sala limpia). La plataforma de enfoque de menor riesgo es utilizar las características de mínimo común denominador que son compatibles de manera universal con una interfaz que le permite usarlas, lo que reduce aún más la transferencia. (Dije que estarías perdiendo algo ...)
La escritura dinámica, la inferencia de tipos u otros enfoques de escritura flexibles ayudan. Un puerto a una nueva plataforma podría cambiar las definiciones de los tipos base. Los idiomas que escriben con fuerza internamente significan que te preocupas menos por estas cosas.
Mantenga el modelo de concurrencia simple. El mensaje dirigido por eventos que pasa a través de interfaces claras es portátil para ... básicamente todo. También hay corutinas. Solo desea evitar rutas que sean propensas tanto a errores como a problemas de portabilidad.
Mire los tiempos de ejecución portátiles de Mozilla y Apache. Tienen en cuenta muchos problemas específicos de la plataforma con ciertas opciones de interfaz e implementación. Pueden darle pistas sobre qué preocuparse, junto con proporcionar buenas soluciones a muchos problemas.
Ejemplo perfecto: Tcl. Lo sé, mucha gente lo odia y rara vez lo uso yo mismo. Sin embargo, Tcl es un lenguaje extremadamente fácil de entender, implementar (12 reglas principales) y codificar. Es pequeño, lo suficientemente rápido, se integra con servidores web, se integra en aplicaciones nativas, se ha portado a toneladas de cosas, tiene ciertas características de seguridad , y se ha actualizado regularmente desde los años 80 cuando se realizó. Usted o yo podríamos implementar un tiempo de ejecución TCL completo en poco tiempo para el lenguaje principal. Si tuviéramos que portar la biblioteca estándar, sería más fácil que portar .NET o Java. Y hay bastante código útil escrito para ello. Y se ha utilizado en tecnología web desde la locura del "agente móvil" a la que también apuntaban los applets de Java. Por ejemplo, el marco web de OpenACS se remonta a 1998 con un servidor anterior a ese.
Otros ejemplos: BASIC, COBOL y LISP (Scheme o CL). Todos estos idiomas se remontan a los años 50 o 60. Son lo suficientemente simples como para facilitar la comprensión, la implementación y la traducción mecánica. Sin embargo, puedes construir cosas útiles con ellos. COBOL todavía impulsa la mayor parte del procesamiento de transacciones del mundo, se ha actualizado algunas veces y se ejecuta incluso en .NET. Las antiguas aplicaciones QBasic / QuickBASIC todavía se ejecutan hoy con herramientas abiertas / gratuitas en plataformas modernas, junto con posibilidades de portabilidad a mejores herramientas como GAMBAS o RealBASIC. Los codificadores LISP naturalmente hacen que sus sistemas sean modulares y funcionales, lo que facilita la transferencia. Ha habido un flujo constante de implementaciones durante décadas, abierto y comercial.
Entonces, interfaces, apertura, simplicidad, modularidad y arquitectura / diseño / codificación neutral en la plataforma. ESTOS le proporcionarán las pruebas de futuro que necesita. La mayor parte del tiempo, de cualquier manera.
fuente