Um desabafo

Boa tarde,

Primeiro queria começar dizendo que não tenho a intenção de mencionar ninguém e nem ofender a nenhum dos leitores, a minha intenção é expor uma situação e conhecer a opinião dos demais.

A situação que eu enfrento acredito que muitos se deparam ou já passaram por ela, tenho hoje na minha empresa (media) um Analista de Sistema que faz a função de uma equipe de projeto inteira, Acredito que isso seja realidade em empresas de pequeno e médio porte. Este Analista usa como sua principal linguagem Java e a IDE Netbeans e já é programador nos mesmos a muito tempo, De uns dois anos para cá venho acompanhando seus códigos e seus programas que são muitos um para cada pequena coisa dentro da empresa.

Minha indignação começou quando a 2 anos comecei a estudar programação em uma ótima faculdade com ótimos professores e comecei a seguir convenções, qualidade de código entre outras boas praticas ao pé da risca, e no mesmo momento ajudar nos códigos desse Analista. Porém surgiu um problema porque eu não consegui ajudar e nem realizar manutenção nos mesmos porque infelizmente eu tinha pavor de mexer em qualquer linha que fosse, Eu senti muita vontade de postar classes e trechos desses códigos para vocês partilharem da minha indignação e ver a que ponto pode chegar um programador que ao longo da sua carreira nunca teve um ensino decente muito menos a curiosidade de fazer algo de um jeito diferente, eu não vou colocar seus projetos que eu possuo exposto porque talvez ele possa vir a ler esse post algum dia da sua vida e minha intenção não é ofender ninguém.

Em relação aos projetos vou tentar comentar um pouco sobre o que eu já presenciei. Como eu já mencionei ele usa Java como sua principal linguagem e todos sabemos do tamanho da code base de Java e uma das suas principais vantagens é ter muita coisa pronta e ótimas bibliotecas e API’s que podemos usufruir para não ficarmos “reinventando a roda” pegue tudo isso de vantagem e jogue fora volte 15 anos atrás e esqueça o conceito de OO e me acompanhe, tudo declarado como “public static” Classes não representam nada muito menos os nomes delas, Seleções em banco de dados GIGANTES dentro de evento de botões, pegue a facilidade que o Netbeans oferece para trabalhar com eventos e o swing e crie tabelas ao iniciar o JFrame com DefaultTableModel com códigos obviamente copiados e colocados não tendo nem a coragem de trocar o nome dos métodos junte tudo isso a informações carregadas através de JFrames usando variáveis estáticas e sem sentido, Tratamentos de Erros e classes de teste são inexistentes é comum encontrar trechos como:

catch (Exception ex){}

Sim exatamente assim, além de usar “Exception” para como por exemplo acessos ao banco, não existe nada dentro do bloco de código, Conceitos básicos em java como Polimorfismo e herança esqueçam, Não existe em mais de 30 programas específicos fazendo coisas redundantes e que poderiam estar unificados. Todos sabemos como a documentação mesmo em um código de má qualidade pode ajudar, enfim não existe nenhum trecho de documentação nem sequer comentários simples. Dessa forma já devem ter imaginado que não existe manutenção para isso até porque alguns programas são enormes e só Deus sabe o que eles fazem agora.

Já fiz tentativas de demonstrar o que significa ter organização e conceitos simples de OO e ouvi frases como: “Não precisa disso” , “pra que” , “ta funcionando ta bom”. Acreditem não foi por falta de aconselhamento ou de demonstração a um programador que tem um cargo acima do meu.

Agora que entendem um pouco da minha indignação queria ler a opinião e o ponto de vista de vocês e se já passaram por essa situação. Se acham que eu errei em algum ponto me corrijam por favor. Isso é um desabafo, tratem dessa forma.

Obrigado.

Obs: Essa não é minha conta original não criei está por vergonha ou medo de ser julgado foi simplesmente por que podem me identificar e acarretar vários problemas e minha intenção com esse post não é essa.

Muda de empresa.

1 curtida

Concordo plenamente. Todo e qualquer fator que te limite é, efetivamente, uma razão para pedir demissão e buscar outra coisa (não necessariamente nesta ordem).
A respeito do tal “analista de sistemas dominador”, não bata de frente, simplesmente saia e evolua.

1 curtida

Uma coisa que você nao comentou é o impacto das decisoes e práticas que esse programador usa no dia a dia:

  • Há muitos bugs no programa?
  • Novas pessoas conseguem dar manuntençao no código dele?

Enfim, qual o problema real que essa pessoa e o código dela, está causando para empresa?

Deveria ser simples provar com fatos (e nao opinioes) que o jeito de trabalhar dele causa prejuízo, ou é menos eficiente, do que se ele seguisse boas práticas.
Se você nao consegue demonstrar isso com dados, entao pode ser simplesmente uma diferença de opiniao e talvez seja realmente melhor procurar uma empresa que esteja mais alinhada com suas idéias.

1 curtida

@AbelBueno, creio que não sejam “problemas para a empresa”, mas, para os demais.
Eu já tive a experiência de trabalhar em um ambiente assim.
Pode ser que os diversos sistemas funcionem, atendam ao que a empresa precisa, mesmo sendo a muito custo, mesmo sendo com péssimas práticas, mesmo com tabelas sem normalização.
A questão é que o autor do tópico realmente está numa situação critica, ou ele “entra na dança” faz código ruim ou ele muda de empresa.

O problema é que muitas vezes a definiçao de ruim ou bom pode se tornar algo subjetivo, pessoal.

É preciso ter meios concretos (ou pelo menos bem evidentes) de que algo está causando dano ou entao é apenas opiniao.

Usando seu exemplo, se as mudanças demoram demais (e por isso tem um custo maior) isso é um problema para a empresa.
Já tabelas sem normalizaçao, podem ser um problema ou nao, dependendo de onde sao utilizadas. Denormalizaçao pode ser usada para acelerar pesquisas mas a falta dela pode causar inconsistência de dados. O problema aqui é a inconsistência de dados, nao a normalizaçao em si… faz sentido?

Eu acho que na situaçao dele pode ser simples de mostar com fatos que qualquer gerente (nao técnico) possa entender como esse comportamento prejudica a empresa.

  • Se há muitos bugs no sistema em geral
  • Se a rotatividade de programadores é alta, porque ninguém quer trabalhar ali
  • Se há dados inconsistentes no sistema

Mostrando essas claras desvantagens para o tal analista é capaz dele mesmo ver que precisa melhorar o que ele faz. Melhor discutir nesse nível, do que opinioes sobre boas práticas.

Concordo sobre os absurdos, mas esses conceitos ai geralmente não são importantes para o resultado.

Realmente não precisa, vira overhead se for para lidar com banco de dados relacional.

Bom dia,

Obrigado a todos pelas respostas e pela participação.

É uma hipótese a se seguir já estou estudando sobre isso.

@AbelBueno
Eu entendo o seu ponto de vista e logicamente tratar isso de para um lado pessoal não tem importância nenhuma para a empresa. Digamos que eu faça alguns testes como Analise Assintótica, Teste de Stress e testes unitários e supondo que os resultados não sejam nem um pouco agradáveis ele e eu somos os únicos que tem conhecimento nessa linguagem, iria apresentar os resultados para quem? Dessa forma desencadearia um conflito interno e não uma solução, já tentei de várias formas demonstrar que há caminhos melhores que impactam não somente em qualidade de código. Mas citando a empresa como referencia se eles perdem esse “Analista” qualquer outro que entrar os programas terão que ser todos recriados ou remendados com muito esforço e o reaproveitamento de código é muito pequeno o que também gera mais gastos a empresa.

Já cogitei essa hipótese de começar a produzir sem me importar muito com o problema que meus códigos vão gerar e qual impacto causara tanto no uso final quanto para manutenção dos mesmos, mas realmente eu não quero seguir este caminho por isso vou tentar outras alternativas.

Conceitos realmente não são importantes para o resultado, mas conhece-los é essencial principalmente em uma linguagem que possui inúmeras facilidades devido a isso. Na minha opinião nem deveria poder escrever códigos para atender a necessidades de uma empresa quem não tem os conceitos e fundamentos essenciais de uma linguagem.

Eu não entendi o que você quis dizer então não vou me arriscar a responder.

Eu gosto de pensar que temos que saber o que estamos fazendo e dessa forma fazer bem feito como diz Doug McIlroy:

“Escreva programas que façam apenas uma coisa mas que façam bem feito.”

Se não entendeu, não entendeu também o analista da sua empresa, onde te questionou “não precisa disso”, “pra que”. Então por que precisa? O banco de dados também é orientado a objetos? Ou é só por voce gostar e ser mais fácil pra voce? Essa teria sido a oportunidade de mostrar, em resultados, que sua crítica é válida para os resultados da empresa, isso que importa, e não perder tempo com purismos sem necessidade real.

acho que isso já responde o que o “Analista” passa. Cuidado. Você está numa comunidade de desenvolvedores.

Eu acredito que ele não vai mudar de empresa, pq é o dono.

Mas, cara, é o seguinte, se seus legados estão funcionando bem e seus clientes estão felizes, não mexa com eles agora.

Inicie projetos novos com as técnicas mais apropriadas, tecnologias atualizadas, etc, e, priorize melhorias por demanda para cada legado seu que vc entende que está ruim ou não está atendendo as demandas de seus clientes.

No mais, se vc, como o proprietário do negócio em si não está feliz com a qualidade do trabalho do rapaz, contrate um outro. Não existe ninguém insubstituível.

Vai rolar um stress pra dar manutenção no que ficar pra tras, mas, quem nunca?

Visão de dono é um conceito importante para crescer como profissional.

Bom, isso é uma faca de 2 gumes:

  • se vc é um cara de cabeça aberta, legal, vai se arranjar facilmente e vencer seus medos, dogmas, credos, etc…mas…

  • se vc é tipo um “Midas”, muito cuidado onde vc põe a mão, jovem!

Quando citei conceitos de OO, foi somente para exemplificar a falta de conhecimento nada mais.

Banco de dados relacional.

Acho mais fácil para mim assim como para a comunidade.

Acredito que minha critica seja valida, como eu comentei gosto muito de qualidade de código acredito que todo programador goste de encontrar códigos com qualidade é melhor por todos os motivos, esse é o meu foco quando fiz o tópico a minha intenção era demonstrar e entender a opinião dos demais sobre o assunto mais especifico. Sobre o impacto para empresa eu não fiz as medidas e nem os testes corretos então mesmo que eu acredite que sim é redundante ficar citando isso aqui sem dados.

Acredito não ser desculpa para produzir sem qualidade.

Eu me expressei como o @darlan_machado citou, me expressei como um todo me unindo a empresa, Não sou dono e também ela não vende Soluções em TI são somente soluções internas e também errei no tamanho, pelo número de funcionários ela é considerada grande.

Gostaria de ter um pouco dos dois exemplos.

Isso já responde que não há necessidade de modelo orientado a objetos. Concordo sobre qualidade, mas qualidade não depende disso.

A comunidade brinca de tecnologia. As empresas querem resultados para o Negócio.

Afinal de contas o que vc é? o dono, o líder (chefe de equipe), ou vc é o desenvolvedor propriamente dito?

pq se vc for uma das duas primeiras opções, acho melhor vc falar com essa pessoa para que ela se defenda à altura.

Vou tentar exemplificar:

  1. quem tem cabeça aberta, está sempre disposto a aprender, ensinar, não se atém a um só tipo de ferramenta de trabalho, que aqui no caso, poderia dar o exemplo do mecânico de autos, que precisa de “n” chaves para poder conseguir montar e desmontar um motor e ainda consertar com êxito, não fica preso a um único projeto, trabalhando em outros em paridade, desenvolvendo resiliência aos problemas apresentados em diversas frentes e, por tudo isso, acaba tendo uma mente mais tranquila e focada para atuar com segurança em qq que seja o projeto, emergencial ou não;

  2. o tipo “Midas” é aquele que chega no projeto com honras, fala que vai consertar tudo e no fim, tudo que ele lidou continua a mesma porcaria ou até pior.

Entre um e o outro, creio que é uma questão de postura e de profissionalismo. Aí, cada um tem isso em seu DNA de formas diferentes.

Pra quem gosta de estar sempre atualizado (e eu me incluo), a melhor coisa é vc não se apegar a nada, mas saber uma parte importante de qze tudo. Assim, vc vai ser sempre bem quisto nos projetos e na vida em geral. Veja bem! Não estou falando em ser um generalista. Estou falando que vc pode ser apto a atuar em qq frente, dependendo de sua boa vontade em aprender e a sua preocupação em criar soluções ao invés de bugs.

muito bom, penso da mesma forma.

Cara, vc é novo no mercado e não entende como as coisas funcionam. Mas vou resumir pra vc…

O dono dessa empresa só quer o produto pronto, ele nao quer saber se o negocio tem qualidade de codigo, tudo gira em torno de dinheiro, essa cultura sempre é definida no modelo TOP-DOWN, se os cabeças nao tem interesse em fazer o negocio bem feito, nao será e pronto, nao é vc que vai mudar isto.

Entao como nosso colega javaflex disse, mude de empresa, mas ja saiba de antemao, que isto é algo padrao nao mercado, porque o custo para se fazer um software é bem caro e na maioria dos casos isto determina o andar das coisas, são raras as empresas que trabalham de forma mais responsavel.

Reforçando o exemplo: imagina que um cliente ta parado pq uma NF não esta sendo gerada. Pra resolver isso, há duas opções, 1-coloca uma flag la no lugar X e resolve temporariamente para mais tarde fazer algo descente ou 2-faz a correção corretamente dentro das leis universais mestre da programação e demora 5 horas para entregar para o cliente conseguir gerar sua NF.
O dono vai optar pela 1 opção, pq cliente é dinheiro.
A casos e casos, esse é só um exemplo.

1 curtida