
Costumo criticar tecnologias que parecem erradas para mim e, em troca, recebo não apenas argumentos, mas também maldade, ressentimento e até mesmo a cara.
As injeções endereçadas à tecnologia são desenvolvidas pelos desenvolvedores às suas próprias custas. O culto à ferramenta é uma coisa muito estranha que não pode ser explicada logicamente. Alguns dizem que todo mundo tem um culto, porque o pensamento está intimamente entrelaçado com o latido. Outros dizem que é uma doença juvenil - você escreveu algo pela primeira vez, por prazer, que achou que seu latido era um milagre de Deus.
Fosse o que fosse, nunca entendi esse lixo.
Os defensores dos cultos me parecem idiotas intransponíveis. E eu sempre tento entender como os burros se tornaram burros e por que não me tornei burro. Começou a pensar e bam! - Eu percebi que sim. Sou um cultista burro que elogia o F #. E é claro que há uma história por trás disso.
Comecei minha carreira como C # dev. Raw, em seguida, Xamarin, desenvolvimento para android. Os primeiros passos do primeiro emprego foram cheios de dor. Só eu fiz o aplicativo usando screenshots e gifs da versão iOS. Tudo deu certo uma vez, houve muitos problemas e o único feedback que recebi foi "por que não gostar da foto?". Foi um pesadelo, e eu saí rapidamente.
Ele estudou em casa por seis meses, depois conseguiu um emprego em uma grande equipe. Tudo estava lá como nas pessoas - a equipe, mentores, exames, padrões, visualizações de código, interface estrita, os mais altos requisitos de qualidade, legibilidade e desempenho do código. Em uma palavra - uma abordagem adulta. Definitivamente, decidi por mim mesmo - é exatamente isso que precisa ser feito. Mas acabou que esse pesadelo é ainda pior.
Por mais de um ano, formamos uma equipe inteira de um módulo para uma ferramenta que trabalha com ferramentas projetadas para desenvolver ferramentas. Talvez os mesmos que precisamos para fazer o módulo. Todos os dias éramos obrigados a ligar para índios ou americanos, e não está claro o que informar.
Em algum momento, notei que estava fazendo menos e menos, mas nada estava mudando. Em inglês quebrado, eu sinceramente menti: “ol passado vik ay serch por insetos. Steele conhece sax. Continente de Ville »
"Ok Phil, parece ótimo", disse no exterior.
Certa vez, em um ataque de vergonha e desespero por minha inutilidade, fui até meus superiores e pedi que eu fosse demitida, mas por algum motivo eles aumentaram meu salário.
Sobre isso eu já disse . Eu não era engraçado nem alegre - era um surto suicida, como se o mundo da inutilidade tivesse derrotado o mundo da lógica.
Uma estranha contradição, mas ao mesmo tempo por tédio e super ambiciosidade, decidi interpretar um desenvolvedor bacana em casa. Muitas idéias sempre estiveram na minha cabeça como melhorar o mundo e sua carteira com a ajuda de projetos de software. Eu fiz tudo certo. TK, arquitetura, requisitos de sistema, projeto em VSTS. Tudo de uma maneira adulta, assim como as corporações.
Nikher não funcionou.
Decidido - a ideia é uma merda. O código do lixo, tomo uma nova idéia, desisto, tudo se repete várias vezes. Eu digo aos meus colegas, eles estão perplexos. Como assim? Afinal, faço tudo exatamente igual àqueles que já pegaram sua peça.
Uma pessoa com minha auto-estima geralmente é mais fácil de viver do que outras, mas custa muito a pagar. Você precisa de auto-engano de alta qualidade para tolerar suas falhas. E eu disse a mim mesmo: qualquer desenvolvedor pode fazer qualquer coisa. A questão toda é como isso será feito. E meus requisitos para esse "como" são muito altos. Eles não são adequados para "startups" domésticas e não são dignos de tarefas comerciais inúteis. O seguinte pensamento: "Não estou pronto para abandonar meus padrões de qualidade". Mesmo se você precisar fazer um aplicativo que peida o tapu na tela, eu o tornarei da melhor qualidade e consideração possível.
Como resultado, organizei um culto local de negócios de carga em casa. Ele trouxe rituais, processos, ordens, mas não conteúdo. Acabei de interpretar um desenvolvedor de negócios sem negócios, como um papua que cegou uma pista e torres de palha, e agora ele espera que pássaros de ferro fiquem ali, como pessoas estranhas em uma ilha vizinha.
Escrevi montes incríveis de códigos formais que não me aproximaram mais do resultado, mas, pelo contrário, passei várias vezes. Minha carreira é, caramba, uma história de fracassos e decepções. Cuspi em tudo, acabei comigo mesmo e apenas assisti a programas de TV no trabalho, bebi 16 xícaras de café e fumei por meio dia.
Tendo chegado ao fundo, absolutamente por acidente, li um artigo sobre Habré sobre F #, tentei e algo assim: “Hum! Nada mal. " Meu empregador me pagou com prazer um mês de treinamento (ele, no entanto, não sabe disso).
Não foi difícil aprender o F #, ele tem o mesmo tempo de execução que o C # e apliquei a abordagem funcional à programação todos os dias no TypeScript. E então percebi que posso transferir qualquer um dos meus projetos para o F #. Vamos deixar minha habilidade técnica fora dos colchetes, porque habilidade é uma coisa relativa. Nas equipes em que trabalho agora, sou legal e na equipe de, digamos, desenvolvedores de F #, eu poderia reivindicar, no máximo, a posição de assistente de limpeza.
Mas no meu nível eu já era capaz de resolver problemas. Embora no fundo eu soubesse bem - não vou decidir nada. Apenas vire meu cérebro e continue jogando o conhecimento no lixo. Perdi completamente a fé no desenvolvimento.
E um dia eu decidi desistir de toda essa merda. Era inverno, frio e escuro. Saí do escritório na rua, entrei em um carrinho de mão - não vai começar. Finalmente o motor chacoalhou. Não sei o que aconteceu antes - ou senti o cheiro de queimação ou vi fumaça. Então uma chama irrompeu debaixo do capô. Outro segundo, e eu, como um psicopata, corro pelo estacionamento e grito para que todos afastem meus carros dos meus.
Após cinco minutos de pânico e caos, havia apenas um velho pedaço de merda queimada e um vidyushka de todos os tipos de tolos que então ganharam milhares de visualizações em locais "escutados". Menos 30, estou na jaqueta de outono de um homem que estava indo para casa em um carro quente. Recheado até o fim, completamente quebrado moralmente. Sem dinheiro de táxi, transporte público para celulares. Voltei para casa a pé, dez quilômetros. Em casa, você precisa ajudar sua esposa e filho, comer, colocá-los na cama, fazer mil coisas. Mas a noite chega, as coisas perturbadoras acabam, desculpas também, e eu fico sozinho com decepções e insônia - sou bom por nada, nada vai dar certo.
Nesta pior noite da minha vida, ainda não esquentando, decidi me dar uma última tentativa.

Sentei-me e decidi escrever um pequeno bioma digital em F #, onde as unidades de aprendizado de máquina interagem entre si, desenvolvem-se, distorcendo os parâmetros e ver no que eles transformam este mundo.
E sim, talvez então eu dirigisse um pouco de mente.
Normalmente, uso uma mistura de uma abordagem de design de cima para baixo e de baixo para cima. Descrevo a solução em termos gerais usando pseudocódigo. Então começo a implementar o mais importante dos detalhes, que, como módulos independentes, faço o oposto. Dos detalhes ao geral.
Já sem pseudo-código, implementei dois módulos grandes e verifico se isso funcionaria. Normalmente, não funciona, e começo a usar iterações, repetindo esse processo do começo ao fim até o início. Mas, mais frequentemente, apenas faço iterações no quinto ou sexto.
Com o F #, apliquei a mesma abordagem. Eu tive uma visão do projeto, em termos gerais. Na cabeça, tijolo por tijolo, a realização está sendo construída. Você pensa sobre um caso após o outro e, em algum momento, entende - tudo, já sabe como codificá-lo. E então você se senta para codificar e entende que não. Os pensamentos não são transferidos para YP, embora lhe pareça que você pensa como se estivesse nele. Eu tenho isso constantemente.
Mas acabou de maneira diferente. Criei um arquivo txt no VSCode e escrevi um pseudocódigo para uma função que descreve o ciclo de vida do meu aplicativo. E percebi que meu pseudo-código é F # válido. Nada precisa ser mudado, acabei de escrever a principal função do projeto. Ok, alterei a extensão do arquivo e a adicionei a uma solução limpa. Aqui está a função do ciclo de vida. Ele pega o estado atual do mundo, o que o processa (na verdade, o próprio mundo) e cospe o estado atualizado, o que transforma o estado em um conjunto de parâmetros para a IA e vice-versa, e a própria IA, que recebe seus parâmetros, cospe a decisão.
Então tudo é simples. Eles pegaram o estado, transformaram-no em parâmetros de IA, alimentaram as funções da IA, transformaram o resultado de volta no estado, por sua vez foram atribuídos à função de jogo e o resultado foi atribuído à mesma função de ciclo de vida. Recursividade divina, algoritmo simples, código bonito, todo GoF pronto para uso. Resta implementar todas essas funções.
Mas o ponto aqui é que não preciso mais pensar em arquitetura. Eu escrevo o que os sharpe-javists chamam de termo legal Inversão do contêiner de controle - uma função que pega uma função do ciclo de vida e a joga nos parâmetros de função dos meus módulos (II, Game). O VScode o sublinha em vermelho, porque ainda não existem módulos ou funções. Mas eu entendi o principal - assim que os sublinhados vermelhos desaparecem e o projeto pode ser construído, a solução está pronta.
Eu apenas o pego e implemento esses módulos um de cada vez, trabalhando da mesma maneira. O projeto inteiro é cinco arquivos. Arquivo AI - 500 linhas, muitas, mas idiomático. A vantagem da abordagem é que eu consegui escrever uma função de ciclo de vida útil - o coração do meu aplicativo - sem descrever mais nada.
Toda a arquitetura possui 10 linhas de código escritas em um minuto. Nenhuma interface, fábricas abstratas, Iocs, todas essas DefaultInterfaceNameClass e outras porcarias que eu preciso fazer em C # antes mesmo de entender o que quero fazer. Você pega e escreve um código idiota que apenas resolve o problema e o obtém ainda melhor do que a sua empresa que sofre com esses sharps java.
Eu fiz isso simplesmente direcionando meus pensamentos para o editor, como se estivesse pensando em F #. Nos lugares em que eu escreveria um plano de trabalho em C # nos comentários do código, descobri as funções de trabalho. Em vez de descrever dezenas e centenas de interfaces, um pequeno arquivo com um modelo de domínio do aplicativo. Construa-o. Tem uma solução funcional. Pela noite. Com um bom código, que mais tarde não teve medo de aparecer no cachorro. Tão simples.
De manhã, escrevi para o trabalho que estava doente e mergulhei de cabeça no projeto por uma semana, até que percebi que minha idéia foi realizada por um longo tempo e ninguém precisava dela. Mas recuperei minha fé, e isso foi a principal coisa.

Não sei qual é o problema aqui - é a tecnologia mais impressionante de F #, ou me convém muito bem ou foi criada especificamente para essas tarefas - qual é a diferença? O importante é que naquele momento eu estava me afogando e precisava de uma bóia de vida. A vida me jogou F # e eu saí. Agora, isso não é apenas uma tecnologia sem alma para mim - é um enorme escopo emocional.
Quando alguém ri de mim, F #: “Tecnologia de natimortos! Um brinquedo para nerds ... ”- Lembro-me imediatamente da escuridão do inverno, de um carro em chamas, de um cigarro congelado nos lábios, de um estado deprimido e de um F # que me tirou dele. Ou seja, eles pareciam cagar minha melhor amiga. Minha reação é óbvia - estou ofendido e com raiva.
Parece estranho do lado de fora, mas se você vivesse aquele dia em vez de mim, reagiria também. Eu acho que é o caso de todos os cultistas de tecnologia. Eles se apaixonaram por seus yapis, porque as circunstâncias em que os conheceram são muito agudos para eles pessoalmente. E aqui vou eu, e cuspo em suas almas. Bem, e quem é um idiota? Eu sou um idiota. Espero que não.
Se alguma coisa, sobre F #
aqui .