A IBM não queria que a Microsoft usasse a tecla Tab para navegar entre campos de caixas de diálogo
(devblogs.microsoft.com)- Na época em que Microsoft e IBM desenvolviam o OS/2 juntas, qual tecla deveria ser usada para navegar entre campos em caixas de diálogo virou um ponto de atrito que revelou diferenças na estrutura organizacional
- Um colega da Microsoft alocado no escritório da IBM em Boca Raton decidiu usar a tecla TAB como tecla de navegação entre campos, e a IBM exigiu que isso fosse levado ao gerente dele em Redmond
- O gerente da Microsoft respondeu que o motivo de ele estar em Boca era justamente tomar esse tipo de decisão em seu lugar, e isso foi repassado à IBM em termos mais corporativos como “a Microsoft apoia o uso da tecla TAB para esse fim”
- A IBM não ficou satisfeita e escalou a questão por vários níveis seguindo sua hierarquia organizacional, dizendo que um vice-presidente cerca de sete níveis acima do programador era absolutamente contra o uso de TAB para esse propósito e exigindo confirmação de um gerente equivalente na Microsoft
- O colega da Microsoft respondeu: “a mãe de Bill Gates não se importa com a tecla TAB”, e depois disso a discussão aparentemente terminou, com a tecla Tab permanecendo como estava
Diferenças de estrutura organizacional expostas na colaboração do OS/2
- Durante o período em que Microsoft e IBM desenvolviam o OS/2 em conjunto, houve choques culturais: o lado da Microsoft via os colegas da IBM como presos a uma burocracia desnecessária, enquanto o lado da IBM via o pessoal da Microsoft como hackers sem disciplina
- Um dos pontos de conflito era a estrutura organizacional, e a discussão sobre qual tecla usar para passar de um campo a outro em uma caixa de diálogo virou tema de disputa
- Um colega da Microsoft estava alocado no escritório da IBM em Boca Raton, na Flórida, e decidiu usar a tecla TAB como tecla de navegação entre campos
- O lado da IBM não ficou satisfeito com essa decisão e pediu que a questão fosse escalada ao gerente dele em Redmond
Delegação na Microsoft e escalonamento na IBM
- O gerente da Microsoft respondeu: “o motivo de você estar em Boca é para tomar esse tipo de decisão para que eu não precise estar em Boca”
- Antes de ser retransmitida à IBM, essa resposta foi reformulada em linguagem mais corporativa para “a Microsoft apoia o uso da tecla TAB para esse fim”
- A IBM não ficou satisfeita e escalou o tema por vários níveis dentro de sua estrutura organizacional
- A IBM afirmou que um vice-presidente cerca de sete níveis acima do programador era totalmente contrário ao uso de TAB para esse fim e exigiu a confirmação de um gestor de nível equivalente na Microsoft
O fim da discussão
- O colega da Microsoft respondeu: “a mãe de Bill Gates não se importa com TAB”
- Depois dessa resposta, a discussão aparentemente terminou, e a tecla TAB foi mantida
- O texto encerra com a piada de que, nos Estados Unidos, o próximo domingo é o Dia das Mães, mas não se recomenda perguntar à sua mãe qual é a opinião dela sobre a tecla TAB
- É possível que a avaliação que Microsoft e IBM faziam uma da outra tivesse um fundo de verdade nos dois lados
1 comentários
Comentários do Hacker News
A IBM era lendariamente excessivamente gerenciada
Uma pessoa com quem eu trabalhava contou que, em meados dos anos 90, fez um estágio de verão no escritório da IBM em Londres, fazendo algo parecido com o que hoje seria engenharia de QA, e que na época a cultura de todos irem trabalhar de terno estava mudando, então os estagiários pediram permissão para usar roupa casual às sextas-feiras
Como eles ficavam trancados numa salinha dos fundos sem nenhum contato com clientes, acharam que não seria grande coisa, mas a resposta só chegou alguns meses depois, pouco antes de o estágio terminar, e o pedido tinha passado por quatro níveis de aprovação no escritório de Londres, depois sido enviado à matriz nos EUA e acabado na mesa de um vice-presidente
Parece que levaram semanas em cada nível só pensando se tinham autoridade para decidir um assunto tão importante, e a resposta voltou pelo mesmo caminho, degrau por degrau, cruzou o Atlântico e chegou aos estagiários engravatados em Londres quando restavam só alguns dias de estágio
A resposta foi negativa
Aí, 8 meses depois, o RH da IBM me ligou dizendo que queria me entrevistar na quinta-feira da semana seguinte, e quando respondi que não tinha mais interesse eles ficaram totalmente desnorteados
Não faço ideia do que estavam pensando, mas tinham uma autoestima fora do normal sem sequer oferecer um salário particularmente bom
O ambiente era bem informal, e não estou tentando desmentir a história anterior, só acrescentar outra perspectiva
Pedi uma exceção na cláusula contratual que dava à IBM prioridade sobre propriedade intelectual criada fora do horário de trabalho
Eu só trabalhava no call center de suporte técnico, não tinha acesso a nenhuma informação exclusiva da IBM nem atuava em desenvolvimento, então desse ponto de vista não havia risco nenhum
De fato, todas as pessoas com quem era possível falar pessoalmente achavam o pedido totalmente razoável, mas a primeira resposta de recusa demorou 6 semanas para chegar, e depois que meu gerente direto tentou mediar, a análise levou mais 2 semanas e ainda assim a resposta continuou sendo não
Parece que subiu pela cadeia hierárquica até os EUA, desviou para o jurídico e depois desceu de novo, e no fim eu saí da empresa para evitar o risco de a IBM reivindicar direitos até sobre um pequeno projeto de software com um amigo
Além disso, os formulários de RH tinham sido escritos no começo dos anos 80 e digitalizados nos anos 2000, e nossa equipe, que não lidava com clientes, era bastante diversa
Tentaram atualizar os formulários para reconhecer outras combinações de gênero e pronomes, mas a revisão levou umas 12 semanas e, no fim, parece que foi rejeitada porque ninguém queria descobrir quem deveria mexer no formulário
A equipe tinha muitas pessoas LGBT e parecia importante retê-las, mas mesmo assim a resposta foi um não categórico
O treinamento de prevenção ao assédio sexual era fornecido em fita em 2010 e, como estava marcado como “versão atualizada”, talvez antes fosse em disco de vinil
Essa história parece estranha porque a IBM usava nomenclatura de teclado de forma consistente em vários produtos, e os terminais mainframe da linha 3270 usavam a tecla Tab, na mesma posição do Tab nos teclados modernos, para mover o cursor para o próximo campo
https://www.bitsavers.org/pdf/ibm/3278/GA27-2890-4_3278_Disp... PDF página 73
Aliás, nos terminais da IBM, como a movimentação entre campos era importante, havia até uma tecla dedicada de Back Tab no lado oposto da tecla Tab
No IBM PC original, as duas funções foram combinadas numa única tecla, e por isso a tecla Tab dos teclados clássicos de PC traz tanto o símbolo de tabulação para frente quanto o de tabulação para trás; o símbolo de tabulação para trás em cima indica que é preciso apertar Shift
Além disso, os terminais da linha 5250 usavam os termos “Field Advance” e “Field Backspace” em vez de Tab/Back Tab, mas os símbolos e a posição das teclas eram aproximadamente os mesmos da linha 3270
Referência: https://www.bitsavers.org/pdf/ibm/5291/GA21-9409-0_5291_Disp...
Basta olhar para a tecla “Next field” à esquerda e a correspondente “Previous field” à direita
O IBM 3270 era um dispositivo de entrada de formulários, e o mainframe enviava ao terminal um formulário com espaços em branco que o usuário preenchia
O hardware do terminal impedia que a parte fixa do formulário fosse sobrescrita e também aplicava restrições como campos numéricos, e todo esse processamento era feito no próprio terminal
Quando o formulário estava completo, o usuário apertava ENTER e o formulário preenchido era enviado ao mainframe como uma única transação
Esse modelo permitia que um único mainframe atendesse uma quantidade enorme de terminais, e o usuário podia digitar rápido, até sem olhar, sem perceber latência durante a entrada
O PC não tinha esse modelo de uso, e o pessoal do PC pensava mais em “máquina de escrever”
Um dos primeiros terminais de computadores domésticos chegou até a se chamar “TV Typewriter”
Formulários web têm esse modelo, mas com bem menos consistência
[1] https://sharktastica.co.uk/resources/images/model_bs/themk_1...
Mas é só um palpite
Nos anos 80, a IBM tinha uma carreira técnica sênior chamada “Systems Engineers”, e o trabalho inteiro deles era comentar as qualidades e defeitos de um sistema específico
Não era escrever, depurar ou explicar o sistema, era simplesmente dizer “você está fazendo isso errado”
Para a equipe da Microsoft, eles pareciam uma organização desesperadamente corporativa, mas dentro da IBM o pessoal de Boca era visto como uma “unidade rebelde”, e na verdade a maior parte da IBM nem sabia que eles existiam
Tudo começou quase da noite para o dia no ritmo da IBM, avançou numa velocidade enorme, e só foi possível porque Thomas Watson Jr. aprovou esse skunkworks contra a resistência dos subordinados
Por isso, Boca teve muito pouca supervisão, coordenação e controle do tipo que normalmente existiria num projeto daquele porte
No começo, o grupo de Boca operava fora da cadeia normal de reporte, e quando tentava obter tecnologia ou peças de outras áreas da IBM às vezes precisava explicar que realmente fazia parte da IBM
Uma era a Return comum de hoje, que só passava para o próximo campo e não enviava o formulário
A outra tecla, Enter, ficava onde hoje seria o Ctrl da direita, e era ela que enviava o formulário
Então talvez a IBM não se opusesse à tecla Tab em si, mas ao uso da Return como tecla de envio do formulário, quando o usuário de 3270 esperava que ela apenas passasse para o próximo campo
Muitos programas de DOS também funcionavam assim: ao apertar Return você ia para o próximo campo em vez de enviar o formulário, e no Windows isso foi uma das coisas a que foi preciso se acostumar
O CUA diz explicitamente que Tab e Backtab servem para navegar entre campos
Então a IBM acabou se opondo ao próprio padrão, subindo isso por 7 camadas de gestão: https://archive.org/details/ibmsj2703E/page/n13/mode/2up
Como alguém que prefere Tab, não quero começar uma discussão, mas uma vez perguntei ao Brendan Eich no Twitter por que ele preferia espaços
A resposta dele foi mais ponderada do que eu esperava
Como sistemas operacionais modernos e o comportamento das interfaces de usuário interceptam a própria tecla Tab, fica complicado inserir um caractere de tabulação de verdade, especialmente em contextos como navegadores
Ainda assim eu continuo preferindo Tab e sou desenvolvedor Go, mas ele estava totalmente certo sobre o quanto isso é irritante
É só tentar inserir um caractere de tabulação na área de texto do Hacker News para ver
Entendo mais ou menos o argumento, mas se você está escrevendo no editor de texto do HN um código em que tabs/espaços importam, então algo já está errado por si só
Um editor de código trata a tecla Tab corretamente
Mas, embora exista certa convenção com Enter tipo Shift+Enter, Alt+Enter e Cmd+Enter, continua irritando o fato de quase não existir uma forma universal de inserir tabulação em todo o sistema operacional
Shift/Alt/Ctrl+Tab normalmente também já são capturados para outras ações
Só que tabulação e quebra de linha não se aplicam a todos os contextos
Além disso, em alguns programas, como acontece com ^V, também pode fazer sentido ter uma tecla ou combinação para inserir um caractere de controle como dado, em vez de como comando
Isso é algo a considerar ao projetar um computador novo que não precise ser igual aos existentes, e eu já pensei nessas coisas e até poderia realmente levá-las em conta
A tecla Tab tinha um propósito original e foi sequestrada, tornando mais difícil usar sua função real
Não é tão diferente de quando a Apple lançou a Touch Bar e removeu a tecla Escape
O usuário médio pode quase nunca usar essa tecla, mas o desenvolvedor médio dificilmente consegue passar muito tempo sem usar a função original dela
Já ouvi antes que a tecla Tab podia ser representada de formas diferentes dependendo do sistema, então espaços seriam mais seguros por sempre aparecerem do mesmo jeito
Era isso que o Brendan queria dizer?
Ótimo texto, mas continuo curioso sobre por que a IBM era contra usar a tecla Tab desse jeito
Será que era porque não queriam que Tab fosse ao mesmo tempo caractere de entrada e caractere de controle?
Ou seja, em alguns campos você pode digitar Tab e em outros não, e não dá para perceber imediatamente qual é o caso?
Mesmo em 2026, ainda dá para simpatizar com essa visão
Primeiro, porque isso quebrava a compatibilidade com o DOS
Programas de DOS usavam Enter, e o teclado numérico também tinha Enter, então era possível inserir dados numéricos com uma mão só
Você deixava a mão esquerda no documento de papel e digitava com a direita, e as pessoas ficavam muito rápidas nisso
Esse padrão ainda sobrevive em alguns programas como o Excel
Muitos clientes odiavam ter que colocar as duas mãos no teclado, e muitos dos nossos programas permitiam mapear Enter=Tab
O importante não é o “nome” da tecla, e sim a posição dela
O uso duplo da tecla é só um incômodo que aceitamos: às vezes ela age como tecla de navegação, outras vezes como tecla de inserir espaço em branco
Enter teria o mesmo problema
A solução esmagadoramente melhor teria sido adicionar uma nova tecla ao teclado, de preferência no teclado numérico, se possível
Muitas teclas novas surgiram naquela época e, olhando para trás, era ali que deveriam ter adicionado uma tecla de “avançar”
Porque nesse ambiente há dois usos totalmente lógicos e intuitivos para a tecla Tab, e eles entram em conflito
O mesmo problema aparece com muito mais frequência na tecla Enter, e até hoje memorizamos regras bem complicadas sobre se ctrl+crlf faz quebra de linha ou envia a mensagem, e o que crlf sozinho e shift+crlf fazem em cada caso
No editor do HN, shift+crlf e crlf sozinho geram quebra de linha, e ctrl+crlf não faz nada
Mas em outros lugares ctrl+crlf dispara o envio do formulário ou da mensagem, shift+crlf insere uma quebra de linha literal, e crlf sozinho pode fazer uma dessas coisas, ou nenhuma
Esses são bindings comuns, mas já vi exceções e inversões, inclusive casos em que shift+crlf envia o formulário e ctrl+crlf insere a quebra de linha literal
Tudo isso é realmente irritante e cria muito atrito para o usuário, e por um tempo os guias de estilo da Microsoft eram considerados uma referência central de boas práticas, por mais irônico que isso possa soar hoje
Gerenciar uma organização cheia de peças móveis e criar algo rapidamente para o usuário são claramente preocupações bem diferentes
Soa mais como uma pessoa da burocracia da IBM se metendo e travando tudo, e isso servindo para mostrar a diferença de cultura
Até porque o texto em si é justamente sobre essa diferença cultural
A IBM também é a razão de o MS-DOS não suportar “-” em opções e de os dispositivos não terem ido para um diretório “\DEV” em todas as unidades
O suporte a “/” como separador de caminho sobreviveu
Muita gente da Microsoft usava Xenix e gostava de Unix, e nas versões bem iniciais do DOS existiam opções do config.sys como SWITCHCHAR e AVAILDEV para esse tipo de coisa
Mas, pelo que sei, a IBM reagiu mal a isso e forçou a remoção
O que é especialmente irritante no problema do DEV é que o DOS 1 nem tinha diretórios, então não podia haver grande problema de compatibilidade
Como resultado, DOS/Windows ficou preso ao fato de presumir que arquivos de dispositivo existem em todos os diretórios, o que impede até hoje criar arquivos chamados “CON” ou “COM1”
Só deixou de documentar as chamadas necessárias para fazer isso por muitos anos
Estranho, porque eu me lembrava de que, no 3270 de mainframe, a tecla Tab era usada para navegar entre campos
Encontrei o PDF do Operator's Guide
É só ver https://news.ycombinator.com/item?id=48028227
Usar Tab era quase segunda natureza, e quando migrei para aplicativos GUI, especialmente apps em Visual Basic, ficava irritado se a ordem de tabulação estivesse errada
Embora eu ache que também existiam teclas de função reservadas para esse propósito
Nunca usei AS/400, mas pelo que sei havia o conceito de uma tecla separada de Field Exit
Ri muito da parte “o pessoal da Microsoft via seus colegas da IBM como burocratas inúteis, e o pessoal da IBM via o pessoal da Microsoft como hackers sem disciplina”
Trabalho na MSFT, e parece que naquela época a Microsoft era uma empresa muito diferente
Hoje sinto que eu e meus colegas estamos presos em burocracia inútil por causa de reuniões sem fim, mandatos de IA, teatro de promoção e afins
A remuneração é boa, mas a burocracia corrói a alma
Deveríamos ligar um controle de videogame a todas as máquinas para usar o direcional na navegação entre campos, o botão ‘A’ para subir um nível nos menus hierárquicos e o botão ‘B’ para entrar em submenus
Aí, para mudar de campo, você digita os dados, tira as mãos do teclado, pega o controle, aperta direita ou esquerda, e depois põe as mãos no teclado de novo
A produtividade certamente dispararia
A ideia é permitir controlar naturalmente com gamepad videogames que usam controles padrão do sistema operacional
Precisa ser patenteada
Enquanto isso, teremos de nos contentar com a solução inferior: o mouse
Sou usuário de Mac há mais de 30 anos, mas adoro os textos históricos do Raymond Chen
Conheço o folklore.org, mas queria que existisse algo equivalente dentro da Apple
Infelizmente isso não faz parte da cultura da Apple
Em 1992, fui estagiário de verão na equipe de System Software, e um dos meus projetos era melhorar um recurso do Disk Initialization Package que marcava blocos defeituosos encontrados durante a inicialização do disco
O recurso existente funcionava, mas era muito lento, não mostrava progresso e não podia ser cancelado
A parte mais complicada era a interface do usuário
Consegui melhorar bastante a velocidade, mas como não dava para saber quanto tempo o processo inteiro levaria, qualquer heurística para mostrar tempo restante ficava ruim
Vi a algumas baias de distância uma pessoa cujo cargo era “User Interface”, pensei que talvez pudesse ajudar, perguntei se ele tinha um minutinho e acabei me sentando com Bill Fernandez, funcionário número 4 da Apple e o cara que apresentou um Steve ao outro Steve, para pensar no problema
Tirando meu gerente, ele foi de longe a pessoa mais gentil que conheci naquele verão, entendeu o problema completamente de imediato e sugeriu uma ótima solução
A ideia foi abandonar a estimativa de tempo restante e trocar por uma barra de progresso indeterminada que avançava a cada trilha de disco testada
Funcionou bem, as pessoas gostaram e isso entrou em um point release posterior ao 7.1
Não é tão surpreendente quanto os textos do Raymond, mas já serve como começo
Acho admirável como quase toda época foi cheia de brigas por praticamente todos os detalhes
As teclas, os layouts, o formato, o significado, tudo
E agora é estranho e engraçado perceber que ninguém mais parece ligar para essas coisas