Se você quer montar o melhor ambiente para desenvolvimento de software em Linux Mint (ou Ubuntu ou outros derivados Debian), este é o artigo certo para isso.

Toda pessoa desenvolvedora de software organiza seu ambiente de trabalho para programação usando um misto de necessidades das tecnologias que usa para programar, e suas preferências pessoais.

Portanto, inicio informando que não existe o melhor mas sim o ambiente de desenvolvimento mais adequado a você. Aqui eu mostro a melhor configuração de sistema operacional, IDEs de programação e outras ferramentas de acordo com o meu contexto, mas que pode ajudar você no seu.

Contexto#

Primeiramente vamos estabelecer o contexto do ambiente de desenvolvimento que se deseja montar.

A minha necessidade mais comum é o de desenvolvimento de sistemas para Web. Não significa que este ambiente depois de configurado não pode ser utilizado para desenvolver aplicações desktop ou mobile (apps de celular), porém nestes contexto pode ser que o ambiente necessite de alguns ajustes.

Para desenvolver desktop para Microsoft Windows, Apple Mac iOS ou iPhone, é possível que o próprio sistema operacional, base de todo o ambiente, necessite ser exclusivo para a plataforma.

Por isto é importante esta contextualização técnica, no meu caso a lista de tecnologias que uso em minhas aplicações:

  • Modelo das aplicações: Sistemas para Web
  • Backend: PHP, Laravel, Eloquent, NodeJS, NPM, Express.js, Asp.NET Core, C#
  • Bancos de dados: Mysql, PostgreSQL, Sqlite, MongoDB, Redis
  • Frontend: HTML, CSS, Blade, Javascript, jQuery, Webpack, Laravel Mix, NPM
  • Versionamento: Git

Sistema Operacional: Linux Mint#

Sistema Operacional Linux Mint

Começando pelo começo, a escolha do sistema operacional para rodar como as ferramentas de desenvolvimento Web é crucial. Para mim, desde 2005, desenvolver software exige o uso de uma distro Linux.

Um pouco de minha história com Linux: fiz as primeiras tentativas em utilizá-lo no final da década de 90, porém com o foco em desenvolver software e não em trabalhar como sysadmin, achei-o muito penoso para configurar hardware e resolver diversos pequenos conflitos na época. Usava o Brasileiro Conectiva que depois virou Mandriva.

Alguns anos depois, em 2005, desenvolvendo aplicações corporativas para Web usando Eclipse para programar com Java, JSF e rodar no servidor de aplicações JBoss, sobre Windows (ME ou XP), a frustração com desempenho era constante. Vários minutos para subir servidor e aplicação a cada teste pequeno.

Decidi dar uma nova chance ao Linux e escolhi a distro sensação da época: Linux Ubuntu.

Fiquei muito satisfeito em conseguir instalar um dual boot de maneira muito mais rápida e fácil que as primeiras experiências com Linux, e fiquei muito mais que satisfeito, em êxtase, quando rodei os primeiros testes com a stack Eclipse/Java/JBoss, e o desempenho (velocidade de carga principalmente) ser superior a 70% em relação ao Windows.

Não tive dúvidas, 2 meses depois não usava mais dual-boot entre Windows e Linux e tinha resolvido adotar o Linux como meu sistema operacional primário para o meu ambiente de desenvolvimento de softwares para Web, e demais atividades profissionais ou pessoais.

Por volta de 2012 quando o Ubuntu resolveu adotar um novo gerenciador de janelas, o Unity, vários problemas começaram a me desagradar na experiência de uso, além da performance que degradou demais. Nesta época uma nova mudança, e depois de testar algumas distros, decidi - e estou usando até hoje, adotar o Linux Mint, usando inicialmente o gerenciador de janelas Mate (fork do projeto Gnome versão 2) e mais recentemente uso o gerenciador Cinammon (fork inicial do Gnome versão 3).

Instalar Linux Mint#

Estes são os passos que uso para instalar um Linux Mint em meus computadores (em breve escrevo um tutorial detalhado):

  1. Baixo a imagem iso mais atual no site do Mint
  2. Gero um pendrive usb bootável com Rufus
  3. Boot pelo USB, executo a instalação pela versão USB Live do Linux Mint
  4. Ao chegar no ponto de decidir pela formatação ou instalação avançada, escolho avançada e defino as partições do disco da seguinte maneira:
    • Área bootável para EFI - 540 MB
    • Ponto de montagem do Boot, /boot - 50 MB
    • Área de swap, /swap - o dobro da quantidade de memória RAM
    • Ponto de montagem geral (raiz), / - ao menos 120 GB
    • Ponto de montagem home, /home - o restante do espaço livre

Após instalar o sistema operacional o ambiente de desenvolvimento está pronto para começar a ser configurado e personalizado.

Docker#

Isto mesmo, o próximo passo é instalar uma ferramenta de virtualização para flexibilizar os vários ambientes que precisam rodar para projetos diferentes. Faço isto antes mesmo de instalar minhas IDEs de programação.

Estou falando basicamente em instalar Docker, talvez VirtualBox, e outras ferramentas neste contexto que me permitem conteinerizar meu ambiente, subindo e desligando serviços de acordo com o projeto.

Instalando Docker no Linux Mint, Ubuntu, Debian#

Leia o tutorial que explica como instalar o Docker no Linux Mint, Ubuntu e derivados Debian.

Após instalar o docker e docker-compose, estamos prontos para instalar a base de nossas linguagens, bancos de dados e outras ferramentas em conteineres Docker sem precisar “poluir” a instalação do sistema operacional, além de ter a vantagem de subir e descer serviços quando necessário e usar versões diferentes de linguagens de programação para cada projeto.

Por exemplo, você pode ler os tutoriais de Laradock para aprender como usar diferentes versões de PHP para rodar seus projetos Laravel.

Conteineres Docker para PHP Laravel#

Para trabalhar com PHP Laravel em meus projetos, eu instalo o PHP e diversas ferramentas com Docker. Gosto de ter produtividade no ambiente local sem precisar me preocupar com configurações extremas para os conteineres, por isso uso um conjunto de configurações para docker-compose chamada projeto Laradock.

Além destes conteineres trazerem a instalação da linguagem PHP, também utilizo os bancos de dados em Docker, o Laradock trásarquivos de configuração docker-compose para Mysql, MariaDB, PostgreSQL, MongoDB, Redis, ElasticSearch, Memcached.

Também containers para outras ferramentas como PHPMyadmin, PGAdmin, RabbitMQ, Beanstalkd, Selenium, Grafana, dentre outras.

Informações sobre o que é o Laradock e como instalar ou resolver problemas você encontra nestes artigos do meu site: Laradock Tutoriais

Editores de Desenvolvimento - IDE#

Os ambientes de desenvolvimento integrados - IDE (Integrated Development Environments), são os conhecidos editores para programação. Utilizo principalmente o PHPStorm para desenvolver em PHP e Laravel, que me atende também no desenvolvimento com Javascript, VueJS, NodeJS.

Apesar de que acho necessário manter vários IDEs instalados para aproveitar o melhor ambiente de acordo com a Stack. Para edições rápidas utilizo MS VSCode (Visual Studio Code da Microsoft), principalmente para Javascript e meus artigos técnicos escritos em Markdown.

Instalando VSCode no Linux Mint, Ubuntu e Debian#

Visual Studio Code é um editor leve de código fonte que fornece suporte abrangente e fácil compreensão para edição, navegação e depuração de código fonte.

VS Code vem com suporte integrado para JavaScript, TypeScript e Node.js, possui um rico ecossistema de extensões (plugins) para outras linguagens (como C ++, C #, Java, Python, PHP, Go) e runtimes (como .NET e Unity ).

Você pode facilmente instalar extensões para adicionar novos idiomas, linguagens, temas, depuradores e para se conectar a serviços adicionais como bancos de dados ou APIs.

Para instalar o VSCode no Linux Mint, Ubuntu e Debian, clique aqui para ler o artigo com tutorial explicativo no blog.

Instalando PHPStorm no Linux Mint, Ubuntu e Debian#

O PhpStorm é perfeito para o trabalho com Symfony, Laravel, Drupal, WordPress, Zend Framework, Magento, Joomla!, CakePHP, Yii e outros frameworks PHP.

FTP e sincronização de arquivos#

FTP - File Transfer Protocol, é um protocolo para tranferência de arquivos, que mesmo não sendo a ferramenta ideal para realizar o deploy de aplicações Web, é uma mão na roda ter instalada quando se necessita algum acesso rápido a servidores para baixar ou enviar arquivos de maneira contextual.

Logicamente existem contextos de extrema utilizadade para a transferência por FTP, porém no de desenvolvimento de software, seu uso para mim é secundário.

Além de FTP é muito útil manter dados sincronizados, como backup, em nuvem. Não estou falando sobre manter “backup” de seus arquivos fontes, sua gestão deve ser realizada com git ou outro sistema de versionamento de código fonte. Mas sim de manter seus arquivos de trabalho como documentos de editores de textos, planilhas, imagens e outras mídias, sincronizados e seguros.

Para isso também utilizo eu mantenho uma assinatura do Google Drive - R$ 9,99 para 200 MB, e sincronizo os dados usando Insync.

A licença do Insync é muito acessível e vitalícia, clique aqui para adquirir a sua.

Instalando Filezilla#

Filezilla é o meu cliente de FTP preferido por mais de 2 décadas.

Segurança#

Para meu controle de senhas de acesso e outros dados sensíveis utilizo um aplicativo de gestão de senhas open source, de um dos projetos mais antigos neste segmento. KeepassXC.

Essenciais para qualquer usuário de computador, para desenvolvedores web ferramenta básica de trabalho.

Como utilizo Linux Mint, mantenho apenas dois navegadores de internet instalados: Firefox e Chrome. No passado cheguei a manter o Chromium mas desisti de seu uso, apesar dos abusos de invasão de privacidade do Chrome. Porém é assunto para outro artigo.

Clientes de Banco de dados#

Como trabalhar com desenvolvimento de software sem uma ferramenta que permita a manipulação dos bancos de dados, tanto para execução de comandos SQL, para os bancos de dados relacionais, como navegação de suas estruturas e engenharia reversa para visualização em diagramas.

O meu software preferido há décadas para este fim é o DBeaver.

Testes e consumo de APIs#

Qualquer software moderno realiza integrações ou expõe suas funções por meio de APIs (Application Programming Interface), sobre o protocolo HTTP.

Para desenvolver de maneira produtiva, documentar e testar APIs, utilizo o Postman.

Comunicação e trabalho em equipe#

Já eram primordiais para equipes de desenvolvimento de software, agora que o trabalho remoto se consolidou (finalmente) mais ainda as equipes devem utilizar ferramentas efetivas para comunicação e colaboração.

As que uso em geral são de acesso “online”, no navegador, como Google Suite (Google Workspace), cliente de e-mail (geralmente Gmail), colaboração de equipes como o Slack.

Mas algumas acho mais produtivas instaladas localmente, que é o caso do Microsoft Teams.

Produtividade#

Muitas ferramentas são úteis para aumentar a produtividade no dia a dia para profissionais de desenvolvimento de software em diversas áreas: web, desktop, mobile, UX, design, etc.

Captura de telas - Screenshot#

Uma das tarefas recorrentes no desenvolvimento de software é a captura de telas do desktop. Por vários motivos é necessário realizar um screenshot: facilitar a conversa com uma pessoa usuária, editar manuais de sistemas, demonstrar regiões de código.

Por muitos anos utilizei o Shutter como minha ferramenta de screenshot oficial do Linx Mint e Ubuntu. Mas como seu desenvolvimento está em um ritmo lento, apesar de ainda ser um exelente aplicativo, atualmente tenho utuilizdo e adotei como software oficial de scrrenshot o Flameshot.