Article image
Izairton Vasconcelos
Izairton Vasconcelos25/08/2024 19:12
Compartilhe

Concluí o Bootcamp de Programação, e Agora? Uma Abordagem Técnica com um Projeto de Cadastro de Ferramentas

  • #MySQL
  • #Python
  • #Java

Introdução


Este artigo tem como propósito abordar uma situação comum que ocorre com um participante de um curso ou bootcamp , voltado à programação, logo após à sua conclusão que é: quais os passos a serem seguidos agora?. O objetivo deste artigo é formalizarmos uma discussão sobre quais ações e atitudes que o participante deverá adotar para obter sucesso, consolidando o que aprendeu durante o curso e pondo em prática, os conhecimentos adquiridos.


Ao finalizar um curso qualquer, seja ele de programação ou até mesmo outras áreas de conhecimentos, muitos profissionais se deparam com o desafio de aplicar o conhecimento adquirido em projetos que atendam às necessidades do dia a dia, mesmo que as bases técnicas tenham sido bem aproveitadas durante o evento, a verdadeira consolidação desse aprendizado requer aplicações práticas.


Neste artigo, vamos explorar o assunto e exemplificar como criar um sistema simples de cadastro de ferramentas, como um pontapé inicial, uma necessidade real algo que pode ser aplicada em uma oficina de marcenaria, permitindo-nos organizar o que aprendemos durante o curso, de forma concreta e abrindo portas para um nível mais elevado de nossa caminhada como desenvolvedor.

 

Desenvolvimento


1. Por Onde Começar?


A primeira coisa a ter em mente é compreender o problema. Imagine um artesão e sua oficina de marcenaria, precisando de uma maneira simples e eficiente de controlar suas máquinas e ferramentas. Como registrar as que estão disponíveis? Como saber se uma ferramenta está operando, disponível ou em uso, ou na verdade precisando de manutenção? Essas dúvidas são na verdade, desafios reais que um aplicativo de cadastro poderá resolver na organização de sua oficina.


É aqui que o papel da Engenharia de Requisitos se torna relevante. O primeiro passo em qualquer projeto de software é analisar e a definir os requisitos da proposta idealizada. A engenharia de requisitos, neste caso, atua como a base técnica para compreensão e solução do problema.


Segundo SOUZA, Alinne C. Correa; SOUZA (2023), em seu estudo publicado pela Sociedade Brasileira de Computação, a elicitação de requisitos que é o levantamento dos problemas é essencial para alinhar as necessidades do usuário ao desenvolvimento do projeto de sistema proposto.


No exemplo do cadastro de ferramentas, identificamos como requisitos essenciais a necessidade de gerenciar informações de disponibilidade, manutenção e localização das ferramentas

 

2. Planejando a Solução


Antes de sair programando, é importante planejar o que vai implementar. Portanto, imagine como o seu sistema vai funcionar da maneira como você pensou. Um cadastro de ferramentas pode ter as seguintes funcionalidades básicas:


  • Adicionar uma ferramenta: Registrar uma nova ferramenta no sistema.
  • Atualizar informações: Editar dados, como o nome da ferramenta ou seu status.
  • Listar ferramentas: Visualizar todas as ferramentas cadastradas.
  • Remover uma ferramenta: Excluir ferramentas que não são mais necessárias.


Perceba, o levantamento dos requisitos e o planejamento de um projeto exigem organização e adaptação. As metodologias ágeis, como o Scrum, tornaram-se padrão na indústria de software devido à sua flexibilidade e ênfase na entrega contínua de valor. SOUZA, Alinne C. Correa; SOUZA (2023), em seu estudo publicado pela Sociedade Brasileira de Computação, ressaltam a importância do Scrum em projetos pequenos e médios, especialmente para desenvolvedores iniciantes que buscam entregar resultados incrementais.

 

3. Desenvolvendo o Projeto


Agora, é mãos à obra, hora de programar! Nessa fase e com o plano em mãos, você pode começar a desenvolver o sistema usando a linguagem de programação que aprendeu no bootcamp. Uma sugestão é criar um pequeno sistema com uma interface simples e enxuta, onde o usuário poderá inserir os dados das ferramentas e à medida que vai incluindo-as, visualizando numa lista.


Portanto, aqui pense como seu código será organizado


  • Crie uma estrutura de pastas organizada.
  • Defina as classes e métodos necessários para gerenciar as ferramentas.
  • Implemente uma interface amigável (pode ser via terminal ou uma interface gráfica básica).
  • Por exemplo, se você aprendeu Java no bootcamp, pode usar a biblioteca Swing para criar uma janela onde o usuário insere os dados. Se aprendeu Python, pode usar o Tkinter para criar uma interface gráfica. COUTINHO e MENDIZABAL (2019) na Sociedade Brasileira de Computação, destaca a eficiência de Java em aplicações empresariais devido à sua portabilidade e segurança.


Ou seja, com o planejamento definido, a implementação envolve a tradução dos requisitos e do modelo em código-fonte. A prática de Design Patterns é uma estratégia recomendada para garantir que o código seja estruturado e fácil de manter.


De acordo com DIAS e MAGALHÃES (1991) na Sociedade Brasileira de Computação, padrões como MVC (Model-View-Controller) são altamente indicados para projetos que necessitam de separação clara entre a lógica de negócios e a interface de usuário.

 

4. Testes e Validação: Garantindo a Qualidade do Software


Os testes são cruciais para assegurar a qualidade do software. No contexto da engenharia de software, os testes unitários e de integração são indispensáveis para garantir que o sistema funcione corretamente. De acordo com o estudo de SPOTO, JINO e MALDONADO (2000) na Sociedade Brasileira de Computação, o uso de testes automatizados em projetos de pequeno porte é uma prática eficaz para garantir a evolução contínua do sistema.


No caso do Cadastro de Ferramentas:


  • Testes Unitários: Verificam a correta implementação de funcionalidades básicas, como a adição e remoção de ferramentas.
  • Testes de Integração: Asseguram que os diferentes módulos do sistema operem de forma integrada e sem falhas.

 

5. Documentação: O Pilar da Manutenção


A documentação é frequentemente subestimada, mas desempenha um papel vital na manutenção de qualquer sistema. BRAGA e MOREIRA ( 1997) - na Sociedade Brasileira de Computação, enfatizam que uma boa documentação ajuda a reduzir os custos de manutenção e facilita a transferência de conhecimento em equipes de desenvolvimento.


Criando a Documentação do Projeto:

  • README.md: No GitHub, um README detalhado pode oferecer uma visão geral do projeto, incluindo instruções de instalação e exemplos de uso.
  • Comentários no Código: Devem ser claros e informativos, ajudando outros desenvolvedores a compreenderem a lógica por trás de cada trecho.

 

Caso Prático: Sistema de Cadastro de Ferramentas

 

1. Estrutura do Banco de Dados: Conceitos Fundamentais


A criação de um banco de dados envolve a definição de tabelas que representam entidades do mundo real. Neste caso, as principais entidades são as ferramentas, as categorias das ferramentas e as localizações dentro da oficina. A seguir, apresento a modelagem básica dessas tabelas no MySQL.

 

1.1 - Tabela “ Ferramentas ”


Esta tabela armazenará as informações principais de cada ferramenta cadastrada. Os atributos foram definidos com base nos requisitos identificados:


CREATE TABLE Ferramentas (
 id_ferramenta INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(100) NOT NULL,
 descricao TEXT,
 categoria_id INT,
 localizacao_id INT,
 status ENUM('disponível', 'em uso', 'em manutenção') DEFAULT 'disponível',
 data_aquisicao DATE,
 ultima_manutencao DATE,
 FOREIGN KEY (categoria_id) REFERENCES Categorias(id_categoria),
 FOREIGN KEY (localizacao_id) REFERENCES Localizacoes(id_localizacao)
);


Explicação dos Atributos:


  • id_ferramenta: Chave primária, identificador único de cada ferramenta.
  • nome: Nome da ferramenta, com tamanho máximo de 100 caracteres.
  • descricao: Descrição detalhada da ferramenta.
  • categoria_id: Relaciona a ferramenta com sua categoria.
  • localizacao_id: Indica a localização da ferramenta dentro da oficina.
  • status: Status atual da ferramenta (disponível, em uso ou em manutenção).
  • data_aquisicao: Data de aquisição da ferramenta.
  • ultima_manutencao: Data da última manutenção realizada.

 

 1.2 - Tabela “ Categorias ”


Esta tabela armazena as categorias das ferramentas, como "Elétrica", "Manual", "Pneumática", etc. Cada ferramenta será vinculada a uma dessas categorias:

 

CREATE TABLE Categorias (
 id_categoria INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(50) NOT NULL
);


Explicação dos Atributos:


  • id_categoria: Chave primária, identificador único da categoria.
  • nome: Nome da categoria, com tamanho máximo de 50 caracteres.

 

1.3 - Tabela “ Localizações ”


Para facilitar a organização dentro da oficina, essa tabela define as possíveis localizações das ferramentas, como "Bancada", "Prateleira 1", "Armário 3", etc.:

 

CREATE TABLE Localizacoes (
 id_localizacao INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(50) NOT NULL
);


Explicação dos Atributos:


  • id_localizacao: Chave primária, identificador único da localização.
  • nome: Nome da localização, com tamanho máximo de 50 caracteres.

 

1.4 - Boas Práticas na Modelagem de Dados


Segundo MACHADO e PRICE (1989) - na Sociedade Brasileira de Computação, a modelagem de dados deve priorizar a normalização até a terceira forma normal (3FN), garantindo a eliminação de redundâncias e facilitando a manutenção do banco de dados. No projeto em questão, cada entidade foi projetada para seguir essas práticas, assegurando que os dados estejam bem organizados e evitando anomalias durante as operações de CRUD (Create, Read, Update, Delete).


Além disso, é recomendado o uso de índices em atributos frequentemente consultados, como nome na tabela Ferramentas, para melhorar o desempenho das consultas:

 

Conclusão


Concluir um bootcamp é apenas o primeiro passo de uma jornada que requer prática constante e aprimoramento. Aplicar os conceitos em projetos práticos, como um sistema de cadastro de ferramentas, ajuda a solidificar o aprendizado e prepara o profissional para os desafios do mercado.


Ao colocar em prática os fundamentos aprendidos, como análise de requisitos, planejamento, implementação e testes, o recém-formado desenvolve mais confiança e constrói um portfólio sólido. Isso o capacita a enfrentar problemas reais e a se destacar em um ambiente competitivo.


Um bootcamp funciona como uma enciclopédia: mesmo após concluído, deve estar sempre à mão para consultas e aprimoramento. As aulas, produzidas com profissionalismo pelos experts, não devem ser ignoradas. Revisitar esse material é crucial para manter o conhecimento atualizado.


O próximo passo é seguir aprendendo, explorando novas tecnologias e buscando desafios mais complexos. A prática constante e o estudo contínuo de conteúdos relevantes são essenciais para se manter em evolução e alcançar um lugar de destaque como desenvolvedor.

 

Referências


  • MACHADO, Javan de Castro; PRICE, Roberto Tom. Modelagem dos Dados de um Ambiente de Desenvolvimento de Software. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 3. , 1989, Recife/PE. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 1989 . p. 296-310. DOI: https://doi.org/10.5753/sbes.1989.25267.
  • SOUZA, Alinne C. Correa; SOUZA, Francisco Carlos M.; ORTONCELLI, André Roberto; COSTA, Lincoln Magalhães. Ensino de Engenharia de Requisitos com apoio de uma ferramenta baseada em Metodologia Ágeis: Um Relato de Experiência. In: WORKSHOP DE INFORMÁTICA NA ESCOLA (WIE), 29. , 2023, Passo Fundo/RS. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2023 . p. 682-691. DOI: https://doi.org/10.5753/wie.2023.235253.
  • DIAS, Eliane Zambon Victorelli; MAGALHÃES, Geovane Cayres. MVC: Um Modelo para Controle de Versões e Configurações. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 5. , 1991, Ouro Preto/MG. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 1991 . p. 93-106. DOI: https://doi.org/10.5753/sbes.1991.24260.
  • BRAGA, Christiano de Oliveira; MOREIRA, Marcelo; STAA, Arndt von. Geração Automática de Documentação a Partir de Código Fonte. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 11. , 1997, Recife/PE. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 1997 . p. 469-473. DOI: https://doi.org/10.5753/sbes.1997.24066.
  • COUTINHO XAVIER, Luiz Gustavo; M. MENDIZABAL, Odorico. Análise de Desempenho de Estruturas de Dados Concorrentes Implementadas na Linguagem Java. In: ESCOLA REGIONAL DE ALTO DESEMPENHO DA REGIÃO SUL (ERAD-RS), 19. , 2019, Três de Maio. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2019 . ISSN 2595-4164.
  • SPOTO, Edmundo Sérgio; JINO, Mario; MALDONADO, José Carlos. Teste Estrutural de Software: Uma abordagem para Aplicações de Banco de Dados Relacional. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 14. , 2000, João Pessoa/PB. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2000 . p. 243-258. DOI: https://doi.org/10.5753/sbes.2000.25931
  • DIO. Digital Innovation One. Disponível em: https://web.dio.me/home. Acesso em: 25 ago. 2024.
Compartilhe
Comentários (1)
Elisangelo Ferreira
Elisangelo Ferreira - 25/08/2024 20:50

Muito bom o conteudo. realmente terminar um bootcamp ou curso, nao significa que estamos prontos pra sair trabalhando em qualquer lugar ou pra qualquer empresa... acredito que é preciso um tempo entre o formar e o arrumar o primeiro trabalho na area, para quem esta apena iniciando neste novo mundo.. pois será preciso provar o conhecimento adquirido, e este virar colocando em pratica pra você mesmo, quer seja automatizando algum processo de algo que vc costuma fazer no seu dia a dia, ou realizando algum tarefa que gostaria muito, mas que seja pra voce primeiro sem que exista o dinheiro de um terceiro envolvido, pois os problemas com certeza vão surgir, e você vai precisar de tempo e estudo para resolve-los sem pressão psicológica de ninguém, e nem sempre você vai encontrar a solução de primeira... na maior parte das vezes vai ser tentativa e erro até entender como algo funciona, e se você estiver passando por este processo como iniciante dentro de um emprego ou trabalho onde existe alguém do outro lado esperando pelo resultado, nem sempre vão ter a pasciência necessária para que vc possa entregar no seu tempo.


Digo isso com base no meu ponto de vista , e até falando por experiencia, sintam-se livres pra discordarem, Iniciar prematuramente em um trabalho sem ter passado antes pela frustação de não conseguir resolver um problema dentro do prazo combinado, pode causar alguns transtornos mentais e algo que seria um processo natural pode se transformar em um processo doloroso e penoso... fazendo nascer algumas crises ou sindromes advindas de frustraçoes ou fracassos; a síndrome do impostor deve soar bem familiar neste assunto... mas uma coisa é certa: a pratica leva a consolidação dos conceitos aprendidos em um curso ou formacao... e ter a oportunidade de consolidar este conhecimento sem a interferência prematura da pressão natural que esta area já impõe no dia a dia (afinal o trabalho será resolver problemas reais) é algo muito importante e que será decisivo quando estiver realmente no trabalho resolvendo problemas do mundo real com o conhecimento adquirido, pois você vai precisar de gastar mais tempo desenvolvendo as softskills ( lidar com pessoas, negociando prazos e trade-offs) ao invés de gastar tempo tentando entender como aplicar o que aprendeu no curso no problema que te deram pra resolver. O mercado não perdoa quem não está preparado se não conseguir demostrar que sabe como resolver o problema o que no minimo saiba do que se trata o problema e isso se adquire com a pratica e acredito que seja sensato que nos mesmos custei este processo de consolidação do conhecimento e projetos proprios para que uma futura primeira oportunidade de trabalho seja bem aproveitada e não cause decepção pra nenhuma das partes envolvidas.