Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens

segunda-feira, 12 de dezembro de 2011

Developeronomics

Bem vindo ao novo mundo! Desde 29 de outubro de 1969 às 22:30 está no ar a Internet (que se chamva na época ARPANET). Com ela, uma revolução em diversas áreas, desde pesquisas científicas até a própria ficção científica, que ganha realidade. Dentro dessa revolução em andamento surge uma novidade: O investimento em desenvolvedores de software, ou o início da Developeronomics. Esse termo li num artigo da Forbes escrito por Venkatesh Rao, que cita o investimento mais certo que as empresas deveriam fazer, que seria em um capital humano específico: Os desenvolvedores de software. 

Relacionado a esse tema, um outro artigo que li dessa mesma revista, chamado “Now Every Company Is A Software Company” (Agora toda empresa é uma empresa de software), mostra que (como o nome diz) as empresas, independente de serem industriais, são também empresas de software, e negar esse fato complica muito as coisas para a companhia. Pegando o exemplo da Ford, o artigo diz que a preocupação da Ford não é mais fazer carros, mas sim produzir “sofisticados computadores sobre rodas”, com softwares avançados e alta tecnologia embutidas num carro. Essa é a tendência, e não é uma moda passageira. Chegamos a um ponto em que o produto é medido de acordo com a tecnologia inteligente que ele oferece, seja na sua produção ou embutidas no próprio produto. Um outro exemplo é a FedEx, onde a informação do pacote é tão importante quanto o próprio pacote, e esta empresa emprega centenas de desenvolvedores que constroem seus programas para tal fim. Controle, acesso, informação, análise e velocidade são as palavras mais usadas nas empresas hoje, e todas dependem de software. Software, caso não saiba nosso leitor (que seria uma vergonha, mas vai saber né?), pode ser explicada facilmente com a piadinha infame: É a parte que a gente xinga. Hardware é a parte que a gente chuta. Software são os programas, que funcionam nos hardwares, que podem ser computadores, celulares, tablets, geladeiras, etc. 

Eu, como desenvolvedor, fiquei contente em ler a matéria da Forbes, pois tenho emprego garantido por um bom tempo, serei mais valorizado conforme o tempo passa e talvez não serei chamado de peão de luxo, como a maioria vê hoje os desenvolvedores (também chamados de programadores). Vi isso quando recentemente troquei de emprego. Resolvi sair do meu emprego e arrumei outros três em  uma semana. Pude escolher o que achei melhor. Isso prova que o Brasil está caçando profissionais qualificados em desenvolvimento de software, e, fazendo parte do BRIC (Brasil, Rússia, Índia e China), o Brasil é agora a bola da vez, ganhando cada vez mais espaço no mercado de software mundial. 

Um amigo até comentou que em pouco tempo os programas serão desenvolvidos por Inteligência Artificial, não sendo mais necessário a alocação do profissional humano, mas acho que isso é muita ficção científica pro meu gosto. Como comentei com ele, imagina um DESC (demente especificador de software comum) especificando algo para que a Inteligência Artificial faça seu trabalho. Normalmente os DESC's não sabem o que querem, logo, teremos que dotar de consciência o computador, para interpretar o que o DESC realmente precisa. Acredito que não seja tão simples como o carro que dirige sozinho do Google, e vai levar um bom tempo que provavelmente não estarei mais por aqui quando acontecer. 

Talvez para quem não está no meio tecnológico não sinta tanto ou talvez não ache que essa movimentação está realmente acontecendo, mas claramente percebemos a revolução, inclusive no Brasil, que carece de mão de obra qualificada. Veja que temos gente desempregada e temos vagas abertas, porém a grande maioria das pessoas não conseguem preencher os requisitos mínimos para as posições que o emprego exige. Isso é triste, e mais triste ainda é não fazer nada, como nosso belíssimo se-faz-de-morto governo e nosso pacato povo brasileiro, que finge que não é com ele (Armless John). Profissões como advogado, médico, engenheiro, arquiteto, e outras seculares estão se adequando ao novo mundo. Hoje um médico dificilmente prescreve algum medicamento sem um exame computadorizado (tirando os pronto-socorros, onde só vão pessoas que estão com virose ou stress), ou um advogado que hoje pesquisa seus casos usando o computador. Enfim, todos precisam dos softwares adequados para seu trabalho, e não saber manejar esse software coloca em risco a realocação desse profissional no mercado de trabalho. O analfabetismo digital é preocupante, e infelizmente não há muita esperança para quem não maneja um software de sua profissão. Incentivo quem quer ser um programador, como no meu teste vocacional elaborado que postei aqui, e ainda acho que essa profissão é um excelente negócio, mas tem que passar no teste, caso contrário, esqueça.

quarta-feira, 31 de agosto de 2011

As mulheres e a programação


Umas das coisas que considero curiosa sobre a área de programação de computadores é a ausência de mulheres. Não sou ignorante o suficiente para acreditar em capacidade cerebral maior de homens em relação às mulheres, logo essa dúvida de um número tão pequeno de mulheres programadoras me chama a atenção. Particularmente, acredito que a maneira em que se trabalha com programação nas empresas hoje em dia está míope. Preza-se muito a capacidade individual do programador, mas nada se exige quanto ao trabalho em grupo.
Recentemente saiu uma pesquisa do Centro de Inteligência Coletiva do M.I.T. (Massachusetts Institute of Technology) indicando que o segredo do sucesso de um grupo que executa várias tarefas diferentes está diretamente relacionado com a presença de mulheres entre seus membros. Assisti o vídeo da entrevista da pesquisadora Anita Williams Wollen, e ela diz que grupos conseguem desempenhar um melhor resultado quando esses indivíduos apresentam sensibilidade social (social sensitivity) elevada. Nesse grupo, os membros são igualmente participativos, diferenciando-se assim de um grupo menos produtivo, quando um único indivíduo fala e os outros apenas ouvem, por exemplo. Assim, a pesquisa conclui que a medida para a eficácia de um grupo está diretamente relacionada com trabalho em grupo em si, e não com o QI individual de seus membros.

Ora, então por que é que quando vamos fazer entrevistas de empregos, na enorme maioria das vezes somos testados somente com provas técnicas? Ou pior, quando entramos para trabalhar na empresa, por que é que as pessoas não podem conversar durante o trabalho, sendo imediatamente desencorajadas pelos seus superiores hierárquicos, que prezam o trabalho individual?

Recentemente na empresa estávamos desenvolvendo uma solução complexa de regras de negócios infindáveis, com diversos "buracos" lógicos que tentávamos evitar. Percebi que alguns problemas eram mais facilmente resolvidos quando conversávamos sobre esses cenários, dando sugestões, ou até mesmo simplesmente falando como achávamos que deveríamos resolver determinada situação. Muitas vezes, apenas falar com a pessoa ao lado já te traz a solução daquilo que se busca, e em alguns casos a pessoa pode ser apenas um ouvinte, e mesmo assim a resposta surge em sua mente. Penso que o trabalho em grupo na área de programação deveria ser incentivado em empresas, e não repelido, como acontece frequentemente. Quando você começa a conversar com seu colega, já vi chefes chegando e perguntando se você já terminou isso ou aquilo, numa clara tentativa de acabar com a "conversa", que para ele é só perda de tempo. Porém sabemos que exatamente o contrário. O grupo é mais inteligente que a soma dos QIs individuais dos membros desse grupo, e isso está sendo provado nessa pesquisa em questão.

Em programação, uma das maiores reclamações dos programadores é o retrabalho. Esse retrabalho normalmente acontece porque os cenários não foram cobertos suficientemente, ou porque algo "quebrou" no código em um pedaço que não foi levado em conta quando estava sendo desenvolvido. Isso poderia ser reduzido substancialmente se as empresas percebessem que a comunicação é sim importante, e um ambiente de trabalho "quieto" é também um ambiente de trabalho fadado à ineficiência.

E onde as mulheres entram nisso tudo? Mulheres são mais dispostas a entenderem a sensibilidade social, que seria algo como perceber o que um indivíduo está sentindo ou querendo dizer naquele momento baseado em suas espressões corporais ou entonação de voz. Mulheres observam mais, e naturalmente prestam mais atenção à detalhes que muitas vezes não percebemos, e isso é um ganho fundamental para a inteligência coletiva, ou Fator-C como é chamada. Por isso, um maior incentivo deveria ser dado às mulheres para adentrarem ao mercado da programação de computadores, criando ambientes descontraídos, pagando-se bem a elas, e incentivando-as nas universidades. Novamente digo que não acredito que as mulheres não tenham capacidade técnica de desempenhar o trabalho de um programador, mas acredito que elas olham tudo aquilo e acham realmente chato demais. E é isso que deve ser mudado.

sexta-feira, 19 de março de 2010

Você!

Todos somos culpados, mas a corrente sempre rompe no seu elo mais fraco. E os demais elos culpam o elo rompido, como se eles mesmos não fizessem parte da mesma corrente. No mundo da informática, no qual me insiro, não existe culpado maior pelos problemas de um sistema do que o programador. Quem trabalha nesse meio sabe que o programador é um peão de fábrica, que trabalha com prazos irreais, e com clientes sempre insatisfeitos. Se alguma coisa não funciona a culpa é sempre do programador.

Será que as pessoas gostam de hipocrisia? Gerentes, arquitetos, coordenadores, clientes, analistas de negócio, vendedores, testadores, todos podem errar, mas a culpa adivinha de quem é? Se tudo dá certo, parabéns aos gerentes, arquitetos, coordenadores, clientes, analistas de negócio, vendedores e testadores. Não temos parabéns para o programador, afinal, não fez mais que a sua obrigação, não é verdade? Não! Não é verdade. O programador trabalha em ambiente insalubre. Normalmente trabalha este com uma máquina muito ultrapassada, com recursos limitadíssimos, com servidores de teste entulhados de problemas, com banco de dados que não tem informação válida sem falar nos prazos para ontem. Por que será que ainda hoje, após anos de programação e métodos de trabalho, após diversos PMIs e metodologias pomposas com gráficos em Power Point, ainda temos que passar por situações em que não é humanamente possível entregar um projeto decente? Não observa isso os gerentes, clientes e quem mais define liderança em uma empresa? Será que é mais bonito entregar primeiro e correr atrás do erro depois? Claro que a pergunta é retórica. Primeiro vende-se o produto. Depois alguém vai ver se dá pra fazer o prometido. E se não der? Ah, aí culpa-se alguém, né?

No mundo capitalista, vivemos uma situação em que o dinheiro vem em primeiro plano. O que gera renda imediata, a curto prazo, é o principal da situação. Não se tem planejamento se este impeça a venda de alguma coisa naquele momento. Até isso acontecer, é uma consequência do capitalismo. O que não deveria acontecer é um bando de hipócritas querendo jogar a culpa nas pessoas que realmente produziram o software.

As ferramentas de programação e linguagens estão ficando mais amigáveis. Com interfaces mais simples, como o Code Bubbles para Java (veja o vídeo), e o Spring Framework, que facilitam muito tarefas comuns em todos os projetos, isso tudo para agilizar o desenvolvimento e a entrega do produto. É algo como “se não podemos vencê-los juntemo-nos a eles”. A comunidade se esforça para tornar a parte de codificação mais rápida. Apesar da resistência das empresas adotarem as ferramentas e frameworks mais novas, ainda existe uma luz no fim do túnel, e um dia teremos ferramentas modernas o suficiente em que o desenvolvimento em si se torne apenas uma montagem de regras de negócio específicas de cada projeto, e a codificação seja implícita, ou pelo menos bem menor. Aí, talvez teremos um outro culpado: O Analista de Negócio. A culpa é minha e coloco ela em quem eu quiser.

sexta-feira, 17 de abril de 2009

Coloque o arquivo de guerra no gato Tom.

“O Sr. Já trabalhou com AJAX? – Perguntou o entrevistador a seu candidato.
Sim, claro que já. Trabalhei há dez anos com AJAX. – Respondeu o candidato à vaga de Analista de Sistemas Java.
Surpreso, o entrevistador questionou-o:
- Como assim ‘há dez anos’? AJAX só existe de fato há três anos.
- Ah, não é verdade. Eu trabalhava com AJAX junto com meu pai. A gente vendia muitos litros. Ele tinha uma Kombi, sabe...
- Calma, calma. – interrompe o entrevistador já irritado – Eu estava falando de outra coisa. Olha esquece, tá? E sobre Swing?
- Ah, isso eu não faço não. Sou casado.” [1]

O mercado da informática tem suas peculiaridades, assim como toda profissão, e essas peculiaridades são um tanto quanto estranhas para quem fala o idioma tupiniquim. Algumas coisas no mundo da programação de computadores simplesmente não podem ser traduzidas, pois perderiam todo o sentido. O exemplo acima diz respeito a uma tecnologia chamada AJAX, que tem o mesmo nome de uma marca famosa de produtos de limpeza para uso geral, de propriedade da Colgate. Swing é o nome de outra tecnologia, com mesmo nome alusivo à mais completa putaria conhecida. Por isso alguns livros pecam muito em tentar traduzir termos e nomes que não podem ser traduzidos. Na linguagem de programação Java (que quase se chamou Carvalho... Eu disse CARVALHO), existe uma função principal chamada “main” (main é principal, em inglês). A composição dessa função (que em Java chama-se método) tem um nome grande, e se fossemos traduzir teríamos a pérola:

Vácuo público da estática principal ( args[] da Corda ); [2]

Veja que beleza. Não dá para traduzir. Cada palavra tem um sentido específico em inglês, válido somente para o contexto em questão.

Quando você faz um desenvolvimento em Java, são gerados pacotes, que possuem extensões de arquivo, do tipo jar, ear e war. Um dos servidores que rodam esses arquivos é chamado de Tomcat (O Gato Tom). Vai lá você traduzir: Coloca pra mim a guerra, a orelha e o jarro no gato tom, por favor? Alguém que estivesse passando acharia no mínimo que errou o caminho e foi parar no hospício. Só faz sentido em inglês.

Outra coisa interessante são os nomes das tecnologias e produtos. Temos Ajax e Gato Tom, como vimos acima, Java Servidor Caras, Caras Ricas, Java Grão de Café, Hibernar, Primavera, Chapéu Vermelho, Lixeiro, Sabão, Eclipse, Peixe de Vidro, e por aí vai. Tanta criatividade atrapalha muito os tradutores não familiarizados.

Esses dias estava assistindo o filme “Across de Universe” e estavam traduzindo na legenda as músicas dos Beatles. Cada pérola que saia que eu me matava de rir. Uma das mais engraçadas foi no refrão da música “I am the Walrus”, onde John canta “I am the eggman, they are the eggmen, I am the walrus,Goo goo ga joob”. Lennon certa vez recebeu uma carta de um estudante dizendo que seu professor de língua inglêsa estava analisando as músicas dos Beatles. John então num tom provocativo escreveu I am the Walrus, uma música cheia de referências, simbologias e aberta a várias interpretações, e Eggman é Intelectual e não “cabeça de ovo” como foi traduzido na legenda. A tradução/interpretação do refrão deveria ser “Eu sou o intelectual, eles são os intelectuais. Eu sou a morsa, bom bom bom trabalho”. Nada a ver com o que foi colocado lá na legenda, por uma pessoa ou grupo que não entendia nada de Beatles.

Bom tradutor é aquele que entende o espírito da coisa e coloca a tradução interpretada corretamente ou deixa o termo em inglês. Um bom exemplo é o livro “Direitos Iguais, Rituais Iguais” de Terry Pratchett que saiu aqui pela editora Conrad. Os tradutores espertamente colocaram os dois sentidos de “Equal Rites”, título em inglês. Rites significa rituais ou ritos e tem a mesma pronúncia de “rights”, direitos. Faz todo sentido, pois é uma história de uma menina que quer ser mago, profissão permitida somente para homens, no livro. Então ela quer ter direito (rights) de ser mago e praticar seus ritos (rites). Parabéns à Conrad.


[1] AJAX significa Asynchronous JavaScript and XML.
[2] Obviamente todo programador Java conhece o método public static void main( String[] args)