Eustáquio Rangel

Desenvolvedor, pai, metalhead, ciclista

Utilizando Windows por um mês

Publicado em Developer


Alguns dias atrás, o Fábio Akita fez um post sobre a experiência dele utilizando GNU/Linux, após anos utilizando produtos da Apple. Eu também tive uma experiência de trocar de sistema operacional faz algumas semanas, e vou aproveitar aqui o embalo para relatar o que rolou. Levando em conta também que fui usuário de Windows por bastante tempo (fazer o que, a idade tá aí para contar) antes de migrar de vez para o mundo do GNU/Linux. Alguns podem argumentar que eu não utilizei as versões mais recentes do sistema no nível que eu utilizava até mais ou menos no XP, mas também esse papo de "você não testou o novo" perdura já por décadas, e muitas vezes perde o sentido.

Espero fazer uma análise bem isenta como o Akita fez, levando em conta que algumas pessoas que trabalham com ambiente da Apple acham e não economizam nas palavras para dizer que o desktop no Linux é mais feio que o diabo e, além das complicações técnicas que apareceram, tem as ideológicas (sim, no caso desse post aqui, não de alguma outra pessoa, não vou ser hipócrita e dizer que não existem). Talvez muita gente não saiba que a Microsoft tentou com vontade ferrar o mundo do Software Livre, em especial o GNU/Linux por várias vezes, mas eu estava lá, vi o que rolou, então uma birra nesse caso é bem justificável. Enfim, vou tentar me ater às limitações técnicas encontradas e tentar eximir o máximo essa ojeriza por parte do fabricante do software, focando no software.

Aproveitando e fazendo um adendo sobre essa questão de focar no software: no post dele, o Akita deu vários exemplos de softwares muito bons do Mac, como Keynote, iMovies, Garageband, Photoshop e o próprio Microsoft Office, mas sério, eu nunca precisei de softwares similares em um nível que eu tivesse que esquentar muito a cabeça com isso. Com o que tem no mundo do Software Livre, para mim está bom. Mas isso, lógico, é o meu caso. Entra naquela questão levantada pelo Akita de ser produtivo. Migrar para o Ubuntu fez realmente eu ter que parar de compilar o kernel do jeito que eu gostava (e o George também), me deu várias comodidades, mas realmente não precisei de mais isso.

TL;DR: Não gostei de usar Windows. Para mim ainda um ambiente Linux é o melhor para trabalhar.

Descrição dos ambientes comparados

Distro Linux

Ultimamente eu utilizo o Ubuntu, mas já passei por várias distros do Linux, sendo que a que mais gostava era o Slackware. Sinto saudades do Slackware e do conhecimento do sistema operacional que eu tinha quando o utilizava, mas como utilizo meu computador muitas vezes para fazer palestras, treinamentos etc e tal, achei melhor uma interface bonita e funcional (podem reclamar, mas é) como o Unity para dar uma boa impressão para o público do que é um sistema GNU/Linux. Cansei de ver o pessoal assustar com o sistema fazendo o boot utilizando o modo texto, onde eu chamava o modo gráfico posteriormente. Eu gostava disso pois podia brincar muito com os gerenciadores de janela também, de uma forma até mais prática e menos invasiva do que tentar alterar as mesmas coisas no Ubuntu hoje em dia. Enfim, o Ubuntu é a distro que estou utilizando hoje e apesar de sentir uma certa falta masoquista do Slackware, ela tem me atendido muito bem para o que eu preciso para trabalhar e utilizar um computador.

Windows

O Windows que me deram era um Windows 7, em um notebook relativamente bom, mas com um teclado horrível (de quem foi a idéia de colocar o ponto de interrogação em uma combinação de teclas maluca?).

Porque diabos que você fez isso?

Por causa de uma coisa que não desejo para ninguém: fazer uma homologação de PAF-ECF. Vejam, a idéia por trás da coisa é boa, mas o PAF-ECF virou um monstro para implementar por causa da "evolução" do que foi sendo feito nos "atos cotepes" da vida. Muitas das coisas que estão escritas ali são pura e simplesmente sem sentido no termo funcional a que se dedicaria o sistema em relação mesmo ao fisco, quanto mais aos desenvolvedores e às empresas e os clientes delas que se utilizam do sistema que tem que absorver essas funcionalidades. Pretendo argumentar com o governo sobre isso, de um ponto de vista técnico, expondo e comparando com todas as metodologias e ciclos modernos de desenvolvimento de software que utilizamos hoje. Se você quer entrar nessa comigo também, entre em contato comigo, mas é só abaixar a poeira um pouco aqui que eu vou fazer isso, mesmo que sozinho.

Inclusive, a razão de eu ter utilizado Windows já dá uma dica para quem possa ter que se aventurar nessa questão de homologação: cheguei no orgão homologador, com esse notebook com Windows, onde iria rodar a aplicação a ser homologada (é em Java, mas aparentemente tem que brigar bastante para argumentar que o bytecode é o mesmo independente de plataforma, então tive que levar uma máquina Windows) e meu notebook (que é um Vostro 5470 com 8 Gb e SSD, que dá e sobra pelo menos para o que eu preciso) para fazer alterações necessárias (e tem, pois o que está escrito no ato cotepe é passível de interpretação, não tem specs claros e definidos ali e com certeza várias coisas que você leu e implementou vão ser diferentes da interpretação do homologador!) e o homologador disse que eu não poderia fazer isso, fazer as alterações e o build do sistema e enviar para o outro computador! Todo o processo deve estar contido em apenas um computador, que inclusive vai ficar trancado fisicamente no orgão homologador durante a noite!. E para complicar mais, inclusive o banco de dados devia estar contido nesse mesmo computador.

Aí ferrou. Havíamos marcado 2 dias para fazer a homologação e não daria tempo para instalar tudo o que eu precisava (e nem tinha certeza se ia funcionar) no computador com Windows e dar um jeito de instalar uma cópia do banco de dados (que é um Oracle, enorme mesmo somente com a parte de parametrizações do sistema) e eu aproveitei para conferir algumas coisas com o homologador, já tendo a surpresa que falei para vocês: muita coisa ali eu interpretei de um jeito, e o homogador de outro! Outra dica sobre isso é sempre contratar alguém que já tem conhecimento do que o homologador vai esperar encontrar e mais importante, leve o homologador para a sua empresa, pois ele se insere no seu ambiente, e não o contrário!

Eu não sabia dessa segunda parte, então, eu tentei novamente com o computador com Windows. Depois que passei esse perrengue e descobri que daria para levar o homologador para a empresa, homologamos o sistema.

Problemas encontrados

Shell

A primeira coisa que eu já cocei a cabeça foi um shell decente. Para fazer o build do software, que é escrito em Java, eu utilizo o Apache Ant, e apesar de disparar várias das tasks dele de dentro do Vim, uso bastante o terminal, tanto para rodar o Ant como para várias outras tarefas, e abrir o "prompt do DOS" para fazer esses tipos de coisa realmente é difícil.

Alguém pode argumentar que daria para utilizar o PowerShell, mas adivinhem? Deu pau no dito cujo por alguma coisa relacionada ao .Net, e depois de gastar algum tempo procurando e tentando algumas correções, deixei quieto, e instalei o Cygwin, que já me trás um Bash pronto para o que eu preciso, além de deixar redimensionar a janela e fontes de um jeito bem melhor que o "prompt do DOS".

Aqui vale uma pequena reflexão: muita gente por aí considera um shell um ambiente, digamos, "atrasado". Eu tive um aluno em uma turma de pós-graduação que usou a frase "estamos em 2013, me recuso a abrir um terminal", mas pensando bem talvez esse pessoal não tenha noção do que um shell decente como Bash (e vários outros presentes no GNU/Linux) pode fazer, justamente por terem conhecimento e lidarem justamente com o tal "prompt do DOS". Tanto no lado do servidor como no desktop, eu utilizo muito scripts e recursos do shell e talvez valesse a pena começar a conscientizar as pessoas do poder da "telinha preta com letras brancas". Uma fonte muito boa sobre isso é o site do "mago do shell" Aurélio Marinho Jargas, recomendadíssimo!

De posse do Cygwin, instalei tudo o que eu precisava, o Vim (para rodar no terminal mesmo), Git, Tmux etc etc etc.

Desktop

Hoje costumo utilizar meu notebook e um monitor externo, seja no cliente, seja no home office, e 4 workspaces (que implementaram no Windows 10, como se fossem eles quem tiveram a idéia, para variar ...), o que me dá 8 telas diferentes para organizar minhas janelas:

Ambientes

E também não tenho nenhum ícone do desktop, ficam todos ou na barra lateral do Unity (que posso acessar facilmente segurando a tela super e apertando o número correspondente dele lá) ou quando preciso de algum software que não está lá, aperto super, começo a digitar o nome dele e pronto:

Super

Agora, no desktop do Windows ... dezenas de ícones em uma tela só, e o pior, o notebook é da empresa e eu não podia sair "ralando" os ícones de lá, quase fiquei maluco. Ligando o outro monitor até dava 2 telas, mas quando estava só com o notebook (no aeroporto, por exemplo) era uma situação bem complicada. O Tmux me quebrou um bom galho quando o assunto era código e scripts, mas de resto, foi complicado, até porque no Linux eu tenho várias teclas de atalhos para me mover para todo lado no sistema sem utilizar o mouse, que aqui ficou quase como um item obrigatório.

Encoding

Como eu havia copiado meus fontes do Linux, onde uso o UTF-8, a coisa surtou em vários lugares, pois o Windows usa o CP-1252, baseado no ISO-8859-1. Tirando parte de acentuação em alguns arquivos, o que complicou de cara foi o Java não conseguindo compilar os fontes. Para resolver isso, uma váriavel de ambiente deve ser declarada no terminal, antes de tentar utilizar o Ant para compilar os fontes:

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8

Atualizações

O esquema de atualizações do Windows me complicou em 2 pontos:

Configurações do sistema

Aí pode ser que eu não tenha mais muita familiaridade com a coisa, mas mesmo assim, convenhamos: em uma distro como o Ubuntu é muito melhor e mais fácil (sim, é!) para fazer determinadas configurações do sistema do que no Windows. Precisou de conexão de rede, espetar outro monitor? Tá na mão. Ou ele já resolve de forma automática ou podemos acessar qualquer configuração pela tecla super. Customizar então as configurações de rede dá uma boa diferença.

Falta de SSH

Anunciaram que vão implementar SSH em no Windows, mas enquanto não tem, achei um servidor bem legal, o Bitvise, que me permitiu utilizar vários scripts prontos que tinha.

"Surtadas" e reiniciadas do sistema

Me surpreendeu o quanto que o Windows parou de dar tela azul da morte. Na verdade, não tive nenhuma! Mas isso não evitou que o sistema travasse as vezes com alguns aplicativos (mesmo os poucos que eu estava utilizando) e muitas vezes parasse de ficar responsivo, tendo que reiniciar o computador. Aliás, isso ainda é uma mania que anda por lá faz tempo, para muitas coisas simples que são feitas, até a instalação de um software, por exemplo, tem que reiniciar. O pessoal tem que rever isso urgente.

Ferramentas de uso geral

É impressionante que algumas ferramentas com descompactares de algumas extensões (.zip, .tar, .rar) ainda precisem de ferramentas externas, muitas vezes, shareware (nada contra o cara ganhar dinheiro, mas comprar para utilizar 1 mês só ...). O pessoal da Microsoft devia dar uma caprichada e já enviar algumas ferramentas básicas instaladas no sistema.

Ferramentas para programação

Nessa parte até que foi tranquilo depois que resolvi todo o resto. Tudo o que eu precisava era o compilador Java, o Apache Ant, o Vim, e o SSH. Lógico que o problema dos espaços de trabalho complica demais, com todas as janelas empilhadas em um lugar só, mas depois de xingar bastante, consegui acostumar com a coisa. Imagino que seria bem mais complicado para alguém que precisasse de coisas mais complicadas do que terminal, editor de texto, uma ferramenta de build e um compilador.

Resumo da coisa

Eu coloquei um TL;DR ali acima, mas aqui vai algo um pouco mais explicado. Encontrei muitas limitações no Windows para o meu uso, e acredito que de vários outros desenvolvedores também. Se você usa Windows e desenvolve em uma linguagem e/ou ferramenta que é multiplataforma, eu recomendo que experimente uma distro Linux como o Ubuntu, para notar a diferença. Além da questão da produtividade que vai aumentar utilizando as mesmas ferramentas (por causa do sistema operacional, que na minha opinião está bem mais fácil que o Windows), a robustez, a variedade e a qualidade das outras ferramentas disponíveis inerentes ao que um desenvolvedor precisa vão fazer muita diferença.

Aproveitando, já que mencionei o artigo do Akita, eu nunca usei Apple e nem senti necessidade ou mesmo vontade para isso, e nem teria conhecimento de fazer algum tipo de comparação. Um ambiente desktop Linux é tudo o que eu preciso hoje, me atende muito bem faz vários anos e fico feliz de voltar para ele depois desse mês utilizando o Windows.




Comentários

Comentários fechados.

Sem nenhum comentário.

Artigos anteriores