Navegando nas águas da programação

Luan Bezerra Coelho
Apple Developer Academy | UFPE
4 min readApr 11, 2024

Ao iniciar na programação, é perfeitamente normal sentir-se sobrecarregado com a quantidade aparentemente infinita de informações e conceitos a serem assimilados. Muitas vezes, vai parecer que estamos apenas dando comandos com estruturas “sem sentido” para fazer algo abstrato, sem muita finalidade e objetividade, deixando a compreensão do propósito de cada linha de código de lado.

Ao longo das 3 semanas de imersão nas aulas de Swift e SwiftUI na Apple Developer Academy | UFPE, percebi algo verdadeiramente surpreendente: a velocidade da absorção de conhecimento e a habilidade dos membros que não eram desenvolvedores em construir projetos impressionantes.

Mas, apesar da rapidez de aprendizado, 20 dias não são suficientes para compreender a programação como uma poderosa aliada na resolução de problemas e entender como isso vai além de apenas construir telas de apps. Entender a programação como por exemplo, o paradigma orientado a objetos (um dos tópicos que tivemos contato), requer mais do que apenas a memorização de sintaxes e funções; exige prática e experiência — o que é impossível de adquirir em apenas 3 semanas.

Neste texto, compartilharei algumas lições valiosas que adquiri durante minha própria jornada como iniciante na programação, na esperança de que possam servir como um farol para meus colegas da Apple Developer Academy | UFPE que estão começando agora.

Primeiro de tudo, é importante entender a programação como uma ferramenta, uma maneira de resolver algum problema, como, por exemplo, montar uma lista de afazeres. Então, antes mesmo de começar a digitar uma única linha de código, é essencial ter uma compreensão clara do problema que você está tentando resolver. Uma técnica muito útil é quebrar o problema em problemas menores, de forma que, resolvendo cada pedacinho, você consiga resolver o todo. No exemplo de fazer uma lista de afazeres, você pode separar em diferentes ações, como criar tarefa, excluir tarefa, marcar uma tarefa como concluída, e assim resolver cada pedaço de uma vez, que juntos resolvem o problema como um todo.

É mais fundamental compreender a natureza do problema em questão e como abordá-lo do que simplesmente aprender a escrever uma função que execute uma determinada tarefa. A identificação precisa do problema é um passo crucial para encontrar a solução adequada. Afinal, de nada serve saber como fazer uma função que insere um elemento numa lista sem entender para que essa lista será utilizada.

Não se deixe levar por memorizar funções sem entender o que elas fazem, pois com o tempo você vai perceber que a maioria dos problemas são semelhantes a outros problemas já existentes, e entendendo a solução desses problemas parecidos, você consegue adaptar para o seu problema. É extremamente valioso entender o motivo de cada coisa para conseguir reutilizar esses conceitos em diferentes contextos. Depois de muita prática, você será capaz de adaptar algoritmos famosos já existentes para resolver problemas particulares.

Um pensamento complementar ao de quebrar o problema é pensar em termos de funcionalidade. Em vez de se concentrar apenas em aprender funções isoladas, pense em como essas funções podem ser integradas para criar uma funcionalidade significativa em seu projeto. Por exemplo, ao desenvolver um aplicativo de lista de tarefas, é essencial compreender como as funções de adicionar, remover e marcar tarefas completas trabalham em conjunto para criar a experiência do usuário final. Ao entender as necessidades do seu projeto, você estará mais apto a identificar as funções necessárias para alcançar seus objetivos.

A programação vai além da simples memorização de sintaxes e funções; é uma habilidade que requer a capacidade de decompor problemas complexos em partes menores e encontrar soluções eficazes para cada uma delas. Praticar regularmente exercícios é fundamental para desenvolver essa habilidade de resolução de problemas através do código. Você pode encarar a programação como uma ferramenta poderosa para automatizar tarefas mundanas do dia a dia, como renomear arquivos em massa ou organizar pastas de acordo com critérios específicos. Você pode usar sites de juízes online como o LeetCode para praticar resolver problemas clássicos e utilizar diferentes tipos de estruturas de dados.

Uma vez, precisei preencher uma planilha com o CPF de todos os alunos de uma turma que fui monitor, mas para preservar a privacidade dos alunos, o CPF precisava ser censurado. Em vez de censurar cada CPF manualmente, eu fiz um pequeno script que substitui os dígitos do meio do CPF por asteriscos (*) e me retorna o CPF já censurado, reduzindo meu trabalho apenas a copiar e colar. Esse é um exemplo pequeno de como a programação pode te ajudar a resolver problemas no seu dia a dia, mas sua criatividade é o limite.

Exemplo com CPFs e notas fictícias para preservar a integridade dos alunos

Espero que estas dicas possam te ajudar a compreender a programação como uma ferramenta para alcançar objetivos específicos, em vez de apenas um conjunto de funções para a construção de aplicativos.

Obrigado se você chegou ate aqui :)

--

--