Minha jornada de uma década pelo .NET [PT-BR]
Tags: ptbr, braziliandevs, dotnet, webdev
Published: 2023-04-10 16:22:12

## Aprendendo C# e .NET na faculdade

Tudo começou em 2013, quando eu tinha 19 anos e iniciei o meu curso de Ciência da Computação. Foi nesse período que aprendi os fundamentos da orientação a objetos com Java e, em seguida, explorei o básico de C# com .NET.

Como parte desse processo, criei uma aplicação desktop para gerenciar uma startup de tecnologia, utilizando a tecnologia **Windows Forms** - que foi lançada em 2002. Mesmo após todos esses anos, considero que o Windows Forms é a forma mais fácil e rápida de criar uma interface de usuário. Basta escolher o componente, arrastá-lo para a tela, clicar duas vezes no botão e definir o que deve acontecer. E o melhor de tudo é que essa tecnologia é suportada até os dias de hoje.

Foi nessa época que percebi como uma IDE, como o Visual Studio, pode fazer total diferença na produtividade do programador. Até hoje, o Visual Studio é a IDE mais utilizada no mundo.

## Estagio com ASP.NET

Em 2015, com 21 anos, iniciei meu primeiro estágio como desenvolvedor web, utilizando **ASP.NET MVC**. Foi nesse período que conheci a estrutura Model-View-Controller, trabalhei em um projeto de grande porte e aprendi a usar o controle de versão GIT, além de explorar o uso de JavaScript e JQuery para a construção de telas.

Lembro-me bem do meu primeiro commit, registrado até hoje: "Remover ícone de aumentar/diminuir tamanho do texto." (28/07/2015).

Na mesma época, desenvolvi aplicativos móveis utilizando Xamarin (atualmente conhecido como **MAUI.NET**), tendo todos os aplicativos publicados na Google Play. Essa tecnologia me permitiu criar aplicativos para Android e iOS usando código C#.

No meu último ano de faculdade, durante o meu terceiro ano de iniciação científica, aprofundei-me em Node.js, o que me permitiu entender melhor o funcionamento de HTTP/HTTPS, APIs REST e um pouco de Ruby on Rails, contribuindo para uma melhor compreensão do MVC.

## Meu primeiro emprego full-time como desenvolvedor Web

Em 2017, aos 23 anos, comecei a trabalhar em um emprego full-time onde utilizei ASP.NET e **ASP.NET Boilerplate** com AngularJS. O Boilerplate me ensinou muitas coisas que usei ao longo de toda a minha carreira, como Domain Driven Design, Dependency Injection, Audit Logging, Localization, Repository Pattern, Background Task Scheduler, Object Mapping com AutoMapper e Multi-Tenancy.

Durante esse período, aprendi a usar o ORM **Entity Framework**, utilizando técnicas como Code First, Migrations, Change Tracker API e o importante LINQ.

Em meu segundo ano como desenvolvedor full-time, comecei a aprender **ASP.NET Core** para a construção de WebAPI e front-end em Vue.js. Esse período foi marcado por toda a revolução que ocorreu com o .NET Core se tornando multi-plataforma e totalmente open-source.

No meu terceiro ano como desenvolvedor full-time, me tornei desenvolvedor pleno e comecei a ensinar e oferecer mini cursos para outros desenvolvedores. Percebi que ensinar é a melhor forma de aprender e me aprofundei em conceitos como Clean Code, SOLID e Design Patterns (Creational, Structural e Behavioral).

No meu quarto ano, fui promovido a coordenador do time de desenvolvimento e apresentei uma palestra sobre ASP.NET em outra empresa. Também iniciei minha pós-graduação em Ciência de Dados Aplicada, onde pude utilizar Python, Pandas e Tensorflow por cerca de dois anos, o que me ajudou a aprender a usar ML.NET.

## Desenvolvedor em uma Startup

Durante a minha experiência profissional, tive a oportunidade de me aprofundar em diversas áreas, como SQL avançado com PostgreSQL e plataformas em nuvem, incluindo AWS e Heroku. Realizei configurações e deploy na AWS, além de aprender a lidar com atendimento ao cliente.

Também pude explorar áreas como monitoramento, logging e tracing, para garantir o pleno funcionamento do software desenvolvido. Outro ponto importante foi aplicar técnicas de teste automatizado.

## Professor de .NET

Em 2021, aos 27 anos, comecei a trabalhar como professor freelancer de .NET. Esse momento foi crucial para estruturar todo meu conhecimento e experiência em um curso linear. Percebi as lacunas que tinha e as coisas que achava que sabia, mas não dominava completamente. Isso me ajudou a aprofundar ainda mais meu conhecimento e a estruturá-lo de forma mais sólida.

No ano seguinte, comecei outro trabalho freelancer usando ASP.NET MVC para construir as telas com **Razor**, uma template engine que eu não usava há muito tempo. No meu trabalho anterior, todos os projetos que trabalhei usavam basicamente **ASP.NET WebAPI** no back-end e Vuejs no front-end. Isso me fez perceber o quanto o Razor é poderoso e como ele pode eliminar grande parte do código duplicado que era necessário quando trabalhava em projetos separados.

Não há nada mais produtivo para construir CRUDs do que o ASP.NET MVC e, como este era um projeto solo, ajudou muito a entregar novas funcionalidades em pouco tempo.

## Trabalhando em múltiplos projetos ASP.NET

Recentemente, comecei um projeto em conjunto com um sócio utilizando **ASP.NET Blazor**, mais especificamente **Blazor Server**. Essa experiência me permitiu ver novas possibilidades do ASP.NET e aprofundar meu aprendizado em Client-side .NET.

O Blazor revolucionou o ASP.NET, permitindo a criação de Single Page Applications (SPAs) no estilo de frameworks como ReactJS, VueJS e Angular, porém, utilizando C# e .NET. Essa tecnologia tem um grande potencial para a criação de aplicações web modernas, escaláveis e seguras, e estou animado para continuar a explorá-la em meus futuros projetos.

## Conclusão

Esse é o momento da minha vida em que mais estou animado para estudar .NET, já que ele está mais novo e revolucionário do que quando comecei a programar. Atualmente, estou trabalhando em diferentes projetos com o ASP.NET, incluindo projetos ASP.NET Web API no meu trabalho, projetos ASP.NET MVC como freelancer e um projeto pessoal em Blazor. A diversidade desses projetos me permitiu ver o ASP.NET por diferentes ângulos, ampliando meu conhecimento e habilidades em relação ao framework.