{"id":73944,"date":"2020-03-13T02:42:03","date_gmt":"2020-03-12T23:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo"},"modified":"2020-03-13T02:42:03","modified_gmt":"2020-03-12T23:42:03","slug":"retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","title":{"rendered":"Retrospectiva dos obst\u00e1culos. Como uma solu\u00e7\u00e3o feita \u00e0 m\u00e3o se mostrou melhor do que a paga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ol\u00e1! Meu nome \u00e9 Alexey P'yankov, eu sou o programador principal da empresa Sportmaster. Vou ser direto, \"principal\" n\u00e3o significa \"o mais importante de todos os programadores\", n\u00e3o, \u00e9 apenas um t\u00edtulo, uma encantadora tradu\u00e7\u00e3o para \"Senior+\".<\/p>\n<p><\/p>\n<p>Trabalho na Sportmaster desde 2012, e durante esse tempo, a equipe de desenvolvimento fez muitas solu\u00e7\u00f5es que s\u00e3o interessantes do ponto de vista t\u00e9cnico. Mas hoje eu gostaria de falar sobre nosso trabalho, com foco em como pensamos em certas situa\u00e7\u00f5es amb\u00edguas.<\/p>\n<p><\/p>\n<p>Neste artigo, n\u00e3o haver\u00e1 solu\u00e7\u00f5es t\u00e9cnicas concretas (nem nada realmente t\u00e9cnico) que voc\u00ea deva pegar e aplicar em seu projeto. Em vez disso, \u00e9 uma reflex\u00e3o sobre o trabalho realizado. Houve momentos especiais que nos impactaram como equipe - nos unindo, fortalecendo e testando nossa resist\u00eancia. Sobre esses momentos, sobre a atmosfera de trabalho em equipe, sobre nossos trope\u00e7os e v\u00e1rias armadilhas psicol\u00f3gicas que \u00e0s vezes nos impomos, \u00e9 sobre isso que tentarei falar hoje.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Retrospectiva dos obst\u00e1culos. Como uma solu\u00e7\u00e3o feita \u00e0 m\u00e3o se mostrou melhor do que a paga\" src=\"\/wp-content\/uploads\/2020\/03\/1651640dbf2cb45d48e1e046a78c931f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E come\u00e7arei exatamente em 2012.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Entrei em 2012 com o principal objetivo na \u00e9poca - trabalhar em nosso site principal. Naquele tempo, era um \"monstro de Frankenstein\": parte da equipe trabalhava com nosso antigo sistema, que lidava com as cargas de forma n\u00e3o muito eficaz (Bitrix), enquanto outra parte da equipe (onde eu estava inclu\u00eddo) tentava implementar um novo sistema, que foi escolhido pelo crit\u00e9rio \"Como \u00e9 o e-commerce mais caro do mundo, vamos adot\u00e1-lo\". Especialmente \"tentando implementar\" - porque o sistema resistia ferozmente e a cada situa\u00e7\u00e3o em que consegu\u00edamos resolver algo, sempre surgia uma \"surpresa\" em resposta. Trabalhamos muito, mas progredimos na velocidade de uma lesma.<\/p>\n<p><\/p>\n<p>Para mim, a gota d'\u00e1gua foi o conhecimento do c\u00f3digo de um m\u00e9todo nesta \"e-commerce mais cara do mundo\", quando v\u00e1rias horas de trabalho concentrado em um bug complicado resultaram na descoberta de que a causa estava em algum custom-tag que \u00e9 acionado durante a gera\u00e7\u00e3o de HTML em JSP. A tarefa desse custom-tag \u00e9 exibir a soma de certos valores. Isso \u00e9 \u00fatil, j\u00e1 que \u00e9 para isso que os custom-tags servem. Mas a surpresa estava no fato de que, durante isso, certos dados no banco de dados eram alterados, o que afeta o comportamento nas p\u00e1ginas seguintes, e se voc\u00ea pressionar F5 \u2014 a chamada se repetia, isso prejudicava a consist\u00eancia dos dados. Al\u00e9m disso, isso ocorria de tal forma que se manifestava apenas ap\u00f3s v\u00e1rios passos, na terceira p\u00e1gina da sequ\u00eancia. N\u00e3o que eu seja contra ter um \"mestre ninja\" na equipe, que mantenha a aten\u00e7\u00e3o dos colegas com seu c\u00f3digo. Mas assim, na biblioteca do sistema mais caro!<\/p>\n<p><\/p>\n<p>Era uma sexta-feira. E no s\u00e1bado e domingo, meu colega e eu passamos na empresa para entender quais tarefas o neg\u00f3cio imp\u00f5e ao sistema hoje e quais problemas podemos imaginar para daqui a um ano. Assim, como resolver\u00edamos esses problemas se n\u00e3o estiv\u00e9ssemos presos a esta cara e irritante sistema.<\/p>\n<p><\/p>\n<p>Dito e feito. Fizemos um piloto, no qual fundamentamos o desenvolvimento do novo site da Sportmaster. Muitas dessas ideias foram adotadas e agora est\u00e3o sendo implementadas ativamente no site.<\/p>\n<p><\/p>\n<h2 id=\"etapy-pilota-i-vremennye-ramki\">Etapas do piloto e prazos<\/h2>\n<p><\/p>\n<p><strong>2 dias.<\/strong> Criamos um microprot\u00f3tipo \u2014 durante o fim de semana, transferimos nosso banco de dados para o ElasticSearch e implementamos a busca facetada. Voil\u00e0! Nesse sistema comprado, essa configura\u00e7\u00e3o levou 2 semanas. Aqui \u2014 literalmente algumas horas! E ainda funciona mais r\u00e1pido. De fato, a velocidade \u00e9 incompar\u00e1vel.<\/p>\n<p><\/p>\n<p><strong>2 semanas.<\/strong> Estamos \"desenvolvendo\" um prot\u00f3tipo, adicionando funcionalidade para uma entrega personalizada adequada. <\/p>\n<p><\/p>\n<p>Por exemplo, se o usu\u00e1rio tem v\u00e1rios descontos e promo\u00e7\u00f5es que s\u00e3o v\u00e1lidos apenas para ele \u2014 ent\u00e3o, nos resultados da busca de produtos, \u00e9 necess\u00e1rio exibir exatamente o pre\u00e7o que pode ser obtido utilizando todos os benef\u00edcios dispon\u00edveis da maneira mais vantajosa.<\/p>\n<p><\/p>\n<p>As promo\u00e7\u00f5es n\u00e3o s\u00e3o t\u00e3o simples. Por exemplo, comprei esquis e agora tenho 40% de desconto na touca, mas isso cancela o desconto de boas-vindas de 10% em todo o pedido. Sim, isso \u00e9 um caso real \ud83d\ude42 E para configurar essa promo\u00e7\u00e3o no sistema de compras, pagamos por 3 consultas com o fornecedor, das quais obtivemos muitos exemplos de como fazer outras promo\u00e7\u00f5es. Muito diplom\u00e1tico e, considerando o custo das consultas, foi uma boa economia.<\/p>\n<p><\/p>\n<p>Mostramos uma demonstra\u00e7\u00e3o detalhada para o neg\u00f3cio. Prometemos montar rapidamente um piloto e come\u00e7amos a trabalhar.<\/p>\n<p><\/p>\n<p><strong>2 meses.<\/strong> O projeto piloto \u00e9 feito como um site real com busca em cat\u00e1logo. Busca com facetas, resultados de busca com descontos pessoais, o piloto parece quase com o site do Sportmaster, e os produtos que subimos s\u00e3o os mesmos. Um verdadeiro sucesso! <\/p>\n<p><\/p>\n<p>Adicionamos \"Rhetoric:100\" do nosso chefe de departamento e a apresenta\u00e7\u00e3o para o neg\u00f3cio \u00e9 um sucesso! Recebemos carta branca para desenvolver a plataforma de eCommerce n\u00f3s mesmos.<\/p>\n<p><\/p>\n<p>E isso significa, fiquem atentos, pessoal, a equipe, fiquem atentos, pessoal, ao or\u00e7amento. Muito legal!<\/p>\n<p><\/p>\n<p><strong>2 anos.<\/strong> Coloca\u00e7\u00e3o do site em produ\u00e7\u00e3o. Sim, demorou. Tudo o que sab\u00edamos fazer, testamos apenas em escala de prot\u00f3tipo. Duas pessoas facilmente formam uma equipe coesa. E as tarefas que \"cumpr\u00edamos\" eram, na verdade, pequenas melhorias no \"Hello World\" com novas tecnologias. Ger\u00e1vamos novas hip\u00f3teses facilmente, test\u00e1vamos rapidamente, n\u00e3o nos apeg\u00e1vamos e, portanto, as \"elimin\u00e1vamos\" sem remorsos. Quando chegamos a 10 pessoas, extrapolamos nossa velocidade de trabalho para todos os outros. E prometemos prazos de entrega que eram iguais \u00e0 nossa vis\u00e3o do que seria ideal multiplicado pelo nosso entusiasmo.<\/p>\n<p><\/p>\n<p>Situa\u00e7\u00e3o familiar? \ud83d\ude42<\/p>\n<p><\/p>\n<p>Ent\u00e3o, voc\u00eas j\u00e1 sabem o que vai acontecer a seguir?<\/p>\n<p><\/p>\n<h2 id=\"lovushka-1-ekstrapolyator-krutysh\">Armadilha n\u00ba 1. \"Extrapolador legal\"<\/h2>\n<p><\/p>\n<p>\u00c9 claro que novas tecnologias parecem incr\u00edveis em apresenta\u00e7\u00f5es e se saem bem em casos do tipo \"Hello World\". Mas a realidade geralmente est\u00e1 um pouco mais distante disso.<\/p>\n<p><\/p>\n<p>Ent\u00e3o. Pegamos a biblioteca, escrevemos um monte de c\u00f3digo de aplica\u00e7\u00e3o. Consideramos os testes unit\u00e1rios um fardo (somos legais e trabalhamos em hipers\u00f4nico aqui, c\u00f3digo moderno e tal). Mudamos e aprimoramos a API em tempo real \u2014 que testes, s\u00e9rio. E tudo isso sob a bandeira de \"otimizamos muito o processo de desenvolvimento\" (sim, \u00e9 assustador at\u00e9 descrev\u00ea-lo agora).<\/p>\n<p><\/p>\n<p>E ent\u00e3o tudo \u00e9 bastante \u00f3bvio.<\/p>\n<p><\/p>\n<p>Estamos lan\u00e7ando uma nova vers\u00e3o no uat. A equipe de neg\u00f3cios est\u00e1 testando tudo com entusiasmo e pressionando os bot\u00f5es. \u00c0s vezes, eles clicam de maneira um tanto criativa \u2014 algumas coisas acabam n\u00e3o funcionando. Aqui, seria bom descobrir o que foi feito para corrigir isso. Mas do outro lado do monitor n\u00e3o est\u00e1 um tester focado, que lhe daria todas as caracter\u00edsticas do ambiente considerando o clima na regi\u00e3o, mas sim um cliente do neg\u00f3cio. Para ele, simplesmente \"n\u00e3o funciona\". Isso significa que ele est\u00e1 insatisfeito. Pergunte a ele \u2014 e ele vai ficar <em>muito<\/em> insatisfeito!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Retrospectiva dos obst\u00e1culos. Como uma solu\u00e7\u00e3o feita \u00e0 m\u00e3o se mostrou melhor do que a paga\" src=\"\/wp-content\/uploads\/2020\/03\/9d980b25fabea5e0a34a428fb9dbb85e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ent\u00e3o, para reproduzir o bug, \u00e9 preciso ir e testar tudo em sequ\u00eancia. Claro, n\u00e3o deixamos nenhuma reclama\u00e7\u00e3o sem resposta e corrigimos tudo. Abandonamos tarefas planejadas, mas est\u00e1vamos \"apagando inc\u00eandios\".<\/p>\n<p><\/p>\n<p>Assim, encontramos o nosso pr\u00f3ximo problema.<\/p>\n<p><\/p>\n<h2 id=\"lovushka-2-stahanovec\">Armadilha n\u00ba 2. \"O estakhanovista\"<\/h2>\n<p><\/p>\n<p>Chegou at\u00e9 voc\u00ea um bug nada agrad\u00e1vel. Voc\u00ea come\u00e7a a investigar. N\u00e3o d\u00e1 certo \u2014 raiva \u2014 uma nova tentativa de descobrir \u2014 mais uma decep\u00e7\u00e3o \u2014 voc\u00ea verifica tudo o que pode \u2014 ainda n\u00e3o est\u00e1 certo \u2014 pensa que j\u00e1 est\u00e1 velho e que todos t\u00eam filhos e hipoteca \u2014 tenta novamente \u2014 de novo n\u00e3o funciona. Algumas x\u00edcaras de caf\u00e9 depois, e tudo se repete. 12-14 horas de trabalho sem parar \u2014 quase como uma norma. E ent\u00e3o, quando tudo j\u00e1 est\u00e1 no limite \u2014 de repente, uma epifania!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Retrospectiva dos obst\u00e1culos. Como uma solu\u00e7\u00e3o feita \u00e0 m\u00e3o se mostrou melhor do que a paga\" src=\"\/wp-content\/uploads\/2020\/03\/8f66e2ca834ffafd72bde53fd397bcb7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Talvez, de fora, a avalia\u00e7\u00e3o da efic\u00e1cia de um dia assim pare\u00e7a boa e certa. Mas por dentro \u2014 pode variar bastante.<\/p>\n<p><\/p>\n<p>No meu caso, a impress\u00e3o de tal trabalho continha \"Eu sou \u00f3timo, eu sou incr\u00edvel, eu resolvi\". N\u00e3o sempre de maneira consciente, mas inconscientemente \u2014 sempre!<\/p>\n<p><\/p>\n<p>E voc\u00ea acaba se viciando nisso, sem brincadeira. Assim, as m\u00e9tricas internas de sucesso se deslocam do resultado para a quantidade de esfor\u00e7os despendidos e o n\u00edvel de feitos que voc\u00ea alcan\u00e7ou, qu\u00e3o intensamente voc\u00ea sofreu tentando resolver o problema.<\/p>\n<p><\/p>\n<p>Provavelmente, essa \u00e9 a armadilha mais aterrorizante.<\/p>\n<p><\/p>\n<p>A partir daqui, ficar\u00e1 mais f\u00e1cil e divertido \ud83d\ude42<\/p>\n<p><\/p>\n<h2 id=\"lovushka-3-sila-hello-world\">Armadilha n\u00ba 3. \"O poder do Hello world\"<\/h2>\n<p><\/p>\n<p>Nossa pilha de tecnologias naquela \u00e9poca: ElasticSearch, Hazelcast, Pentaho, freemarker (junto com Java, Spring, Tomcat, nginx). O freemarker n\u00e3o fornecia mensagens de erro muito informativas. J\u00e1 o ElasticSearch, Hazelcast e Pentaho precisaram de v\u00e1rias corre\u00e7\u00f5es \u2014 n\u00f3s talentosamente encontr\u00e1vamos situa\u00e7\u00f5es em que eles n\u00e3o funcionavam conforme a documenta\u00e7\u00e3o.<\/p>\n<p><\/p>\n<p>Um in\u00edcio f\u00e1cil e os r\u00e1pidos resultados da utiliza\u00e7\u00e3o de uma nova tecnologia s\u00e3o bons, mas eles podem criar uma euforia que diminui a vigil\u00e2ncia. Porque uma nova tecnologia cont\u00e9m falhas, definitivamente cont\u00e9m falhas. E se ainda n\u00e3o escreveram sobre elas \u2014 alegre-se, voc\u00ea ser\u00e1 o pioneiro que, de qualquer forma, encontrar\u00e1 algo errado e ir\u00e1 buscar no Google ou no SO. Claro, algo \u201cerrado\u201d pode ser encontrado em produtos estabelecidos, mas \u00e9 muito mais f\u00e1cil em novos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Retrospectiva dos obst\u00e1culos. Como uma solu\u00e7\u00e3o feita \u00e0 m\u00e3o se mostrou melhor do que a paga\" src=\"\/wp-content\/uploads\/2020\/03\/86d505a5125b8106503497b72ff7761e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Apesar de todas as dificuldades, conseguimos ir para a produ\u00e7\u00e3o. Sim, com atrasos. Sim, n\u00e3o muito est\u00e1vel. Mas, no geral, sem cat\u00e1strofes.<\/p>\n<p><\/p>\n<p>Portanto, mais uma vez, destacarei as armadilhas nas quais a percep\u00e7\u00e3o saud\u00e1vel do processo de trabalho \u00e9 distorcida.<\/p>\n<p><\/p>\n<ol>\n<li><strong>\u00abExtrapolador imbat\u00edvel\u00bb<\/strong>. Impressionados com os sucessos atuais, seguimos em frente e extrapolamos alegremente a velocidade de desenvolvimento para os projetos futuros.<\/li>\n<li><strong>\u00abTrabajador incans\u00e1vel\u00bb<\/strong>. Trabalhamos arduamente, estamos satisfeitos conosco, mas n\u00e3o percebemos que os problemas que estamos resolvendo s\u00e3o consequ\u00eancias de nossos erros\/pontos fracos\/descuido pessoais. Trabalhos n\u00e3o realizados.<\/li>\n<li><strong>\u00abFor\u00e7a do Hello World\u00bb<\/strong>. Apressamos-nos para implementar em produ\u00e7\u00e3o tudo o que \u00e9 mais novo e interessante.<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"pochemu-vsyo-poluchilos\">Por que tudo deu certo<\/h2>\n<p><\/p>\n<p>Claro, eu n\u00e3o mencionei todos os erros que tivemos durante esse tempo, mas os mais comuns, prov\u00e1veis para projetos de qualquer especificidade. Essa fixa\u00e7\u00e3o de erros ajuda a evit\u00e1-los no futuro.<\/p>\n<p><\/p>\n<p>Um pouco sobre como conseguimos criar essa mini-startup dentro da empresa e convencer o neg\u00f3cio a sair do sistema j\u00e1 adquirido para algo feito sob medida.<\/p>\n<p><\/p>\n<p><strong>Condi\u00e7\u00e3o n\u00ba 0<\/strong>. Um clima saud\u00e1vel na empresa. N\u00e3o se trata apenas de \u201colhos brilhantes\u201d dos funcion\u00e1rios e da comunica\u00e7\u00e3o em condi\u00e7\u00f5es estressantes de coleta de cookies, n\u00e3o. Trata-se de todas as intera\u00e7\u00f5es.<\/p>\n<p><\/p>\n<p><strong>Condi\u00e7\u00e3o n\u00ba 1<\/strong>. Acreditar no que voc\u00ea faz. S\u00e9rio, eu n\u00e3o acho que ter\u00edamos qualquer chance se nos ocup\u00e1ssemos do piloto, sem analisar o sistema comprado \u201cat\u00e9 o parafuso\u201d \u2014 ou seja, recuando e, subconscientemente, sabendo que esse sistema \u00e9 melhor e nos superar\u00e1.<\/p>\n<p><\/p>\n<p>O que fizemos: 1) entendemos o sistema comprado, com ele resolvemos as principais demandas do neg\u00f3cio 2) fizemos uma lista de tarefas que n\u00e3o s\u00f3 existem agora, mas que tamb\u00e9m aparecer\u00e3o em um futuro pr\u00f3ximo 3) escolhemos a solu\u00e7\u00e3o que se encaixa melhor. E ent\u00e3o, nossa avalia\u00e7\u00e3o da solu\u00e7\u00e3o foi uma avalia\u00e7\u00e3o de especialistas.<\/p>\n<p><\/p>\n<p>Eles nos daria alguma coisa se simplesmente f\u00f4ssemos at\u00e9 eles e diss\u00e9ssemos, tipo, \"pessoal, tudo isso \u00e9 uma bobagem, n\u00e3o queremos lidar com isso e decidimos fazer nosso pr\u00f3prio a partir do zero\"? Dificilmente. E a resposta viria de uma forma que ficaria bem marcada \ud83d\ude42<\/p>\n<p><\/p>\n<p><strong>Condi\u00e7\u00e3o n\u00ba 2<\/strong>. O primeiro passo \u00e9 pequeno. Geramos a primeira hip\u00f3tese e verificamos. Pode-se gastar seu pr\u00f3prio tempo para isso. Se voc\u00ea n\u00e3o quer gastar seu tempo \u2014 ent\u00e3o, realmente, n\u00e3o vale a pena se envolver nesse tipo de coisa. E se n\u00e3o quiser verificar uma pequena hip\u00f3tese, mas desejar fazer algo incr\u00edvel de imediato \u2014 mantenha dist\u00e2ncia de tais pessoas!<\/p>\n<p><\/p>\n<p>Tivemos sorte, e a primeira hip\u00f3tese funcionou. Mas isso nem sempre acontece. Por exemplo, em um dos projetos seguintes, quando promovemos a interface administrativa dentro de um piloto semelhante, s\u00f3 o 18\u00ba modelo funcionou. E as 17 primeiras abordagens foram em v\u00e3o. A prop\u00f3sito, na hist\u00f3ria da cria\u00e7\u00e3o da interface, as reviravoltas eram dignas de novelas brasileiras, porque a equipe era composta por rapazes que j\u00e1 eram veteranos, verdadeiros \"experientes no assunto\".<\/p>\n<p><\/p>\n<p><strong>Condi\u00e7\u00e3o n\u00ba 3<\/strong>. Criamos um MVP e buscamos as dores do decisor. Claro, pode haver um horror estampado no rosto dele j\u00e1 pelo fato de que voc\u00ea est\u00e1 apresentando alguma ideia pela trig\u00e9sima vez. Mas, ainda assim, \u00e9 importante mostrar como exatamente resolvemos seus problemas com nosso produto.<\/p>\n<p><\/p>\n<p><strong>Condi\u00e7\u00e3o n\u00ba 4<\/strong>. Rapidinho, fazemos um piloto que parece <em>mais ou menos<\/em> com o resultado final. Fazer tudo de forma absolutamente incr\u00edvel \u00e9 tentador, mas voc\u00ea pode acabar se prendendo ao perfeccionismo, fazendo com que, em vez de um piloto, voc\u00ea queira mostrar uma vers\u00e3o de piloto de um produto j\u00e1 ideal. E isso n\u00e3o existe. Portanto, fa\u00e7a pelo menos algo improvisado.<\/p>\n<p><\/p>\n<p><strong>Condi\u00e7\u00e3o n\u00ba 5<\/strong>. Produto. O projeto cresce, recebe financiamento, e especialistas com vasta experi\u00eancia aparecem.<br \/>\nE se voc\u00ea \u00e9 um t\u00edpico empreendedor de startup, esse \u00e9 o momento certo para sair rapidamente. Porque voar leve nas alturas e sentir uma atmosfera geral de bem-estar se dissipa rapidamente.<\/p>\n<p><\/p>\n<p>O lan\u00e7amento em produ\u00e7\u00e3o \u00e9 um confronto com cargas reais, integra\u00e7\u00e3o com dezenas de sistemas, e ao criar um novo funcionalidade, voc\u00ea ao mesmo tempo atualiza vers\u00f5es antigas no suporte. Todos esses desafios s\u00e3o muito mais s\u00e9rios do que apenas inventar uma ideia e resolver, mesmo que bem, um \u00fanico problema do cliente.<\/p>\n<p><\/p>\n<p>Esses desafios e o crescimento das habilidades ocorrem exatamente nesta fase.<\/p>\n<p><\/p>\n<p>Obrigado por ler. Feliz Novo C\u00f3digo!<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/485088\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443, \u0447\u0442\u043e \u00ab\u0433\u043b\u0430\u0432\u043d\u044b\u0439\u00bb \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442 \u00ab\u0441\u0430\u043c\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0437 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432\u00bb, \u043d\u0435\u0442, \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0442\u0430\u043a\u043e\u0439 \u043e\u0447\u0430\u0440\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u043b\u044f \u00abSenior+&quot;\u00bb. \u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0441 2012 \u0433\u043e\u0434\u0430, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u041d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":73945,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-73944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430 \u0433\u0440\u0430\u0431\u043b\u0435\u0439. \u041a\u0430\u043a \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043a\u0440\u0443\u0447\u0435 \u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-12T23:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-12T23:42:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Retrospectiva das dificuldades. Como uma solu\u00e7\u00e3o constru\u00edda em casa se mostrou melhor que uma paga | ProHoster","description":"Ol\u00e1! Meu nome \u00e9 Alexey P'yankov, sou o programador-chefe da empresa Sportmaster.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430 \u0433\u0440\u0430\u0431\u043b\u0435\u0439. \u041a\u0430\u043a \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043a\u0440\u0443\u0447\u0435 \u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/retrospektiva-grablej-kak-samopisnoe-reshenie-okazalos-kruche-platnogo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-12T23:42:03+00:00","article:modified_time":"2020-03-12T23:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"73944","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:24:23","updated":"2022-10-06 05:35:50","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/73944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=73944"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/73944\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/73945"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=73944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=73944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=73944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}