"O principal desafio de TI não é técnico, é de negócios" é uma frase que vem cada vez mais sendo repetida.
Sim, entender o negócio é importante, mas de longe não é o principal desafio. Segue a thread, vou explicar.
Não vou nunca argumentar para diminuir o desafio de negócios na tecnologia. Ele existe, é inegável. O foco aqui serão os desafios técnicos, que estamos ainda muito longe de resolver, e esses sim, os principais.
Nossa área é carente de pessoas preparadas para entregar software bem feito. Temos problemas de falta de gente, e as pessoas com frequência não tem todo o conhecimento necessário para lidar com os desafios que lhes são apresentados.
Temos também um problema grave de cultura em tudo o que envolve produção de código. Desde quem codifica, que carrega às vezes premissas falsas e cargo cult, até quem gerencia, muitos se baseando em técnicas ultrapassadas e inefetivas.
Antes do desafio de negócios e depois do problema de capacidade de entrega técnica o principal problema é gestão de prazo, escopo e custo. Quem gerencia com frequência não entende que pressionar por prazo *sempre* vai reduzir qualidade.
O cenário atual na TI é caótico. O que mais vemos são times desmoronando o tempo todo por código mal escrito, pessoas pedindo demissão e a gestão desesperada pressionando todo mundo. É amador. Olhe de longe, te passa profissionalismo?
Então, sem essa de falar que o *principal* problema é negócios. Argumentá-lo é tampar o sol com a peneira, é ignorar que quem está na ponta está incapaz de entregar software, mesmo que o negócio esteja em perfeita harmonia com a TI.
Como resolver? Focando nos problemas simultaneamente - é possível - mas dando as prioridades de acordo com sua importância.
Focando especificamente na produção de código: vamos parar de fingir que todo mundo é sênior? Ok, você precisou contratar uma pessoa e pagar mais, mas não a chame de sênior. Reclame com a "mão invisível do mercado", e não atrapalhe.
E que tal dar espaço para as pessoas aprenderem? Uma parte do trabalho de dev é pesquisa. Aceitemos que isso é um fato, e vamos deixar as pessoas crescerem também *no trabalho*. E é também justo esperar que invistam tempo pessoal nisso.
E bora começar a chamar os charlatões do mercado pelo que são? Tem muita gente aproveitando a imaturidade de quem está entrando no mercado para vender cursos, bootcamps e outros como solução mágica. Podemos dizer: esse curso é ruim/falso.
Não há mágica, ninguém é sênior em poucos anos, as empresas que estão desesperadas atrás de gente e chamam todo mundo de sênior. Tudo a seu tempo, com calma todo mundo chega lá. E isso não quer dizer ganhar menos.
E vamos começar a ter disciplina com a nossa profissão? É o mínimo. Testes, commits limpos, cuidado com o código é o mínimo que uma pessoa tem que fazer para se chamar de dev profissional. Sem isso a pessoa é uma aventureira, ponto final.
Quando cuidarmos do código e soubermos além de linguagens e frameworks, também padrões de projeto, algoritmos, agilidade, e soubermos dizer "não" para quem pede algo sem sentido, tudo começa a mudar. Antes disso, mesmo com negócios, não.
E não dá para fazer isso sem a gestão no barco. Gestores, eduquem-se, e tenham coragem para peitar um pedido absurdo. Não dói dizer "não dá". E devs, fujam de gestores amadores. Há bons lugares para trabalhar sem gente amadora no comando.
Amigas e amigos, é assim que começamos a andar para frente. Podemos olhar para negócio também, falhamos muito nisso, sem dúvida. Vamos olhar para esses problemas juntos, e parar de fingir que fazemos projetos de software e começar a entregar.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Sinto muito pelos meus amigos que trabalham com UX, pq a implementação do #pix pelos bancos, digitais ou tradicionais, está toda mal feita. Nem os modernosos fizeram um bom trabalho. É tanta coisa mal feita, que se eu não conhecesse como a linguiça é feita ficaria surpreso. 🤦♂️
Sabe a chave aleatória, gigante? Tem banco que não deixa você copiar com o celular. Você tem que copiar na mão pra outro lugar. Sério isso? 🤦♂️
E banco que não reconhece a chave já cadastrada e testada em outro banco? Só pq coloquei um `+` no email, algo que está de acordo com a RFC que define endereços de email. Erraram na regex de validação. Erro primário, amador, exemplo de clara falta de testes. 🤦♂️
Quer descobrir os melhores lugares pra trabalhar na TI? Procure quem usa agilidade de verdade, quem exige a escrita de testes, quem tem uma política clara de inclusão (e meios pra denúncia anônima de abusos). Fuja de empresas em que gerentes de projeto têm muito poder. Fio.
Mais palpável: a empresa busca diversidade na contratação, respeita as pessoas pelo que elas são, e as incentiva a serem elas mesmas no ambiente de trabalho. Se esforça por usar linguagem neutra de gênero.
Pergunte se a empresa já teve conflito com clientes (internos ou externos) por assédio. Se disser que não teve, está mentindo. Daí pergunte como ela lidou. Ela ficou do lado do lucro ou dos funcionários?
"O Giovanni pega pesado nas opiniões."
Não amigas e amigos, eu tenho mais de duas décadas nesse mercado. Não tenho mais tempo ou paciência pra quem não quer fazer um trabalho bem feito.
Quer fazer pela metade, sem agilidade, com cover your ass? Tá falando com o cara errado.
Além disso, respeito profundamente meus clientes. Não seria profissional da minha parte entregar nada menos do que todo o profissionalismo que desenvolvi ao longo desses anos. Ou não pedir o mesmo a quem trabalha comigo.
Tem muito lugar que faz assim, quem quer o fácil vá pra lá.
Isso não significa virar noites e gritar com funcionários. Isso não é profissional. Nossa área precisa de seriedade e compreensão do que significam prazos e escopos de um projeto de software. Quem grita é amador, nada profissional. Uma vergonha à nossa área.
Tratar desenvolvimento de software como linha de produção fabril continua sendo um dos maiores erros que a indústria de tecnologia comete.
Cada projeto é único.
Boas práticas só são boas dentro de um contexto.
Padronizações devem ser opcionais e atender cenários.
Segue o fio...
Frameworks devem ser extensíveis ou são inúteis, ou pior que isso, vão atrapalhar.
E qual o problema do momento atual?
A complexidade está cada vez maior. SPAs, APIM, Kubernetes, microsserviços, NoSQL, nuvem, poucos estão acompanhando.
Pra piorar, muitos talentos estão saindo do país ou trabalhando pra fora.
Pra piorar, os orçamentos estão menores (e os salários maiores - e isso é bom), os prazos estão mais curtos, então a pressão pra entregar mais é ainda maior.
Acho importante esclarecer alguns pontos sobre esse twit. Quero aprofundar alguns conceitos, depois de várias conversas que aconteceram e em mais de 280 caracteres.
O primeiro ponto que notei que causou desconforto foi a palavra "relevância". A intenção era levantar o fato de que temos brasileiros falando com brasileiros em inglês, e isso exclui quem não entende o idioma.
Não acredito que exista uma forma de medir relevância, e não tive a intenção de medir valor por popularidade. Mais sobre isso mais pra frente.
É comum dividir a economia em macroeconomia e microeconomia. Elas estudam as relações econômicas por ângulos muito diferentes. Tenho notado como na computação isso também é possível, também temos, como vou chamar, a "macrocomputação" e a "microcomputação".
Na "microcomputação" temos algoritmos, gestão da memória, otimizações do uso de processamento e memória, design de código, testes automatizados, OO, PF, linguagens, runtimes, front-end e backend, debug, e muitas outras coisas.
Na "macrocomputação" temos arquitetura de soluções e todas as suas decisões, DDD, microsserviços, DevOps, networking, integrações, failover, disponibilidade, clusters, decisões sobre bancos de dados, testes end to end e de carga, e muitas outras coisas.