Sou desenvolvedor PHP e comecei recentemente a trabalhar com o CodeIgniter. Parece que sempre que eu procuro algo relacionado ao CodeIgniter, as postagens do blog e o que não são geralmente de '09 ou '10, então me fez pensar: o CodeIgniter ainda é relevante e será no futuro? Existe outra estrutura que está ocorrendo?
O mesmo vale para outros idiomas e estruturas também. Em que ponto você abandona a aprendizagem de certos idiomas ou estruturas? Existe alguma maneira fácil de encontrar aqueles que estão surgindo e que vale a pena buscar?
Respostas:
Não é uma ciência exata, portanto, não espere prever as tendências futuras no cenário tecnológico por mais de cinco anos com certeza.
Mas eu procuraria pelo seguinte:
fonte
Não há como saber se algo será uma prova futura em que eu prefiro focar. A tecnologia me ajuda a resolver o problema que tenho hoje. Você abandonaria o aprendizado de um determinado idioma ou estrutura quando ele não funcionar mais para solucionar seus problemas.
Envolva-se na comunidade que representa o que você está fazendo e você pode ter uma boa noção do que está indo e vindo, mas mesmo assim eu preferiria gastar meu tempo com a melhor ferramenta para o trabalho, não quente ou com o que eu acho que será quente. daqui a um ou dois anos.
fonte
Não há como determinar definitivamente se algo está à prova do futuro. O mais próximo que você pode chegar é determinar o nível de atividade em torno de uma linguagem ou estrutura específica - se houver muita atividade de desenvolvedor, é geralmente um bom sinal de que a linguagem / estrutura está tendendo a popularidade e será viável por um tempo . O inverso indica que há menos entusiasmo e que o suporte (via fóruns de desenvolvedores) pode ser mais difícil de encontrar.
Desde que sua linguagem / estrutura de escolha resolva o problema que você está tentando resolver, você não precisa se preocupar com a proteção do futuro, a menos que esteja claramente trabalhando com uma tecnologia em extinção. A tecnologia continua mudando - uma coisa que você pode fazer é acompanhar as tendências do setor. O aprendizado de novas linguagens / estruturas de programação, conforme observado neste tópico , pode ajudá-lo a acompanhar as tendências e oferece a oportunidade de avaliar continuamente novas ferramentas.
fonte
A "resistência à prova do futuro" é tanto sobre força de vontade e teimosia quanto sobre preocupações mais pragmáticas.
Um exemplo extremo é esse . Os Filtros Sparkle AINDA FUNCIONAM um computador IBM 402 do final dos anos 40 como seu sistema de contabilidade. Esta é uma máquina que é programada usando plugues elétricos em vez de "arquivos".
Pessoalmente, tive experiência com uma empresa que ainda mantém máquinas baseadas em MS-DOS em instrumentos especializados projetados para operar por décadas. Eu até cancelei um PDP operacional em 1997.
Eu diria que se sua empresa receber uma visita do museu de história da computação, como a Sparkle Filters fez, isso seria um sinal de que você (ou seus ancestrais) conseguiu "proteger o sistema" com sucesso!
fonte
Posso responder se uma tecnologia específica é à prova do futuro - a resposta é quase certamente não, pois você não colocou uma escala de tempo nisso.
Para responder a essa pergunta, você precisará adicionar mais detalhes aos requisitos. Por exemplo:
A escolha de um idioma / estrutura / tecnologia é realmente uma parte do gerenciamento de riscos no projeto. Como em todos os riscos, você precisará considerar vários fatores (estou tentando manter isso resumido) e, em seguida, tomar medidas para reduzi-lo a um nível apropriado à situação em questão.
Como na maioria das coisas na vida, a atividade que envolve o menor risco pode não ser a melhor opção.
Em resumo, com quanta incerteza você está preparado para viver em comparação com os benefícios que poderá obter ao longo do tempo de vida útil esperado do projeto.
Quanto mais tempo você quiser olhar para o futuro, menos certeza haverá. Se você está feliz em se preocupar apenas com os próximos 2 anos, por exemplo, sua escolha será muito mais fácil de fazer (e deixará muito mais opções em aberto) do que escolher algo que precisa estar por perto nos próximos 10 anos.
fonte
Existem tantos fatores que eu diria que é impossível. Entre as coisas que podem dar errado estão:
No final, isso não importa muito. O CodeIgniter funciona para você e oferece o que você deseja. Nada do que você fará deixará de funcionar porque as postagens do blog são antigas ou a taxa de lançamento diminuiu. Portanto, meu conselho seria usar o que funciona agora e lidar com o futuro quando ele vier.
fonte
Uma estrutura PHP, Symfony, explicou isso perfeitamente em seu site .
fonte
A chave é paciência. Paciência, paciência, paciência. Não há como prever o futuro. (eu precisei escrever isso?) Mas se você der à nova tecnologia alguns anos e observar como ela foi adotada, você terá uma boa idéia de se ela criará raízes ou não e é adequada para projetos de longo prazo / investimento em tempo .
Então, quando o NextNewThing (tm) aparecer, sinta-se à vontade para entrar na onda ... mas não por nada de importante nos primeiros dois anos.
fonte
A resposta de Mikeras é bastante agradável. Acrescentarei que a prova de futuro é realmente um tipo de segurança ou gerenciamento de riscos. Geralmente, você precisa renunciar a certas conveniências e benefícios de custo / produtividade agora para evitar problemas mais tarde. Faço quase tecnologia à prova de futuro há um bom tempo. Existem certos padrões que podem ajudar. Aqui estão alguns.
Os dados devem ser armazenados em um formato aberto, fácil de extrair ou transformar posteriormente. Os formatos de arquivo ímpares são uma grande técnica de bloqueio e área de interceptação em geral. Além disso, prefira abordagens mais simples, como CSV, ASN.1 ou JSON, em vez de coisas complicadas, como XML ou, digamos, formato Word 97;). A idéia é que seja simples o suficiente para reunir um analisador e o analisador de formato de baixo nível seja reutilizável em seus aplicativos.
Idealmente, os aplicativos devem ter interfaces neutras em termos de fornecedor e tecnologia, além de uma descrição precisa do que fazem. Você deve projetar coisas nas quais possa alterar ou jogar fora a implementação sem interromper nada. Além disso, é fácil mudar para uma nova plataforma se o seu método de chamar procedimentos ou processar dados funcionar entre plataformas. Portanto, as interfaces são a coisa mais importante para se corrigir. Quanto mais simples, rápido e mais aberto for o método de implementação da interface, melhor.
A pilha deve ser totalmente de código aberto e livre para modificar. As licenças GPL, LGPL, BSD, MIT, etc. estão bem nesse ângulo. A idéia é que, se a comunidade começar a morrer, a pilha talvez precise ser movida para o novo [hardware / OS / protocol / etc]. E você precisa do código para fazer isso.
O design da pilha deve ser extremamente modular, com cada peça sendo compreensível por uma pessoa. Isso facilita para um novo grupo buscá-lo e mantê-lo. Tendo até os níveis mais baixos do tempo de execução, as bibliotecas e o compilador são fatorados de maneira adequada, podendo ter um grande retorno se precisar ser portado. Geralmente, apenas uma parte pode ser portada e todo o seu código antigo funcionará.
Seu aplicativo deve ser criado de maneira modular, levando em consideração os detalhes da plataforma para minimizar o retrabalho nessa área. Também ajuda a estruturar as funções em blocos de entrada / processamento / saída. Isso pode ajudar na análise do que será afetado por uma porta (e na análise de correção em geral na metodologia de sala limpa). A abordagem de menor risco em termos de plataforma é usar os recursos de denominador comum mais baixo suportados universalmente com uma interface que permite usá-los, reduzindo ainda mais a portabilidade. (Eu disse que você estaria perdendo alguma coisa ...)
A digitação dinâmica, a inferência de tipo ou outras abordagens de digitação flexíveis ajudam. Uma porta para uma nova plataforma pode alterar as definições dos tipos de base. Idiomas que digitam fortemente internamente significam que você se preocupa menos com esse material.
Mantenha o modelo de concorrência simples. A mensagem orientada a eventos, passando por interfaces claras, é portátil para ... basicamente tudo. Também há corotinas. Você só quer evitar rotas propensas a erros e problemas de portabilidade.
Veja os tempos de execução portáteis do Mozilla e Apache. Eles fatoram muitos problemas específicos da plataforma com determinadas opções de interface e implementação. Eles podem dar dicas sobre o que se preocupar, além de fornecer boas soluções para muitos problemas.
Exemplo perfeito: Tcl. Eu sei, muitas pessoas odeiam e eu raramente a uso. No entanto, o Tcl é uma linguagem extremamente fácil de entender, implementar (12 regras principais) e codificar. É pequeno, rápido o suficiente, integra-se a servidores da Web, incorpora aplicativos nativos, foi portado para várias coisas, possui certos recursos de segurança , e é atualizado regularmente desde os anos 80, quando foi fabricado. Você ou eu poderíamos implementar um tempo de execução TCL inteiro rapidamente para o idioma principal. Se tivéssemos que portar a biblioteca padrão, seria mais fácil do que portar .NET ou Java. E há bastante código útil escrito para isso. E tem sido usado na tecnologia da Web desde a mania dos "agentes móveis" que os applets Java também visavam. Por exemplo, a estrutura da web do OpenACS remonta a 1998 com servidor mais antigo que isso.
Outros exemplos: BASIC, COBOL e LISP (Scheme ou CL). Todos esses idiomas remontam aos anos 50 ou 60. Eles são simples o suficiente para facilitar a compreensão, implementação e tradução mecânica. No entanto, você pode criar coisas úteis com eles. O COBOL ainda suporta a maior parte do processamento de transações do mundo, foi atualizado algumas vezes e é executado no .NET mesmo. Os aplicativos antigos QBasic / QuickBASIC ainda são executados hoje com ferramentas abertas / gratuitas em plataformas modernas, além de possibilidades de transferência para melhores ferramentas como GAMBAS ou RealBASIC. Os codificadores LISP naturalmente tornam seus sistemas modulares e funcionais, facilitando a portabilidade. Há um fluxo constante de implementações para ele ao longo de décadas, abertas e comerciais.
Portanto, interfaces, abertura, simplicidade, modularidade e arquitetura / design / codificação neutra em plataforma. ESTES você obterá a prova de futuro que você precisa. Na maioria das vezes, de qualquer maneira.
fonte