Junior do Drag-and-Drop
Ainda chama “tabela” a uma Entity. Já fez três 1-CP directos a PRD.
“Arrastou, fez 1-CP, era isso.” O que sobra depois de anos a arrastar widgets, fazer Refresh All três vezes seguidas e descobrir que o operador IN continua sem existir em Aggregates.
End-User com tudo lá dentro: screens, blocks, server actions, entities, integrações REST. Foundation é onde vão as Static Entities que ninguém soube onde meter. Core é palavra que o XGH-OS já leu mas não usa. O Discovery abre-se uma vez para ver o aranhol de setas — depois disso, só em apresentação para o cliente.
A documentação grita “aggregate or SQL query inside a cycle” há mais de uma década. O AI Mentor sinaliza a vermelho. O Architecture Dashboard contabiliza. O dev XGH-OS faz 1-CP na mesma. O problema do N+1 não é um bug — é uma escolha estética.
“Outdated Producer” → Refresh All → 1-CP → “Outdated Producer” → Refresh All → 1-CP. Se entrar em ciclo, há referência circular entre módulos — solução XGH-OS: aceitar e seguir. O ciclo é o método.
A Idea para ter IN em Aggregates tem 500+ likes desde 2015. O XGH-OS já percebeu que nunca vai sair e segue com Index("#"+String_Join.Text+"#", "#"+Entity.Id+"#") <> -1. A performance é problema do otimizador da Aurora.
Static Entities existem precisamente para evitar magic numbers no código. O XGH-OS respeita o princípio: não usa magic numbers, usa magic Ids. Toda a gente sabe que 1 é “Pendente”, não é? E que 7 é “Cancelado”. Exceto em PRD, onde 7 é “Aprovado” porque alguém renumerou em 2019 e ninguém atualizou os 47 IFs espalhados pelos módulos.
Aux, Aux2, Temp, Temp_OK, X, Y, Result, Result2, FinalResult, FinalResult_REAL, FinalResult_FINAL, FinalResult_USE_THIS_ONE. Nomenclatura é privilégio de quem tem tempo. O XGH-OS tem prazo.
Configurar algo sem deploy? Site Property. Passar valor entre Timer e Screen? Site Property. Guardar o último Id processado para retomar amanhã? Site Property. Feature flag? Site Property. Service Center → Site Properties → Edit Value é o painel de admin oculto da empresa, gerido por quem tem acesso, não por quem decide.
Vermelho não 1-CP. Amarelo 1-CP. Os 247 warnings amarelos são parte do tema do Service Studio. “Avoid Aggregate inside cycle.” “Cyclic reference detected.” “Avoid large session variables.” Sugestão. Sugestão. Sugestão.
A primeira ação do XGH-OS perante uma exception em produção: abrir a Server Action, consultar o Last Modified By no painel de propriedades, ler o nome. Se for de um colega da equipa — fecha o Service Studio. Se for de alguém que já saiu da empresa — fecha mais depressa. O AI Mentor tem o mesmo workflow: abre-se o finding, vê-se o módulo, vê-se a equipa dona, e se não for a tua, Suppress. O Last Modified By é o git blame do XGH-OS. E o álibi.
Componente de 2018, sem versão para Reactive, autor saiu da empresa em 2020? Baixa o .oap, descompila, copia o JavaScript do Web Block, cola num módulo próprio. “Customizámos para a nossa realidade.” (E partiu no upgrade para ODC, mas isso é problema do trimestre seguinte.)
O LifeTime existe. As Deployment Zones existem. Os approvals existem. O XGH-OS sabe disto e sabe também que basta trocar o ambiente no canto inferior do Service Studio para o 1-CP apontar diretamente a PRD. “É só um hotfix urgente.” “É só um Site Property.” “É só uma Static Entity.” Quem nunca? Se respondeste “eu”, parabéns — não és XGH-OS, és gestor.
A tabela OSLOG_GENERAL cresce a 4 GB por mês. LogMessage("entrei aqui") é a única instrumentação. Dashboards de observabilidade são comprados em Q4 e abandonados em Q1. Quando um cliente reporta bug em produção, abre-se o Service Center, filtra-se pela hora aproximada, e reza-se para o log estar lá.
Traditional Web deixou de existir — reescreve-se em Reactive. SQL Server passou a Aurora PostgreSQL — reescrevem-se as queries (case-insensitive deixa de ser default — boa sorte). SOAP virou REST — reescrevem-se as integrações. Estimativa do XGH-OS: “umas duas semanas”. Realidade: 9 meses, duas demissões, e um post-mortem de 47 páginas.
Programa não-reconhecido pela OutSystems, pelo teu Tech Lead, nem pelo PMO. É endossado pela retrospectiva da sprint passada.
Ainda chama “tabela” a uma Entity. Já fez três 1-CP directos a PRD.
Refresh → 1-CP → “Outdated Producer” → Refresh é a sua meditação matinal. F5 mecânico.
Tem em PRD actions chamadas Aux, Temp_OK, Result2 e FinalResult_USE_THIS_ONE. Ninguém sabe qual é que corre.
Prometeu ODC “em duas semanas”. Vai no nono mês, no segundo post-mortem, na terceira reescrita.
Trabalhas com OutSystems há tempo suficiente para carregares pelo menos uma cicatriz que ainda não está no manifesto. Manda. Se for verdadeiro, fica. Se for engraçado, fica em destaque.
O melhor axioma vem de um post-mortem real. O segundo melhor, de um Slack às 23h.