{"id":1597,"date":"2024-09-19T23:19:49","date_gmt":"2024-09-20T02:19:49","guid":{"rendered":"https:\/\/www.semeru.com.br\/blog\/?p=1597"},"modified":"2024-09-20T14:56:54","modified_gmt":"2024-09-20T17:56:54","slug":"o-que-e-um-agile-developer","status":"publish","type":"post","link":"https:\/\/www.semeru.com.br\/blog\/o-que-e-um-agile-developer\/","title":{"rendered":"<strong>O que \u00e9 um <em>Agile Developer<\/em>?<\/strong>"},"content":{"rendered":"\n<p>Recentemente, me peguei refletindo: se eu n\u00e3o tivesse meu pr\u00f3prio neg\u00f3cio e n\u00e3o prestasse consultorias, qual exatamente seria o meu cargo? Ent\u00e3o, comecei a pensar: desenvolvo em v\u00e1rias linguagens de programa\u00e7\u00e3o, tenho <em>skills<\/em> fortes com testes automatizados, <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\">TDD<\/a><\/em>, <strong>clean code<\/strong>, j\u00e1 trabalhei com diversas plataformas em nuvem como <strong><a href=\"https:\/\/aws.amazon.com\/\">AWS<\/a><\/strong>, <strong><a href=\"https:\/\/azure.microsoft.com\/\">Azure<\/a><\/strong> e <strong><a href=\"https:\/\/cloud.google.com\/\">GCP<\/a><\/strong>. Constru\u00ed e gerenciei <em><a>pipelines<\/a><\/em> de <em><a>Continuous Integration<\/a><\/em>, <em><a>Continuous Delivery<\/a><\/em> e <em>Continuous Deployment<\/em>, trabalhei com <strong><a href=\"https:\/\/www.docker.com\/\">Docker<\/a><\/strong>, <strong><a href=\"https:\/\/kubernetes.io\/\">Kubernetes<\/a><\/strong> e tantas outras ferramentas que nem consigo listar todas aqui.<\/p>\n\n\n\n<p>Foi a\u00ed que identifiquei um ponto: tudo o que fiz est\u00e1 direta ou indiretamente ligado ao <em>agile<\/em>, mais precisamente ao que o pessoal do <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Extreme_programming\">Extreme Programming<\/a><\/strong> fazia entre 2000 e 2015, que aos poucos foi se tornando o que hoje chamamos de <strong><a href=\"https:\/\/aws.amazon.com\/devops\/what-is-devops\/\">DevOps<\/a><\/strong>. Depois de um tempo, cheguei \u00e0 conclus\u00e3o de que sou um <em>Agile Developer<\/em>. Fui pesquisar mais sobre isso e acabei chegando a algumas conclus\u00f5es interessantes e, claro, mais perguntas.<\/p>\n\n\n\n<p>A primeira d\u00favida que surgiu foi: como deve ser um <em>Agile Developer<\/em>? Quais habilidades s\u00e3o necess\u00e1rias e que tipo de pessoa se encaixa nesse perfil? Ao longo dos meus anos de estudo aprofundado e trabalho com <em>frameworks<\/em> \u00e1geis em diferentes posi\u00e7\u00f5es, desenvolvi uma intui\u00e7\u00e3o sobre isso. Mas essa reflex\u00e3o me levou a pensar profundamente sobre o tema e as raz\u00f5es por tr\u00e1s das minhas cren\u00e7as.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/senior-developer-vs-lead-developer-1128x635-1.jpg\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/senior-developer-vs-lead-developer-1128x635-1-1024x576.jpg\" alt=\"\" class=\"wp-image-1605\" srcset=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/senior-developer-vs-lead-developer-1128x635-1-1024x576.jpg 1024w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/senior-developer-vs-lead-developer-1128x635-1-300x169.jpg 300w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/senior-developer-vs-lead-developer-1128x635-1-768x432.jpg 768w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/senior-developer-vs-lead-developer-1128x635-1.jpg 1128w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h3>O que queremos alcan\u00e7ar com o desenvolvimento \u00e1gil?<\/h3>\n\n\n\n<p>Para responder \u00e0 pergunta sobre como deve ser um <em>Agile Developer<\/em>, primeiro precisamos nos questionar: \u201cO que queremos alcan\u00e7ar?\u201d O primeiro princ\u00edpio do <strong><a href=\"https:\/\/agilemanifesto.org\/\">Manifesto \u00c1gil<\/a><\/strong> afirma: \u201cNossa maior prioridade \u00e9 satisfazer o cliente atrav\u00e9s da entrega antecipada e cont\u00ednua de software valioso.\u201d<\/p>\n\n\n\n<p>Os benef\u00edcios prometidos pelo desenvolvimento \u00e1gil s\u00e3o: alta satisfa\u00e7\u00e3o do cliente, ciclos curtos de entrega ao mercado, mudan\u00e7as r\u00e1pidas, m\u00ednimo <em>overhead<\/em> e alta qualidade.<\/p>\n\n\n\n<p>Agora que temos uma ideia melhor do que queremos, podemos perguntar: \u201cComo podemos alcan\u00e7ar esses objetivos?\u201d<\/p>\n\n\n\n<p>Fontes como o <strong><a href=\"https:\/\/agilemanifesto.org\/\">Manifesto \u00c1gil<\/a><\/strong>, o <strong><a href=\"https:\/\/scrumguides.org\/\">Scrum Guide<\/a><\/strong>, as regras do <strong><a href=\"https:\/\/www.agilealliance.org\/glossary\/xp\/\" target=\"_blank\" rel=\"noreferrer noopener\">XP<\/a><\/strong> e o <strong><a href=\"https:\/\/manifesto.softwarecraftsmanship.org\/#\/pt-br\">Manifesto de Craftsmanship de Software<\/a><\/strong> cont\u00eam diretrizes. A partir dessas, extra\u00ed algumas palavras-chave e conceitos principais, categorizando-os da seguinte forma:<\/p>\n\n\n\n<h3>Conceitos gerais<\/h3>\n\n\n\n<ul>\n<li>Entrega frequente<\/li>\n\n\n\n<li>Prazos curtos<\/li>\n\n\n\n<li>Responder a mudan\u00e7as<\/li>\n\n\n\n<li>Software funcionando<\/li>\n\n\n\n<li>Software bem elaborado<\/li>\n\n\n\n<li>Adicionar valor de forma constante<\/li>\n<\/ul>\n\n\n\n<h3>Car\u00e1ter\/Personalidade<\/h3>\n\n\n\n<ul>\n<li>Indiv\u00edduos motivados<\/li>\n\n\n\n<li>Apoio<\/li>\n\n\n\n<li>Confian\u00e7a<\/li>\n\n\n\n<li>Auto-organiza\u00e7\u00e3o<\/li>\n\n\n\n<li>Intera\u00e7\u00e3o<\/li>\n\n\n\n<li>Colabora\u00e7\u00e3o<\/li>\n\n\n\n<li>Coragem<\/li>\n\n\n\n<li>Foco<\/li>\n\n\n\n<li>Comprometimento<\/li>\n\n\n\n<li>Respeito<\/li>\n\n\n\n<li>Transpar\u00eancia<\/li>\n<\/ul>\n\n\n\n<h3>Ferramentas t\u00e9cnicas<\/h3>\n\n\n\n<ul>\n<li>Comunica\u00e7\u00e3o <em>Face2Face<\/em><\/li>\n\n\n\n<li>Comunidade de profissionais<\/li>\n\n\n\n<li>Integra\u00e7\u00e3o cont\u00ednua (<em>CI<\/em>)<\/li>\n\n\n\n<li><em>Pair Programming (PP)<\/em><\/li>\n\n\n\n<li><em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\">Test-driven development (TDD)<\/a><\/em><\/li>\n\n\n\n<li>Propriedade coletiva do c\u00f3digo<\/li>\n<\/ul>\n\n\n\n<h3>Conceitos sociais<\/h3>\n\n\n\n<ul>\n<li>Times<\/li>\n\n\n\n<li>Parcerias<\/li>\n\n\n\n<li>Reflex\u00e3o<\/li>\n\n\n\n<li>Simplicidade<\/li>\n\n\n\n<li>Excel\u00eancia t\u00e9cnica<\/li>\n<\/ul>\n\n\n\n<h3>Como deve ser uma pessoa para trabalhar nesse ambiente?<\/h3>\n\n\n\n<p>Com base nessas categorias, vejo uma pir\u00e2mide de tr\u00eas n\u00edveis, em que os n\u00edveis mais altos s\u00e3o os mais importantes.<\/p>\n\n\n\n<h4>N\u00edvel 1: Personalidade \u201ccompat\u00edvel com o \u00e1gil\u201d \u2013 Compartilhar os valores<\/h4>\n\n\n\n<p>As palavras-chave sugerem que, em um ambiente \u00e1gil, precisamos de pessoas motivadas, flex\u00edveis, que gostem de trabalhar em equipe, se comuniquem bem e tenham curiosidade para aprender coisas novas, melhorar a si mesmas, o produto, as ferramentas, etc. Se a personalidade n\u00e3o estiver alinhada com os valores \u00e1geis, ser\u00e1 dif\u00edcil alcan\u00e7ar a compreens\u00e3o e a mentalidade necess\u00e1ria.<\/p>\n\n\n\n<h4>N\u00edvel 2: Mentalidade \u00e1gil \u2013 Compreender os princ\u00edpios<\/h4>\n\n\n\n<p>No desenvolvimento \u00e1gil, responder a mudan\u00e7as \u2014 de ambiente, requisitos, circunst\u00e2ncias, etc. \u2014 \u00e9 essencial. Essas respostas tamb\u00e9m incluem modifica\u00e7\u00f5es no pr\u00f3prio processo de desenvolvimento para lidar com situa\u00e7\u00f5es alteradas. Para ser capaz de adaptar um processo de desenvolvimento e manter os princ\u00edpios \u00e1geis, \u00e9 necess\u00e1ria uma mentalidade \u00e1gil, que se desenvolve atrav\u00e9s da compreens\u00e3o e viv\u00eancia dos princ\u00edpios \u00e1geis. Se a compreens\u00e3o e a mentalidade n\u00e3o estiverem presentes, as pr\u00e1ticas ser\u00e3o escolhidas inadequadamente e sua aplica\u00e7\u00e3o n\u00e3o trar\u00e1 os resultados esperados.<\/p>\n\n\n\n<h4>N\u00edvel 3: Habilidades \u00e1geis \u2013 Conhecer as pr\u00e1ticas<\/h4>\n\n\n\n<p>O terceiro n\u00edvel e a base da pir\u00e2mide s\u00e3o as habilidades na aplica\u00e7\u00e3o das pr\u00e1ticas \u00e1geis, que s\u00e3o baseadas nos princ\u00edpios e projetadas para apoi\u00e1-los. Elas podem ser divididas em pr\u00e1ticas gerais e espec\u00edficas. As pr\u00e1ticas gerais devem ser conhecidas por todos os membros da equipe, independentemente de seu papel. J\u00e1 as espec\u00edficas variam de acordo com o papel desempenhado.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/team-standup-meeting.jpeg\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/team-standup-meeting-1024x576.jpeg\" alt=\"\" class=\"wp-image-1599\" srcset=\"https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/team-standup-meeting-1024x576.jpeg 1024w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/team-standup-meeting-300x169.jpeg 300w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/team-standup-meeting-768x432.jpeg 768w, https:\/\/www.semeru.com.br\/blog\/wp-content\/uploads\/2024\/09\/team-standup-meeting.jpeg 1241w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h3>O Agile Developer Ideal: Membro de equipe em forma de T<\/h3>\n\n\n\n<p>Voltando \u00e0 pergunta original \u201cComo deve ser um <em>Agile Developer<\/em>?\u201d, o meu ideal \u00e9 um membro de equipe em forma de T. Um membro de equipe em forma de T tem conhecimento profundo e habilidades em uma \u00e1rea espec\u00edfica, bem como habilidades b\u00e1sicas em outros t\u00f3picos relevantes, al\u00e9m de interesse em ampliar seu conjunto de habilidades.<\/p>\n\n\n\n<h3>Conclus\u00e3o<\/h3>\n\n\n\n<p>A caracter\u00edstica mais importante para um desenvolvedor em um contexto \u00e1gil \u00e9 uma personalidade compat\u00edvel com os valores e princ\u00edpios \u00e1geis. Al\u00e9m desse requisito b\u00e1sico, \u00e9 necess\u00e1rio um conhecimento profundo das melhores pr\u00e1ticas de desenvolvimento de software, bem como o conhecimento de pr\u00e1ticas \u00e1geis em geral e das espec\u00edficas para desenvolvedores.<\/p>\n\n\n\n<p>Embora a personalidade n\u00e3o seja algo que um curso possa ensinar, os princ\u00edpios e as pr\u00e1ticas podem ser ensinados. E, como a melhoria cont\u00ednua \u00e9 um dos princ\u00edpios fundamentais do \u00e1gil, espera-se que um Agile Developer tenha um desejo de aprender. Assim, ele ou ela se torna um membro de equipe em forma de T, com uma mentalidade \u00e1gil e um conjunto de habilidades atualizadas em diferentes \u00e1reas.<\/p>\n\n\n\n<h2>Treinamentos relacionados com essa postagem<\/h2>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_agile\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Agile desmistificado com Scrum, XP, Kanban, Spotify e Trello\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/05-agile.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_trello\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Trello 2023: Gest\u00e3o Otimizada de Equipes e Projetos Pessoais\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/04-trello.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_spotify\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Spotify Engineering Culture Desmistificado\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/06-spotify.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_java\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0  AWS com Spring Boot 3, Java e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/07-rest-spring-java.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_tests_java\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Unit Testing com Spring Boot 3, TDD, Junit 5 e Mockito\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/24-tests_java.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ci_cd_java_aws\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Continuous Integration e Continuous Delivery com AWS e Github Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/27_CICD_JavaAWS.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ci_cd_java_azure\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Continuous Integration e Continuous Delivery com Microsoft Azure e Github Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/28_CICD_JavaAzure.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_asp_net\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0 Azure com ASP.NET Core 5 e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/01-rest-asp.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_kotlin\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0 AWS com Spring Boot 3, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/18-rest-spring-kotlin.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_microservices_java\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microservices do 0 com Spring Cloud, Spring Boot e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/14-microservices-java.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_microservices-dotnet\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Arquitetura de Microsservi\u00e7os do 0 com ASP.NET, .NET 6 e C#\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/15-microservices-dotnet.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ms_kotlin\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microsservi\u00e7os do 0 com Spring Cloud, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/22-ms-kotlin.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_scrum_remote\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Agile e Scrum para Times em Home Office com Trello\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/23-scrum-remote.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_kanban_remote\" target=\"_blank\" rel=\"noopener\">\n  <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Agile e Kanban para Times em Home Office com Trello\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/21-kanban-remote.png\">\n<\/a>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/pub.erudio.com.br\/kr\/blog_kanban_remote\" target=\"_blank\"><\/a><\/p>\n<div align=\"right\"><div class=\"sharexyWidgetNoindexUniqueClassName\"><div id=\"shr_24147527\"><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Recentemente, me peguei refletindo: se eu n\u00e3o tivesse meu pr\u00f3prio neg\u00f3cio e n\u00e3o prestasse consultorias, qual exatamente seria o meu cargo? Ent\u00e3o, comecei a pensar: desenvolvo em v\u00e1rias linguagens de programa\u00e7\u00e3o, tenho skills fortes com testes automatizados, TDD, clean code, j\u00e1 trabalhei com diversas plataformas em nuvem como AWS, Azure e GCP. Constru\u00ed e gerenciei [&#8230;]<\/p>\n<div align=\"right\">\n<div class=\"sharexyWidgetNoindexUniqueClassName\">\n<div id=\"shr_24147527\"><\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":1602,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[256,7,268,5],"tags":[259,263,266,264,240,267,124,265],"_links":{"self":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts\/1597"}],"collection":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1597"}],"version-history":[{"count":7,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts\/1597\/revisions"}],"predecessor-version":[{"id":1634,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/posts\/1597\/revisions\/1634"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/media\/1602"}],"wp:attachment":[{"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.semeru.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}