Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add think before you code post #171

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions apps/blog/_posts/think-before-you-code.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: "Por trás de um grande programa há um grande plano"
date: "2023-04-15"
author:
name: "Miguel Ângelo Freitas"
photo: "mikefreitas.jpg"
username: "MrNameless10"
draft: true
topic: "Programação"
featured: false
---

---
MrNameless10 marked this conversation as resolved.
Show resolved Hide resolved

Se és alguém que está ansioso para começar a programar, isso é **fantástico**! A programação é um campo empolgante que permite criar, projetar e construir coisas incríveis. Porém, antes de mergulhar na codificação, há um princípio importante que tens de ter em mente: **pensar antes de teclar**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Se és alguém que está ansioso para começar a programar, isso é **fantástico**! A programação é um campo empolgante que permite criar, projetar e construir coisas incríveis. Porém, antes de mergulhar na codificação, há um princípio importante que tens de ter em mente: **pensar antes de teclar**.
Se estás ansioso para começar a programar, isso é **fantástico**! A programação é um campo empolgante que permite criar, projetar e construir coisas incríveis. Porém, antes de mergulhar na codificação, há um princípio importante que tens de ter em mente: **pensar antes de teclar**.


Como **estudante** de **Ciências da Computação**, aprendi que programar é uma ferramenta poderosa que pode dar vida às nossas ideias e envolve muito mais do que apenas escrever código. Requer uma compreensão profunda da matemática e habilidades de lógica e de resolução de problemas para criar soluções eficientes e eficazes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Como **estudante** de **Ciências da Computação**, aprendi que programar é uma ferramenta poderosa que pode dar vida às nossas ideias e envolve muito mais do que apenas escrever código. Requer uma compreensão profunda da matemática e habilidades de lógica e de resolução de problemas para criar soluções eficientes e eficazes.
Como **estudante** de **Ciências da Computação**, aprendi que programar é uma ferramenta poderosa que pode dar vida às nossas ideias e envolve muito mais do que apenas escrever código: requer uma compreensão profunda da matemática e habilidades de lógica e de resolução de problemas para criar soluções eficientes e eficazes.


>A palavra _“programa”_ vem do grego _“programma”_, uma derivação de _“prographein”_ = _“pro”_ (antes) + _“graphein”_ (escrever). Isto sugere que alguém que programa deve pensar antes no que vai fazer.

– [**José Nuno Oliveira**](https://www.di.uminho.pt/~jno/)

## O que significa pensar antes de teclar?

Essencialmente, significa reservar um tempo para pensar no que desejas fazer antes de começar a escrever o código. Isso pode envolver desenhar diagramas, listar ou simplesmente pensar nas etapas que de precisas seguir para resolver um problema específico. Para isso, tens de pegar no problema e dividi-lo em partes menores e mais simples e, posteriormente, criar um plano de ação. Este processo costuma ser chamado de **"pensamento algorítmico"** e é uma habilidade fundamental que os cientistas da computação e engenheiros informáticos usam para abordar problemas complexos..
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Essencialmente, significa reservar um tempo para pensar no que desejas fazer antes de começar a escrever o código. Isso pode envolver desenhar diagramas, listar ou simplesmente pensar nas etapas que de precisas seguir para resolver um problema específico. Para isso, tens de pegar no problema e dividi-lo em partes menores e mais simples e, posteriormente, criar um plano de ação. Este processo costuma ser chamado de **"pensamento algorítmico"** e é uma habilidade fundamental que os cientistas da computação e engenheiros informáticos usam para abordar problemas complexos..
Essencialmente, significa reservar um tempo para pensar no que desejas fazer antes de começar a escrever o código. Isso pode envolver desenhar diagramas, listar ou simplesmente pensar nas etapas que de precisas seguir para resolver um problema específico. Para isso, tens de pegar no problema e dividi-lo em partes menores e mais simples e, posteriormente, criar um plano de ação. Este processo costuma ser chamado de **"pensamento algorítmico"** e é uma habilidade fundamental que os cientistas da computação e engenheiros informáticos usam para abordar problemas complexos.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Essencialmente, significa reservar um tempo para pensar no que desejas fazer antes de começar a escrever o código. Isso pode envolver desenhar diagramas, listar ou simplesmente pensar nas etapas que de precisas seguir para resolver um problema específico. Para isso, tens de pegar no problema e dividi-lo em partes menores e mais simples e, posteriormente, criar um plano de ação. Este processo costuma ser chamado de **"pensamento algorítmico"** e é uma habilidade fundamental que os cientistas da computação e engenheiros informáticos usam para abordar problemas complexos..
Essencialmente, significa reservar um tempo para pensar no que desejas fazer antes de começar a escrever o código. Isso pode envolver desenhar diagramas, listar ou simplesmente pensar nas etapas que precisas de seguir para resolver um problema específico. Para isso, tens de pegar no problema e dividi-lo em partes menores e mais simples e, posteriormente, criar um plano de ação. Este processo costuma ser chamado de **"pensamento algorítmico"** e é uma habilidade fundamental que os cientistas da computação e engenheiros informáticos usam para abordar problemas complexos.


<img src="https://drive.google.com/uc?id=1qxVVXLmGSCKLswQgBzXc61LcwbT7zxlr"
alt="CoderDojo_ThinkBeforeYouCode"
style="display: block; margin: 0 auto" />
MrNameless10 marked this conversation as resolved.
Show resolved Hide resolved

## Porque é que é importante pensar antes de escrever código?

Existem várias razões. Em primeiro lugar, programar pode ser um processo complexo e demorado. Se começares a escrever código sem um plano claro em mente, provavelmente perderás muito tempo com falsas partidas, becos sem saída e _debugging_. Ao reservar um tempo para pensar nas coisas de antemão, **economizas muito tempo** e **poupas frustração** a longo prazo.

Outro aspeto importante de pensar antes de programar é entender a matemática por trás da programação. Embora linguagens de programação como **_Python_, _Java_, _C_**… nos permitam criar programas poderosos, elas são construídas com base em conceitos matemáticos. Quando tens um plano claro em mente, é menos provável que cometas erros ou ignores detalhes importantes. Por exemplo, os algoritmos, que são uma parte fundamental do estudo desta área, são baseados em princípios matemáticos como **eficiência**, **correção** e **escalabilidade**.

Por fim, pensar antes de bater no teclado ajuda-te a ser um programador melhor, em geral. Quando reservas algum tempo para planear o teu código, és forçado a pensar mais profundamente sobre o problema que resolves. Isso pode levar a soluções mais elegantes, a uma melhor organização de código e algoritmos mais eficientes. Pensar num problema, é também considerar casos extremos e possíveis erros. Considerar esses cenários antes de escrever o código, ajuda-te a ter uma solução mais robusta e menos propensa a erros. Na programação, é essencial **considerar todos os resultados** possíveis e garantir que o teu código esteja preparado para lidar com eles. Desenvolver bons hábitos de planeamento desde o início, preparara-te para o **sucesso** enquanto continuas a aprender e crescer como programador.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Por fim, pensar antes de bater no teclado ajuda-te a ser um programador melhor, em geral. Quando reservas algum tempo para planear o teu código, és forçado a pensar mais profundamente sobre o problema que resolves. Isso pode levar a soluções mais elegantes, a uma melhor organização de código e algoritmos mais eficientes. Pensar num problema, é também considerar casos extremos e possíveis erros. Considerar esses cenários antes de escrever o código, ajuda-te a ter uma solução mais robusta e menos propensa a erros. Na programação, é essencial **considerar todos os resultados** possíveis e garantir que o teu código esteja preparado para lidar com eles. Desenvolver bons hábitos de planeamento desde o início, preparara-te para o **sucesso** enquanto continuas a aprender e crescer como programador.
Por fim, pensar antes de bater no teclado ajuda-te a ser um programador melhor, em geral. Quando reservas algum tempo para planear o teu código, és forçado a pensar mais profundamente sobre o problema que resolves. Isso pode levar a soluções mais elegantes, a uma melhor organização de código e algoritmos mais eficientes. Pensar num problema é também considerar casos extremos e possíveis erros. Considerar esses cenários antes de escrever o código ajuda-te a ter uma solução mais robusta e menos propensa a erros. Na programação, é essencial **considerar todos os resultados** possíveis e garantir que o teu código esteja preparado para lidar com eles. Desenvolver bons hábitos de planeamento desde o início preparar-te para o **sucesso** enquanto continuas a aprender e crescer como programador.


## Resumo

Então, fazendo as contas finais, as **principais ideias** são:

1. **Define o problema:** antes de começar a programar, certifica-te de entender exatamente qual problema tentas resolver. Faz uma **descrição clara do problema**, com quaisquer restrições ou requisitos que precisas considerar.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. **Define o problema:** antes de começar a programar, certifica-te de entender exatamente qual problema tentas resolver. Faz uma **descrição clara do problema**, com quaisquer restrições ou requisitos que precisas considerar.
1. **Define o problema:** antes de começar a programar, certifica-te que entendes exatamente qual problema que estás a tentar resolver. Faz uma **descrição clara do problema**, com quaisquer restrições ou requisitos que precises de considerar.


2. **Divide:** após entender o problema, divide o problema em **partes mais pequenas e mais simples**. Pensa nas etapas que precisas seguir para resolver cada peça e como elas se encaixam para formar a solução maior.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
2. **Divide:** após entender o problema, divide o problema em **partes mais pequenas e mais simples**. Pensa nas etapas que precisas seguir para resolver cada peça e como elas se encaixam para formar a solução maior.
2. **Divide:** após entender o problema, divide o problema em **partes mais pequenas e mais simples**. Pensa nas etapas que precisas de seguir para resolver cada peça e como elas se encaixam para formar a solução maior.


3. **Planeia os teus algoritmos**: Se o problema envolve cálculos matemáticos ou algoritmos, reserva um tempo para planear. Escreve as etapas que precisas seguir e certifica-te de entender a lógica por trás de cada etapa, como um **verdadeiro matemático**.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. **Planeia os teus algoritmos**: Se o problema envolve cálculos matemáticos ou algoritmos, reserva um tempo para planear. Escreve as etapas que precisas seguir e certifica-te de entender a lógica por trás de cada etapa, como um **verdadeiro matemático**.
3. **Planeia os teus algoritmos**: se o problema envolve cálculos matemáticos ou algoritmos, reserva um tempo para planear. Escreve as etapas que precisas seguir e certifica-te de entender a lógica por trás de cada etapa, como um **verdadeiro matemático**.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. **Planeia os teus algoritmos**: Se o problema envolve cálculos matemáticos ou algoritmos, reserva um tempo para planear. Escreve as etapas que precisas seguir e certifica-te de entender a lógica por trás de cada etapa, como um **verdadeiro matemático**.
3. **Planeia os teus algoritmos**: Se o problema envolve cálculos matemáticos ou algoritmos, reserva um tempo para planear. Escreve as etapas que precisas de seguir e certifica-te que entendes a lógica por trás de cada etapa, como um **verdadeiro matemático**.


4. **Fazer desenhos:** se ajudar, desenha diagramas ou fluxogramas para **ajudar a visualizar** a solução. Isso pode ser especialmente útil para problemas ou algoritmos complexos.

5. **Testar**: Ainda antes de passares para o computador **confirma** que tens a solução correta! Usa a tua cabeça ou até mesmo escreve um _debugger_ por exemplo um pseudocódigo para garantir que esteja tudo a funcionar conforme o esperado.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be nice to mention TDD as a fun fact here 👀

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
5. **Testar**: Ainda antes de passares para o computador **confirma** que tens a solução correta! Usa a tua cabeça ou até mesmo escreve um _debugger_ por exemplo um pseudocódigo para garantir que esteja tudo a funcionar conforme o esperado.
5. **Testar**: Ainda antes de passares para o computador, **confirma** que tens a solução correta! Usa a tua cabeça ou até mesmo escreve um _debugger_, por exemplo, um pseudocódigo, para garantir que esteja tudo a funcionar conforme o esperado.


6. **Escreve o código:** agora que tens um plano, é hora de escrever o código. Se seguires os passos anteriores nada te garante que não terás problemas, mas não te preocupes, é normal. Apenas **recomeça** e tenta novamente.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
6. **Escreve o código:** agora que tens um plano, é hora de escrever o código. Se seguires os passos anteriores nada te garante que não terás problemas, mas não te preocupes, é normal. Apenas **recomeça** e tenta novamente.
6. **Escreve o código:** agora que tens um plano, é hora de escrever o código. Se seguires os passos anteriores, nada te garante que não terás problemas, mas não te preocupes, é normal. Apenas **recomeça** e tenta novamente.


Concluindo, como alguém que estuda ciências da computação, este é o caminho que ainda uso para me tornar num programador atento e eficiente, capaz de enfrentar até mesmo os problemas mais complexos com confiança. Lembra-te: pensar antes de escrever código é uma habilidade essencial para qualquer programador e **nunca é cedo demais para começar a desenvolver bons hábitos**.
Binary file added apps/blog/public/img/team/mikefreitas.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.