Perversões curiosas do mundo da TI - 3

O Daily WTF coleciona histórias engraçadas, selvagens e / ou tristes do mundo da TI há 14 anos. Traduzi várias histórias que me pareciam interessantes. Todos os nomes e nomes de empresas foram alterados. Edições anteriores podem ser encontradas sob o rótulo " perversões curiosas ".

imagem

A primeira história: "Não é apenas brilhante"


[ Original ]

Todos nós tínhamos colegas incapazes de fazer nosso trabalho. Jarad também teve sorte.

Ele trabalhou na Initech em um pequeno grupo de desenvolvedores que criaram um cliente Windows para clientes que o usavam para interagir com seus servidores. A empresa decidiu portar o aplicativo do .NET para Java. O guia mais importante recomendou o desenvolvedor Java altamente respeitado Kisha da Intelligenuity como gerente de projeto. "Não se preocupe", disse a gerência. "A Intelligenuity contrata apenas os programadores mais brilhantes."

Na primeira reunião do projeto, o gerente anunciou que usaria o Eclipse para o projeto Java. Kisha disse: “Eu não tenho Eclipse. Alguém pode enviar? Jarad enviou um link para ela. Na próxima reunião, ele perguntou se ela havia instalado o Eclipse. Ela respondeu que não podia fazer o download da mídia, e esperou a próxima reunião para pedir ajuda. O gerente correu para o carro e resolveu o problema clicando no link de download.

Vamos para a próxima reunião: Kisha disse que não podia continuar trabalhando, porque “O Eclipse tem alguns problemas com o JDK, alguém pode enviá-lo para mim?” Jarad enviou o link novamente. Alguns dias depois, na próxima reunião, ela disse: “O Eclipse não está funcionando porque precisa de um arquivo jar, alguém pode enviá-lo?” E depois disso, "Alguém pode me enviar código para criar classes porque o Eclipse está constantemente relatando uma NullPointerException ?"

Finalmente, o gerente mudou a estrutura das reuniões. Eles continuaram suas reuniões regulares com clientes do Windows, mas adicionaram uma reunião dedicada separada apenas para Kishi. Com o tempo, descobriu que ela e o marido eram amigos de um líder de alto escalão e de sua esposa. Foi realizada uma reunião separada para "garantir seu trabalho bem-sucedido"; isso significava que o gerente da equipe escreveu o código para ela.

Kisha disse uma vez ao gerente que o cliente tinha um problema crítico com o portal da web e que uma reunião com o cliente deveria ser realizada o mais rápido possível para resolver seu problema.

O gerente organizou uma reunião com o cliente, ele mesmo, Kishi, Jarad e o gerente do projeto, para resolver o problema de uma vez por todas. No dia da reunião, o cliente ficou surpreso com o número de funcionários e gerentes de suporte técnico. Ele explicou: “Um ... o“ problema com o portal ”foi que eu pedi à Kisha a URL do portal da web. Foi o suficiente para lhe enviar uma carta. "

Às vezes a justiça acontece neste mundo, e Kisha, como resultado, perdeu o emprego.

A segunda história: "coceira de três meses"


[ Original ]


Em março de 2016, Ian precisava de um emprego. Quase imediatamente após o início da pesquisa, ele teve sorte: encontrou uma pequena startup que precisava de um trabalhador com conhecimento de arquitetura Python e habilidades de design. "Minúsculo" porque, além de Ian, a empresa tinha apenas três desenvolvedores sob a liderança de seu fundador, Jack.

A entrevista com Ian foi conduzida pelo próprio Jack. Após um teste técnico, ele aprendeu mais sobre o projeto da empresa: um protótipo quase completo do aplicativo iOS. O usuário sincroniza seu telefone com um monitor de freqüência cardíaca de pulso, após o qual o telefone deve tocar música que corresponda às atividades atuais do usuário. O principal objetivo do aplicativo era ajudar a obter o pulso necessário durante o treinamento. O aplicativo também usou os acelerômetros do telefone para acompanhar o ritmo do usuário enquanto dirigia. Esses dados, segundo Jack, deveriam ter sido úteis para estudos da doença de Parkinson. Ele apoiou sua declaração com artigos científicos das melhores universidades. Jack queria que Ian desenvolvesse um novo sistema de back-end para armazenamento de dados e processamento de consultas.

Jack era amigável e carismático, e seu entusiasmo infectou os outros. Ian imediatamente aceitou a oferta e começou a trabalhar no dia seguinte. Seu escritório estava apertado, mas ainda pertencia a ele sozinho. Sua tarefa era criar o back-end necessário para o aplicativo.

Duas semanas se passaram. Numa manhã de segunda-feira sonolenta, Jack convidou sua equipe de desenvolvimento para a sala de reuniões. O brilho de sua apresentação em Powerpoint queimou a retina.

“Eu pensei sobre isso com cuidado. Somos uma startup completamente nova. Ninguém sabe sobre nós, certo? Precisamos fazer algo para aumentar o reconhecimento da marca. Então, decidi: nos livraremos da parte da música do aplicativo e focaremos apenas na coleta de dados ".

Ian instintivamente quase disse "O quê ?!" Eles terão que jogar fora os resultados de duas semanas de trabalho. Além disso, a parte de coleta de dados era anteriormente completamente opcional.

Jack mudou para outro slide, que mostrava as métricas que ele agora queria rastrear para cada usuário. Havia tantos deles que eu tive que usar a menor fonte. Para ler, Ian teve que apertar os olhos.

"Se você montar um palheiro grande o suficiente, uma agulha certamente aparecerá nela!", Disse Jack. “Vamos liberar o aplicativo e trabalhar com ele implicará registro obrigatório. A renda real para nós serão os dados coletados. ”

O capital investido foi gasto em um escritório de luxo no centro de negócios da cidade; desenvolvedores de aplicativos gratuitos merecem apenas o melhor. Jack contratou um segundo desenvolvedor iOS, ciência de dados e estagiário.

"Mas não dê ao estagiário nenhum trabalho importante", disse Jack a funcionários em período integral.

Tendo dominado a nova situação, Ian começou a desenvolver a arquitetura de um novo sistema que registraria todos os dados necessários.

Três meses depois, Jack jogou tudo na lixeira. “Sem aplicações! Precisamos de uma nova direção de desenvolvimento! ”

A nova visão de Jack era criar um site no qual as pessoas teriam que indicar as composições que ouvem em um sonho, durante o treinamento e outras atividades.

"As pessoas gostam de falar sobre si mesmas", disse Jack. "Não devemos pagá-los pelo fato de que eles nos fornecem seus dados!"

Um desenvolvedor front-end foi contratado para criar o site. Logo após o lançamento do site, Jack se gabou dos investidores de ter atingido um milhão de visitantes únicos. De fato, havia apenas cerca de 300 registros, metade dos quais foram criados por uma pessoa.

Você já pode adivinhar o que aconteceu três meses depois. Jack abandonou o site em desenvolvimento lento em favor do Slack bot, que deveria responder ao comando "Play ${song} by ${artist}" , encontrando a música no Spotify e fornecendo um link para ela. Um widget Spotify tocaria uma visualização de 30 segundos ou, se o usuário tiver uma conta Spotify Premium, a música inteira.

“Isso é tudo? Como vamos ganhar dinheiro? ”, - a essa altura, os desenvolvedores não estavam mais se restringindo em suas reivindicações.

"A assinatura será paga", respondeu Jack corajosamente.

"Para o bot de bate - papo?" Ian se opôs. “Para que ele funcione completamente, o usuário já precisa do Spotify Premium. Se queremos que as pessoas paguem além disso, precisamos dar-lhes mais oportunidades! ”

"Nós vamos lidar com isso mais tarde", respondeu Jack.

Jack contratou o estagiário para desenvolver o novo produto principal da empresa, violando os requisitos de Jack seis meses atrás. O estagiário esforçou-se ao máximo, mas logo foi forçado a voltar à escola; código incompleto sem cerimônia foi lançado para o desenvolvedor front-end para revisão. Com a ajuda de um dos desenvolvedores do iOS, ele terminou. O que Ian estava fazendo? Ele criou um painel e um log, porque Jack insistiu que eles atraíssem usuários suficientes para justificar o esforço.

Mais três meses se passaram. Muitos "recursos" foram adicionados, por exemplo, o bot pediu obsessivamente aos usuários do canal Slack para usá-lo. Esse comportamento violou os termos de uso do Slack; portanto, o aplicativo não foi permitido na loja; O próprio Jack teve que enviar links para as pessoas interessadas, para que elas o instalassem manualmente. No início, o produto foi transferido para 50 empresas "muito amigáveis" que Jack conhecia pessoalmente; destes, apenas alguns o instalaram e ainda menos continuaram a usá-lo no dia seguinte. Então, Jack expandiu o anúncio para 300 empresas "amigáveis", mas com o mesmo resultado.

O momento decisivo ocorreu para Ian quando Jack começou a insistir em um tempo de trabalho adicional, apesar de Ian não poder ajudar outros desenvolvedores em suas tarefas. No entanto, Jack o forçou a ficar até tarde até "mostrar solidariedade". Essa foi a última gota: Ian escreveu uma carta de demissão duas semanas depois. Seu último dia de trabalho coincidiu com o lançamento do bot Slack, durante o qual ele observou linhas muito retas no painel. Quando ele finalmente saiu do escritório de luxo, a startup ainda não ganhou seu primeiro centavo.

Felizmente, Jack tinha um plano. Depois que Ian saiu, ele começou do zero e estava prestes a criar um novo produto. Não, ele não trará nenhum dinheiro, mas eles precisam primeiro conhecer a marca.

Terceira história: "Transportador de backup"


[ Original ]

"Hum ... você pode olhar algo para mim?"

Pat se afastou da programação de novos recursos e viu o cubo de Milton parado perto dela.

"Acho que estou tendo problemas", acrescentou Milton.

Um dos principais sistemas internos da empresa era o pipeline de processamento de dados. Talvez a palavra "pipeline" possa ser considerada um exagero, porque na prática são apenas alguns scripts de shell e programas Python que extraem dados de arquivos, realizam operações com esses dados e despejam os resultados em outros arquivos, que são lidos por outros scripts. No processo de trabalho, as pessoas geralmente pegavam a versão mais recente dos scripts do sistema de controle de versão, modificavam e ajustavam para que respondessem a uma pergunta específica relacionada aos dados. Se parecia que esse processo em particular poderia ter valor, eles limparam o código e o adicionaram ao sistema de controle de versão novamente. Se eles achavam que não precisavam mais do código, simplesmente redefiniam para HEAD.

No entanto, alguns, como Milton, basicamente mantiveram sua própria cópia de todos os scripts. Ou, como é o caso de Milton, algumas cópias. Milton conhecia melhor o pipeline de processamento de dados, mas a maior parte desse conhecimento estava contida em sua biblioteca pessoal de scripts.

"Eu pensei que valia a pena fazer minhas alterações no sistema de controle de versão", disse Milton. "Eu tinha um script chamado por um script chamado pelo script, e tudo dependia de várias variáveis ​​de shell criadas, por exemplo, $SETUP_DIR ".

Pat assentiu.

“Então, eu queria reorganizar tudo isso em um argumento para que outras pessoas pudessem usar o código. Fiz isso ... mas antes do teste, esqueci de alterar os scripts de chamada para que eles passem um argumento ".

Em particular, o script de Milton continha esta linha:

#!/bin/sh

rm -rf $SETUP_DIR/*/


Ele o refatorou para a seguinte linha:

#!/bin/sh

rm -rf $1/*/


Os scripts de shell não se preocupam com a existência dessas variáveis. Milton tinha um ambiente persistente por $SETUP_DIR . Mas $1 é o primeiro argumento e, se você não passar o argumento, ele estará vazio. Portanto, um novo script Milton, quando lançado sem argumentos, foi implantado em rm -rf /*/ , excluindo tudo o que sua conta tinha acesso.

Basicamente, isso levou a inúmeras tentativas de excluir arquivos para os quais ele não tinha direitos. Além disso, isso significava o desaparecimento de seu diretório pessoal com um monte de scripts de espaguete que eram completamente impossíveis de recriar porque eles nunca tinham controle de versão.

"Isso pode ser de alguma forma consertado?" Milton perguntou.

“Bem, sim, claro. Tudo pode ser restaurado a partir do seu último backup ”, disse Pat.

Embora uma ferramenta de backup automatizada tenha sido lançada em todos os sistemas Windows, ela não foi configurada em nenhum sistema Linux. O departamento de suporte considerou que, se você é tecnicamente competente o suficiente para trabalhar com Linux e gravar scripts de shell, terá conhecimento suficiente para configurar seu próprio sistema de backup. Especialmente para esse fim, havia uma SAN acessível para todos.

"Ah, e eu ... nunca montei um backup", sussurrou Milton. "Bem ... pelo menos eu não empurrei?"

Pat esperava que Milton aprendesse a lição certa com esse erro.

Quarta história: "O que é um ponto flutuante?"


[ Original ]

imagem

Existem muitas armadilhas para programadores iniciantes: a diferença entre declarar uma variável e inicializá-la, a necessidade de usar ponto-e-vírgula para completar linhas, compensar erros por um ... Todos nós conhecemos em nossa indústria engenheiros programadores autodidatas que podem criar aplicativos em larga escala com a arquitetura certa um sonho, mas vimos juniores autodidatas, que mal dominavam o básico e pensavam que era tudo o que precisavam. No final, diplomas e educação formal são necessários por um motivo.

Essa história começou quando Olaf acabou de se formar na universidade e trabalhou em seu primeiro emprego de verdade como "programador trainee". A empresa estabeleceu o objetivo de melhorar a governança no sistema de saúde do estado: qualquer pessoa que tenha o prazer duvidoso de se comunicar com os sistemas de saúde dirá que essa é uma tarefa nobre. No entanto, a empresa foi fundada por um médico que possuía apenas conhecimentos superficiais em PHP, que ele estudou independentemente quando o tempo era determinado.

Olaf começou a trabalhar, com a intenção de aplicar seu conhecimento sobre padrões de design. PHP é fácil de aprender, mas difícil de dominar; muitos exemplos escritos no software PHP usam objetos god e o código é misturado com a apresentação - dois erros graves, que, no entanto, não são mencionados na maioria dos tutoriais online. Olaf começou a separar a função do formulário, criar objetos que podem ser usados ​​repetidamente para minimizar copiar e colar, e se envolveu em outras tarefas semelhantes, alegremente transformando em ordem o caos do código passado a ele.

E assim ele se viu no escritório do chefe, que providenciou para ele se lavar.

"Outros programadores não entenderão isso!", Gritou o chefe. “O código é muito complicado. Por que você está mudando? Funciona, você teve que sair!

Desanimado, Olaf voltou ao trabalho e enviou uma versão limpa para sua ramificação principal sem nenhuma alteração. Tentando evitar uma colisão com más práticas, ele começou a trabalhar em um bug no sistema contábil, que tem alta prioridade e urgência, por estar relacionado ao faturamento. Os usuários podem fazer upload de arquivos CSV no servidor com informações sobre seus gastos, e o sistema resumiu os valores por categoria e criou relatórios de cobrança. No entanto, em algum lugar interno, ocorreu um erro de arredondamento, levando em alguns casos importantes de fronteira a valores incorretos.

Olaf estudou mais do que seus colegas, mas nenhum treinamento é abrangente. Ele rapidamente conseguiu determinar que se tratava de um erro matemático com um ponto flutuante. Como os números decimais não podem ser representados em forma binária com precisão total, em casos de contorno, ocorreram erros de cálculo. Ele começou a procurar as maneiras certas de lidar com valores decimais em PHP. Diferentemente do Node ou C #, as bibliotecas externas no PHP são bastante difíceis de conectar, porque essa linguagem não possui suporte interno para gerenciamento de pacotes. Ele não conseguiu descobrir como adicionar uma biblioteca capaz de executar corretamente operações matemáticas. Como o software calculava apenas as somas, Olaf decidiu usar a matemática inteira: leia o valor, elimine o ponto decimal (para que o valor de $ 10,50 fosse representado como 1050), execute os cálculos e adicione o ponto decimal novamente quando exibido.

Outro júnior gostou da ideia. O desenvolvedor sênior o aprovou, mas o chefe recusou categoricamente a oferta. Como ele argumentou por isso? “Este não é um erro de ponto flutuante. Ele surge devido à fraca digitação do PHP, o programa tenta somar os valores como strings, não como números ".

(Para quem está curioso: o PHP não usa o operador + para concatenar strings. Em vez disso, usa o ".". O resultado de "hello " . "world" será "hello world" .)

Como resultado, o desenvolvedor sênior implementou esta solução: para separar a parte inteira da fracionária, para que US $ 10,50 se transformasse em US $ 10,00 e US $ 0,50 e, em seguida, resuma cada parte separadamente.

Olaf não se demorou, esperando que eles descobrissem que o bug ainda estava no lugar, porque o programa ainda processava a parte fracionária com centavos como um número de ponto flutuante. Ele encontrou um emprego melhor com uma linguagem melhor e deixou a empresa.

imagem

Quinta história: "Segurança calculada"


[ Original ]

No final dos anos 80, Karl trabalhou por algum tempo em uma empresa de desenvolvimento de software que lidava com aviônicos e sistemas de posicionamento global para clientes civis e militares. Nos negócios, ele costumava visitar a Schlockdeed Corp, um cliente com contrato para desenvolver uma nova geração de caças para o Exército dos EUA. Devido ao estrito sigilo de seu trabalho, era muito importante garantir a segurança.

Cada vez que Carl entrava ou saía da empresa, ele precisava passar pelo departamento de segurança. Lá, ele checou cuidadosamente sua pasta, jaqueta, lancheira e quase tudo, exceto um estudo completo das cáries. Apesar das meticulosas checagens diárias em Schlockdeed, algumas de suas "medidas de segurança" chegaram ao absurdo.

Nesta era de transmissão de informações por meio do disquete , os programadores costumavam levar consigo para o trabalho e levavam caixas com disquetes. Schlockdeed , , . « ». , .

, HP-41CX. , , . HP-41CX .

: «, . ». . 41CX - ? , ? «, CIO. », — .

, , , «» . , (Chief Information Officer) . , 80-. , Calculator Inspection Officer.

«, », — , . HP-41CX. : « . , , . , !» , .

, . . , . AC (Approved Calculator), . HP-41CX, , Schlockdeed . , , « » -.

Source: https://habr.com/ru/post/pt442222/


All Articles