Você provavelmente já deve ter visto algum video no YouTube de alguém dizendo que usa Linux para programar, que é o melhor sistema operacional para programadores e depois que você experimenta não pensa em deixar de usar, ou algo do tipo. Se você nunca viu não tem problema, mas digo isso porque eu mesmo ja me deparei com vários, e mesmo assistindo o vídeo até o fim, muitas vezes não ficava claro o porquê as pessoas gostavam tanto do Linux.
Eu queria saber se ele tinha alguma magia, algum motivo específico que mudava completamente a experiência como programador e deixava tudo mais fácil ou divertido, porém ninguém falava dessa magia em nenhum vídeo. Então eu continuava pensando:
Qual é a bendita razão pra usar o Pinguim ao invés da Janela??
Me acompanha nesse post até o fim que eu acredito que você vai descobrir essa magia junto comigo.
Primeira Experiência
Bom, minha verdadeira primeira experiência com Linux foi no meu trabalho durante a tentativa de buildar uma imagem do docker (eu não fazia ideia do que era docker, era meu primeiro contato com ele também). Muitas das coisas que eu sei hoje, eu aprendi por motivos de: ou eu aprendia ou eu aprendia. E ao mesmo tempo que isso parece ser algo ruim, foi muito bom pra mim, porque eu consigo aprender bastante coisa sobre pressão. Eu tinha que aprender a usar linux e docker ao mesmo tempo sem nunca ter tido contato com os dois porque eu simplesmente tinha que aprender, e não foi algo tão de escolha própria, claro que eu queria aprender, mas a força que me movia para aprender era mais força de pressão do que força de vontade própria.
Eu queria muito buildar aquela imagem e fazer com que o container dela funcionasse, e eu percebi que em 90% dos tutoriais, respostas em forums e documentações as pessoas recomendavam comandos num terminal que não era nem o CMD e o Powershell (ambos terminais do Windows), mas sim que era num tal de bash. Isso era algo que toda hora me deixava com o seguinte pensamento: “vou precisar usar o linux para rodar o container dessa imagem??”, porém finalmente depois de 2 dias eu consegui buildar e rodar a imagem no Windows e aquilo me deixou um pouco tranquilo.
E agora você deve estar pensando:
“Ué Luis, você disse que essa foi sua primeira experiência com Linux mas você nem chegou a encostar nele” É, você tem razão, mas é agora que as coisas engrossam um pouco porque depois de rodar o container que iniciava uma API, eu tinha que subir ele em algum servidor e BINGO pra quem acertou, esse servidor era Linux.
Para ser mais exato, era um Ubuntu 20.04. Eu cheguei experimentando talvez o mais próximo que o Linux chega do Windows, no sentido de que em comparação com outras distribuições, ele possui uma interface gráfica e é um sistema até que bem mantido e famoso, onde poderia encontrar bastante suporte na internet.
E logo de cara já veio as primeiras dificuldades, porém a principal era que eu pesquisava como baixar as coisas, como por exemplo o Chrome e o Docker, e só apareciam sites mostrando comandos no terminal. Basicamente tudo que eu pesquisava a resposta era: “cara, abre o terminal e cola isso”. E quando você é um usuário Windows raramente tem que abrir o Cmd para fazer alguma coisa, não consigo lembrar de 3 vezes que tive que abrir o Cmd para realmente fazer algo importante que não dava pra fazer pela interface gráfica.
Então aquilo me deixou muito confuso, porque eu pensava comigo: “cara, eu não quero hackear ninguém, não quero invadir a NASA, não quero lançar nenhum míssel pelo PC do Putin, eu só quero baixar o Docker, por que que eu tenho que abrir o terminal pra isso?”. Depois de ver que era a única saida, eu cedi, abri o terminal e tentei, rodei os comandos e PÁ do nada eu tinha instalado o docker 😐🤨, do nada eu também instalei o Node, o Git e o VsCode 🤯.
Aquela sensação foi boa, ver os terminais abertos, as letras subindo, parecia realmente uma cena de filme. Você sabe que uma pessoa é poderosa só de ver a quantidade de terminais abertos que ela tem no PC, dá a impressão de que a pessoa sabe o que ta fazendo (por mais que eu não fazia ideia do que tava acontecendo, mas tava dando certo e tava tudo sendo instalado). Aquilo foi prático, foi rápido, foi fácil, era só abrir o terminal e colar alguns comandos e pronto, o sistema se encarregava de fazer o resto. Ali eu pensei “talvez o Linux tenha um potencial sim, é interessante dar uma chance”.
Mas nem tudo foi tão fácil assim, as vezes eu precisava testar os comandos de mais de um site para ver qual realmente funcionava, porque eu não sabia diferenciar quais iam funcionar no Ubuntu e quais eram de outras distros. As vezes essa busca era até um pouco longa. Lembro que quando eu não conseguia fazer algo funcionar durante as instalações e as builds do docker já logo vinha na minha cabeça: “Será que o problema é o Linux? Será que se eu ja estivesse no Windows eu teria resolvido o problema?”, porque o docker eu só usava pelo terminal através dos comandos, enquanto pelo Windows tinha a interface do Docker Desktop o que passava uma certa segurança do que eu estava fazendo.
Lembro também que abri uns 3 ou 4 tickets para a empresa responsável pelo servidor para eles me ajudarem com algumas dúvidas, mas a principal era de como liberar uma porta para acesso externo, era a primeira vez que eu estava fazendo aquilo na minha vida, e hoje quando eu paro pra pensar eu vejo como isso é muito fácil. Pelo menos o pessoal até me ajudou legal e no fim deu tudo certo também. Container do docker com a API estava rodando e a porta estava aberta para acesso externo.
Minha conclusão com essa breve experiência com o Ubuntu foi que:
O Linux realmente tem um potencial para ser explorado melhor, talvez seja interessante dar outras chances a ele.
E depois, de tempos em tempos eu voltava nesse servidor para subir alguma outra API, algum outro serviço e eu sempre percebia o quão simples, leve, objetivo e prático o Linux era em comparação com o Windows. Toda vez que eu abria o servidor e via ele com toda aquela simplicidade de fazer tudo pelo terminal, de criar comandos que fazem um processo bem longo poupando um bom tempo e funcionando muito bem, eu me sentia produtivo e parecia que meu ambiente de trabalho dentro dele era bem menos poluido do que é no Windows com todas aquelas informações na tela que a gente não usa para nada, como os 50 icones na barra de tarefas, notificações do Windows Defender ou de qualquer outro Antivirus aparecendo na tela toda hora, e a complexidade que existe em todas as telas do sistema. No Linux não tinha nada disso, eu já disse que ele é simples? Ele entrega o que você quer fazer e pronto, o que não faz dele um sistema incompleto, mas o torna leve para qualquer hardware e bem fluído.
Trocando o Windows pelo Ubuntu
Sim, depois de um tempo usando o Ubuntu no servidor eu pensei: “Cara, vou usar ele como meu sistema operacional, vamos ver no que dá”. Eu sempre gostei de fazer mudanças grandes na minha forma de programar, para aprender o máximo de coisas possíveis e ver qual a que me interessa mais, seja essa mudança sendo de bibliotecas, trocando um ORM por outro, ou mudando de framework, trocando o React pelo Angular, ou mudando de linguagem, trocando PHP por JavaScript, ou nesse caso mudando de sistema operacional, trocando o Windows pelo Linux, e eu achei que estava na hora.
Claro que eu ainda tinha um pé atrás e não fiz a troca tão diretamente, decidi fazer um simples Dual Boot, que pra quem não sabe, é simplesmente ter dois sistemas operacionais no seu computador, então no meu caso eu instalaria o Linux mas ainda teria o Windows instalado para caso eu não me acostumasse e uma hora quisesse voltar com o rabo entre as pernas me desculpando por ter trocado ele pelo Pinguim (spoiler: isso não aconteceu).
Não posso deixar de mencionar o vídeo que eu assisti para conseguir fazer essa instalação, que foi do grande Diolinux. Se alguém quiser aprender mais sobre o Linux com alguém que realmente entende sobre, o canal dele talvez seja o melhor lugar.
Fiz o Dual Boot morrendo de medo de corromper o Windows mas deu tudo certo 🙏. Depois da configuração inicial, instalei e lá estava ele bonitinho e pronto para uso.
Eu gosto tanto desse papel de parede que uso ele até hoje, e pelo que percebi, isso é um costume até normal de outros usuários Ubuntu. Outras coisas eu mudei e deixei mais com a minha cara, tirei esse icones desnecessários da barra de tarefas e coloquei ela embaixo (isso eu acho que muitos consideram até um crime, mas me desculpem, essa foi a única coisa que não consegui acostumar).
Instalei os programas obrigatórios de todo programador Node, e comecei a brincar. Foi uma expêriencia muito boa ter agora no meu computador aquele sistema que eu acessava através de uma Máquina Virtual, as vezes toda travada por instabilidade na rede.
Uma coisa que no inicio foi um pouco confuso pra mim é o diretório raiz ser simplesmente a ’/’ ao invés do ‘C://’, gerou certa estranheza mas hoje eu acho muito melhor e mais prático (por mais que pareça uma mudança tão pequena kkk), até porque, o que é mais rápido de ser digitado? C:// ou /? Na verdade no Windows você raramente digita C:// já que não abre o terminal, mas visualmente eu prefiro a estética da / sozinha, e outra coisa interessante também é que para ir para a pasta do seu usuário é só digitar ’~’ ao invés de fazer todo o caminho, o que facilita muito também kkk.
Essas mudanças do parágrafo acima são coisas que realmente só fazem diferença no Linux, parecem pequenas mas facilitam e com certeza é uma das primeiras coisas que você precisa se acostumar se decidir migrar para o Pinguim.
O Linux de forma geral, em comparação com o Windows, podemos dizer que é um sistema até que bem minimalista. As interfaces dos programas do próprio sistema são bem mais simples e diretas, o que polui menos a sua visão, e dá a sensação de ser um sistema mais rápido e organizado, porque você consegue ter domínio total do que está acontecendo na sua tela. Quando você trabalha em um ambiente bagunçado ou em uma mesa bagunçada, a sua mente tende a ficar mais bagunçada também. Quando você limpa seu ambiente de trabalho, você consegue ser mais produtivo e até ter mais motivação. É exatamente essa a sensação que eu tive com o Linux, parece que minha tela está limpa, eu sei onde estão os meu arquivos, eu sei onde colocar-los. Então depois que comecei a usar o Linux tive uma organização muito melhor acerca dos meus arquivos e minhas ferramentas de trabalho. Ele meio que esconde toda a sujeira e trabalho pesado pra você e deixa somente o que te interessa e o que você precisa. Hoje a maior parte da minha produtividade tem como motivo a praticidade do Ubuntu.
O Bash.
O que dizer desse cara? O bash é simplesmente o bash.
É um terminal extremamente útil, rápido, prático, fácil de entender depois que pega a prática, e tem um gigante potencial. Só usando ele por um tempo e depois tendo que usar o Cmd de novo você consegue perceber a diferença entre os dois, e quão superior o bash é.
O bash é o terminal do Linux que te ajuda a fazer simplesmente tudo, você realmente faz tudo com ele e as vezes se pergunta “eu realmente preciso da interface gráfica?”, mas sim, as vezes precisa kkk.
Hoje quando eu tenho que por algum motivo usar o Windows para questoẽs de programação (porque hoje eu ainda uso bastante mas somente para jogar), eu uso bastante o Cmd, exatamente pelo costume que adquiri usando o bash no Linux.
“Ah Luis, mas o CMD consegue fazer tudo que o bash faz também, inclusive você também tem o bash no Windows”
De fato o CMD consegue também fazer as coisas mais importantes que o bash faz, mas agora vamos falar da questão de suporte e visibilidade, quando você está no Windows e pesquisa um tutorial de como fazer alguma coisa, você encontra 7 sites, 6 ensinam como fazer na interface e 1 ensina como fazer na interface e pelo CMD. No Linux se você pesquisa a mesma coisa, os 7 sites falam de como fazer pelo bash. Como o bash é a principal ferramenta dos sistema Unix, ele é menos bugado, tem muito mais ferramentas, muito mais suporte, muito mais utilidade que o Cmd. Apenas como forma de comparação poderíamos dizer que o Cmd é um programa em desenvolvimento na sua Beta enquanto o bash é um sistema já bem estável, famoso, e amplamente utilizado. Sem falar que no Windows você normalmente tem que ficar alternando entre Cmd e Powershell, porque algumas coisas estão disponíveis no Cmd e outras no Powershell. No geral também os comandos em bash são mais legíveis e menores.
Caso queria informações mais precisas de outras pessoas que possivelmente entendem melhor do que eu, acesse: Por que bash é melhor que o CMD?
Com o bash você consegue automatizar muitos processos e fazer com um ENTER o que você faria em vários cliques com o mouse. Eu por exemplo tenho vários comandos nos servidores para pegar a ultima atualização de um projeto, buildar e subir ele, seja um back no PM2 ou até um front no APACHE. Outro processo automatizado com o bash que eu já ia esquecendo é basicamente toda a minha CLI que gera meus projetos em Node, caso você não conheça ela ainda dê uma olhada nesse post: lg-cli-tool
Linux sem interface gráfica
Cara, é aqui que os homens são separados dos garotos, aqui que filho chora e mãe não vê. Quando você pega um servidor com alguma distro que não possui interface gráfica pela primeira vez a sua primeira reação é: 🤬
É aqui que você aprende de verdade a ser usuário Linux e sai da zona de conforto do Ubuntu, porque basicamente tudo você tem que fazer pelo terminal, então como pesquisa as coisas pra baixar? Como abre o navegador? Como abre o explorador de arquivos? Como eu sei o que eu to fazendo???. Mas calma eu ainda vou fazer um post específico para como mexer num Linux só pelo terminal.
Pra quem não tem auxilio de uma pessoa que entende, essa experiência num primeiro momento assusta. Eu lembro que quando tive que acessar um Linux só com terminal pela primeira vez, eu pesquisei no google e no YouTube como adicionar interface gráfica nele kkk, de tão desesperado que eu tava. Mas com o tempo eu fui me acalmando e me deixando levar pelo terminal.
O que você precisa fazer basicamente é: criar um arquivo txt e ir pesquisando os comandos que você precisa executar, testar o comando e se funcionar você salva no txt pra nunca mais perder ele.
“Mas como eu sei qual comando executar?”
Você pergunta pra si mesmo: O que eu faria agora na interface? Quando você tiver a resposta dessa pergunta você cola assim no google “resposta da pergunta” + “pelo terminal linux”
Por exemplo: “Agora eu clonaria o repositório”, então você pesquisa “como clonar um repositório pelo terminal linux”
“Nossa Luís, mas é óbvio isso né, quem não faria isso?”
Então você percebeu? Não tem realmente porque se assustar com um terminal, é muito mais fácil do que parece. Parece algo extremamente dificil mas não é. Se você pesquisar no google como clonar um repositório pelo terminal ele vai te dar um “git clone <link_do_repo>”, você testa e se funcionar salva no txt e continua fazendo isso com basicamente todos os outros comandos e pronto.
Eu diria que os dois principais comandos para trabalhar num terminal são o “cd” e o “ls”, o “cd” para trocar de diretório, e o “ls” para listar os arquivos e as pastas do diretório atual, tirando esses dois comando que você provavelmente ja deve conhecer, todos os outros você encontra tranquilamente pesquisando, só não pode esquecer de salvar nos seus txt’s. Eu mesmo tenho um repositório privado no GitHub onde eu armazeno todos os principais comandos que eu não posso perder e os mais úteis.
Depois de um tempo trabalhando com servidores Linux sem interface você vai é gostar e achar muito bom e prático, você vai juntar comandos e tranformar-los em comandos gigantes que vão automatizar suas tarefas de deploy, você vai criar arquivos de scripts e vai achar tudo isso maravilhoso. O servidor no inicio pode parecer seu inimigo, mas depois vira um dos seus melhores amigos.
Conclusão
Quando você se acostuma com o Linux você percebe que na verdade, ele não tem realmente uma magia, uma funcionalidade que quebre completamente o Windows, o que realmente acontece é que você percebe que o Windows que em algumas questões acaba sendo um sistema operacional ruim e desnecessário. O Linux simplesmente faz muito bem o que ele promete fazer, já que é open source e mantido por uma comunidade como eu e você. Já o Windows é o principal projeto comercial de uma empresa multibilionária, então ele basicamente precisa te oferecer e mostrar o porque você tem que usar ele, apresentando todas as ferramentas e poluições visuais desnecessárias dele para que ele continue sendo vendido. Ele quer te mostrar que você não precisa de um sistema simples como o Ubuntu, mas que você precisa de algo grande, um sistema parrudo, o que ao meu ver não é verdade e acaba sendo uma desvantagem bem grande, pois deixa muitos PCs lentos, gera inúmeros bugs e com isso diminui a sua produtividade como um programador. Claro que ele ainda funciona muito bem para jogos e para as pessoas que usam ele casualmente no trabalho com o pacote Office, eu mesmo continuo usando ele para jogar, mas o assunto realmente muda quando se trata de programação, algo mais técnico, mais avançado.
O único motivo que eu vejo válido o uso do Windows como principal sistema para programar é caso você seja um desenvolvedor que use a Stack ”.Net, SQL Server e IIS”, pois esses 3 foram desenvolvidos exatamente pela Microsoft e claro que como ela não é burra, os 3 são extremamentes otimizados para Windows, basicamente não existe IIS e SQL Manangement Studio para Linux, então a única alternativa acaba sendo o Windows mesmo.
Mas claro que gosto é algo que não se discute, cada pessoa é diferente uma da outra e eu conheço várias que já falaram que tentaram usar o Linux e não conseguiram se acostumar. Nem todos devem gostar de fazer tudo pelo terminal, alguns devem ter medo de não saber usar, devem ter medo de corromper o sistema, corromper o computador, devem achar difícil e etc. E tá ótimo, o melhor sistema operacional é aquele que você mais gosta, não aquele que as pessoas falam que é o melhor, por isso que o post é sobre “Porque eu prefiro Linux” e não “Porque você deve preferir Linux”.
Mas para você que nunca experimentou, fica aí a minha dica então para você dar uma chance. Você que gosta de se sentir hacker na frente dos seus amigos abrindo o terminal, o Linux é perfeito pra você. Se você quiser tentar, eu recomendo bastante o Ubuntu 20.04, ou você pode tentar o 22.04 que na data desse post é o mais recente.
Obrigado por ter ficado até aqui. Te vejo no próximo post.