Otimizei teclas antes do UX existir: A história do 'Zero para Novo' e o Gerador Low-Code
Um arquiteto de produto nos anos 90 otimizou a interface de usuário criando um atalho onde digitar '0' no campo de código iniciava automaticamente um novo registro, e para otimizar o seu próprio trabalho, criou um gerador 'Low-Code' em C que escrevia 80% das aplicações automaticamente.
No desenvolvimento de software moderno, temos duas áreas em grande destaque: O Design de UX (User Experience), que é obcecado em otimizar fluxos de trabalho e melhorar a usabilidade, e as plataformas de "Low-Code", que automatizam a criação de software para acelerar a entrega.
Nos anos 90, no mundo do QNX e do C em modo texto, nós não tínhamos estes termos, mas tínhamos exatamente os mesmos problemas. Eu não era apenas um programador; eu era o arquiteto do produto, e duas coisas me incomodavam profundamente: a ineficiência da interface do usuário e a ineficiência do meu próprio processo de desenvolvimento.
Primeiro, a interface. Os sistemas da época eram um labirinto de menus. Ou eram numéricos (Digite 1 para Clientes, 2 para...) ou, mais tarde, menus suspensos no topo do tela. Para fazer uma tarefa simples como registar um novo cliente, o usuário tinha de pressionar 'Alt', navegar com setas, dar Enter no menu, depois Enter no submenu "Cadastra", e só então chegava ao cadastro. Eu via aquilo e achava um completo desperdício de teclas e de tempo.
Decidi criar um padrão de interface muito mais inteligente, focado na economia de movimentos. Eliminei os menus profundos. Criei um atalho simples: a tecla F8 abria um menu vertical único com os módulos principais (Clientes, Pessoas, etc.) .
Mas a verdadeira otimização estava no próprio cadastro. Eu abreviei todo o processo de CRUD (Criar, Ler, Atualizar, Apagar) numa lógica intuitiva: ao abrir o cadastro, se o usuário digitasse "0" (zero) no campo do código e desse Enter, o sistema entendia automaticamente que era um registo novo. Se digitasse "-1", o sistema abria automaticamente o menu de consulta de dados. Se digitasse um código existente, carregava-o para alteração. No final, bastava pressionar F1 para salvar. A própria aplicação saberia se aquele registo era novo (e fazia um INSERT) ou se era uma alteração (e fazia um UPDATE).
Para os clientes, isto foi um avanço gigante na produtividade diária. Eu não estava apenas programando funcionalidades, estava desenhando um novo fluxo de trabalho (um workflow).
Resolvido o problema de eficiência do usuário, foquei-me no meu problema: a produtividade para criar novas aplicações. Depois de criar dezenas de telas de cadastro (Clientes, Fornecedores, Produtos) nos mais diversos sistemas, percebi algo óbvio: eu estava a reescrever o mesmo código repetidamente, mudando os prompts, ou os dados. Mas os cadastros, em suma, eram todos iguais. O "esqueleto", a lógica de ler, salvar, consultar, era a mesma. Foi aí que identifiquei o meu padrão e criei o meu primeiro "gerador de programas" em C86, no QNX. O conceito era o que hoje o mercado batizou de "Low-Code" (leia também o artigo "O Segredo da Produtividade – Como Construí um Gerador 'Low-Code' nos Anos 90").
Criei uma ferramenta onde eu só precisava fazer uma coisa: definir a estrutura dos dados (nome do campo, tipo, tamanho) e o nome da tabela. Apenas isso. A minha aplicação lia essa definição e gerava todo o sistema para mim. Ela escrevia o código completo dos cadastros, dos campos de edição, das consultas e até dos relatórios básicos.
O impacto foi revolucionário para a minha empresa. A ferramenta gerava 80% da aplicação automaticamente. Tarefas de desenvolvimento que antes demoravam semanas para serem feitas, passei a conseguir fazer em dias ou horas. (Mais tarde, repliquei esta ideia e fiz geradores também para Clipper, Flagship e C++Builder).
A lição que fica é que "UX" e "Low-Code" não são invenções modernas. São a resposta natural de um arquiteto de produto à ineficiência. O verdadeiro trabalho de um arquiteto não é apenas dominar a ferramenta do momento, é observar os padrões, seja no clique do usuário ou no código do programador, e construir uma solução fundamental que elimine o desperdício.
Este artigo é baseado numa história de "Dos 5 Minutos de uma Fita Cassete a 40 Anos de Código", as memórias do autor.
Leia a história completa aqui.