<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aula | Pablo Ramon</title>
	<atom:link href="https://pabloramon.com.br/category/aula/feed/" rel="self" type="application/rss+xml" />
	<link>https://pabloramon.com.br</link>
	<description>Always a learner</description>
	<lastBuildDate>Fri, 25 Apr 2025 14:12:14 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8</generator>

<image>
	<url>https://pabloramon.com.br/wp-content/uploads/2025/04/cropped-circle_image-32x32.png</url>
	<title>Aula | Pablo Ramon</title>
	<link>https://pabloramon.com.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Programação por pares &#8211; Construindo comunicação eficiente em times de desenvolvimento.</title>
		<link>https://pabloramon.com.br/2025/04/25/programacao-por-pares-construindo-comunicacao-eficiente/</link>
		
		<dc:creator><![CDATA[pabloramon]]></dc:creator>
		<pubDate>Fri, 25 Apr 2025 09:06:02 +0000</pubDate>
				<category><![CDATA[Aula]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Metodologias Ativas]]></category>
		<category><![CDATA[Prática docente]]></category>
		<guid isPermaLink="false">https://pabloramon.com.br/?p=873</guid>

					<description><![CDATA[Por questões culturais e de senso comum, somos levados a entender a programação de software como uma atividade solitária. A figura do programador recluso e com pouco traquejo social tem sido muito propagada por filmes, séries e mídias pop em geral. Porém, o dia a dia de quem programa está longe de ser assim.O cotidiano [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Por questões culturais e de senso comum, somos levados a entender a programação de software como uma atividade solitária. A figura do programador recluso e com pouco traquejo social tem sido muito propagada por filmes, séries e mídias pop em geral. Porém, o dia a dia de quem programa está longe de ser assim.<br>O cotidiano dos tech leaders e gestores de equipes de TI tem sido, em boa parte, manejar a comunicação eficaz dentro dos times. Quem consegue uma equipe com boa comunicação faz entregas mais consistentes, se protege mais rapidamente de problemas e consegue encaixar competências, tornando a equipe uma massa coesa. Este cenário é um objetivo que nem sempre é alcançado. Não são poucos os relatos de comunicação deficitária, preconceito entre os participantes do time por desnível evidente de habilidades técnicas, ou até mesmo a falta de costume em cooperar efetivamente em grupo. Julgo que isso poderia ser resolvido na base de formação do profissional.<br>Nesses últimos anos em sala de aula, ensinando disciplinas de computação, tem ficado claro para mim que minhas aulas atingem mais rapidamente seus objetivos quando aposto na construção das habilidades de comunicação e senso de comunidade dos alunos, muito mais do que na apresentação do conteúdo da disciplina em si. E estou convencido de que a Programação por Pares é uma ótima prática para alcançar esses objetivos.<br>Vou apresentar um relato de experiência que vivenciei ao aplicar a técnica de Programação por Pares em uma disciplina de Qualidade de Software. Relatarei, nas próximas linhas, o cenário que encontrei em uma das minhas últimas aulas utilizando a técnica, bem como a estratégia adotada e os resultados obtidos.</p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="877" src="https://pabloramon.com.br/wp-content/uploads/2025/04/PairProgramming-1024x877.png" alt="" class="wp-image-878" style="width:511px;height:auto" srcset="https://pabloramon.com.br/wp-content/uploads/2025/04/PairProgramming-980x839.png 980w, https://pabloramon.com.br/wp-content/uploads/2025/04/PairProgramming-480x411.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure>



<p></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Cenário</strong></p>



<p>As aulas são conduzidas em um laboratório com computadores desktop, com uma turma de aproximadamente 18 pessoas do curso de Ciência da Computação. Os alunos tinham conhecimentos desnivelados de programação: alguns já atuavam profissionalmente, enquanto outros estavam dando os primeiros passos na área.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Preparação</strong></p>



<p>Uma aula antes da aplicação da Programação por Pares foi dedicada a uma atividade de nivelamento. É importante perceber que, para cada experiência, você pode encontrar um cenário diferente; aí entra a sensibilidade do professor para preparar bem os alunos para a atividade.<br>Nessa atividade niveladora em particular, revisitamos os conceitos de listas em Python, fizemos operações com listas, laços, condicionais, list comprehension e funções lambda. Dessa forma, no encontro seguinte haveria menos lacunas a preencher.<br>O material para esta aula está documentado neste link do GitHub:</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://github.com/ramonparaiba/Aulas-Logica-de-Programcao-e-Algoritmos/blob/main/Colecoes_Python.ipynb">Repositório da aula</a></div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Aplicação da técnica</strong></p>



<p>A Programação por Pares consiste em dois programadores trabalhando juntos em uma única máquina, compartilhando o teclado e o mouse, e escrevendo código de forma colaborativa. Um programador atua como &#8220;motorista&#8221; (ou <em>driver</em>), escrevendo o código, enquanto o outro atua como &#8220;navegador&#8221; (ou <em>observer</em>), revisando o código em tempo real, dando sugestões e identificando potenciais erros. Os papéis são alternados regularmente.<br>Costumo dar um tempo de 7 a 10 minutos por rodada até que ocorra a troca de papéis. No dia a dia profissional, essa técnica em geral é aplicada por dois colegas que alternam entre si. Entretanto, na minha aula promovo um rodízio de duplas, para incentivar a integração entre todos os participantes. Assim, ao final de cada rodada, os navegadores mudam para a estação à direita, e os <em>drivers</em> para a estação à esquerda. Na nova estação, eles alternam os papéis: quem era <em>driver</em> passa a ser <em>navegador</em> e vice-versa.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Resultado</strong></p>



<p>Nessa experiência em particular, foram realizadas oito rodadas com tempo variando de 7 a 10 minutos. Ao final, os participantes compartilharam suas impressões, destacando os pontos positivos e os desafios da atividade de programar em duplas.<br>As respostas foram diversas, entre aspectos positivos e pontos de estranhamento:</p>



<ul class="wp-block-list">
<li>Dificuldade em continuar a atividade ao mudar de estação e se deparar com código feito por outra pessoa;</li>



<li>Duplas bem afinadas eram desfeitas, e uma nova relação precisava ser construída rapidamente;</li>



<li>Com as novas interações, habilidades foram adquiridas, assim como novas formas de abordar problemas;</li>



<li>A comunicação nem sempre era eficaz em algumas duplas;</li>



<li>O receio inicial de “não saber programar direito” foi superado com o apoio do navegador.</li>
</ul>



<p>Ao final, desafiei os alunos a aplicar a técnica em projetos pessoais, utilizando ferramentas de teletrabalho com chamada de vídeo e compartilhamento de telas. Julgo que isso os prepara para compor equipes de desenvolvimento de software com mais confiança para enfrentar os desafios do dia a dia.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Por que ensino Clean Code já nos primeiros contatos com programação</title>
		<link>https://pabloramon.com.br/2025/04/14/por-que-ensino-clean-code-ja-nos-primeiros-contatos-com-programacao/</link>
		
		<dc:creator><![CDATA[pabloramon]]></dc:creator>
		<pubDate>Tue, 15 Apr 2025 01:09:43 +0000</pubDate>
				<category><![CDATA[Aula]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Prática docente]]></category>
		<guid isPermaLink="false">https://pabloramon.com.br/?p=858</guid>

					<description><![CDATA[Quando começamos nos primeiros passos na programação, é comum focar apenas em fazer o código funcionar. Pois o objetivo do que vem antes é entender a lógica, a sintaxe e os conceitos básicos da programação. Ao longo de todos esses anos ministrando disciplinas de introdução à lógica e aos rudimentos da programação, eu já adotei [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Quando começamos nos primeiros passos na programação, é comum focar apenas em fazer o código funcionar. Pois o objetivo do que vem antes é entender a lógica, a sintaxe e os conceitos básicos da programação. Ao longo de todos esses anos ministrando disciplinas de introdução à lógica e aos rudimentos da programação, eu já adotei diversas estratégias de ensino. Desde o uso de fluxogramas para o entendimento dos algoritmos, passando pelos pseudocódigos (linguagens como portugol, etc), até que me convenci que é melhor estabelecer certos padrões de qualidade para ficarem encrustados à cultura do futuro programador. Assim, há tempos tomei duas decisões, a primeira é usar uma linguagem de programação desde o primeiro dia. Segundo, passei a ensinar o Clean code aos iniciantes desde o dia um. Neste post, vou explicar por que essa abordagem é fundamental e como ela impacta positivamente a jornada de aprendizado e a carreira dos programadores.</p>



<h2 class="wp-block-heading"><strong>O que é Clean Code?</strong></h2>



<p>Clean Code, ou código limpo, é um conceito popularizado por Robert C. Martin (Uncle Bob) em seu livro de mesmo nome, que enfatiza a escrita de código que seja fácil de entender, modificar e manter. Isso inclui:</p>



<ul class="wp-block-list">
<li>Nomes claros e significativos para variáveis, funções e classes.</li>



<li>Estrutura lógica e simples.</li>



<li>Comentários apenas quando necessários.</li>



<li>Evitar duplicação e complexidade desnecessária.</li>



<li>Organização consistente e legível.</li>
</ul>



<h2 class="wp-block-heading">Por que ensinar Clean Code desde o início?</h2>



<ol class="wp-block-list">
<li>Cria bons hábitos desde o começo<br>Aprender a programar é como aprender um novo idioma. Se você começar falando errado, vai ser difícil corrigir depois. Ensinar Clean Code desde o primeiro contato ajuda o aluno a desenvolver bons hábitos que serão naturais e automáticos no futuro.</li>



<li>Facilita o entendimento e a colaboração<br>Mesmo que o aluno esteja escrevendo código só para si, a clareza é essencial. Quando o código é limpo, fica mais fácil revisar, corrigir erros e expandir funcionalidades. Além disso, em projetos reais, a colaboração é inevitável, e um código limpo é a base para um trabalho em equipe eficiente.</li>



<li>Reduz a frustração e o retrabalho<br>Código confuso gera bugs difíceis de encontrar e corrige. Ensinar Clean Code ajuda a evitar esses problemas, tornando o aprendizado mais fluido e menos frustrante.</li>



<li>Prepara para o mercado de trabalho<br>Empresas valorizam profissionais que escrevem código limpo porque isso economiza tempo e dinheiro. Ao aprender Clean Code desde cedo, o aluno já se destaca e está mais preparado para desafios reais.</li>
</ol>



<p></p>



<h2 class="wp-block-heading">Minha filosofia de ensino: aprender fazendo, com qualidade</h2>



<p>Eu acredito que o aprendizado de programação deve ser prático, mas nunca às custas da qualidade. Por isso, desde o primeiro exercício, incentivo os alunos a:</p>



<ul class="wp-block-list">
<li>Escolher nomes que façam sentido.</li>



<li>Dividir o código em funções pequenas e com responsabilidades claras.</li>



<li>Refatorar o código sempre que possível.</li>



<li>Escrever código que eles mesmos gostariam de ler no futuro.</li>
</ul>



<p>Além disso, uso exemplos reais e situações do dia a dia para mostrar que Clean Code não é meramente um amontoado de regras vazias, mas uma ferramenta poderosa para programar melhor e com mais prazer.</p>



<p>Vamos tomar como exemplo a função &#8216;faz_algo()&#8217; a seguir:</p>



<pre class="wp-block-code"><code>def faz_algo(x, y):
    a = x * 2
    b = y + 10
    c = a + b
    print(c)
    d = &#91;]
    for i in range(x):
        if i % 2 == 0:
            d.append(i)
    return d

resultado = faz_algo(5, 3)
print(resultado)</code></pre>



<p><strong>Problemas desta função:</strong></p>



<ol start="1" class="wp-block-list">
<li>Nomes não descritivos (<code>faz_algo</code>,&nbsp;<code>x</code>,&nbsp;<code>y</code>,&nbsp;<code>a</code>,&nbsp;<code>b</code>,&nbsp;<code>c</code>,&nbsp;<code>d</code>)</li>



<li>Faz duas operações não relacionadas (cálculo e filtragem de números pares)</li>



<li>Tem um efeito colateral (print) além de retornar um valor</li>



<li>Não tem tipagem de parâmetros ou retorno</li>
</ol>



<h2 class="wp-block-heading">Versão Refatorada com Clean Code</h2>



<pre class="wp-block-code"><code>from typing import List

def calculate_combined_value(multiplier: int, additive: int) -&gt; int:
    """Calcula um valor combinado com base nos parâmetros de entrada.
    
    Argumentos:
        multiplier: O número a ser duplicado.
        additive: O número a ser aumentado em 10.
        
    Retorna:
        O resultado de (multiplier * 2) + (additive + 10)
    """
    doubled_value = multiplier * 2
    increased_value = additive + 10
    return doubled_value + increased_value

def get_even_numbers_up_to(limit: int) -&gt; List&#91;int]:
    """Gera uma lista de números pares até o limite especificado.
    
    Argumentos:
       limite: O limite superior (exclusivo) para os números pares.

   Retorna:
        Uma lista de números pares de 0 até (mas não incluindo) o limite.
    """
    return &#91;num for num in range(limit) if num % 2 == 0]

# Exemplo de uso
if __name__ == "__main__":
    # Cálculo do valor combinado
    result = calculate_combined_value(multiplier=5, additive=3)
    print(f"Calculated value: {result}")
    
    # Obtenção de números pares
    even_numbers = get_even_numbers_up_to(limit=5)
    print(f"Even numbers up to 5: {even_numbers}")</code></pre>



<p></p>



<h2 class="wp-block-heading">Princípios do Clean Code aplicados:</h2>



<ol start="1" class="wp-block-list">
<li><strong>Single Responsibility Principle</strong>: Cada função faz apenas uma coisa
<ul class="wp-block-list">
<li><code>calculate_combined_value</code>: apenas cálculos matemáticos</li>



<li><code>get_even_numbers_up_to</code>: apenas geração de números pares</li>
</ul>
</li>



<li><strong>Nomes significativos</strong>:
<ul class="wp-block-list">
<li>Os nomes das funções e parâmetros deixam claro seu propósito</li>
</ul>
</li>



<li><strong>Tipagem explícita</strong>:
<ul class="wp-block-list">
<li>Uso de type hints para documentar os tipos esperados</li>
</ul>
</li>



<li><strong>Docstrings completas</strong>:
<ul class="wp-block-list">
<li>Documentação clara do propósito, parâmetros e retorno</li>
</ul>
</li>



<li><strong>Simplicidade</strong>:
<ul class="wp-block-list">
<li>Cada função é simples e fácil de entender</li>



<li>Uso de<em> list comprehension </em>para clareza</li>
</ul>
</li>



<li><strong>Sem efeitos colaterais</strong>:
<ul class="wp-block-list">
<li>As funções apenas retornam valores (exceto pelo print no bloco principal)</li>
</ul>
</li>



<li><strong>Organização lógica</strong>:
<ul class="wp-block-list">
<li>Separação clara entre as operações matemáticas e a geração da lista</li>
</ul>
</li>
</ol>



<p>Esta versão é muito mais fácil de:</p>



<ul class="wp-block-list">
<li>Manter</li>



<li>Testar (podem ser testadas isoladamente)</li>



<li>Reutilizar (cada função tem um propósito específico)</li>



<li>Compreender (os nomes e estrutura são auto-explicativos)</li>
</ul>



<h2 class="wp-block-heading">Boas práticas que ensino desde o início</h2>



<ul class="wp-block-list">
<li>Nomes descritivos: Variáveis e funções devem ter nomes que expliquem seu propósito.</li>



<li>Funções pequenas: Cada função deve fazer uma coisa só, e fazê-la bem.</li>



<li>Evitar duplicação: Reutilizar código para evitar erros e facilitar manutenção.</li>



<li>Comentários úteis: Usar comentários para explicar “porquê”, não “o quê”.</li>



<li>Indentação e espaçamento: Código bem formatado é mais fácil de ler.</li>



<li>Testes simples: Introduzir a ideia de testar o código para garantir que funciona.</li>
</ul>



<h2 class="wp-block-heading">Conclusão</h2>



<p>Ensinar Clean Code desde os primeiros contatos com programação é um investimento que traz retorno imediato e a longo prazo. Ajuda o aluno a construir uma base sólida, evita maus hábitos e prepara para o mercado de trabalho. Mais do que ensinar a programar, ensino a programar bem — com clareza, organização e responsabilidade.</p>



<p>Se você está começando a aprender programação, ou é professor, experimente incorporar o Clean Code desde o início. Você vai se surpreender com a diferença que isso faz!</p>



<p>Se quiser, posso lhe ajudar a criar um roteiro para uma aula ou um workshop sobre Clean Code para iniciantes. Quer?</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Os bárbaros estão vindo: E dá pra começar a estudar semiótica a partir disso :D</title>
		<link>https://pabloramon.com.br/2020/03/06/aprendendo-semiotica-apos-um-ataque-barbaro/</link>
					<comments>https://pabloramon.com.br/2020/03/06/aprendendo-semiotica-apos-um-ataque-barbaro/#respond</comments>
		
		<dc:creator><![CDATA[pabloramon]]></dc:creator>
		<pubDate>Fri, 06 Mar 2020 19:00:06 +0000</pubDate>
				<category><![CDATA[Aula]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[jogos digitais]]></category>
		<category><![CDATA[peirce]]></category>
		<category><![CDATA[semiótica]]></category>
		<category><![CDATA[signos]]></category>
		<guid isPermaLink="false">https://pabloramon.com.br/?p=151</guid>

					<description><![CDATA[Já parou pra pensar sobre se as coisas que você sabe são entendidas da mesma forma pelas pessoas a sua volta? Tipo quando duas pessoas falam sobre Futebol, ou pirâmides ou sobre video game, as imagens mentais feitas por cada um são as mesmas? De cara a resposta é não, o modo como vemos as [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="684" height="1024" src="https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-684x1024.jpg" alt="" class="wp-image-154" srcset="https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-684x1024.jpg 684w, https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-200x300.jpg 200w, https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-768x1149.jpg 768w, https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-1026x1536.jpg 1026w, https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-1080x1616.jpg 1080w, https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-980x1467.jpg 980w, https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1-480x718.jpg 480w, https://pabloramon.com.br/wp-content/uploads/2020/03/Semiótica-Invasao-1.jpg 1176w" sizes="(max-width: 684px) 100vw, 684px" /></figure></div>



<p> </p>



<p>Já parou pra pensar sobre se as coisas que você sabe são entendidas da mesma forma pelas pessoas a sua volta? Tipo quando duas pessoas falam sobre Futebol, ou pirâmides ou sobre video game, as imagens mentais feitas por cada um são as mesmas? De cara a resposta é não, o modo como vemos as coisas depende muito de quem somos ou do que vivemos, ficou confuso? pois é, é o cérebro fazendo cócegas, isso é um ótimo sinal.</p>



<p>Charles Peirce, um doidera americano e estudioso de Semiótica e simbologia em geral, afirmou que as pessoas exprimem o contexto a sua volta a partir de uma tríade:</p>



<h3 class="has-text-align-center wp-block-heading">SIGNO &#8211; INTERPRETANTE &#8211; OBJETO</h3>



<p>Entenda o<strong> signo </strong>como a centelha do pensamento, aquilo que ativa o modo como você vai pensar sobre algo, é a parte perceptível e representada de alguma coisa. O <strong>interpretante</strong> é o modo como cada um dos envolvidos vai entender o assunto, e o <strong>objeto</strong> é a coisa em si.</p>



<p><em><strong>Por exemplo: </strong>Se em uma conversa alguém chamar você para tomar um sorvete, a palavra sorvete é o signo, a imagem mental que você e quem te convidou fizeram do sorvete é o interpretante, essa imagem é diferente de pessoa para pessoa, e o objeto é o sorvete propriamente dito.</em></p>



<p>Os signos, para Peirce também são uma tríade a parte formado por</p>



<h3 class="has-text-align-center wp-block-heading">ÍCONE &#8211; ÍNDICE &#8211; SÍMBOLO</h3>



<p>O ícone é uma imagem mental, é uma representação que mais se aproxima esteticamente do objeto. Já o índice, como o próprio nome sugere, são indícios da ocorrência daquele objeto ou fenômeno. Por fim, o símbolo seria o modo mais abstrato de representar algo, normalmente é o nome, e a essa altura você já sacou que um mesmo objeto pode ter nomes diferentes em diferentes lugares do globo, ou seja abstrações mil.</p>



<p>Por exemplo:<br>Objeto ou fenômeno: Chuva.<br><strong>Ícone:</strong> Desenho de uma nuvem com gotas.<br><strong>Índice: </strong>Nuvens escuras no horizonte, indicando que vai chover.<br><strong>Símbolo: </strong>A própria palavra <strong>CHUVA</strong></p>



<p>Este texto é fruto de uma aula de semiótica que ministrei a uma turma de Jogos Digitais. Como reflexão, debatemos sobre o papel dos elementos da semiótica de Peirce para o enriquecimento e coerência dos assets e ambientes dos jogos digitais.<br>Se quiser ver mais tirinhas, mais artes resultantes das aulas, basta ir lá no insta <strong><a rel="noreferrer noopener" aria-label="@profpabloramon (abre numa nova aba)" href="https://www.instagram.com/profpabloramon/" target="_blank">@profpabloramon</a>.</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://pabloramon.com.br/2020/03/06/aprendendo-semiotica-apos-um-ataque-barbaro/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
