<?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: Fábio Carvalho</title>
    <description>The latest articles on DEV Community by Fábio Carvalho (@fcarvalhodev).</description>
    <link>https://dev.to/fcarvalhodev</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%2F1151731%2F3fbb5f3d-8c3a-4061-ad8b-ad7056a8d07d.jpeg</url>
      <title>DEV Community: Fábio Carvalho</title>
      <link>https://dev.to/fcarvalhodev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fcarvalhodev"/>
    <language>en</language>
    <item>
      <title>Saia do Loop - Data Annotation.</title>
      <dc:creator>Fábio Carvalho</dc:creator>
      <pubDate>Wed, 20 Sep 2023 01:07:39 +0000</pubDate>
      <link>https://dev.to/fcarvalhodev/programador-de-c-e-r-data-annotation-01-2ep2</link>
      <guid>https://dev.to/fcarvalhodev/programador-de-c-e-r-data-annotation-01-2ep2</guid>
      <description>&lt;p&gt;Bem vindo a série &lt;u&gt;&lt;strong&gt;Saia do Loop&lt;/strong&gt;&lt;/u&gt; ! No tutorial de hoje nós vamos falar de Data Annotation (ou anotações de dados) que existem dentro da programação C#. Dito isso, vamos começar criando um projeto vázio de console utilizando qualquer versão do .Net 3.1 para cima em nosso Visual Studio Community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1pv0H2BZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hbv7jq0skzx1qbn0t6wv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1pv0H2BZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hbv7jq0skzx1qbn0t6wv.png" alt="Aplicação vazia .Net e C#" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos começar criando uma nova classe chamada Pessoa. Para isso no seu projeto, clique com o botão direito e em seguida clique em &lt;u&gt;Add &lt;/u&gt;e em seguida &lt;u&gt;Class&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;Na classe Pessoa.cs que criamos, vamos adicionar alguns campos. Sendo eles Nome, Idade e Data de Nascimento.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; public class Pessoa
    {
        public string Nome { get; set; }
        public int Idate { get; set; }
        public DateTime DataDeNascimento { get; set; }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ótimo, com o nosso objeto Pessoa criado, vamos entender agora como as Data Annotation funcionam. As datas annotations são usadas para import regras em &lt;strong&gt;propriedades&lt;/strong&gt; de classe. Por exemplo, em nosso objeto &lt;strong&gt;Pessoa&lt;/strong&gt; nós queremos que o nome seja obrigatório e que tenha no mínimo 3 caractéres. Ou seja, todo nome precisa ter ao menos 3 letras para ser considerado um nome válido.&lt;/p&gt;

&lt;p&gt;Dito isso, usando data annotation nós podemos criar essa regra diretamente em nossa propriedade, veja o exemplo abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    public class Pessoa
    {
        [Required]
        [MinLength(3, ErrorMessage = "Nome precisa ter pelo menos 3 caracteres.")]
        public string Nome { get; set; }
        public int Idade { get; set; }
        public DateTime DataNascimento { get; set; }
    }

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

&lt;/div&gt;



&lt;p&gt;No exemplo anterior, nós incluímos duas notações (data annotation) a &lt;strong&gt;&lt;u&gt;Required&lt;/u&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;u&gt;MinLenght&lt;/u&gt;&lt;/strong&gt;, sendo que na segunda, nós passamos 2 parâmetros, o primeiro é o número mínimo de caractéres que é 3, e em seguida definimos uma mensagem de erro.&lt;/p&gt;

&lt;p&gt;Para entender mais, a Microsoft tem uma excelente documentação sobre que você pode ver neste &lt;a href="https://learn.microsoft.com/pt-br/aspnet/mvc/overview/older-versions-1/models-data/validation-with-the-data-annotation-validators-cs"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mas continuando, ao incluir as anotações e dados em seu código, você deverá notar que automaticamente um novo &lt;strong&gt;using&lt;/strong&gt; será adicionado a sua classe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wKL9UzFw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0t3m3cne84kb7vemcddl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wKL9UzFw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0t3m3cne84kb7vemcddl.png" alt="código c# e using" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este using é necessário para utilizarmos as anotações, então tenha atenção para não esquecer a sua referência. Dito isso, vamos incluir mais anotações para os demais campos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O campo idade deverá ter entre 0 e 150 anos&lt;/li&gt;
&lt;li&gt;O campo de data devera ser válido, e não ser menor que 1900 ou maior que 31/12/2099
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    public class Pessoa
    {
        [Required]
        [MinLength(3, ErrorMessage = "Nome precisa ter pelo menos 3 caracteres.")]
        public string Nome { get; set; }

        [Range(0, 150, ErrorMessage = "Idade deve ser entre 0 e 150.")]
        public int Idade { get; set; }

        [DataType(DataType.Date)]
        [Range(typeof(DateTime), "1/1/1900", "12/31/2099", ErrorMessage = "Data fora do intervalo permitido.")]
        public DateTime DataNascimento { get; set; }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Preste anteção que a princípio a data está no formato americano, isso se deve porquê por padrão a anotação valida no formato americano, para formatar e validar no padrão brasileiro, é necessário construir uma anotação customizada.&lt;/p&gt;

&lt;p&gt;Por exemplo, caso tivéssemos a seguinte classe em nosso projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   public class BrazilianDateAttribute : ValidationAttribute
    {
     public DateTime MinDate { get; set; }
        public DateTime MaxDate { get; set; }

        public BrazilianDateAttribute(string minDate, string maxDate)
        {
            MinDate = DateTime.ParseExact(minDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            MaxDate = DateTime.ParseExact(maxDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
        }

        public override bool IsValid(object value)
        {
            DateTime date;
            var isValid = DateTime.TryParseExact(
                Convert.ToString(value),
                "dd/MM/yyyy",
                CultureInfo.CurrentCulture,
                DateTimeStyles.None,
                out date
            );

            return isValid &amp;amp;&amp;amp; date &amp;gt;= MinDate &amp;amp;&amp;amp; date &amp;lt;= MaxDate;
        }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Poderiamos usar a validação da seguinte maneira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class Pessoa
    {
        [Required]
        [MinLength(3, ErrorMessage = "Nome precisa ter pelo menos 3 caracteres.")]
        public string Nome { get; set; }

        [Range(0, 150, ErrorMessage = "Idade deve ser entre 0 e 150.")]
        public int Idade { get; set; }

        [BrazilianDate("01/01/1900", "31/12/2099", ErrorMessage = "Data fora do intervalo permitido.")]
        public DateTime DataNascimento { get; set; }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com isso, dentro de nossa Program.cs, estamos prontos para criar um exemplo em nosso método Main e testarmos as validações:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;static void Main(string[] args)
        {
            var pessoa = new Pessoa
            {
                Nome = "Jo", //Nome incorreto
                Idade = -1, //Idate incorreta
                DataNascimento = new DateTime(3000, 1, 1) // Data fora do intervalo
            };

            var results = new List&amp;lt;ValidationResult&amp;gt;();
            var isValid = Validator.TryValidateObject(pessoa, new ValidationContext(pessoa), results, true);

            if (!isValid)
            {
                foreach (var validationResult in results)
                {
                    Console.WriteLine(validationResult.ErrorMessage);
                }
            }

            Console.ReadKey();
        }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute, a aplicação e veja os erros que irão acontecer no console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1VU1ExyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/izx4o4d10odj29nxrhht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1VU1ExyE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/izx4o4d10odj29nxrhht.png" alt="Erros" width="733" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E pronto, com isso você já deve entender a ideia do que são as Data Annotations, um famoso recurso do C#.&lt;/p&gt;

&lt;p&gt;Nos vemos no próximo tutorial! :)&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>fcarvalhodev</category>
    </item>
    <item>
      <title>Conectando o VS Community ao Azure DevOps</title>
      <dc:creator>Fábio Carvalho</dc:creator>
      <pubDate>Thu, 07 Sep 2023 14:48:18 +0000</pubDate>
      <link>https://dev.to/fcarvalhodev/conectando-o-vs-community-ao-azure-devops-34dg</link>
      <guid>https://dev.to/fcarvalhodev/conectando-o-vs-community-ao-azure-devops-34dg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Primeiros Passos&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Instale o Visual Studio Community&lt;/u&gt;: Se você ainda não tem, baixe e instale o Visual Studio Community do site oficial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conectando ao Azure DevOps&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Abra o Visual Studio Community&lt;/u&gt;: Inicie o programa e você vai ver a tela inicial.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oLyAeUJA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxn7r0dxn0q5laf4pgec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oLyAeUJA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jxn7r0dxn0q5laf4pgec.png" alt="vs studio community home screen" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Vá para "Team Explorer"&lt;/u&gt;: Você pode encontrar essa opção no menu "View" e depois em "Team Explorer", ou simplesmente pressionando Ctrl + \, Ctrl + M.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pVnE5Jnn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6qnwykygv8nham2456r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pVnE5Jnn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6qnwykygv8nham2456r.png" alt="team explorer tab" width="541" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conecte-se ao Azure DevOps&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;No "Team Explorer", clique em "Connect to a Project".&lt;br&gt;
Isso abrirá uma janela nova. Clique em "Add Azure DevOps Server".&lt;br&gt;
Digite a URL:&lt;/p&gt;

&lt;p&gt;Uma janela vai aparecer pedindo a URL do Azure DevOps.&lt;br&gt;
Digite a URL do seu Azure DevOps. Geralmente é algo como &lt;a href="https://dev.azure.com/NomeDaSuaOrganizacao/SeuProjeto"&gt;https://dev.azure.com/NomeDaSuaOrganizacao/SeuProjeto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Faça Login&lt;/u&gt;: Você será solicitado a entrar com suas credenciais (usuário e senha ou token).&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Escolha o Projeto&lt;/u&gt;: Depois de logado, você verá uma lista de projetos. Clique no projeto em que você quer trabalhar.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Clone ou Abra o Projeto&lt;/u&gt;: Você terá a opção de clonar o repositório para o seu computador ou abrir um projeto já clonado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--17ErXODL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vrisv25l6d8efbvsasyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--17ErXODL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vrisv25l6d8efbvsasyz.png" alt="Cloning project inside of vs comunity" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎉 Pronto! 🎉&lt;br&gt;
Agora você está conectado ao Azure DevOps e pronto para começar a trabalhar no seu projeto direto do Visual Studio Community!&lt;/p&gt;

&lt;p&gt;Espero que esse tutorial seja útil e fácil de seguir! 😊&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>git</category>
      <category>azuredevops</category>
    </item>
    <item>
      <title>Como clonar um projeto no Azure DevOps</title>
      <dc:creator>Fábio Carvalho</dc:creator>
      <pubDate>Thu, 07 Sep 2023 14:31:40 +0000</pubDate>
      <link>https://dev.to/fcarvalhodev/como-clonar-um-projeto-no-azure-devops-3jnf</link>
      <guid>https://dev.to/fcarvalhodev/como-clonar-um-projeto-no-azure-devops-3jnf</guid>
      <description>&lt;p&gt;&lt;strong&gt;Primeiros Passos&lt;/strong&gt; &lt;br&gt;
&lt;u&gt;Abra o Azure DevOps&lt;/u&gt;: Vá até o site do Azure DevOps e faça login.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Escolha o Projeto&lt;/u&gt;: No menu de repositórios do lado esquerdo na barra de menus, clique em &lt;strong&gt;file&lt;/strong&gt; e selecione o projeto que você quer copiar para o seu computador.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opção 1: Usando Git CLI (Linha de Comando)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Botão "Clone"&lt;/u&gt;: Vai ter um botão chamado "clone repository" no canto superior direito. Clique nele!&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Copie o Link&lt;/u&gt;: Vai aparecer um link HTTPS. Copie ele.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Abra o Prompt de Comando (Git CLI)&lt;/u&gt;: Vá até a pasta onde você quer colocar o projeto e abra o Git CLI.&lt;br&gt;
Se você não tem o Git CLI, baixe aqui.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Cole o Comando&lt;/u&gt;: Digite git clone e depois cole o link que você copiou. Vai ficar assim:&lt;br&gt;
&lt;code&gt;git clone https://www.seurepositorio.com/seuprojeto&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Aperte Enter&lt;/u&gt;: Pronto! Seu projeto vai ser copiado para o seu computador.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opção 2: Usando Visual Studio Code&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;u&gt;Botão "Clone in VS Code"&lt;/u&gt;: Clique nele, em vez de copiar o link HTTPS.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Siga as Instruções&lt;/u&gt;: O Visual Studio Code vai abrir e você só precisa seguir o que ele exibir na tela.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opção 3: Usando Visual Studio Community&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Abra o Visual Studio Community&lt;/u&gt;: Inicie o programa e vá para a tela inicial.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Clique em "Clone a Repository"&lt;/u&gt;: Fica geralmente no canto inferior direito.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Cole o Link HTTPS&lt;/u&gt;: No campo "Repository Location", cole o link HTTPS que você copiou do Azure DevOps.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Clique em "Clone"&lt;/u&gt;: Seu projeto vai ser baixado e aberto no Visual Studio Community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caso o Projeto Use Token&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Clique em "Generate Git Credentials"&lt;/u&gt;: No Azure DevOps, essa opção vai aparecer se você precisar de um token.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Repita o Passo&lt;/u&gt;: Escolha uma das três opções acima e tente clonar o projeto de novo.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>azuredevops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Papéis comuns em times ágeis</title>
      <dc:creator>Fábio Carvalho</dc:creator>
      <pubDate>Sat, 02 Sep 2023 19:36:05 +0000</pubDate>
      <link>https://dev.to/fcarvalhodev/papeis-comuns-em-times-ageis-2nk2</link>
      <guid>https://dev.to/fcarvalhodev/papeis-comuns-em-times-ageis-2nk2</guid>
      <description>&lt;p&gt;Bem-vindo a este guia sobre os papéis em times ágeis! Compreender os diversos papéis e suas interações é fundamental para o sucesso de qualquer projeto ágil. Cada membro da equipe tem responsabilidades específicas, mas a colaboração e comunicação eficazes são a chave para entregar um produto de sucesso.&lt;/p&gt;

&lt;p&gt;Neste guia, vamos explorar em detalhes os papéis comuns encontrados em uma equipe ágil e como eles se inter-relacionam durante o ciclo de vida do projeto. Vamos abordar desde o Agile Coach, que orienta a equipe nas melhores práticas ágeis, até os desenvolvedores que executam as tarefas do dia a dia para criar o produto.&lt;/p&gt;

&lt;p&gt;👩‍💼 &lt;strong&gt;Agile Coach&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Responsabilidades&lt;/u&gt;: O Agile Coach treina e orienta a equipe em práticas ágeis. Ele também resolve problemas de processo e ajuda a equipe a se adaptar às mudanças.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Treina Scrum Master, Product Owner, Team Management e Desenvolvedor Líder em melhores práticas ágeis.&lt;/p&gt;

&lt;p&gt;👨‍🚀&lt;strong&gt;Scrum Master (SM)&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Responsabilidades&lt;/u&gt;: O Scrum Master facilita reuniões ágeis, como Daily Stand-ups e Sprint Reviews, e remove obstáculos para a equipe.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Facilita o trabalho para Back-end Devs, Full-stack Devs e Front-end Devs.&lt;/p&gt;

&lt;p&gt;👩‍💻 &lt;strong&gt;Product Owner (PO)&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Responsabilidades&lt;/u&gt;: O Product Owner cria e prioriza o backlog com base nos requisitos e feedback dos usuários.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Colabora com UX Designers para criar designs e com Arquiteto para definir a estrutura do sistema.&lt;/p&gt;

&lt;p&gt;🎨 &lt;strong&gt;UX Designers&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Responsabilidades&lt;/u&gt;: Os UX Designers criam protótipos e designs baseados nas necessidades dos usuários e nos requisitos do PO.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Fornecem designs para Front-end Devs.&lt;/p&gt;

&lt;p&gt;🏗️ &lt;strong&gt;Arquiteto&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Responsabilidades&lt;/u&gt;: O Arquiteto define a estrutura geral do sistema e toma decisões de alto nível sobre design e tecnologias.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Orienta Back-end Devs e Full-stack Devs na implementação da estrutura.&lt;/p&gt;

&lt;p&gt;📊 &lt;strong&gt;Team Management&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Responsabilidades&lt;/u&gt;: Team Management planeja os recursos, aloca tarefas e monitora o progresso do projeto.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Trabalha com Desenvolvedor Líder para alocar tarefas.&lt;/p&gt;

&lt;p&gt;👨‍💻 &lt;strong&gt;Desenvolvedor Líder&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Responsabilidades&lt;/u&gt;: O Desenvolvedor Líder divide as tarefas do backlog em tarefas menores e as distribui entre os desenvolvedores.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Aloca tarefas para Back-end Devs, Full-stack Devs e Front-end Devs.&lt;/p&gt;

&lt;p&gt;👨‍💻 &lt;strong&gt;Back-end Devs / Full-stack Devs / Front-end Devs&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;Responsabilidades&lt;/u&gt;: Estes desenvolvedores executam as tarefas para desenvolver o produto, focando em suas respectivas áreas (Back-end, Full-stack, Front-end).&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Interações&lt;/u&gt;: Recebem tarefas do Desenvolvedor Líder e orientações do Arquiteto e Scrum Master.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Entendendo Requisitos Funcionais e Não Funcionais</title>
      <dc:creator>Fábio Carvalho</dc:creator>
      <pubDate>Fri, 01 Sep 2023 23:18:23 +0000</pubDate>
      <link>https://dev.to/fcarvalhodev/entendendo-requisitos-funcionais-e-nao-funcionais-437i</link>
      <guid>https://dev.to/fcarvalhodev/entendendo-requisitos-funcionais-e-nao-funcionais-437i</guid>
      <description>&lt;p&gt;Olá!!!! Neste tutorial!, vamos explorar dois conceitos fundamentais no desenvolvimento de software: Requisitos Funcionais e Requisitos Não Funcionais. Compreender a diferença entre eles é crucial para o sucesso de qualquer projeto, independentemente da metodologia ou ferramentas que você esteja usando.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requisitos Funcionais&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O que são?&lt;/p&gt;

&lt;p&gt;Requisitos Funcionais descrevem as funcionalidades específicas que um sistema deve realizar. Em outras palavras, eles detalham o que o sistema deve fazer.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://ieeexplore.ieee.org/document/278253"&gt;IEEE Guide to Software Requirements Specifications&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Um sistema de gerenciamento de biblioteca deve ser capaz de emitir cartões de sócio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Um site de comércio eletrônico deve permitir que os usuários adicionem itens ao carrinho de compras.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Como identificá-los?&lt;/p&gt;

&lt;p&gt;Geralmente, os requisitos funcionais são identificados durante a fase de coleta de requisitos e são documentados em um Documento de Requisitos de Software (SRS).&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://vdocuments.net/software-requirements-third-edition.html"&gt;Software Requirements, por Karl Wiegers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requisitos Não Funcionais&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O que são?&lt;/p&gt;

&lt;p&gt;Requisitos Não Funcionais, por outro lado, descrevem como um sistema realiza uma determinada função, em vez de quais funções ele deve realizar. Eles são muitas vezes relacionados à experiência do usuário, desempenho, ou conformidade com regulamentos.&lt;/p&gt;

&lt;p&gt;📘 Referência: Non-Functional Requirements in Software Engineering, por Lawrence Chung&lt;/p&gt;

&lt;p&gt;Exemplos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O sistema deve ser capaz de suportar 500 usuários simultaneamente.&lt;/li&gt;
&lt;li&gt;Todos os dados devem ser criptografados.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Como identificá-los?&lt;/p&gt;

&lt;p&gt;Requisitos não funcionais são frequentemente descobertos por meio de entrevistas com stakeholders ou são derivados de padrões industriais ou regulamentações.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.iso.org/standard/35733.html"&gt;ISO/IEC 25010:2011 Systems and software engineering&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por Que São Importantes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Entender a diferença entre Requisitos Funcionais e Não Funcionais é crucial para desenvolver um produto de alta qualidade que atenda tanto às necessidades do usuário quanto aos padrões da indústria. Também é fundamental para a criação de User Stories, Features e Tasks eficazes em um ambiente de gerenciamento de projetos, como o que discutimos no Azure DevOps.&lt;/p&gt;

&lt;p&gt;Espero que este tutorial tenha esclarecido as diferenças entre Requisitos Funcionais e Não Funcionais e por que ambos são importantes para o sucesso do seu projeto.&lt;/p&gt;

</description>
      <category>management</category>
    </item>
    <item>
      <title>Introdução ao Gerenciamento de Projetos com Azure DevOps</title>
      <dc:creator>Fábio Carvalho</dc:creator>
      <pubDate>Fri, 01 Sep 2023 22:42:30 +0000</pubDate>
      <link>https://dev.to/fcarvalhodev/introducao-ao-gerenciamento-de-projetos-com-azure-devops-47k9</link>
      <guid>https://dev.to/fcarvalhodev/introducao-ao-gerenciamento-de-projetos-com-azure-devops-47k9</guid>
      <description>&lt;p&gt;Bem-vindo a este tutorial, onde exploraremos como usar o Azure DevOps para gerenciar seu projeto de desenvolvimento de software de forma eficiente e eficaz. Se você é um desenvolvedor, gerente de projeto ou stakeholder, entender o fluxo de trabalho do Azure DevOps pode ajudá-lo a tornar seu projeto mais bem-sucedido.&lt;/p&gt;

&lt;p&gt;Neste tutorial, vamos desvendar os conceitos de Épicos, Features, User Stories e Tasks, que são a espinha dorsal de qualquer projeto bem gerenciado. Além disso, também cobriremos a importância dos critérios de aceitação e como eles se encaixam no fluxo de trabalho do projeto.&lt;/p&gt;

&lt;p&gt;Então, se você está procurando uma maneira de melhorar sua abordagem ao gerenciamento de projetos ou simplesmente quer entender como tudo se encaixa no cenário maior, você veio ao lugar certo. Vamos começar!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O Épico&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Épico representa uma grande funcionalidade ou conjunto de funcionalidades que desejamos implementar. Pode ser visto como o "plano mestre" que direciona o desenvolvimento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As Features&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dentro de um Épico, temos várias Features. Uma Feature é uma parte menor do Épico e descreve uma funcionalidade específica que queremos implementar.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.scrumalliance.org/ScrumRedesignDEVSite/media/ScrumAllianceMedia/Files%20and%20PDFs/Agile%20Resources/S_OverviewofScrumFrame_1.pdf"&gt;Features, por Scrum Alliance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As User Stories&lt;/strong&gt;&lt;br&gt;
Cada Feature é decomposta em uma ou mais User Stories. Uma User Story é uma descrição de uma funcionalidade do ponto de vista de um usuário final.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.martinfowler.com/bliki/UserStory.html"&gt;User Stories, por Martin Fowler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As Tasks&lt;/strong&gt;&lt;br&gt;
Finalmente, cada User Story é dividida em Tasks. Uma Task é uma unidade de trabalho específica necessária para completar uma User Story.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.scrumalliance.org/ScrumRedesignDEVSite/media/ScrumAllianceMedia/Files%20and%20PDFs/Agile%20Resources/S_OverviewofScrumFrame_1.pdf"&gt;Tasks, por Scrum Alliance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Critérios de Aceitação&lt;/strong&gt;&lt;br&gt;
Cada User Story e Feature tem critérios de aceitação associados. Isso ajuda a definir o que "feito" significa para aquela história ou característica.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.getclockwise.com/blog/effective-sprint-planning-meeting"&gt;Acceptance Criteria, por Yvette Francino&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h24boGE3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vi7w7pfzs1u3y0puhzss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h24boGE3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vi7w7pfzs1u3y0puhzss.png" alt="workflow for work items" width="730" height="777"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>kanban</category>
      <category>scrum</category>
    </item>
    <item>
      <title>Gerenciamento de Projetos, por que é importante ?</title>
      <dc:creator>Fábio Carvalho</dc:creator>
      <pubDate>Fri, 01 Sep 2023 22:20:39 +0000</pubDate>
      <link>https://dev.to/fcarvalhodev/gerenciamento-de-projetos-por-que-e-importante--2ohc</link>
      <guid>https://dev.to/fcarvalhodev/gerenciamento-de-projetos-por-que-e-importante--2ohc</guid>
      <description>&lt;p&gt;O gerenciamento de projetos, quando feito corretamente, pode ser um fator crítico para o sucesso de um projeto. Ele oferece um framework estruturado que ajuda a equipe de projeto a navegar pela complexidade e incerteza inerentes ao desenvolvimento de software, garantindo que os objetivos do projeto e da organização sejam alcançados.&lt;/p&gt;

&lt;p&gt;E assim, sendo bem sincero, o quê na vida funciona sem planejamento não é mesmo? Em vista desse pensamento que ditos populares como “se você falha em planejar, você planeja em falhar” são comuns no dia a dia do desenvolvimento.&lt;/p&gt;

&lt;p&gt;Dito isso, por que usar gerenciamento de projetos?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eficiência e Produtividade&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gerenciamento de projetos ajuda a organizar e direcionar recursos de forma eficiente, garantindo que o projeto seja concluído no prazo e dentro do orçamento.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://monday.com/blog/project-management/benefits-of-project-management/"&gt;Project Management Institute (PMI) – Benefits of Project Management&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controle e Previsibilidade&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ter um plano de projeto claro e metas bem definidas ajuda na previsibilidade e controle, permitindo que a equipe antecipe problemas e tome medidas preventivas.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://pmworldlibrary.net/wp-content/uploads/2023/04/pmwj128-Apr2023-Alleman-5-Immutable-Principles-of-Project-Success.pdf"&gt;The Five Immutable Principles of Project Success, por Glen B. Alleman&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qualidade e Conformidade&lt;/strong&gt;&lt;br&gt;
O gerenciamento de projetos assegura que os padrões de qualidade sejam mantidos e que o projeto esteja em conformidade com regulamentações ou requisitos de negócio.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://edisciplinas.usp.br/pluginfile.php/3878955/mod_resource/content/1/Plano%20da%20qualidade%20do%20projeto..pdf"&gt;Quality Management in Project Management, por Project Management Docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comunicação e Satisfação do Cliente&lt;/strong&gt;&lt;br&gt;
Melhora a comunicação entre os membros da equipe e com os stakeholders, aumentando a transparência e a satisfação do cliente.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.pmi.org/learning/library/managing-communications-effectively-efficiently-5916"&gt;Effective Communications in Project Management, por PMI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Governança Organizacional&lt;/strong&gt;&lt;br&gt;
O PMO fornece um framework de governança que inclui políticas, procedimentos e templates que ajudam a guiar o projeto.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.pmi.org/pmbok-guide-standards/foundational/program-management"&gt;The Standard for Program Management, por PMI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gestão de Riscos&lt;/strong&gt;&lt;br&gt;
O PMO frequentemente implementa uma estrutura de gestão de riscos que ajuda a identificar, avaliar e mitigar riscos.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://www.pmi.org/-/media/pmi/documents/public/pdf/certifications/practice-standard-project-risk-management.pdf?v=1e0b5985-74af-4c57-963c-b91a9af6fecb"&gt;Practice Standard for Project Risk Management, por PMI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alinhamento Estratégico&lt;/strong&gt;&lt;br&gt;
O PMO garante que os projetos estejam alinhados com os objetivos estratégicos da organização, garantindo que os recursos sejam utilizados de forma eficaz.&lt;/p&gt;

&lt;p&gt;📘 Referência: &lt;a href="https://onlinelibrary.wiley.com/doi/book/10.1002/9781119559078"&gt;Strategic Role of Project Management, por Harold Kerzner&lt;/a&gt;&lt;/p&gt;

</description>
      <category>pmo</category>
      <category>management</category>
      <category>team</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
