O pior é impossível?

Sabemos que hoje a TI é uma das áreas que tem a melhor relação entre salário e tempo de aprendizado / experiência. O que quero dizer é que hoje uma pessoa que tem um mínimo necessário de instrução já consegue trabalhar recebendo um salário razoável. Isso, entre outras coisas, causado pela falta de regulamentação que temos na nossa categoria.

Com isso, várias pessoas que ainda não estão preparadas são atraídas para este ramo, e isso só traz desvantagens, como sistemas mal projetados e codificados. Isso se traduz em dores de cabeça para os demais analistas e programadores. Dou como exemplo a imagem abaixo, que foi tirada da vida real.

Vamos entender o problema que há nesse código.

Temos uma classe X (retirei os nomes e namespaces para evitar que a pessoa fique chateada), que será exposta em um serviço WCF. Podemos perceber isso pois ela é decorada com (ambos!) os atributos Serializable e DataContract. Ou seja, instâncias dessa classe serão trafegadas pela rede, seja através de TCP, HTTP ou qualquer outro binding disponível nesse framework, nas chamadas do serviço.

Agora perceba o que há dentro da classe. Temos membros que são instâncias de classes do ASP.NET (camada de interface da aplicação), como System.Web.UI.Page e HttpSessionState! O que foi feito foi acoplar tipos que não deveriam ser conhecidos na camada de serviços. Se amanhã esse serviço passa a ser consumido por um sistema que é construído em WPF, por que ter esse tipo de objeto envolvido na chamada?

A brilhante idéia que se teve aqui foi para apenas poder capturar informações da interface ASP.NET na camada de serviços, por exemplo o nome do usuário logado através da propriedade User.Identity.Name (na imagem não dá pra ver, mas acreditem, é isso), entre outros. Se há a necessidade disso, porque não trafegar essas informações em uma estrutura própria? Pra que ter esses objetos pesados instanciados sempre?

Nesse ponto, não dá apenas para culpar a pessoa que fez o código, mas principalmente que a colocou para trabalhar com uma tecnologia a qual ele ainda não está preparado. A pessoa pode não ser ruim, atire a primeira pedra quem nunca escreveu uma “pérola de programação”, o que falta é treinamento. Falta da parte de gerência uma visão de que para se efetuar trabalhos de qualidade é necessário investimento em pessoas bem treinadas, que gostem do que fazem e comprometidas.

 Pérola

Obs. Infelizmente isso não se restringe a área de informática. Já vi pessoas formadas em Direito falando “cabeleleiro” e “mendingo”. É um triste retrato da instrução do nosso país.

Comentários

Postagens mais visitadas deste blog

Trocando configurações padrão do Live TIM

Uma proposta de Clean Architecure com Modelo de Atores

Testes automatizados em sistemas autenticados com certificados digitais, usando Selenium e PhantomJS