<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leonardo Furtado</title>
    <description>The latest articles on DEV Community by Leonardo Furtado (@furtleo).</description>
    <link>https://dev.to/furtleo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F184532%2F2353acae-34d2-45bb-bb18-6b6fac15f9a7.jpg</url>
      <title>DEV Community: Leonardo Furtado</title>
      <link>https://dev.to/furtleo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/furtleo"/>
    <language>en</language>
    <item>
      <title>Focusing on high code coverage can be a trap</title>
      <dc:creator>Leonardo Furtado</dc:creator>
      <pubDate>Tue, 28 May 2024 16:44:40 +0000</pubDate>
      <link>https://dev.to/furtleo/focusing-on-high-code-coverage-can-be-a-trap-5644</link>
      <guid>https://dev.to/furtleo/focusing-on-high-code-coverage-can-be-a-trap-5644</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Code coverage is a good negative indicator but a bad positive one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In the following lines I will try to explain why this affirmative is true. You don't need to stop care about code coverage of your project, but understand how to read code coverage is important.&lt;/p&gt;

&lt;p&gt;Code coverage or test coverage is a coverage metric that shows the ratio of the number of code lines executed by at least one test and the total number of lines in the code base.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonfwq4l512261i3fmbh0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonfwq4l512261i3fmbh0.png" alt="Code Coverage Formula" width="800" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lets suppose we want to know if a number is even, we can do it with the following code in Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_even&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code above works well, and now we want to test it, we can do it with the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_is_even&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="nf"&gt;is_even&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's easy to calculate the code coverage, our assert is just testing the True case, this gives us 3/4 = 0.75 = 75% code coverage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Name           Stmts   Miss  Cover
----------------------------------
main.py            4      1    75%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But, what if we refactor this code and eliminate the if statement?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_even&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Does the code coverage change? Yes, it does. Now we have executed all lines of code and achieved 100% code coverage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Name           Stmts   Miss  Cover
----------------------------------
main.py            2      0   100%

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But did we improved the tests with this refactoring? No, we still don't test the False outcome, we just compacted the code, the more compact your code is, the higher the test coverage metric becomes.&lt;/p&gt;

&lt;p&gt;Now let's do an &lt;em&gt;assertion-free testing&lt;/em&gt;, which means write a test that doesn't have any assertion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;test_is_even&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;is_even&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What do you think happened to out code coverage? We still have 100% code coverage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Name           Stmts   Miss  Cover
----------------------------------
main.py            2      0   100%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This test show us 100% code coverage, and it is useless because it doesn’t check anything, it just enforce that the lines of code are being executed.&lt;/p&gt;

&lt;p&gt;Aiming at a particular coverage number is not the best way to work with tests, measuring the code coverage is just the first step on the way to&lt;br&gt;
have a quality test suite.&lt;/p&gt;

&lt;p&gt;I think these examples are enough to show you why code coverage is a good negative indicator but a bad positive one. If you have 10% code coverage you know that you are not testing your codebase, but have 100% code coverage doesn't mean you have good tests.&lt;/p&gt;

&lt;p&gt;Make sure to test every case and don't stop to create tests when you achieve the 100%, the examples above can show you that you still have tests to write when even when you have 100% code coverage.&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.audible.com/pd/Unit-Testing-Principles-Practices-and-Patterns-Audiobook/B08Y22YKZM?source_code=GO1DH13310082090OZ&amp;amp;ds_rl=1262685&amp;amp;ds_rl=1263561&amp;amp;ds_rl=1260658&amp;amp;gclid=Cj0KCQiA3-yQBhD3ARIsAHuHT64hdYpivVuXBvZVOxuED_mQPgF9N84UsUvlm5DPtS1OF6T2YOA990caAuAiEALw_wcB&amp;amp;gclsrc=aw.ds" rel="noopener noreferrer"&gt;Unit Testing Principles, Practices, and Patterns&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>testing</category>
      <category>tests</category>
      <category>coverage</category>
      <category>python</category>
    </item>
    <item>
      <title>Como eu consegui meu primeiro emprego como desenvolvedor júnior</title>
      <dc:creator>Leonardo Furtado</dc:creator>
      <pubDate>Thu, 11 Feb 2021 17:14:42 +0000</pubDate>
      <link>https://dev.to/furtleo/como-eu-consegui-meu-primeiro-emprego-como-desenvolvedor-junior-1oaa</link>
      <guid>https://dev.to/furtleo/como-eu-consegui-meu-primeiro-emprego-como-desenvolvedor-junior-1oaa</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Introdução&lt;/li&gt;
&lt;li&gt;O que você sabe fazer?&lt;/li&gt;
&lt;li&gt;Academia&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Linguagens e Frameworks&lt;/li&gt;
&lt;li&gt;Metodologias Ágeis&lt;/li&gt;
&lt;li&gt;Mercado&lt;/li&gt;
&lt;li&gt;Procurando Vagas&lt;/li&gt;
&lt;li&gt;Entrevista&lt;/li&gt;
&lt;li&gt;Teste prático&lt;/li&gt;
&lt;li&gt;Conclusão&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id="introducao"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introdução
&lt;/h3&gt;

&lt;p&gt;Olá, a idéia de criação desse post surgiu de um twit do &lt;a href="https://twitter.com/nicholasess" rel="noopener noreferrer"&gt;Nicholas Eduardo&lt;/a&gt;, que falava sobre a hipocrisia das milhares de vagas no mercado de tecnologia que não abrangem iniciantes. Após alguns twites eu resolvi fazer esse texto e compartilha-lo com o máximo de pessoas possível.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1359638598031728660-257" src="https://platform.twitter.com/embed/Tweet.html?id=1359638598031728660"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1359638598031728660-257');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1359638598031728660&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;a id="fazer"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  O que você sabe fazer?
&lt;/h3&gt;

&lt;p&gt;Muitas vezes é difícil responder essa pergunta em uma entrevista, principalmente se você tiver a síndrome do impostor. Mas em vez de respondê-la apenas com palavras, por que não mostrar o que você sabe fazer?&lt;/p&gt;

&lt;p&gt;Escrevo esse texto para mostrar o processo de como consegui minha primeira vaga como desenvolvedor júnior, agora em 2021. Eu espero que ao terminar de ler esse texto você se sinta motivado a trabalhar duro para estudar e conseguir a tão sonhada vaga de desenvolvedor.&lt;br&gt;
&lt;a id="academia"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Academia
&lt;/h3&gt;

&lt;p&gt;Durante o seu curso, seja ele Ciência da Computação, Sistema de Informação, Engenharia de Software ou outros, você irá ter uma grande carga de programação, irá aprender conceitos, realizar trabalhos e fazer provas. Em um determinado momento terá vontade ou até mesmo necessidade de praticar tudo isso, seja em um estágio ou em um emprego. É nesse momento que nos deparamos com a realidade do mercado, vagas de estagiário e desenvolvedor jr pedindo experiência com N linguagens, N frameworks, Metodologias ágeis, git, experiência em times distribuidos, entre outros. É comum o estudante da academia se deparar com essa situação e desistir ou até mesmo postergar a procura por um emprego para depois do término do curso.&lt;/p&gt;

&lt;p&gt;E se eu te disser que você tem a oportunidade de ter essa experiência exigida sem ter trabalhado em uma empresa?  Vamos ver alguns pontos.&lt;br&gt;
&lt;a id="git"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Git
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzb6avriohcownr3izwn1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzb6avriohcownr3izwn1.gif" alt="gitgif"&gt;&lt;/a&gt;&lt;br&gt;
Eu espero que você entenda este gif, mas caso não entenda eu sugiro fortemente que estude Git.&lt;/p&gt;

&lt;p&gt;É um dos requisitos mais simples de cumprir, você pode ler a documentação do &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt; e aprender a usá-lo no seu dia a dia. Existem muitos conteúdos e cursos em português e você será capaz de aprender sem muitos problemas. Agora como usar isso na universidade? Use Git em todos os seus trabalhos de programação, se você está iniciando o curso em T.I por exemplo, utilize-o desde a disciplina de algoritmos. &lt;/p&gt;

&lt;p&gt;Você não precisar saber 100% do Git, basta saber alguns conceitos básicos sobre como ele funciona e aprender uma dúzia de comandos pra começar a fazer algo, mas aprenda os conceitos por trás desses comandos. E é neste ponto que eu recomendo que você leia o seguinte artigo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/unseenwizzard/learn-git-concepts-not-commands-4gjc"&gt;Learn Git Concepts, Not Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/paulogoncalvesbh/aprenda-conceitos-de-git-nao-comandos-4il3"&gt;Aprenda conceitos de git, não comandos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use também o &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Github&lt;/a&gt; para guardar os seus projetos e exercícios e de preferência deixe eles &lt;a href="https://www.swyx.io/learn-in-public/" rel="noopener noreferrer"&gt;públicos&lt;/a&gt;. Aproveite para fazer trabalhos em grupo com seus colegas e crie os projetos do curso usando Git e Github.&lt;br&gt;
&lt;a id="metodologias"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Metodologias Ágeis
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqf1oeipcwkrwfosumdir.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqf1oeipcwkrwfosumdir.gif" alt="scrumgif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Um tópico um pouco mais avançado, mas aconselho que você e seus colegas leiam sobre isso. Durante o curso experimente usar uma metodologia ágil como o &lt;a href="https://www.desenvolvimentoagil.com.br/scrum/" rel="noopener noreferrer"&gt;Scrum&lt;/a&gt; em algum projeto de disciplina, faça as dailies, o planejamento das sprints, o review das sprints e você já terá algo pra comentar com o seu entrevistador. Você não precisa ser um especialista em desenvolvimento ágil pra conseguir uma vaga de jr, mas mostrar que você conhece o básico, e até mesmo já utilizou, pode ser um plus.&lt;br&gt;
&lt;a id="linguagens"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Linguagens e Frameworks
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F668nvht7zksc10m7zhj5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F668nvht7zksc10m7zhj5.gif" alt="langgif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui o bicho pega, vagas de jr pedindo html, css, javascript, java, python, pascal, c++, assembly, php, smalltalk, cartão perfurado e você não sabe o que fazer. Eu não sou um especialista em todas as stacks, mas consegui descobrir o que o mercado pra minha linguagem de programação pedia e você deve ser capaz de descobrir também. Eu desenvolvia meus projetos em python na faculdade, logo pesquisei o que as vagas estavam solicitando e geralmente era algo nesse modelo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Conhecimentos necessários:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML, CSS, Javascript&lt;/li&gt;
&lt;li&gt;Experiência de 2 anos com Python&lt;/li&gt;
&lt;li&gt;Framework Django&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Andar de Skate&lt;/li&gt;
&lt;li&gt;Consumo de API's&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pode ser um plus&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Django Rest Framework&lt;/li&gt;
&lt;li&gt;Flask&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Repare que tudo aqui está de alguma forma ligada com o Python, então é bom que você tenha um certo conhecimento na linguagem. Se você passou os últimos 2 ou 3 semestres fazendo seus trabalhos da universidade em python você tem esse conhecimento. Já o html, css e javascript é algo que você deveria estudar se quiser entrar na área de desenvolvimento web, mas em pouco tempo você consegue aprender o básico sobre isso e já ir montando seus projetinhos.&lt;/p&gt;
&lt;h4&gt;
  
  
  E quanto aos outros itens?
&lt;/h4&gt;

&lt;p&gt;Você não precisa ser um especialista em nenhum deles pra conseguir uma vaga, mas é interessante que já tenha usado pelo menos alguns, mesmo os que estão listados como necessários podem ser aprendidos enquanto você se prepara no processo de entrevista, ou até mesmo depois de já ter conseguido o emprego. Ter o conhecimento básico sobre Django, PostgreSql, Api, mas nunca ter andado de skate na vida significa que não devo me candidatar a vaga? NÃO, se candidate mesmo assim e seja sincero na entrevista dizendo que você não sabe aquele item, mas que pode aprender, você não vai levar 4 anos pra aprender a se equilibrar no skate, em pouco tempo você consegue fazer isso. O mercado não vai exigir que você seja um &lt;a href="https://pt.wikipedia.org/wiki/Tony_Hawk" rel="noopener noreferrer"&gt;Tony Hawk&lt;/a&gt;, mas é desejável que você aprenda a se equilibrar em pouco tempo.&lt;/p&gt;

&lt;p&gt;Ah, e isso sempre vai acontecer, você sempre terá que aprender uma coisa ou outra ao trabalhar em uma equipe, terá que aprender uma biblioteca nova, um framework novo ou algo do tipo pra poder atender a uma regra de negócio, se você não for capaz de fazer isso hoje, como o entrevistador saberá que você será capaz de fazer quando estiver na empresa? ;)&lt;br&gt;
&lt;a id="mercado"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Mercado
&lt;/h3&gt;

&lt;p&gt;Todos os dias vemos notícias sobre como o mercado de T.I está fervendo, e ao mesmo tempo vemos &lt;em&gt;mais de 8 mil&lt;/em&gt; pessoas reclamando no twitter que as vagas pedem muita coisa, que ninguém abre vaga pra jr, e que nunca somos chamados para os processos seletivos. Sabe como resolvemos isso? Exatamente do jeito que você pensou: devemos continuar reclamando no Twitter e nos grupos de Facebook até que as empresas diminuam os requisitos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpc4ths8cllc4i665owdj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpc4ths8cllc4i665owdj.gif" alt="boyprogramming"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obviamente essa não é a solução, o tempo que você gasta discutindo sobre como vagas pedem muitos requisitos, você pode gastar aprendendo um desses requisitos. O mercado não vai mudar só porque você reclamou no twitter, &lt;em&gt;PARE DE PERDER SEU TEMPO COM ISSO&lt;/em&gt;. Nem todas as empresas tem a disponíbilidade de alocar um funcionário para poder ensinar tudo para você, então você deve tentar ao menos preencher alguns dos requisitos das vagas ofertadas.&lt;/p&gt;

&lt;p&gt;Ah Leo mas eu não encontro vagas na minha cidade pra programar em Clojure, e agora? &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5hvagmshssr28ub4ur4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5hvagmshssr28ub4ur4.gif" alt="wtfisthisgif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a id="procurando"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Procurando Vagas
&lt;/h3&gt;

&lt;p&gt;Estou certo de que na sua cidade deve existir um mercado de tecnologia com algumas vagas em aberto que vão desde Estagiário em manutenção de computadores até Desenvolvedor Java jr. Muitas vezes pode ser difícil encontrar essas vagas se você estiver esperando que elas caiam do céu, ou que cheguem na lista de e-mail da universidade. Ao invés disso eu aconselho fortemente que você aprenda a usar o &lt;a href="https://www.google.com/" rel="noopener noreferrer"&gt;Google&lt;/a&gt; e pesquise mais vagas na sua região. Existem dezenas de sites onde essas vagas estão disponibilizadas, e aqui vai alguns sites onde eu procurei:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://programathor.com.br/" rel="noopener noreferrer"&gt;Programathor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.glassdoor.com.br/index.htm" rel="noopener noreferrer"&gt;Glassdoor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gupy.io/" rel="noopener noreferrer"&gt;Gupy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/backend-br" rel="noopener noreferrer"&gt;
        backend-br
      &lt;/a&gt; / &lt;a href="https://github.com/backend-br/vagas" rel="noopener noreferrer"&gt;
        vagas
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Espaço para a divulgação de vagas para desenvolvedores backend via issues do Github.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://avatars3.githubusercontent.com/u/30732658?v=4&amp;amp;s=200.jpg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars3.githubusercontent.com%2Fu%2F30732658%3Fv%3D4%26s%3D200.jpg" alt="BackEndBR" width="230"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Vagas&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Espaço para a divulgação de vagas para desenvolvedores backend via issues do Github.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Como cadastrar uma vaga?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Abra uma &lt;a href="https://github.com/backend-br/vagas/issues" rel="noopener noreferrer"&gt;issue&lt;/a&gt;, e preencha os dados seguindo o modelo padrão gerado
pela issue.&lt;/p&gt;
&lt;p&gt;Adicionalmente, informe quais labels devemos adicionar, contendo o nível de experiência desejada e a forma de contração.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Como receber atualizações das vagas?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Você pode receber atualizações das vagas no seu e-mail ou via notificações do GitHub, basta clicar &lt;strong&gt;Subscribe&lt;/strong&gt;, na
issue que você tem interesse.&lt;/p&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/backend-br/vagasdoc/images/subscribe.jpg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbackend-br%2Fvagasdoc%2Fimages%2Fsubscribe.jpg" alt="subscribe."&gt;&lt;/a&gt;
    &lt;br&gt;
    Ativar notificações.
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Outros repositórios de vagas&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Por área&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/qa-brasil/vagas" rel="noopener noreferrer"&gt;Vagas para QAs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chatbotbr/vagas" rel="noopener noreferrer"&gt;Vagas para Chat-Bot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/backend-br/vagas" rel="noopener noreferrer"&gt;Vagas para Back-End&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/frontendbr/vagas" rel="noopener noreferrer"&gt;Vagas para Front-End&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Por tecnologia&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/phpdevbr/vagas" rel="noopener noreferrer"&gt;Vagas para PHP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dotnetdevbr/vagas" rel="noopener noreferrer"&gt;Vagas para .NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rustdevbr/vagas" rel="noopener noreferrer"&gt;Vagas para Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kotlin-br/vagas" rel="noopener noreferrer"&gt;Vagas para Kotlin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vuejs-br/vagas" rel="noopener noreferrer"&gt;Vagas para Vue.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/androiddevbr/vagas" rel="noopener noreferrer"&gt;Vagas para Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/flutter-brazil/vagas" rel="noopener noreferrer"&gt;Vagas para Flutter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CocoaHeadsBrasil/vagas" rel="noopener noreferrer"&gt;Vagas para iOS e OSX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Gommunity/vagas" rel="noopener noreferrer"&gt;Vagas para Go/Golang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/react-brasil/vagas" rel="noopener noreferrer"&gt;Vagas para React/React Native&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pydevbr/vagas" rel="noopener noreferrer"&gt;Vagas para Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nodejsdevbr/vagas" rel="noopener noreferrer"&gt;Vagas para Node.JS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Por localidade&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/CangaceirosDevels/vagas_de_emprego" rel="noopener noreferrer"&gt;Vagas para no Ceará&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/backend-ao/vagas" rel="noopener noreferrer"&gt;Vagas para Back-end (Angola)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/backend-br/vagas" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/frontendbr" rel="noopener noreferrer"&gt;
        frontendbr
      &lt;/a&gt; / &lt;a href="https://github.com/frontendbr/vagas" rel="noopener noreferrer"&gt;
        vagas
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🔬 Espaço para divulgação de vagas para front-enders.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/frontendbr/brand/blob/main/src/png/logo-600px--horizontal--color.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ffrontendbr%2Fbrand%2Fraw%2Fmain%2Fsrc%2Fpng%2Flogo-600px--horizontal--color.png" width="400" alt="Front-end Brasil"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Vagas&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;🔬 Espaço para divulgação de vagas para front-enders.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Vagas (Somente vagas de Front-End)&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Espaço para a divulgação de vagas para desenvolvedores via &lt;em&gt;issues&lt;/em&gt; do Github.&lt;/p&gt;
&lt;p&gt;Vagas disponíveis em &lt;a href="https://github.com/frontendbr/vagas/issues" rel="noopener noreferrer"&gt;https://github.com/frontendbr/vagas/issues&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Cadastrando uma vaga&lt;/h3&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Abra uma &lt;strong&gt;issue&lt;/strong&gt; e, no título desta &lt;em&gt;issue&lt;/em&gt;, coloque o nome da cidade entre colchetes seguido do nome da vaga e nome da empresa.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Exemplo: &lt;code&gt;[São Paulo] Front-End Developer na [NOME DA EMPRESA]&lt;/code&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Informe quais &lt;em&gt;labels&lt;/em&gt; devemos adicionar, contendo o nível de experiência desejada e a forma de contração.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
⚠️ Importante&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Com o objetivo de manter a qualidade das vagas postadas e respeitar todas as pessoas e empresas, &lt;strong&gt;NÃO ACEITAMOS&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vagas sem o nome da empresa.&lt;/li&gt;
&lt;li&gt;Vagas de terceiros que não informem o nome da empresa na qual o(a) candidato(a) irá trabalhar.&lt;/li&gt;
&lt;li&gt;Vagas com informações faltantes e/ou fora do &lt;a href="https://github.com/frontendbr/vagas./.github/ISSUE_TEMPLATE/adicionar-nova-vaga.md" rel="noopener noreferrer"&gt;modelo da issue&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Mais do que 3 (três) vagas da mesma empresa POR MÊS, independente…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/frontendbr/vagas" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Devem existir muitos outros que eu utilizei mas não me recordo, mas acredito que esses irão ajudar você. Utilize o Glassdoor para ver comentários sobre a empresa que você está se candidatando, tem um conjunto de outras funções muito úteis lá.&lt;/p&gt;

&lt;p&gt;Dica: Não se limite somente a procurar vagas na sua região, o que mais surgiu nessa pandemia foram vagas remotas na área de T.I e eu sugiro fortemente que você tente essas vagas também. Atualmente eu trabalho como desenvolvedor backend jr de forma completamente remota e tem sido uma experiência incrível.&lt;/p&gt;

&lt;p&gt;Durante o tempo que fiquei procurando vagas eu enviei curriculos e fiz submissões para muitas empresas, muitas mesmo. E tive retorno de várias delas para realizar uma entrevista e para fazer testes práticos. Durante esse período eu investigava o que essas empresas faziam, qual o foco do negócio delas e como software poderia ajudar esse negócio, além de muitas vezes tentar conversar com programadores que já trabalhavam nessas empresas, seja através do Linkedin, e-mail ou Twitter. Não tenha medo de entrar em contato com outros programadores para fazer perguntas, geralmente todos respondem de forma amigável.&lt;br&gt;
&lt;a id="entrevista"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Entrevista
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqv4neay6o121olru71lp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqv4neay6o121olru71lp.gif" alt="entrevista"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nessa etapa você possívelmente vai conversar com alguém do RH da empresa, eu passei por várias entrevistas antes de conseguir meu emprego atual e todas elas foram tranquilas, geralmente é apenas um bate papo pra conversar sobre suas experiências, sobre sua vida e sobre os seus conhecimentos de uma maneira mais abstrata, foque em ser objetivo.&lt;/p&gt;

&lt;p&gt;Caso você passe dessa etapa é provavel que o próximo passo seja um teste prático ou uma conversa com alguém da T.I. Se for uma conversa com a T.I, provavelmente irão perguntar sobre o que você já fez, quais suas experiências com programação e sobre como você se encaixa nos requisitos da vaga. ESSE É O MOMENTO!!!! É aqui que aquele seu Github populado com projetos brilha, mostre os projetos que você já fez na universidade, projetos de cursos que você fez e até mesmo seus projetos pessoais, conte o que aprendeu em um determinado projeto, fale sobre a metodologia ágil que usou com sua equipe e mostre que vocẽ tem EXPERIÊNCIA, pois todos esses itens citados acima contam, e muiiiiito.&lt;/p&gt;

&lt;p&gt;&lt;a id="teste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Teste prático
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapx6f29x7ibau69ccxs4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapx6f29x7ibau69ccxs4.gif" alt="testegif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os testes práticos podem ser muito diferentes dependendo da empresa que você estiver se candidatando. Você pode receber uma prova conceitual, uma prova prática, ser submetido a um pair programming ou algo do tipo.&lt;/p&gt;

&lt;p&gt;Nas provas práticas pra jr eu tive dois tipos: Construção de API, Construção de Crud. Usando seus conhecimentos na linguagem de programação e um framework você deve ser capaz de fazer isso. Documente bem o código antes de enviar o projeto para revisão, e de preferência escreva testes e um passo a passo de como executar o projeto.&lt;/p&gt;

&lt;p&gt;No pair programming vai ser algo mais rápido, geralmente você vai programar junto com o entrevistador e irá implementar algo mais simples: Uma classe com métodos pra fazer uma tarefa simples, consumir uma API apenas usando uma linguagem, sem framework, realizar uma ordenação, coisas do tipo. É importante que você se comunique com o seu par, falando sobre as decisões que está tomando e até mesmo pedindo sugestões. NÃO TENHA MEDO DE USAR O GOOGLE, TODOS NÓS USAMOS.&lt;br&gt;
&lt;a id="conclusao"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Eu fiz tudo o que está descrito neste post, e após algumas semanas me candidatando eu fui aceito em três vagas de desenvolvedor jr, e fui rejeitado em várias (inclusive estágio). Pode ser difícil e pode demorar um pouco, mas você vai encontrar aquela vaga que precisa de você, apenas não pare de estudar e continue se capacitando para a vaga que você está procurando. Eu estou disponível no &lt;a href="https://twitter.com/furtleo" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; se você quiser bater um papo, sempre estou disposto a ajudar. Aquele abraço e boa sorte!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsana4rgwv1nqfixqqcma.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsana4rgwv1nqfixqqcma.gif" alt="goodluck"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
    </item>
    <item>
      <title>Python utility belt: unpacking tuples</title>
      <dc:creator>Leonardo Furtado</dc:creator>
      <pubDate>Thu, 07 Jan 2021 20:20:48 +0000</pubDate>
      <link>https://dev.to/furtleo/python-utility-belt-unpacking-tuples-fal</link>
      <guid>https://dev.to/furtleo/python-utility-belt-unpacking-tuples-fal</guid>
      <description>&lt;p&gt;Hi devs,&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbav9o8x8wsrtrdju7gs.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbav9o8x8wsrtrdju7gs.gif" alt="hi" width="480" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today I would like to show you something interesting that you can use. Take a look at this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;things&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;teen&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;twenty&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;20&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How do you print this? You've probably already thought of some ways to do this and now I'm going to show you some::&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;word&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you run this code, you'll receive it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 teen 10
1 twenty 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is simple and useful, is it?&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkvadccz2how6hzbopxh8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkvadccz2how6hzbopxh8.gif" alt="easy" width="480" height="270"&gt;&lt;/a&gt;&lt;br&gt;
Hope you enjoy it, have a great day and an AWESOME year.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>When did you feel that your OOP skills were shapened?</title>
      <dc:creator>Leonardo Furtado</dc:creator>
      <pubDate>Mon, 28 Oct 2019 20:25:17 +0000</pubDate>
      <link>https://dev.to/furtleo/when-did-you-feel-that-your-opp-skills-were-shapened-255h</link>
      <guid>https://dev.to/furtleo/when-did-you-feel-that-your-opp-skills-were-shapened-255h</guid>
      <description>&lt;p&gt;When did you realize that you were applying the concepts of object oriented programming correctly? How was the road to this point?&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdx9v957n2a0suevsg0z.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdx9v957n2a0suevsg0z.gif" alt="batman" width="500" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oop</category>
      <category>productivity</category>
      <category>softwareengineering</category>
      <category>codequality</category>
    </item>
    <item>
      <title>How do you organize your virtual environments?</title>
      <dc:creator>Leonardo Furtado</dc:creator>
      <pubDate>Sun, 20 Oct 2019 16:30:42 +0000</pubDate>
      <link>https://dev.to/furtleo/how-do-you-organize-your-virtual-environments-1gk</link>
      <guid>https://dev.to/furtleo/how-do-you-organize-your-virtual-environments-1gk</guid>
      <description>&lt;p&gt;I am currently programming in Python at home and for each project I have a virtual environment, this practice avoid a lot of problems. A while ago I put virtual environments in their respective project directories, but that raised some issues with git and stuff...&lt;/p&gt;

&lt;p&gt;So how do you organize your virtual environments? Is there a good practice for this?&lt;/p&gt;

&lt;p&gt;me:&lt;br&gt;
&lt;code&gt;projects&lt;br&gt;
├── archives&lt;br&gt;
│   └── project1&lt;br&gt;
├── lab&lt;br&gt;
│   └── project2&lt;br&gt;
├── study&lt;br&gt;
│   └── project3&lt;br&gt;
├── venvs&lt;br&gt;
│   ├── project1venv&lt;br&gt;
│   ├── project2venv&lt;br&gt;
│   └── project3venv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In general, I organize my directories like &lt;a class="mentioned-user" href="https://dev.to/cecilelebleu"&gt;@cecilelebleu&lt;/a&gt;, with just a few changes. See:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/cecilelebleu" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F128904%2F3f0b0561-5028-4713-8551-c0cebf190578.jpg" alt="cecilelebleu"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/cecilelebleu/how-i-manage-my-projects-folders-and-files-38d3" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;How I manage my projects, folders, and files&lt;/h2&gt;
      &lt;h3&gt;Cécile Lebleu ・ Jun 18 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>productivity</category>
      <category>python</category>
      <category>environments</category>
    </item>
    <item>
      <title>Python Utility Belt: Replacing differents chars in a String.</title>
      <dc:creator>Leonardo Furtado</dc:creator>
      <pubDate>Sun, 23 Jun 2019 13:00:43 +0000</pubDate>
      <link>https://dev.to/furtleo/python-utility-belt-replacing-differents-chars-in-a-string-21ko</link>
      <guid>https://dev.to/furtleo/python-utility-belt-replacing-differents-chars-in-a-string-21ko</guid>
      <description>&lt;p&gt;Hi Devs,&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5rw5rjpwnr39tvngovp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5rw5rjpwnr39tvngovp.gif" alt="oi" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
This is my first post on dev.to, and i decided talk to about Python, my main programming language, and create a series named 'Python Utility Belt' which basically will be composed of small strategies to solve common problems in a development day.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7k5xqa4316p8xc97gb6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7k5xqa4316p8xc97gb6.gif" alt="oi" width="245" height="138"&gt;&lt;/a&gt;&lt;br&gt;
In this post we will talk to about chars replacement.&lt;/p&gt;

&lt;p&gt;So, lets imagine a simple example... you have the following string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;music&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Stairway_to_heaven-Led_Zeppelin.mp3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And you need to replace "_" with spaces, in Python it is easy, you just need run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;music&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;_&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and you will receive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stairway to heaven-Led Zeppelin.mp3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Its so easy, isn't it?! But, what if you desire to replace &lt;code&gt;_&lt;/code&gt;,&lt;code&gt;-&lt;/code&gt; and &lt;code&gt;.&lt;/code&gt; with spaces ???&lt;br&gt;
A python beginner can imagine a code like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;music&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;_&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf4sifjoun7khz1x8nd0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf4sifjoun7khz1x8nd0.gif" alt="oi" width="245" height="145"&gt;&lt;/a&gt;&lt;br&gt;
yeah... And it is a common answer in stackoverflow. Does the code above works? yep, it works, but there is another way to solve the same problem: using re lib. You just need to import &lt;code&gt;re&lt;/code&gt; in you code and use the &lt;code&gt;sub&lt;/code&gt; function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;

&lt;span class="n"&gt;music&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Stairway_to_heaven-Led_Zeppelin.mp3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;_|-|\.&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;music&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we called the sub function that receives three parameters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;char&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;replaced&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;char&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to replace multiple chars using the first parameter we used &lt;code&gt;regex&lt;/code&gt;, but we will not delve into it, no. Basically each char that need to be replaced is separated by &lt;code&gt;|&lt;/code&gt;, so if you need to replace just &lt;code&gt;_&lt;/code&gt; and &lt;code&gt;-&lt;/code&gt; you can run &lt;code&gt;re.sub('_|-', ' ', music)&lt;/code&gt;. Note that &lt;code&gt;.&lt;/code&gt; is accompanied by &lt;code&gt;\&lt;/code&gt;, it is because in Regex, &lt;code&gt;.&lt;/code&gt; has a another functionality, so we need to use &lt;code&gt;\&lt;/code&gt; to specify the use of a dot.&lt;/p&gt;

&lt;p&gt;I will finalize this post here.&lt;br&gt;
Please, comment if you found any error on post (English, programming, syntax).&lt;br&gt;
This helps me to improve.&lt;/p&gt;

&lt;p&gt;Follow me for more, bye.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5hjwnibisuext653bavi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5hjwnibisuext653bavi.gif" alt="falow" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
