Categoria: Mercado


Aqui está um assunto polêmico. Existem dois grupos óbvios nesta discussão: Os que defendem o desenvolvimento de sistemas em PHP utilizando a linguagem pura e criando componentes a partir desta e os que defendem que todo desenvolvimento deve ter um framework comercial como apoio para o sistema. Pelo tema deste post, eu estou no ultimo grupo.

O grupo que utiliza a linguagem pura e busca o desenvolvimento de seus próprios componentes utiliza vários argumentos para tanto. Segurança, performance da aplicação, designer de sistema proprietário, etc. Muitas vezes pessoas deste grupo montam seus próprios framework visando agilizar o desenvolvimento de softwares em busca da reutilização.

Eu, como defensor dos framework comerciais para o desenvolvimento cito algumas vantagens de se utilizar destes:

  • Existe uma maior facilidade para a detecção de erros, visto que frameworks são peças mais concisas de software.
  • Podemos nos concentrar mais com a abstração de soluções do problema que estamos tratando.
  • Torna mais eficiente a resolução dos problemas.
  • Como todos os itens acima ocasionam uma maior produtividade, podemos garantir que também teremos um maior lucro, pois teremos uma antecipação da entrega, e uma maior satisfação dos clientes.
  • Otimização de recursos

Os pontos descritos acima foram retirados da wikipedia. Vou listar os meus pontos além dos citados acima:

  • Padronização do sistema: Um sistema com a utilização de um framework tem um “esqueleto” no qual se apoiar, facilitando a padronização do desenvolvimento do sistema nos diversos pontos.
  • Baixo acoplamento entre componentes: Sistemas que utilizam frameworks tem por natureza um baixo acoplamento. Isto se dá pelo fato de os desenvolvedores de frameworks serem bem genéricos para o desenvolvimento visando atingir um número maior de soluções.
  • Documentação: Um ponto importante de um framework comercial é a sua documentação. Dado determinado problema no sistema, pode-se consultar uma documentação onde o problema é detalhado e é apresentado uma solução para o tal. Frameworks “caseiros” carecem de documentação em sua grande maioria, dificultando a reutilização de seus componentes.

Existe uma certa preocupação com relação a performance de aplicações que utilizam framework e essa preocupação é válida. Martins Fowler, em seus diversos livros comenta que aplicar designer patterns e refatoração podem impactar em performance da aplicação. Entretanto, ele próprio comenta que essa preocupação pode ser deixada de lado até que o sistema esteja desenvolvido e que ela realmente seja um problema. Nestes casos, em um sistema bem desenvolvido utilizando orientação a objetos e designer patterns de maneira correta, refatorações visando a performance da aplicação são rápidas e fáceis de serem realizadas. É claro que estamos falando de problemas de performance simples que não sejam requisitos do sistema. Por exemplo, uma query que demora 1 min para execução sendo que o tempo máximo deste requisito do sistema seja 3 segundos. Talvez uma refatoração nos leve ao ganho de alguns segundos na query. Entretanto este fator deve ser levado em conta na fase de análise do projeto. Talvez, neste ponto do sistema, uma solução de ORM de um framework seja menos efetiva. Mas a troca de uma solução de ORM para uma extração pura é bem simples. É claro que isso foi um exemplo simples. Existem outros problemas que podem aparecer com relação a performance de uma aplicação que utiliza framework. No entanto, tais problemas são bem pontuais.

Outro ponto que algumas pessoas alegam é com relação a segurança. Alguns dizem: “Vai que existe um bug comprometedor neste framework e a minha aplicação fique vulnerável a ataques”. Bem a afirmação é válida e tem importância sim. Mas essa preocupação é a mesma para quaisquer sistemas e aplicativos existentes na infraestrutura da empresa. Por exemplo, digamos que exista uma vulnerabilidade no mod_rewrite do apache. Posso desativar o módulo ou trocar o meu servidor web. Da mesma maneira, com frameworks posso desativar determinado componente. Posso trocar o framework ou, posso até mesmo consertar a vulnerabilidade. Afinal na maioria dos casos tem-se acesso aos fontes de um framework podendo dessa maneira corrigir a vulnerabilidade e/ou evitar que esta seja utilizada.

É uma tendência a utilização de framework em desenvolvimento, principalmente desenvolvimento WEB. Portanto, caso tenha algo contra, reexamine o porquê e veja se vale a pena perder todas as vantagens listadas aqui.

Fontes: http://pt.wikipedia.org/wiki/Framework

Nestas ultimas semanas passei por uma experiência interessante com a infraestrutura de TI da empresa na qual presto consultoria. Tudo começa por volta das duas horas da tarde. Estava trabalhando normalmente e percebi uma mensagem de erro no meu email. Erro de autenticação. Estranhei, mas como estava entretido com o trabalho não dei muita importância. Passado uma hora depois disso acusou cabo de rede desconectado. Pensei comigo que a rede havia caido. Comecei a questionar as estações de trabalho do meu lado e todo mundo estava com a rede ok. Me levantei e fui questionar o pessoal da infraestrutura que o meu cabo de rede estava desconectado. A resposta, para a minha surpresa, foi para eu ir falar com o meu diretor. Chegando na sala do diretor, ele me disse que para eu obter acesso a rede, e-mail corporativo, svn, etc, eu necessitaria desinstalar o Ubuntu da minha maquina. Questionei o porque e a resposta foi que uma estação de trabalho com linux é uma ameaça a segurança.

Trabalho com linux a dois anos como estação de trabalho para desenvolvimento. É muito mais produtivo desenvolver em linux por diversos fatores, principalmente para desenvolvimento web, afinal de contas a sua maquina é muito parecida com o servidor final da aplicação. Além do mais, existem diversas opções no shell do linux de são um verdadeiro canivete suiço.

Mas porque então o pessoal de infraestrutura diz que linux é uma ameaça a segurança da rede? Simples, porque eles não sabem lidar com ele. A infraestrutura da empresa é toda composta por maquinas Windows. Administrar uma maquina windows é bem simples: Cria-se um usuário sem permissões administrativas, libera alguma opções administrativas para se poder trabalhar e acabou. Teoricamente você tem uma estação de trabalho segura. Mas e com uma estação de trabalho linux? A grande questão de segurança de uma rede não está em limitar o sistema operacional do usuário. Ainda mais um profissional de TI. Por exemplo, existe uma galera de Delphi na empresa. O que impede de criar uma aplicação que cria pacotes e roteia os pacotes através do proxy de maneira criptografada? Mesmo com PHP dá para fazer isso. Com C, com Java. A partir do ponto em que se está em uma estação de trabalho onde existam desenvolvedores de softwares, estes tem o poder de criar a aplicação que quiserem, independente do sistema operacional, e que estas aplicações furem a segurança da rede.

Então uma rede com desenvolvedores é uma rede insegura? Não. Um administrador de rede bom consegue manter uma rede segura mesmo com desenvolvedores utilizando diversos sistemas operacionais. Conheço diversas empresas que tem área de desenvolvimento e não tem nenhum problema de segurança.

Agora, vamos analisar a discussão principal desta matéria: O perfil profissional do pessoal de infraestrutura da empresa. Vou listar os pontos abaixo para facilitar a leitura:

  • Não notificaram o usuário: Ao invés de alguém chegar em mim e dizer assim: “Cara, você está usando linux e isso pode furar a segurança da rede.” ou “O que você acha de tentar adequar a sua maquina ao padrão da empresa”, o pessoal de infraestrutura arranca o cabo de rede.
  • Só conseguiram bloquear o usuário via puxar o cabo de rede: Qualquer júnior de administrador de rede consegue bloquear determinado IP de ter acesso a rede via software. Quando os caras só conseguiram me bloquear por completo via desconectar o cabo de rede, eles provaram qual o nível de profissionalismo deles.
  • Só conseguem administrar estações de trabalho de determinado SO: Administrar a rede administrando as estações de trabalho e a maneira mais burra que se tem para administrar uma rede. Principalmente quando esta rede é composta por desenvolvedores de software. Conforme já disse acima, qualquer desenvolvedor tem o poder de criar um aplicação que possa furar a segurança da rede ou, até mesmo, escalar privilégios da estação de trabalho. Ter uma postura restritiva só piorá a situação.

O mais engraçado é que a empresa vende o serviço de infraestrutura e o serviço de segurança de rede. Conforme um colega meu disse, comam no meu restaurante mas não visitem a minha cozinha.

Eu já divulguei nas diversas listas e IRC sobre a qualidade da infraestrutura da empresa.

Está disposto a aprender ?

Uma das coisas mais interessantes e que me atraem a área de desenvolvimento, em informática, é a questão de aprender. Estar sempre disposto a aprender,  seja sozinho, fazendo cursos, trocando informação atráves de foruns, colegas, etc. Neste respeito,  uma característica importante para o aprendizado é a humildade. isto me lembra um fato que ocorreu comigo a algum tempo. Certa vez fui fazer uma entrevista de emprego. Apresentava todos os requisitos para a vaga, realizei um teste que fiz sem maiores dificuldades e fui fazer a parte final da entrevista com a pessoa que iria me selecionar. Era um sujeito agradável e rolou uma conversa bacana. Nesta conversa descobri que eu iria trabalhar junto com ele no desenvolvimento. Nisso, fui questionado a respeito das tecnologias que eu utilizava. Citei que utilizava o Zend Framework ,para o desenvolvimento Server Side , Jquery e o Ext Js, para  desenvolvimento Client Side. Fiquei surpreso ao comentário do entrevistador dizendo que achava o Zend uma porcaria. Com relação ao Jquery, ele disse que não gostava de usar e com relação ao Ext Js ele não conhecia. Ele disse que a política da empresa alí era desenvolver seus próprios frameworks para aplicação (para um lugar que iria trabalhar com apenas dois desenvolvedores). Não comentei nada mas sai desapontado daquela entrevista pensando se iria aceitar trabalhar em um lugar onde novas tecnologias, que facilitam demais o serviço de programação, são desvalorizadas. Mas, creio que a lição principal neste relato é de que algumas pessoas, quando vêem alguma tecnologia nova e não a conhece direito tem a pessima mania de chamar de bosta ou dizer que não gosta. Esta é uma posição que compromete um profissional de informática na minha opinião. Fica aqui então o meu conselho: não fale mal do que não conhece. Afinal o mundo dá voltas e amanhã não será interessante para você se um entrevistador ou cliente chegar em você e perguntar a respeito de determinada tecnologia e você responder que é uma porcaria aquilo.

PS: Não fui chamado para a vaga. Menos uma decisão na vida que tive que tomar.

Acessem www.ismaelvacco.com.br

Blog no WordPress.com. | Tema: Motion até volcanic.
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.