RE: Medo e ódio em TI

Escrever respostas para artigos é fácil e divertido. Você não precisa se debruçar sobre a estrutura do artigo por horas, basta seguir o plano de outra pessoa e apenas articular claramente seus pensamentos no papel. No entanto, atrevo-me a sugerir que um olhar crítico “do outro lado” sobre as questões levantadas no artigo “ Medo e ódio na TI ” por respeitados eugene_crabs ainda será interessante. Hoje, sou o advogado do diabo, que defende o sistema desumano.

imagem

Ao contrário dele, não uso borlas de senador e tenho alguns anos a menos de experiência em desenvolvimento e não tenho formação especializada, para ser sincero. Mas não tive problemas com um interesse básico no trabalho, e parece-me que o motivo é uma percepção ligeiramente diferente da realidade.
Um artigo para uma ampla gama de leitores.

RE: Complexidade excessiva


Seção Original
Quando trabalhei nas glândulas, gostei muito da propriedade que vejo através de como isso funciona - que bytes se movem, em que área da memória isso acontece e como o compilador manipulou o código. Havia uma sensação de calma e controle. Quando mudei para o desenvolvimento de back-end um pouco mais tarde, ri de inúmeras configurações xml para EJB ou na mesma primavera. Eu saberia o que me espera no futuro. Agora eu simplesmente não entendo (e já estou desesperado de entender) o que está acontecendo dentro do meu apego descomplicado. Um monte de camadas de abstrações, contêineres em contêineres, toneladas de manuais, scripts, ferramentas, versões, arquivos de configuração. Ainda não descobri como o projeto está sendo implantado, no qual trabalho há seis meses. E, claro, você não pode fazer um monólito, pelo menos no primeiro estágio. Divida tudo imediatamente em microsserviços, porque isso é certo (na conferência eles disseram que fazem isso na empresa X). E, é claro, não podemos usar o bom e velho Apache HTTP Client para acessar o serviço que precisamos a cada poucos minutos, porque esse cliente não é assíncrono e não possui um limitador de taxa interno, mecanismo de contrapressão ou outras coisas da moda. À minha pergunta: "Por que tudo isso é necessário para uma carga de 1 solicitação / min?" Recebo apenas uma expressão reprovadora de meus colegas, em cujas testas brilha a inscrição "Aqui você é estúpido".

Um tópico separado é o Sr. Javascript com suas inúmeras estruturas. Sinceramente, não entendo quantas coisas poderiam ser inventadas para uma ferramenta que só precisa desenhar formulários em páginas da Web e, de tempos em tempos, enviar uma solicitação de back-end. Ainda bem que faço o back-end.

No exemplo do frontend (e não apenas), podemos ver claramente como andamos em círculos: vamos executar toda a lógica no lado do servidor -> e agora no lado do cliente -> e agora no servidor novamente e assim por diante ad infinitum. Vamos escrever o front-end e o back-end em um idioma -> e agora vamos em diferentes idiomas -> e vamos novamente em um. Vamos fazer esquemas para formatos de dados - esquemas apenas para veteranos - e não, esquemas são necessários da mesma forma. Um dos meus ajudantes na biblioteca de código-fonte aberto do yaml para o xml, simplesmente porque existem esquemas lá e é ótimo quando você ri de uma grande configuração, e um IDE ciente do XSD pode fazer metade do trabalho para você. O problema a seguir segue do exposto acima.

Claro, é bom manipular sistemas simples. Entendo essa mágica quando você entende como ela funciona nos mínimos detalhes: quando você desce para o nível de montador e código de máquina e quando vai ainda mais fundo - até onde o processador é uma série de portas lógicas.

A situação atual é tal que os principais desenvolvimentos no software e no hardware dos processadores já estão muito longe de uma compreensão cristalina de como isso funciona por uma única pessoa: os processadores estão cheios de lógica gerada, cache de vários níveis e preditores de ramificação tanto que os bugs neles não são assim. eles não são notados, ou mesmo assumidos, por equipes inteiras de desenvolvimento, e florescem tão violentamente que surgem em seus efeitos no nível do usuário. Além disso, somos forçados a arrastar uma enorme bagagem de funções antigas, garantindo compatibilidade com versões anteriores; caso contrário, venceremos em velocidade e simplicidade, mas perderemos o trabalho para o qual esse hardware foi originalmente desenvolvido.

A situação é a mesma com o software: o entendimento, e mais ainda a escrita de instruções de montagem, permanece apenas em áreas estritamente especializadas, e estruturas e camadas de abstração reinam supremas no que vive e gira nas imediações do usuário.

Do ponto de vista de uma pessoa que deseja controlar seu código e máquina, isso é ruim. Do ponto de vista do usuário - bom, pois simplifica o entendimento, o trabalho e o caminho da ideia ao produto. O preço que pagamos por esse desejo dos usuários é que as crescentes capacidades do processador sejam imediatamente consumidas pela complexidade dos programas, o que, aparentemente, não é justificado por nada e não traz vantagens (fonte de alimentação, como disseram no local de trabalho anterior).

No entanto, se você se aprofundar, acontece que estamos alterando esses recursos para aumentar o público, simplificando a interação. Os terminais de passagens aéreas exigiam conhecimento de abreviações, entendendo como as companhias aéreas funcionam e a capacidade de trabalhar com um terminal de texto. Agora, qualquer usuário vai para a Aviasales condicional e pega uma passagem barata em uma rota difícil sem muitas hemorróidas.

imagem

Você não pode tornar a interface compreensível para a pessoa comum em um terminal de texto, porque a clareza da interface é a resolução do monitor, e belas imagens que não assustam o cérebro, fontes bonitas e dicas que aparecem quando você passa o mouse sobre o botão e a interface de toque.

E também, a capacidade de testar todos esses chips, com foco no comportamento do usuário. Ao trabalhar em cascata, você lança um release uma vez por ano, coletando comentários sobre a versão atual o ano todo. Até algum estágio da interface, você passa dez anos, dez lançamentos. Ao implementar pequenas correções e testá-las ali mesmo, você chegará ao mesmo estágio em um ano e meio. Mas esse trabalho exige um ritmo diferente, outras ferramentas e tecnologias e a rejeição de certas coisas. Na honestidade, desde a lambedura do código: tudo deve funcionar agora, porque requer um processo desse ritmo.

Em troca, essa corrida louca por novos recursos nos oferece uma base crescente de usuários: quanto mais simples os botões são pressionados, mais pessoas podem pressioná-los, e a crescente base de usuários gera dinheiro não apenas para seus salários, mas também para o desenvolvimento de novo hardware. Quanto mais pessoas puderem usar o smartphone de forma produtiva, mais o comprarão, melhor será o hardware na próxima versão. O fato de trocarmos imediatamente esse ferro não por vôos para Marte, mas por um público crescente ... bem, isso pode ser comparado a uma empresa que investe todos os seus ganhos em desenvolvimento, e não em dividendos e lucros no relatório anual. Só agora, por algum motivo, você justifica quando Musk e Bezos fazem isso, mas não pode justificar a indústria.

Para melhor ou pior, pode-se argumentar. Por um lado, a qualidade do software, por outro - progresso constante em hardware, público e altos salários no setor. Talvez eu escolha o segundo (embora prefira desacelerar), mas entendo as pessoas que escolhem o primeiro.
Mas uma coisa nos unirá - não podemos fazer nada com isso.

RE: Muitas coisas


Seção Original
Ferramentas, idiomas, livros, conferências, estruturas, etc. Por um longo tempo, naqueles dias em que, para o desenvolvimento de software, bastava ter conhecimento de um PL, algumas bibliotecas, e isso é tudo. Agora estamos aguardando centenas de frameworks, com uma dúzia de idiomas (mesmo dentro do framework de um projeto), DBMS na moda e não muito, agentes de mensagens onipresentes, centenas de quilômetros quadrados de propagação de propagandas e outras diversões. Como regra, um programador médio não tem tempo para estudar tudo isso no trabalho (exceto as ferramentas que já são usadas em seus projetos), porque você precisa trabalhar nele. Muitas pessoas precisam passar um tempo pessoal estudando essas tecnologias, embora provavelmente 90% dos estudados nunca sejam úteis. Eu mesmo tenho quinhentos artigos no bolso, um monte de visualizações de vídeos invisíveis de conferências, e cada ligação para Habr pressagia uma visita obrigatória a McConaughey.

Mas mesmo o trabalho duro com um idioma específico ou, por exemplo, um DBMS na sua empresa às vezes não permite que você fique na moda, porque as tecnologias se tornam obsoletas antes de poderem ser aplicadas. Até o java será lançado na velocidade do firefox.

Graças ao fluxo interminável de conhecimento que cresce rapidamente, muitos de nós nos sentimos estudantes ou impostores eternos, não importa quantos sistemas você realmente construiu. E isso é muito benéfico para RHs e empregadores - você pode facilmente derrubar sua RFP com algumas perguntas complicadas. Esse tipo de RH de corrida de ratos é politicamente correto, chamado autodesenvolvimento.

O fato de haver muitas ferramentas é uma continuação lógica do parágrafo anterior. Quando há muita energia na região, isso permite que você gaste energia extra em hipóteses de teste, algumas das quais falharão, outras secarão, mas outras formarão a base dos novos padrões da indústria. As reclamações sobre o caos são semelhantes às reclamações sobre a ineficiência da evolução, que por algum motivo criou um monte de espécies, a grande maioria das quais desapareceu silenciosamente, e mesmo a maioria não é muito bem-sucedida e vive em uma faixa estreita. É realmente impossível criar imediatamente uma pessoa que possa sobreviver mesmo no Pólo Norte, mesmo no deserto, apesar de ele próprio ser bastante frágil - ele não corre rápido, não há garras, seus dentes são pequenos e sem brilho, o ângulo de visão é pequeno.

É bom olhar para o resultado da evolução de lado e se perguntar quanto tempo levou para criar uma vantagem completamente óbvia - um dedo flexível e um cérebro desenvolvido.

Mas, no início da jornada, o resultado não era tão claro: os dinossauros também reinaram supremos na Terra e, se houvesse analistas de troca em seu tempo, poucos colocariam ratos em alguns mamíferos contra esse favorito óbvio.

O desperdício na forma de ferramentas "erradas" é um companheiro constante do caminho que leva ao topo.

RE: Programador deve ser analista de negócios e entrevistas de emprego


Seção Original
Recentemente, tenho observado uma tendência de impor a autoridade de um departamento de negócios aos desenvolvedores. Agora, além de cumprir suas principais tarefas, o desenvolvedor é obrigado a entender o assunto no nível de um bom analista e, geralmente, pensar em negócios. Deixe-me em paz, não sei como aumentar sua taxa de conversão.

Entrevistas de emprego

Este é o tipo mais importante e amado de disciplina especial. De fato, depende disso se você dormirá em um velho sofá amassado em uma odnushka alugada em algum lugar fora da Circular de Moscou, ou se terá que se esconder em papelão deitado sobre uma tubulação de aquecimento sob uma ponte. Se no começo da minha carreira a entrevista foi um pouco de conversa de coração para coração, agora é mais como um exame. Talvez isso se deva ao fato de que, naquela época, não havia salários e multidões tão grandes que quisessem entrar em TI ou apenas moda, eu não sei. Mas o fato é que, quando você chega a uma entrevista para a posição de desenvolvedor sênior, com um alto grau de probabilidade, encontrará tarefas temperadas com perguntas do questionário. “Bem, resolva um problema em um pedaço de papel que roubamos ontem com o código leet. Errado em uma unidade na condição de contorno? Brincadeira de Fuuuuu! Você não sabe como o% methodName% funciona na estrutura% mais elegante%. Quem o colocou aqui? Segurança! ”Ninguém se importa mais que sua cabeça esteja disposta de maneira diferente e você não pode forçar o olhar desdenhoso e condescendente de nerds de nariz alto rapidamente e sem erros para envolver o algoritmo em uma tarefa que você ainda não pensou. Como quantos quilômetros de código e sistemas de produção estão atrás de você. Bem, pelo menos as perguntas do quebra-cabeça estão mortas, e obrigado por isso.

Não, não deveria, é claro. Mas, nas condições da necessidade de um teste rápido de hipóteses, é muito mais produtivo fazer isso da mesma maneira que toma decisões sobre arquitetura, simplesmente porque há menos sobrecarga: você precisa deliberar por dois dias e pensar por uma hora. Você sabe como fazê-lo na área de assunto - bem feito, durma em um sofá amassado. Se você não sabe, eles estão esperando por você nas áreas em que a confiabilidade é mais importante que o progresso: espaço, medicina, militar, sistemas de comunicação de sinais. Essas áreas são e não são um frontend menos importante. É verdade que eles pagam menos. Tal viés no mercado, que eu gostaria de corrigir, mas isso é algo maior do que não apenas uma pessoa, mas a maioria das empresas.

A propósito, esse mesmo fator permite que você despreze o RH com perguntas complicadas, até "Eu não sei com o que estou preso, vamos conversar com o diretor técnico". Não quer ser analista, mas quer escrever código em um TK lambido pronto? Veja acima - outras áreas para você: bons programadores que não cometem erros e implementam o TK de forma eficiente e eficiente também são muito necessários.

RE: pessoal de TI


Seção Original
Aqui, analisaremos algumas subespécies dessa população, com as quais precisamos lidar com mais frequência.

Na verdade, desenvolvedores e simpatizantes. Ao contrário dos estereótipos - na maioria dos casos, não são nerds ortodoxos, mas caras bastante normais. Mas, como regra, não há nada para conversar com eles. Todas as conversas fora do horário de trabalho começam a funcionar. Mas de que outra forma, se você é forçado a aprender todo esse technomuth o tempo todo? Meu conselho é ficar longe de caras de camisa xadrez com mochilas, caso contrário, você pode ganhar uma dose letal de tédio. Muitos deles vão trabalhar não para trabalhar, mas para brincar. Vamos reinventar a roda, vamos fixar uma nova estrutura (e vamos comer demais à noite) e certamente deixaremos tudo na metade, porque esse brinquedo está cansado, e eles trouxeram novos. Mas então vamos dar um beijo no rosto e contar nas conferências como derrotamos o problema que nós mesmos criamos. LUCRO! Essas pessoas são facilmente levadas a todo tipo de lixo, como "tarefas interessantes" e "sistemas complexos" (é impossível construir uma calculadora sem uma dúzia de microsserviços na cultura de TI), o que, em termos humanos, significa escolher a merda de um mamute, mas para menos dinheiro, reduzindo assim os salários da indústria. Como em uma piada "- Pai, o que vamos comer hoje?" "Nada, filho, estou trabalhando em tarefas interessantes em uma equipe amigável."

Gerentes de projeto. Honestamente, por 10 anos não entendi quem são os gerentes de projeto e por que eles são necessários. Em escritórios completamente diferentes, era algo parecido com isto: existem várias tarefas, resolva o que está lá e como, e faça isso antes dessa data. E eu fui pegar um café com leite dos descolados no primeiro andar e escrever no Instagram que dia é difícil hoje. Só uma vez eu vi um cara que construiu todos esses horários chatos, fez malabarismos com tarefas e foi nosso assistente, e não apenas um cara legal que não sabia programar, mas eu realmente quero um ITP.

Garçons. Caro amado por muitas categorias. Graças ao seu despejo, articulações sensatas e ideológicas não podem entrar na indústria - em busca de um longo rublo, muitos trabalhadores rolantes estão prontos para trabalhar de graça.

Vamos ficar calados sobre o resto.

Desenvolvedores entediantes que só falam em trabalho? Estranho, parece chato para mim que quer cortar discretamente o código de acordo com o TK finalizado de 9 para 18. Nós dois estamos errados, mas estou falando de outra coisa: essa organização da mente, na qual a tarefa gira constantemente na cabeça, dá um impulso significativo à velocidade do desenvolvimento e teste de hipóteses. Um pouco acima do limite, e o desgaste se espalha por lá, mas isso é uma questão de controlar a saúde mental. O que não nega o fato de que algumas empresas (não apontaremos o dedo para quem paga táxi após 22 horas, incentivando-o a permanecer no trabalho) percebendo que um funcionário em chamas funciona melhor, fornece todas as condições para essa queima.

Projetos? Você simplesmente não sabe como cozinhá-los. Um projeto é uma ferramenta universal: por um lado, é necessário truques de mágica para programadores (um programador deixado por conta própria, muda para fazer coisas engraçadas para seu amado) e, por outro lado, arquitetos e líderes de equipe podem despejar a maior parte do trabalho organizacional sobre ele. organização de reuniões, manutenção da relevância do cronograma, relatórios sobre o trabalho realizado, comunicação de rotina com o cliente e assim por diante.

RE: Negócios


Seção Original
O software no mundo moderno não é feito simplesmente porque é divertido (embora às vezes pareça). Isso é feito com mais frequência para ganhar atendentes - direta ou indiretamente. E em conexão com esse fato, podemos dividir as pessoas em duas categorias.

Quem se importa como - para que tudo dentro seja bonito e correto.

Quem se importa com o que são aquelas pessoas que se importam com a essência do produto que fabricam.

Normalmente, o desenvolvedor contém essas duas categorias, apenas em proporções diferentes.

Para os dois, tenho notícias tristes.

Para a primeira categoria - do ponto de vista de ganhar dinheiro, não importa como a arquitetura correta é escolhida e quão bonito é o código. Assim como toda a sua segurança, práticas recomendadas etc. Você pode colocar muletas, ganhar avós e, em seguida, o gerente que fez tudo isso pula no barco vizinho "para ganhar nova experiência", e a equipe empilha os estábulos à noite.

Para a segunda categoria - 90% de vocês fazem o que os outros fizeram há muito tempo. Com raras exceções, todos os seus produtos são profundamente secundários. No entanto, empresários astutos estão tentando dar “ideologia” ao próximo sistema de pagamento, serviços bancários on-line e similares. Eu mesmo passei por tudo isso e devo dizer que é muito mais fácil trabalhar quando você tem uma resposta clara à pergunta "por que tudo isso é necessário". “” - , , . , , . “ , ” . , HR, , 146% - “ , , ”.

Aconteceu que um homem inventou dinheiro. Eles não fizeram isso na geração atual, nem mesmo cem anos atrás. O dinheiro provou ser uma excelente ferramenta para organizar uma sociedade heterogênea com diferentes conceitos de beleza e diferentes desejos das pessoas incluídas nela.

Você pode tentar inventar outra coisa, mas até agora não encontrou nada fundamentalmente melhor. É claro que existe motivação como apoio social e espírito de equipe, mas o primeiro é um derivado do dinheiro digerido pelo Estado, e o segundo é tempero, não o prato principal. Em uma pitada, sobremesa.

Você é pago pelo seu trabalho. Se o seu trabalho não gera dinheiro - desculpe, os negócios não precisam dele. Rude, eu sei. Vamos tentar mais suave.

Os negócios precisam de dinheiro. Uma empresa é uma organização que ganha dinheiro. Se você não receber dinheiro pelo que considera necessário, não demonstrou como isso trará ainda mais dinheiro aos negócios. Aprenda a justificar o desperdício de recursos, prove que é benéfico, mesmo a longo prazo, e haverá recursos. Os negócios e a tomada de decisões nos negócios a esse respeito são muito mais adequados do que as pessoas comuns: no entanto, quando uma pessoa tenta comprar uma passagem por meio ano por dez mil, porque é muito dinheiro, e prefere comprar uma passagem por dois mil por mês, apenas um está interessado nos negócios figura - lucro com dinheiro investido. Lucro de 16%? Pegue! Sem dinheiro, mas posso obter um empréstimo para esses gastos em 5%? Pegue!

Se uma empresa não pode justificar uma revisão de código porque seu código permanece por três meses, após o qual é substituído por um novo, e então sai daí, o que você está fazendo aí? Há um grande número de empresas para as quais a revisão e refatoração de código são componentes importantes do processo. E a primeira empresa está focada no teste de hipóteses, e não na codificação: isso também é normal e permite encontrar um novo nicho no qual você pode crescer, amadurecer, acumular gordura e começar a praticar a revisão e refatoração.

Não culpe o projetista que constrói uma casa de tijolos de brinquedo sem prendê-los com argamassa: viver em um hamster nesta casa, e a tarefa desta casa é testar a hipótese da aparência e não servir como casa. E mesmo que esse designer esteja pronto para pagar por ajudá-lo a construir sua casa de brinquedos, não cuspa nele com o fato de que você precisa de um poço de argamassa e fundação, mas se acomode em construtores normais.

RE: Saúde


Seção Original
, , ( ) . , . , - , . , . , , , . 35+ , “ , 25 ?” “ ?”. — .

Talvez este seja o único ponto ao qual não tenho nada para responder completamente. Além disso, no meu mundo, uma pessoa tem vontade e razão, e se acredita que não precisa levantar pesos, não os levantará.

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


All Articles