diff --git a/content/blog/pensando-como-um-programador.md b/content/blog/pensando-como-um-programador.md new file mode 100644 index 00000000..358962dc --- /dev/null +++ b/content/blog/pensando-como-um-programador.md @@ -0,0 +1,131 @@ ++++ +title = "Pensando como um Programador" +date = "2024-06-19T00:30:00-03:00" +tags = ["programação", "dicas"] +categories = ["dicas"] +banner = "img/banners/building-things.png" ++++ + +# Introdução + +O ser humano é uma espécie muito peculiar nas mais diversas formas. A capacidade humana de se adaptar é, em partes, o que nos fez chegar onde estamos. + +Naturalmente, muitas coisas que para nós hoje, são normais, eram inimagináveis em outro período da humanidade. +Imagine se transportamos Pedro Álvares Cabral para nossos dias de hoje e o mostrássemos um avião? Certamente algo inimaginável à época! + +E por que isto nos é importante? O que isso tem a ver com programação? + +Muito mais do que você possa imaginar! + +> **Nós, como programadores, somos responsáveis por transformar algo que está apenas no pensamento, em realidade!** + +Uma das partes do nosso trabalho que traz maior satisfação é você conseguir concluir a tarefa proposta, o famoso "Funciona!". + +A tradição na área é de se começar fazendo os programas exibirem a frase "Olá Mundo!", oriunda do inglês "_Hello World!_". +A sensação quando você finalmente consegue exibir a mensagem na tela é algo muito positivo! + +No entanto, uma coisa que costuma passar desapercebida é o processo que nós fazemos para chegar neste ponto! As etapas necessárias para conseguirmos, finalmente, +concluir algo. + +Conseguir visualizar o resultado é algo simples para nós, seres humanos. Agora, conseguir imaginar quais são todas as etapas necessárias, +qual o caminho que devemos percorrer para chegar a este resultado, **nem sempre é trivial**. + +Imagina agora se, para nós, já é algo um pouco difícil, como fica então para uma máquina?! Para um computador?! Certamente não é uma tarefa fácil... + +# Porquê isso é importante? + +**Esta habilidade de conseguir montar as pecinhas do quebra cabeça para chegar no resultado desejado é algo diferencial na vida do programador**. Quando você passa +a conseguir identificar as etapas, identificar os processos, as coisas começam a fazer mais sentido para você; e, como num estalar dos dedos, fica mais fácil +se chegar no resultado desejado! + +> **Diariamente, programadores lidam com situações inesperadas.** + +Estas situações podem ir desde bugs ainda não encontrados, especificações incompletas (quando não se +sabe ao certo o que querem), ou até mesmo mudanças de tecnologia que acabam tornando como algo era feito obsoleto. + +A capacidade de identificar o processo necessário para se chegar ao resultado vai lhe ajudar. + +A capacidade de conseguir segmentar este processo vai lhe ajudar ainda mais! + +Quanto mais detalhado você conseguir compreender isto, melhor fica o resultado produzido e, às vezes, fica até mais fácil de implementá-lo também! + +# Identificando Processos + +Apesar de parecer um conceito abstrato, nós fazemos isso constantemente em nosso dia a dia. O nosso cérebro tem uma capacidade extraordinária em identificar padrões +e automatizar tarefas. + +Um exemplo disso pode ser andar de bicicleta. Enquanto está aprendendo, você precisa pensar em como fazer as coisas: + +* Pedalar +* Equilibrar a Bicicleta +* Direcionar para onde ir +* Freiar a Bicicleta +* Se apoiar quando parar, para não cair... + +Todas são funções necessárias para se conseguir andar de bicicleta, mas que não nos ocorrem naturalmente. É algo que precisamos entender como funciona, algo que +precisamos aprender. + +Depois que aprendemos também, conseguimos fazer tudo de maneira automatizada! Você pedala, se equilibra, freia, muda a direção... tudo de +maneira fluida e natural, quase um processo automático! + +Há outros exemplos disso, como: dirigir um carro, subir/descer uma escada, nadar... o importante aqui é perceber como a nossa capacidade de adaptação e abstração +é algo extraordinário! + +**Uma ferramenta poderosíssima que você pode, e deve, usar a seu favor!** + +# Mas e a programação? + +Conseguir identificar os processos vai permitir ao programador entender o que precisa ser feito para alcançar o resultado desejado. O programador é o responsável +por definir como este processo vai ser feito pelo computador. + +> **É responsabilidade do programador "traduzir" as etapas do processo de modo que a máquina as faça conforme seja necessário.** + +Ou seja, é você, programador, o responsável por direcionar a máquina a fazer as coisas da forma que elas precisam ser feitas. + +A máquina não consegue entender o que ela faz. A máquina não tem consciência, ela tem um conjunto de instruções a serem seguidos. Cabe ao programador +fazer o uso deste conjunto para alcançar o resultado desejado. + +Vamos a um exemplo? + +## Exemplo - Calculadora: Operação de soma + +Para nós, seres humanos, somar dois números é uma tarefa relativamente simples. Qual o resultado de 3 + 7? Alguns de vocês devem já saber o resultado antes mesmo de +terminar de ler a expressão. +Contudo, para a máquina isto já não é verdade. Para ela fazer a mesma conta ela precisa realizar algumas etapas específicas, onde a ordem destas etapas pode influenciar +o resultado. + +Estas etapas são: + +1. Obter o primeiro número da operação; + 1. Nesse exemplo, o número 3. +2. Obter o segundo número da operação; + 1. Nesse exemplo, o número 7. +3. Identificar qual é a operação a ser realizada; + 1. Neste exemplo, operação de adição (soma). +4. Realizar a operação; +5. Armazenar o resultado da operação; +6. (Opcional) Exibir o resultado da operação. + 1. Este coloco como opcional, pois, nem sempre, é necessário exibir o resultado. + + +Veja só quantas etapas o nosso cérebro faz para nós sem nem percebemos! + +Esta habilidade pode ser utilizada a seu favor na programação também! Mas para isto, é necessário praticar... + +Cada pessoa tem a sua forma e ritmo diferente. Para uns pode vir com mais facilidade, para outros pode ser mais custoso. + +> **O importante é não desistir e seguir trilhando o seu caminho para se tornar um programador!** + +O ser humano é incrível e consegue se adaptar a diversos cenários. Esperamos que com este artigo você tenha percebido que existe um grande potencial em você! +Cabe agora a você, decidir como usá-lo! + +Boa sorte em sua jornada para se tornar um(a) programador(a)! + +--- + +### Para dar continuidade em seus estudos agora, recomendamos os seguintes passos: + +1. Vá para o artigo [Olá Mundo]({{< ref "/blog/ola-mundo.md" >}} ). +2. **Há um ótimo [material sobre Introdução à Ciência da Computação feito por Harvard](https://youtu.be/SYZkrqW8oJc?si=7In3_gUFxc-8pe1f) que recomendamos.** +3. Também recomendamos que você faça os [desafios do grupo](https://osprogramadores.com/desafios/) após ter lido os artigos. +4. Caso tenha dificuldades com os exercícios, ou dúvidas, faça perguntas no [grupo no telegram](https://t.me/osprogramadores). diff --git a/static/img/banners/building-things.png b/static/img/banners/building-things.png new file mode 100644 index 00000000..06001b02 Binary files /dev/null and b/static/img/banners/building-things.png differ