Categorias
Engenharia de Software Java www

modelo de maturidade do desenvolvedor

Recentemente fiz a tradução do modelo de maturidade ReST e tive a ideia de fazer algo semelhante ao mundo do desenvolvimento.

Aqui não existe melhor ou pior, é apenas a maneira de como vejo os desenvolvedores.

O primeiro nível é o de mainframe.

Uma coisa é conhecer mainframe e evoluir, outra é conhecer mainframe e ficar nisso até hoje… é nesse sentido que eu falo da maturidade. Então, no meu modelo, se alguém entrou no mercado hoje ou há 30 anos, eu classifico a maturidade com as opções disponíveis que ele usa.

Depois de mais de 20 anos no mercado, já trabalhei em muitas empresas e acredito se classificarem em oito diferentes níveis.

Aqui a aplicação roda no servidor e você usa também no servidor, acessando por um terminal burro… aqui 99% é IBM.

Esse é o profissional da tela preta… ou verde monocromática, especialista em CICS,COBOL e DB2 , usando os OS/360, e hoje nos 64bits usa o z/OS.
Não existe mouse e sim milhares de arquivos para ler e fazer integrações via Connect Direct ou similares.

Aqui já se usa o mouse, os sistemas rodam na máquina cliente e no servidor temos o banco de dados, os dois se conversam via SQL.

Temos aqui na maioria dos sistemas em Visual Basic, Delphi, FoxPro, Java, Oracle Forms em máquinas Windows acessando servidores de banco de dados SQL Server, Oracle, MySQL , PostgreSQL e até Microsoft Access.

Aqui surgem os programadores back-end, especializados em rotinas de banco de dados, e os de front-end, especializados em telas.

Aqui chegamos na era da Internet, ganha vida a terceira camada, entre o cliente e o servidor de dados temos agora o servidor de aplicação.

O cliente agora é um web browser, e a facilidade do clica e arrasta de antes agora está vendida aos padrões da W3C ( HTML + JavaScript + CSS).

Aqui o programador back-end além de banco de dados, pode ser também o que programa serviços que acessam ao banco e tem uma lógica de negócio, e os de front-end agora são especialistas HTML + JavaScript e CSS, e temos também os UX Designers, responsáveis pela inteligência da disposição dos elementos na tela e seu funcionamento, pensando na usabilidade do sistema.

Aqui também surgiu o tema da pessoa que sabe um pouco de tudo, do back-end ao front-end, chamado de fullstack developer.

Outros sistemas web passaram a conversar entre si através de Web Services SOAP.

Com o crescimento dos sistemas online, surgiu também a opção de usar a mensageria para atender a alta demanda, o que certamente também é um diferencial nos sistemas.

Agora os sistemas são usados em tablets e celulares, de diferentes fabricantes, e além da interface que mudou, os serviços existentes nos sistemas tem que conversar com esses novos dispositivos.

Com um hardware limitado e outras imposições dos fabricantes, surgiu um mercado de especialistas apenas em Android, iPhone e Windows Phone.

Aqui ganha muito espaço o padrão ReST de comunicação entre os dispositivos e os serviços dos sistemas.

Na parte de IoT a limitação é ainda maior, até os protocolos de comunicação mudam, surgindo muitos especialistas em alguma delas.

A aplicação ultrapassa a barreira dos data-centers e chega na nuvem, conseguindo aumentar ou diminuir os seus recursos conforme a necessidade.

Cabe agora ao desenvolvedor perceber que o seu sistema pode usar e liberar recursos sob demanda e permitir que esse cenário funcione.

Todo o desenvolvimento até então era rendido ao SQL junto com as bases de dados relacionais, mas muitos negócios mostram-se nada eficazes nesse cenário.

Entram em cena as bases NoSQL, com as bases baseadas em chave-valor, documento JSON (MongoDB) e até grafos (Neo4j).

Existia uma época que memória RAM era cara e muitas limitações foram impostas, e até hoje muitos sistemas são construídos dessa maneira.
A memória hoje pode ser distribuída em várias máquinas para compartilhar com os diversos sistemas, muitas soluções no mercado fazem isso como Redis, Memcached ou Hazelcast.

Onde existe a intervenção humana, existe a chance de erro. Um código sem testes é um código com erros.

Quem continuar a programar sem testes não terá a maturidade necessária para entregar algo com qualidade, será eterno escravo de seus bugs.

Resumo:

E você, em qual nível está ?

Fernando Boaglio, para a comunidade

Por Fernando Boaglio