Que tal, desenvolver ferramentas que possam ser executadas tanto…

… em modo texto, quanto em modo gráfico? Conforme vou desenvolvendo as competências e as habilidades de programação em Python, aproveito o momento para identificar os cenários e as situações em que posso aplicar os conhecimentos já adquiridos, bem como colocá-los à prova através de vários projetos que venho idealizando (obviamente, nem todos serão executados). Dentre eles, está uma ferramenta designada para a administração de sistemas operacionais…

Inicialmente, a idéia era contar com um simples dashboard, que por sua vez irá exibir os recursos do sistema e as suas respectivas propriedades, além de promover funções para realizar uma série de tarefas administrativas (identificar gargalos, inicializar serviços, inspecionar módulos, encerrar processos, liberar espaço em disco, etc). Posteriormente, será adicionado uma seção especial oferecendo suporte para a linha de comando, dando ao administrador a opção de utilizar os comandos do sistema e realizar estas operações administrativas, com base nas informações exibidas pela interface da ferramenta.

Mas, sabendo que muitas das tarefas administrativas são automatizada através de scripts escritos em Bash (ou até mesmo em Python) para serem executados de forma não interativa (sem a intervenção humana), porquê não tornar a ferramenta capaz de realizar algumas tarefas, através da linha de comando? Para isto, será necessário realizar a passagem de argumentos na execução da ferramenta, através da utilização de módulos designados para isto, como é o caso de argparse e sys. Além disso, cada operação suportada deverá contar com funções que possam ser utilizadas tanto no modo texto, quanto no modo gráfico.

Incrível, não? O conceito inicial de oferecer uma ferramenta simples, dotada de uma interface (dashboard) para exibir as propriedades do sistema (e usá-la como pretexto para “brincar” com a biblioteca gráfica Tkinter), evoluiu para uma abordagem mais sofisticada, designada para oferecer novas funções extras para interagir com o sistema e assim, realizar algumas tarefas administrativas com base em módulos que oferecem o acesso ao sistema (como o os/shutil, o sys e o subprocess). Agora, ela também será capaz de suportar a passagem de parâmetros, para que possa ser utilizada com uma ferramenta de linha de comando.

A grande ironia é que, diferente do “Gerador de Tabelas”, não escrevi uma única linha de código sequer! Para variar, esta nova ferramenta que nem possui um nome previamente definido (aceito sugestões). Mas como já havia dito antes, estes (e outros) projetos serão inicialmente designados para oferecer as oportunidades necessárias para que eu possa promover o meu auto-aprendizado, além de tirar proveito de futuras conexões profissionais. Em um futuro não muito distante (quando lançar a versão 1.0), vou disponibilizá-los sob os termos da licença GNU GPL v3.

Também estou preocupado com todos os aspectos relacionados a gestão de projetos e desenvolvimento de softwares. Além de atender as exigências e os requisitos do Ciclo de Vida do Desenvolvimento de Software (SDLC), também tenho que observar as melhores orientações e práticas tanto para a codificação quanto para a documentação, adotando princípios como o SOLID, DRY (Don’t Repeat Yourself) e YAGNI (You Aren’t Gonna Need It), além de implementar práticas como TDD (Test-Driven Development) e pipelines de CI/CD. Pois mais importante do que apenas “saber fazer”, é “saber fazer e (muito) bem feito”! Especialmente, para um instrutor…

A partir daí, torço para que apareçam pessoas interessados nestes projetos e que elas façam as suas contribuições (nos mesmos moldes da comunidade do Software Livre), além de se candidatando para realizar tarefas tradicionais como testar a ferramenta, revisar código, sugerir de melhorias e até mesmo, assumir responsabilidades no desenvolvimento de futuras versões. Esta fase também será interessante, pois além de poder compartilhar estas experiências outros profissionais, também terei a oportunidade de realizar trabalhos em equipe, já que até o presente momento tenho conduzido estes processos de forma “solitária”.

Como já devem ter observado, há um longo caminho a percorrer. Até lá… &;-D