Veja o título, mas estou perguntando de uma perspectiva técnica, não
Leve minha sobrinha virgem de 40 anos para um encontro ou você está demitido.
Veja o título, mas estou perguntando de uma perspectiva técnica, não
Leve minha sobrinha virgem de 40 anos para um encontro ou você está demitido.
Respostas:
Para comercializar o thriller de ficção científica de Neal Stephenson, Snow Crash, me pediram para escrever um vírus de computador "benigno". "Benignamente" fingiria assumir o controle do computador do usuário e substituir a tela por neve, também conhecida como "queda de neve". Depois de um minuto ou mais de neve, a neve desapareceria e seria substituída por uma propaganda do livro. Isso seria "benigno", você vê. O vírus se espalharia por meios normais, mas ninguém se importaria, porque, depois de assumir o controle do computador, "você teria um anúncio divertido e ficaria aliviado por nada de ruim acontecer ao seu computador".
Foi-me dito para fazer isso em uma grande corporação mundial. Eu tive que escrever um memorando explicando todas as leis que quebrariam e todas as 17 coisas ruins que poderiam acontecer se elas realmente me fizessem implementar isso.
"Essa DLL que você escreveu tem apenas 17kb. Você pode adicionar algum código para aumentá-lo? O cliente está nos pagando muito dinheiro e queremos que ele obtenha o valor do seu dinheiro".
Use o Visual SourceSafe.
"Você conhece esse enorme programa Cobol, de 20 anos, que contém pilhas de regras de negócios codificadas que mais ou menos definem nossa empresa? Você se importaria de convertê-lo em .NET?"
Caramba.
Vamos viver em poucas semanas.
Me deseje sorte..
Meu irmão e eu estávamos trabalhando em um site pesado de multimídia para uma estrela do rock muito famosa há muitos anos.
Quando o cliente viu o site, ele notou alguns artefatos de compactação em alguns dos JPEGs e perguntou o que havia de errado com eles. Explicamos que as imagens precisam de compactação para fins de largura de banda e que as imagens foram compactadas atualmente com cerca de 80% de qualidade. Ele ficou ofendido e disse algo para o efeito de
Não cheguei aonde estou hoje fazendo 80%, defina-o como 100%.
Tentamos explicar como isso afetaria os usuários, mas ele não aceitaria nada disso. Isso resultou no site mais lento do mundo virtual de todos os tempos. Isso realmente aconteceu .
Precisamos atrasar o lançamento do site em duas semanas, porque Mercury está em retrógrado e é um momento ruim para começar coisas novas.
Obviamente, depois de ler uma revista de negócios em um avião sobre como XML era a nova tecnologia quente (em 2002), um de nossos executivos me perguntou se nosso aplicativo usava XML; quando eu disse que não, ele me perguntou se poderíamos adicioná-lo.
Agora, não estou falando de um recurso para importar / exportar arquivos no formato XML, ele simplesmente queria que ele fizesse parte da arquitetura por nenhuma outra razão que não fosse popular no momento e daria credibilidade ao nosso aplicativo.
"No momento, é necessário que os nomes de usuário sejam únicos e as senhas não. Podemos fazer o contrário?"
Há cerca de 7 anos, trabalhei em uma loja de software sob medida que decidiu vender um de seus produtos. Era um conjunto de operações de ponta a ponta para alguns setores. Bem, esse setor não era conhecido por ser super tecnológico, então, de alguma forma, acabamos fornecendo suporte técnico de terceiros para seus servidores e infraestrutura de TI, em vez de utilizá-lo para consultores de TI independentes de pequenas empresas.
Um dia, o servidor de um cliente encontrou corrupção de disco. O servidor que os vendemos foi configurado com um controlador RAID Adaptec, configurado para um espelho RAID 1. O banco de dados de aplicativos deles era brinde. Eles não realizavam backups há meses. Os backups que eles executaram eram inutilizáveis. Eles acabaram perdendo 8 meses de dados. Eles contrataram um consultor de TI para lidar com esse trabalho investigativo.
As chamadas telefônicas se seguiram, e o gerente de vendas (conhecido por prometer recursos impossíveis) aparentemente disse a eles que isso seria resolvido e a escreveu em um contrato.
O gerente de vendas prometeu ao cliente que garantiríamos que o banco de dados do aplicativo e quaisquer outros arquivos relacionados ao aplicativo nunca fossem replicados pelos controladores RAID se os arquivos fossem considerados corrompidos. Nenhuma configuração deve ser necessária também. Sim. Nos disseram para entregar essa funcionalidade em duas semanas, ou o cliente nos despediria.
Então, o gerente do programa - que tinha alguns produtos de CRM para grandes empresas e outros sucessos sérios no desenvolvimento - e eu tive uma reunião com o COO e o gerente de vendas. O gerente do programa estava detalhando quão insano, impossível e insanamente impossível isso era. O gerente de vendas (formação militar) simplesmente gritaria na cara dele (literalmente!): "Eu não me importo! Quão difícil pode ser fazer com que o RAID não seja RAID ?! Seus dados ficariam bem na outra unidade se o A coisa do RAID não tinha estragado tudo! "
No final dessa reunião, o gerente do programa sai com um aviso de zero dia. Então agora eu estava encarregado disso. Na semana seguinte, solicitei à Adaptec e à LSI Logic o fornecimento de um engenheiro para uma teleconferência, simplesmente para rir da cara do gerente de vendas.
Por fim, eles obedeceram e sustentaram o fim da barganha. E eles entraram em detalhes como isso era ridiculamente inviável. O cara da LSI era particularmente duro - ele não cobria nada.
Não precisei implementar o recurso. Um que eu precisei implementar foi um esquema de segurança personalizado solicitado por um cliente, que permitiria alternar qualquer controle do aplicativo - controle por controle - como visível, desativado, ativado, somente leitura ou leitura / gravação . Em teoria, havia 146.000 combinações. E se você errar acidentalmente, digamos ... desativando um grupo de controle, você terá efeitos colaterais inadvertidos. Escusado será dizer que, quando recebi o ultimato que precisava ser implementado, também saí com um aviso de zero dia.
+1
para "saia com aviso de zero dia", porque às vezes você só precisa sair, e algumas pessoas nunca entendem isso e continuam confusas.
Eles me pediram para pesquisar um produto comercial que pudesse encontrar e corrigir erros de código-fonte automaticamente.
Ainda pesquisando ... desde 2001 :).
Uma vez eu tive uma especificação de cliente que literalmente pedia código capaz de viajar para trás no tempo.
Meu empregador coletou dados para o cliente e os entregávamos no formato de arquivo X em intervalos de dez minutos entre 9h e 17h, exceto a entrega final, que estava no formato Y (apenas X com rodapé diferente). Eu fiz exatamente isso ... e eles enlouqueceram. Estávamos coletando dados de baixo volume, e realmente só tinha um ou dois pontos de dados para entregar em um determinado dia.
"PARE DE NOS ENVIAR COM ARQUIVOS VAZIOS !!!" eles choraram. "CINCO K CADA DEZ MINUTOS ENLOGULAM AS NOSSAS BANDTUBES!"
OK. Portanto, meu código era verificado a cada dez minutos e só era entregue se havia algo a ser entregue. Justo.
"MAS O ÚLTIMO ARQUIVO DEVE ESTAR EM FORMATO Y !!!" eles gritaram. "A TECNOLOGIA MODERNA CONFUSA E IRRITA-NOS! CORRECIONE-A OU ACABAREMOS COM UM FÊMUROS DE MASTODON! *"
(* - É possível que eu esteja me lembrando de partes da conversa.)
"Então, só entregarei o arquivo se houver novos dados a serem entregues".
"SIM."
"E a entrega final do dia deve ter um formato de arquivo diferente".
"SIM."
"Exceto que não tenho como saber qual arquivo será o último do dia até o final do dia."
"SIM."
"Portanto, a única maneira de implementar isso é escrever um código que retrocede no final do dia para refazer o formato do que acabou sendo a entrega final".
"VOCÊ PODE RELATAR PONTOS DE ESPORTE? VOLTAMOS AO FUTURO II. BIFF TANNEN NOS FAZ FELIZ".
Recusei, em parte porque violar a causalidade é uma prática antiética de programação, em parte porque o CPAN.org não tinha um módulo que me permitisse fazê-lo. (Eu verifiquei.) No final, eles me permitiram enviar um arquivo no formato Y no final do dia, independentemente de ter ou não dados reais. Tenho certeza de que a largura de banda deles sobreviveu ao sucesso.
+1
pois "violar a causalidade é uma prática de programação antiética". Agora há uma regra que precisa de mais atenção.
Sem nenhuma causa discernível, fui levado a uma reunião privada e me disseram para não verificar se meu computador estava sendo monitorado - inclusive, nunca verificar meu gerenciador de tarefas por qualquer motivo. Perguntei se eles estavam monitorando meu computador e me disseram (aproximadamente) "isso é apenas uma coisa preventiva - você sabe, nosso advogado nos disse para contar aos funcionários sobre isso - mas você sabe, não podemos dizer realmente - - mas não estou monitorando agora. "
(cutucam, acho que eles estavam monitorando meu computador, mas não enquanto me diziam para não procurar nenhum programa de monitoramento. De fato, algumas semanas depois, cheguei mais cedo e literalmente vi o mouse movendo-se pela tela como se estivesse remoto - então olhei pela janela do CEO e vi-o remotamente clicando em meu computador no laptop.)
Certa vez, tive uma longa "discussão" com um chefe de cabelos pontudos que insistia em que pudéssemos armazenar um 2 em um tipo de dados pouco porque era "apenas um dígito".
A coisa mais estúpida que me pediram para fazer é provavelmente a reescrita inicial de um projeto muito grande. Eram cerca de 350 mil linhas, todas em C (com um pouco de perl misturado para scripts 'auxiliares') e funcionavam bem, independentemente do que os clientes fizessem.
Quase um ano depois, tivemos:
Basicamente, não realizamos nada que a refatoração sensata não pudesse ter realizado. Mas meu chefe ficou feliz, nos livramos dos scripts auxiliares.
Considero o desperdício de tempo mais flagrante e o código existente que eu já vi.
Cliente: Estamos usando seu software de banco de dados para um par de anos, desenvolvendo as nossas próprias aplicações com ele, e chamá-lo de vez em quando para obter ajuda.
Eu: Sim, gostamos de fazer negócios com você.
Cliente: Sim. Toda vez que ligamos, você nos diz como usar um novo recurso, ou nos ajuda a depurar nosso uso, ou fornece uma solução alternativa para algum problema.
Eu: Claro, estamos sempre felizes em ajudar.
Cliente: Ocasionalmente, seu produto possui um bug real e sua empresa o corrige e nos fornece uma atualização de software.
Eu: Nós fazemos o nosso melhor.
Cliente: Bem, o que precisamos de você agora é uma garantia de que não teremos mais problemas.
Me: . . .
Foi-me pedido que escrevesse uma apresentação do nosso software para um grande cliente em potencial multinacional que usássemos a técnica de codificação "spaghetti code".
Claro, estamos na Itália ... parece bom.
Alterando minha sintaxe, destacando as cores para corresponder às usadas no sistema de controle de versão.
Vamos ver:
Escreva programas em C ++
Você pode pegar este relatório de 10 páginas que eu pedi para você preparar como um documento do Word e transformá-lo em uma apresentação em powerpoint, porque eu sou realmente um pensador visual e realmente não vou ler o relatório escrito que eu pedi para você fazer?
Ok, quero que você escaneie esta foto de uma casa. Quando eu voltar, você poderá me mostrar a parte de trás dela.
"Não gosto da maneira como esse banco de dados Oracle funciona. Por que não escrevemos nosso próprio banco de dados?"
(É certo que isso foi há mais de 15 anos, mas ainda assim!)
Me pediram para carregar artigos do site de um concorrente dentro de um iframe que estaria dentro da capa do nosso site, fazendo parecer que ele veio de nós.
Para mim, o mais louco (e possivelmente o mais engraçado) foi
Você vê esses 10 milhões de linhas de código em (tecnologia da web desatualizada)? Escreva um compilador para convertê-lo em um site Asp.net funcional.
Ele nunca cuspiu uma versão de trabalho (é claro, tentei dizer a eles que era impraticável), mas era divertido de qualquer maneira.
Uma das principais características de um aplicativo desenvolvido por nossa empresa foi a capacidade de pesquisar grandes quantidades de documentos pelo texto completo do documento. Um concorrente fez a seguinte reivindicação em uma apresentação de marketing para um de nossos clientes,
Nossa tecnologia de pesquisa é superior porque não apenas pesquisa o texto dos documentos, mas também busca os 'bits e bytes' do arquivo real em formato binário.
Eles deram um exemplo ridículo de como as representações ascii decimais das palavras "bota" e "barco" eram muito menos semelhantes às mesmas palavras na forma binária, quando você comparou os dígitos numéricos reais na representação. Portanto, a pesquisa com base nos zeros e zeros refletiu com mais precisão a similaridade visual dessas duas palavras e, portanto, melhorou a recuperação.
Naturalmente, fui encarregado de pesquisar essa técnica, que suponho que foi o resultado de um cara de marketing entender completamente um programador em algum lugar e elaborar uma resposta que poderíamos incluir em nossa proposta.
Você pode escrever um sistema simples de entrada e faturamento de tempo para o nosso novo escritório no exterior que usa um idioma, moeda e leis tributárias diferentes?
Pequena equipe de programadores, o chefe quer que façamos um sistema de reserva de bilhetes para uma pequena companhia aérea (em um prazo muito curto, é claro). A equipe diz:
- como você pode imaginar, precisaremos de alguns testadores para este projeto
Chefe diz:
- não se preocupe, aprenda com a indústria automobilística. Eles lembram carros de tempos em tempos: os usuários fazem os testes.
Eu fazia parte de uma equipe de suporte de mainframe que fazia turnos com outras equipes de suporte em um data center. Após o turno, normalmente tínhamos um briefing com os gerentes e a equipe do próximo turno. Um dia, nosso novo diretor apareceu e fez a pergunta: "Por que a carga média da CPU durante o seu turno foi de apenas 72%, enquanto o turno anterior mostra quase 95%? Acho que se nos esforçarmos bastante, poderemos atingir 100% da carga da CPU! "
Cerca de 12 anos atrás, quando eu estava na faculdade, trabalhei em um aplicativo de modelagem de dados para Windows. O projeto estava quase completo após cerca de 60.000 linhas de código Win32, você sabe, código direcionado à plataforma Windows. Em seguida, o cliente disse que o aplicativo também precisa ser executado "na web". Ela teve dificuldade em entender como essa mudança de "pequeno pequeno" requisito poderia ter um impacto tão grande no projeto. Comecei do zero em Java, mas acabei saindo do projeto antes que ele terminasse.
Eu estava trabalhando em um grande projeto em 1996, onde estávamos marcando eventos esportivos ao vivo. Essa conversa aconteceu:
Chefe: Vá ao local do próximo evento.
Eu: O que você precisa que eu faça.
Chefe: Esteja lá apenas por precaução.
Eu: Apenas no caso de quê?
Chefe: Caso o líder técnico o perca. Ele está estressado demais e eu não sei o que ele pode fazer.
Eu: E se ele perder, o que você quer que eu faça?
Chefe: Apenas tire-o de lá para que todos possam continuar trabalhando. Eu não me importo como você faz isso.