Tag: Produção-de-Software


Software livre não é solução

abril 28th, 2010 — 10:38am

Num post anterior falei de quatro problemas do software livre. Inerentes a eles está o aspecto social do desenvolvimento de qualquer software, e principalmente de sistemas de informação. Muitas pessoas ainda não se dão conta que todas as etapas de desenvolvimento, da sua concepção enquanto idéia, até o seu uso se dá de forma social e, mais importante, com a participação do usuário. Pelo menos deveria ser assim para todo sistema de informação, já que este tipo de software é uma construção inerentemente social e tem por objetivo atender a uma demanda social (Brooks 1995). Pense em um sistema de controle de estoque, educacional, de controle bancário, de uma loja,  etc. e fica fácil perceber que estes ficam sempre no meio de alguma interação social. Por isto, o desenvolvimento de um sistema para uma empresa sem a contribuição de seus potenciais usuários é um sistema fadado ao fracasso já na sua concepção.

No caso do software livre este aspecto social é ainda mais importante pelas características da equipe de desenvolvimento (Weber 2004). Elas são, em geral, dispersas geograficamente e possuem programadores trabalhando por uma motivação pessoal, às vezes sem nenhum tipo de compensação financeira. Por este motivo, os programadores precisam ser e estar motivados para trabalhar num projeto de software livre. Motivação esta que está diretamente atrelada a dois componentes do software: 1) o desafio técnico que ele oferece e 2) a grande base de usuários que terá acesso a seu código e usará o sistema, formando uma comunidade ativa de pessoas discutindo o mesmo. Pense em todos os softwares livre de sucesso: WordPress, Linux, Firefox, Apache, etc. São todos aplicativos de complexidade mais alta e de aplicação mais genérica, multi-uso, com uma comunidade ativa de usuários e desenvolvedores.

Este tipo de software motiva os melhores programadores do mundo inteiro. É exatamente o oposto de trabalhar num software para, digamos, uma loja no Brasil. Construir um software destes é relativamente simples e está restrito apenas aos usuários brasileiros; porque o conjunto de regras aqui é diferente das de outros países para este tipo de software. Assim,  como os melhores programadores brasileiros dedicam seus tempos livres a projetos como o Linux, sobram para estes projetos específicos os programadores pagos pelo governo ou empresas, ou aqueles despreparados e que não conseguem contribuir em projetos mais desafiadores.

Não estou dizendo com tudo isto que sou contra o software livre. Também não o acho uma alternativa melhor ou pior que outras formas de desenvolvimento (e.g., software customizado ou produto) sem levar em conta o contexto. Ele é, para mim, apenas mais uma opção a ser considerada, com seus prós e contras. Não acho, por exemplo, que o governo brasileiro está errado em adquirir software livre. Acho que ele está errado em fazer este tipo de aquisição quando o faz porque o software é livre. É preciso sempre ponderar qual é a melhor solução para as necessidades de uso, sendo o tipo de licença do software e a forma de produzi-lo variáveis no processo.

A diretriz arbitrária do governo brasileiro de sempre optar por software livre é ruim para ele, para a população e para a indústria. De maneira análoga, o governo poderia também arbitrariamente decidir por comprar software brasileiro em detrimento de software de outros países. Fazendo isto, ele deixa de fazer a aquisição considerando o mais importante, a compra do software com o melhor potencial de atendê-lo em suas necessidades. A analogia é importante porque a indústria de tecnologia no Brasil era exatamente protegida desta forma até o começo da década de 90. O resultado foi um atraso tecnológico pelo qual até hoje pagamos o preço.

Note que adotar software proprietário não significa adotar padrões fechados ou bloquear o acesso à informação. É perfeitamente possível, comum até, utilizar um software proprietário com padrões abertos e que torne a informação mais acessível e disponível para todos. Basta lembrar que a base da Internet, o conjunto de protocolos TCP/IP, não nasceu aberto, muito pelo contrário, foi desenvolvido pelos militares americanos e com o objetivo de uso exclusivo. Mesmo hoje, o principal conjunto de protocolos e padrões da Internet são mantidos por uma organização americana patrocinada pela gigante VeriSign e pela Agência Nacional de Segurança dos EUA. É uma questão política complexa mas, simplificando, a Internet só é livre hoje porque os EUA deixa. (Sobre este assunto, recomendo o excelente conjunto de visualizações mostrando a geopolítica da Internet – em francês)

Concluindo, software livre não é solução de problemas por ser livre. Aliás, software livre, em si, não é solução de nada. Do ponto de vista do desenvolvimento, ele pode ser visto como uma modalidade de criação do software. Uma muito mais apropriada para alguns tipos de projeto, aqueles com potencial de atrair uma comunidade de desenvolvedores abrangente. Do ponto de vista do usuário final, é apenas mais uma variável a ser considerada no processo de aquisição. E uma que não deveria se sobrepor às suas necessidades de uso.

Num post anterior falei de quatro problemas do software livre. Inerentes a eles está o aspecto social do desenvolvimento de qualquer software, e principalmente de sistemas de informação. Muitas pessoas ainda não se dão conta que todas as etapas de desenvolvimento, da sua concepção enquanto idéia, até o seu uso se dá de forma social e, mais importante, com a participação do usuário. Pelo menos deveria ser assim para todo sistema de informação, já que este tipo de software é uma construção inerentemente social e tem por objetivo atender a uma demanda social (Brooks 1995). Pense em um sistema de controle de estoque, educacional, de controle bancário, de uma loja, etc. e fica fácil perceber que estes ficam sempre no meio de alguma interação social. Por isto, o desenvolvimento de um sistema para uma empresa sem a contribuição de seus potenciais usuários é um sistema fadado ao fracasso já na sua concepção.

No caso do software livre este aspecto social é ainda mais importante pelas características da equipe de desenvolvimento (Weber 2004). Elas são, em geral, dispersas geograficamente e possuem programadores trabalhando por uma motivação pessoal, às vezes sem nenhum tipo de compensação financeira. Por este motivo, os programadores precisam ser e estar motivados para trabalhar num projeto de software livre. Motivação esta que está diretamente atrelada a dois componentes do software: 1) o desafio técnico que ele oferece e 2) a grande base de usuários que terá acesso ao seu código e usará o sistema, formando uma comunidade ativa de pessoas discutindo o mesmo. Pense em todos os softwares livre de sucesso: WordPress, Linux, Firefox, Apache, etc. São todos aplicativos de complexidade mais alta e de aplicação mais genérica, multi-uso, com uma comunidade ativa de usuários e desenvolvedores.

Este tipo de software motiva os melhores programadores do mundo inteiro. É exatamente o oposto de trabalhar num software para, digamos, uma loja no Brasil. Construir um software destes é relativamente simples e está restrito apenas aos usuários brasileiros; porque o conjunto de regras aqui é diferente das de outros países para este tipo de software. Assim, como os melhores programadores brasileiros dedicam seus tempos livres a projetos como o Linux, sobram para estes projetos específicos os programadores pagos pelo governo ou empresas, ou aqueles despreparados e que não conseguem contribuir em projetos mais desafiadores.

Não estou dizendo com tudo isto que sou contra o software livre. Também não o acho uma alternativa melhor ou pior a outras formas de desenvolvimento (e.g., software customizado ou produto) sem levar em conta o contexto. Ele é, para mim, apenas mais uma opção a ser considerada, com seus prós (que quase todo mundo conhece) e contras (dos quais falei aqui). Não acho, por exemplo, que o governo brasileiro está errado em adquirir software livre. Acho que ele está errado em fazer este tipo de aquisição quando o faz porque o software é livre, sem considerar exatamente seus prós e contras e os de outras opções. É preciso sempre ponderar qual é a melhor solução para as necessidades de uso, sendo o tipo de licença do software e a forma de produzi-lo variáveis no processo.

A diretriz arbitrária do governo brasileiro de sempre optar por software livre é ruim para ele, para a população e para a indústria. De maneira análoga, o governo poderia também arbitrariamente decidir por comprar software brasileiro em detrimento de software de outros países quando houver a opção. Fazendo isto, ele deixa de fazer a aquisição considerando o mais importante, a compra do software com o melhor potencial de atendê-lo em suas necessidades. A analogia é importante porque a indústria de tecnologia no Brasil era exatamente protegida desta forma até o começo da década de 90. O resultado foi um atraso tecnológico pelo qual até hoje pagamos o preço.

Note que adotar software proprietário não significa adotar padrões fechados ou bloquear o acesso à informação. É perfeitamente possível, comum até, utilizar um software proprietário com padrões abertos e que torne a informação mais acessível e disponível para todos. Basta lembrar que a base da Internet, o conjunto de protocolos TCP/IP, não nasceu aberto, muito pelo contrário, foi desenvolvido pelos militares americanos e com o objetivo de uso exclusivo. Mesmo hoje, o principal conjunto de protocolos e padrões da Internet são mantidos por uma organização americana patrocinada pela gigante VeriSign e pela Agência Nacional de Segurança dos EUA. É uma questão política complexa mas, simplificando, a Internet só é livre hoje porque os EUA deixa.

(Sobre este assunto, recomendo o excelente conjunto de visualizações mostrando a geopolítica da Internet: http://www.arte.tv/fr/Comprendre-le-monde/le-dessous-des-cartes/392,CmC=396,view=maps.html – em francês)

Concluindo, software livre não é solução de problemas por ser livre. Aliás, software livre, em si, não é solução de nada. Do ponto de vista do desenvolvimento, ele pode ser visto como uma modalidade de criação do software. Uma muito mais apropriada para alguns tipos de projeto, aqueles com potencial de atrair uma comunidade de desenvolvedores abrangente. Do ponto de vista do usuário final, é apenas mais uma variável a ser considerada no processo de aquisição. E uma que não deveria se sobrepor às suas necessidades de uso.

3 comments » | Tecnologia da Informação

A produção de software no Brasil e o porquê da Índia ser melhor

abril 13th, 2009 — 5:08am

Ano passado um russo veio à Bangalore visitar o Instituto onde estudo, vindo de Vitória, ES, cidade onde morei praticamente toda minha infância. É isto mesmo. Fiquei tão impressionado com a coincidência que 3 horas em um restaurante próximo não foram suficientes para tanto assunto. O sujeito é pesquisador na Universidade de Berkeley (Califórnia) e conheceu a esposa lá. Ela é carioca, a propósito.

Obviamente a origem da esposa foi mais do que motivo suficiente para ele iniciar um trabalho de pesquisa no Rio. Não me recordo quanto tempo ele ficou na cidade, mas o foco do estudo era no entendimento da metodologia adotada pelos cariocas no processo de desenvolvimento de software. Por que o Rio? Bem, além do fato da esposa ser de lá, outro motivo, segundo ele, é que mais cidades no mundo podem ser comparadas ao Rio, ao contrário da grandiosa São Paulo, o que possibilita um uso mais diverso do resultado. Outro aspecto que ele considera curioso no Rio é a maneira como a cidade se coloca no mercado, à sombra de sua vizinha paulista.

Entre um arroz biryani e outro, ele me apresentou a sua visão do mercado brasileiro de software – bem interessante, por sinal. Por que, por exemplo, os brasileiros produzem software para o mercado interno enquanto a Índia fatura horrores com a exportação? Certamente a língua não é o principal fator. Segundo ele, o fato do software estar em português, o que implicaria em algum custo para tradução (principalmente se o software não foi originalmente projetado para várias línguas) não é (ou não deveria ser), de longe, o principal entrave à exportação. Vencido este primeiro obstáculo, são inúmeras as etapas a serem cumpridas para que o software possa ser comercializado internacionalmente. A língua é, literalmente, o de menos…

Mas então, por que não vendemos software lá fora?

A culpa é do nosso pequeno mercado e da maneira como as empresas brasileiras atuam nele. Ele é, na verdade, ao mesmo tempo uma benção e um calo no pé. É claro que o fato de possuirmos um mercado interno estimula a produção de software local e sem ele nossas atuais empresas provavelmente não existiriam. Entretanto, graças a ele também é que estas mesmas empresas acabam se acomodando: “O meu cliente está logo ali, para que ir mais longe?”.

Outra característica peculiar de nossas empresas de software está na relação com os clientes. Primeiro que elas nascem ou já com um cliente em mente ou pensando em arrumar um cliente. Raramente uma empresa de software no Brasil surge com um plano de negócios focado em um mercado para produzir software numa economia de escala. O foco da empresa no cliente está na natureza de nossas relações. Dificilmente negamos as solicitações dos clientes o que acaba resultando em versões customizadas de um mesmo produto para cada um deles. É mais ou menos como se a relação precisasse ser informal, em tom de amizade [en]. Parece familiar? Pois é, para mim também. Este comportamento acaba fazendo com que as empresas de software do Brasil aceitem praticamente todas as solicitações dos clientes, indo ao extremo de detalhar no software particularidades exclusivas de cada um se preciso.

Além disto, o nosso principal cliente, o governo, tem características muito distintas que exigem grande esforço e investimento na relação comercial. Este mesmo governo também dita o tipo de serviço prestado pelas empresas locais. Nas décadas de 80 e começo de 90, por exemplo, quando o governo impunha severas restrições à entrada de hardware no Brasil, houve uma demanda pela produção interna dele.

Este tipo incentivo tem grandes desvantagens. Primeiro que incentivar a produção de tecnologia em detrimento do uso, acaba favorecendo apenas um setor da indústria quando vários poderiam se beneficiar se o incentivo do governo estivesse no uso da tecnologia. Segundo que, no caso particular da produção de hardware, o mercado internacional é altamente competitivo e dominado por grandes empresas principalmente estabelecidas nos EUA.

Assim, quando se iniciou no Brasil um processo de abertura comercial, muitas das empresas de hardware brasileiras tiveram que encolher consideravelmente ou simplesmente fechar as portas. Com políticas mais recentes do governo, este quadro está se revertendo um pouco. De 2000 para cá é evidente o crescimento de nossa indústria de hardware e software.

No caso do mercado externo, entretanto, são duas razões principais para nossas pífias exportações: 1) lá fora as empresas de software brasileiras não conhecem ninguém, o que dificulta qualquer aproximação mais pessoal da maneira como fazemos no Brasil; e 2) elas muitas vezes não possuem o interesse pois o mercado brasileiro é aparentemente suficiente para elas….

Normalmente uma empresa brasileira inicia alguma operação no mercado internacional apenas quando a oportunidade bate a sua porta. Ou seja, se algum comprador internacional procurar a empresa brasileira, demonstrando bastante interesse, então a ela terá a motivação necessária para tal empreitada.

Como em toda regra, entretanto, esta também possui suas exceções. O melhor exemplo talvez seja a linguagem de programação Lua. Ela foi criada na PUC do Rio em 1993 e desde o seu nascimento foi projetada em inglês, para o mercado externo. Para se ter uma idéia, nem existe manual em português. Aliás, os melhores livros dela só são encontrados fora do Brasil e sem tradução para nossa língua. Segundo o site oficial, Lua é usada em várias aplicações de grande porte (por exemplo, o Adobe Photoshop Lightroom) e é a linguagem de script dominante na criação de jogos. Menos de 10% dos mais de 1300 assinantes da lista de discussão são do Brasil.

Para fechar, o meu amigo russo acha que os brasileiros das empresas de software são megalomaníacos (ele fala um bom português e literalmente usou esta palavra). São todos cheios de grandes planos, sonham em atingir o mercado internacional, mas pouco fazem na prática para tornar os sonhos concretos. É a perfeita justificativa, segundo ele, para que nosso país continue sendo o “país de futuro”, sem planos no presente.

***

O estudo do pesquisador ocorreu essencialmente no Rio de Janeiro. Embora alguma extrapolação seja possível, a generalização oculta outros padrões que se destacam principalmente em algumas regiões do Sul do Brasil, em São Paulo, e em Recife. Ainda assim, estamos muito atrás da Índia na indústria de software. Temos grandes empresas mas a maioria ainda é estrangeira (inclusive as Indianas Wipro e Satyam) e que só agora começam a se organizar para tornar o país competitivo. O resultado deste individualismo e falta de pró-atividade é um mercado menor que a metade do mercado Indiano (cerca de US$ 20 bilhões em comparação aos US$ 50 bi Indianos), com déficit na balança comercial, e  ainda bastante dependente do governo para se sustentar.

Para mais informações:

12 comments » | Tecnologia da Informação

Back to top