Qual é o futuro do desenvolvimento de software?

Qual é o futuro do desenvolvimento de software?

Durante anos, o desenvolvimento de software foi feito manualmente.

De perfurar cartões em FORTRAN a compor métodos distribuídos em Go, a disciplina permaneceu basicamente a mesma: pense intensamente sobre um problema, produza uma abordagem inteligente (isto é, algoritmo) e dê à máquina um par de instruções para implementar.

Essa abordagem, que pode ser chamada de "programação explícita", foi a chave para tudo, do mainframe ao smartphone, do boom da internet à revolução móvel. Ajudou a criar novos mercados e tornou empresas como Apple, Microsoft, Google e Facebook conhecidas.

E, no entanto, algo estará faltando. Os sistemas inteligentes imaginados por antigos autores da Era da Computação, do robô táxi de Philip Dick para o C-3PO de George Lucas, continuam a ficção científica. Tarefas aparentemente simples desafiam teimosamente a automação até mesmo dos mais brilhantes cientistas da computação. Os especialistas acusam o Vale do Silício, em face desses desafios, de se desviar dos avanços básicos para se concentrar em empresas incrementais ou movidas por modismos.

Isso, obviamente, vai mudar. Os carros autônomos de Waymo gastaram recentemente oito milhões de quilômetros viajados. O mecanismo de tradução da Microsoft, embora não seja fluente em seis milhões de formas de comunicação, pode se adequar a níveis humanos de precisão em tarefas de chinês para inglês. E as startups estão abrindo novos caminhos em lugares como assistentes inteligentes, automação industrial, detecção de fraude e muitos outros.

Individualmente, essas novas tecnologias prometem impactar nossa vida cotidiana. Coletivamente, eles representam uma mudança radical na maneira como pensamos sobre o desenvolvimento de software - e também um desvio notável do modelo de programação explícito.

O avanço do coração que dá suporte a cada um desses avanços é o aprendizado profundo, uma estratégia de inteligência artificial motivada pela construção de seu cérebro. O que começou como uma ferramenta de avaliação de dados comparativamente estreita agora serve como algo próximo a um sistema de computação geral. Ele supera o software tradicional em uma ampla gama de trabalhos e pode, finalmente, fornecer os sistemas inteligentes que há muito tempo iludiam os cientistas da computação - façanhas que a imprensa às vezes exalta.

No entanto, em meio ao grande entusiasmo do aprendizado, a maioria dos observadores negligencia o maior motivo para ser positivo sobre seu futuro: o aprendizado profundo exige que os programadores quase não escrevam código. Em vez de depender de regras predefinidas ou faturas if-then, um programa de aprendizado profundo escreve princípios automaticamente com base em exemplos anteriores. Um desenvolvedor de software só precisa fazer um "esqueleto bruto", para parafrasear Andrej Karpathy de Tesla, então deixar os computadores fazerem o resto do

Nesse novo universo, os programadores não precisam mais criar um algoritmo especial para cada problema. A maior parte do trabalho concentra-se, em vez disso, na geração de conjuntos de dados que refletem o comportamento desejado e no gerenciamento do processo de treinamento. Pete Warden, da equipe TensorFlow do Google, apontou isso já em 2014: "Eu costumava ser um programador" , escreveu ele. " Eu ensino os computadores a compor seus próprios aplicativos."

Novamente: o modelo de programação que conduz as melhorias mais importantes nos aplicativos hoje não exige uma quantidade significativa de programação real.

O que isso significa para o futuro do desenvolvimento de software?

Programação e ciência de dados convergirão cada vez mais

A maioria dos aplicativos não incluirá programas de aprendizagem "ponta a ponta " no futuro previsível. Contará com modelos de dados para oferecer capacidades cognitivas essenciais e lógica explícita para interagir com os usuários e traduzir os resultados. A pergunta "devo fazer uso de IA ou mesmo uma abordagem convencional para este problema?" Vai se desenvolver cada vez mais. O projeto de sistemas inteligentes exigirá o controle de ambos.

Profissionais de IA provavelmente serão as estrelas do rock

Fazer IA é difícil. Os programadores de IA de base - não apenas acadêmicos e pesquisadores brilhantes - serão uma das ferramentas mais valiosas para empresas de software no futuro. Isso carrega um pouco de ironia para os programadores tradicionais, que automatizaram o trabalho em diferentes setores desde a década de 1950 e que atualmente enfrentam a automação parcial de seus próprios trabalhos. A exigência de seus serviços certamente não diminuirá, mas os indivíduos que desejam permanecer na vanguarda precisam, com uma boa dose de ceticismo, verificar as águas da IA.

A cadeia de ferramentas de IA precisa ser construída

Gil Arditi, líder de aprendizado de máquina na Lyft, disse isso da melhor maneira. "O aprendizado de máquina está agora no período da sopa primordial. É muito semelhante ao banco de dados do início dos anos 80 ou final dos anos 70. Você tinha que se tornar um especialista mundial para fazer esses itens funcionarem. " Estudos também mostram que muitos modelos de IA são não é simples de explicar, insignificante para enganar e suscetível a preconceitos. Ferramentas para resolver esses problemas, entre outros, serão essenciais para desbloquear o potencial dos desenvolvedores de IA.

Todos nós precisamos nos familiarizar com o comportamento imprevisível

O conceito de "educação" de um PC é adequado para programadores e usuários. Isso reforça a impressão de que os computadores fazem exatamente o que dizemos e que entradas semelhantes produzem resultados semelhantes de forma consistente. As versões de IA, em contraste, agem como sistemas vivos e respiratórios. Novas ferramentas farão com que eles se comportem mais como programas explícitos, particularmente em configurações críticas de segurança; no entanto, corremos o risco de perder o valor desses sistemas - como os movimentos "alienígenas" da AlphaGo - se colocarmos os guarda-corpos com muita força. À medida que crescemos e usamos o software de IA, devemos entender e abraçar os resultados probabilísticos.

E espero que a probabilidade de aquisição da IA seja quase zero.