Do Mercado Financeiro ao Desenvolvimento de Software
Published: 2021-02-17 19:47:43

O que nos levou a migrar de **Mercado Financeiro puro para engenharia de software** foi a percepção de que com o avanço da pandemia (COVID-19) existiriam apenas três tipos de empresas no mercado, nós tínhamos apenas uma certeza, a de que uma delas nós não queríamos estar enquadrados.
Os três tipos de empresas são: **empresas que detém tecnologia, empresas que consomem tecnologia e empresas que desenvolvem tecnologia.**
As empresas que detém tecnologia são as gigantes da indústria como Microsoft, Apple, Dell, Google e que até mesmo que dependendo de outras tecnologias que funcionam bem em conjunto, como docker e kubernetes por exemplo.
As empresas que consomem tecnologia são aquelas empresas que dependem de tecnologia de terceiros e não possuem o controle de variável frente ao planejamento de desenvoltura e fornecimento de seus próprios produtos. Estas empresas contratam 100% dos produtos de terceiros no que envolve tecnologia, e, por isso, acabam pagando um preço muito alto em seu custo fixo ou operacional independente do setor.
Estas empresas **jamais teriam um produto 100% proprietário**, com isso, podemos deixar de vê-las em uma curva muito longa no mercado, estas empresas podem literalmente sumir se continuarem dependendo da tecnologia de terceiro para continuarem operando.
O último tipo de empresa é o que nos enquadramos, empresas que desenvolvem tecnologia. Entendemos que desenvolver tecnologia como solução final para o cliente e possuir tecnologia no core business é de vital importância para garantir um futuro promissor para os negócios.
Entendemos que o conceito de aplicar tecnologia em um modelo de negócio é diferente de invenção. Chamamos de invenção o ato de criar uma nova tecnologia, mas quando tratamos apenas de tecnologia podemos definir que é melhorar algo que já existe ou solucionar algum problema com maior eficiência garantindo escalabilidade.
Por isso decidi fazer a transição do Mercado Financeiro puro, local onde existem inúmeras ineficiências, e partir **do zero ao desenvolvimento de software** e assim percebi precisava reaprender a aprender e de certa forma traçar um **roadmap** muito claro e seguir um **plano de ação**, pois precisaria.

###Roadmap e Entendimento de Como Aprender Tecnologia para se Tornar Engenheiro de Software.
**Primeiro resolvi entender o que realmente é um Software Engineer**, assim descobri que um engenheiro de software é alguém que escreve códigos por trás de um produto de tecnologia, independente da tecnologia e independente de ser full-stack. Entendi claramente que precisava **aprender a aprender** o mais rápido possível.
O desenvolvimento de tecnologia é dividido em algumas camadas. Por isso não é fácil focar em uma linguagem de programação, framework ou em o que aprender, frontend, backend, cloud e outros.
Se perder é muito fácil nessa trilha, por isso **criei uma trilha própria e deixei de lado ler fóruns ou até mesmo seguir conselhos**, pois quando mais eu procurava e pesquisava, mas claro ficava em minha cabeça que existe um começo e depois disso é aprender a aprender, do jeito certo e focado em um **objetivo e o objetivo sempre foi claro, aprender a desenvolver tecnologia que resolvesse ineficiências de mercado.** Isso impactou toda a empresa em que eu estava à frente.
####Trilha de Conteúdos

######Como funciona a internet
•O que é um endereço de IP
•HTTP
######Front End
•HTML / CSS / SASS
•JavaScript
•Django
![Alt text of image](https://miro.medium.com/max/1050/1*cYPDZr0wTLySCYC7RHK9fQ.png)
![Alt text of image](https://miro.medium.com/max/1050/1*aoYcf0i05xPtS81OkM2Wxg.png)

######Backend
•SpringBoot
•Node.js
![Alt text of image](https://miro.medium.com/max/1050/1*5UBT98M9qIzwjjyZpHGAwg.png)
![Alt text of image](https://miro.medium.com/max/1050/1*Zly4WtoWAPoIIP9wCIxPlQ.png)

######Linguagens de programação
•JAVA
•C++
•JavaScript
•Go
•PHP
•Python
•Solidity
######Sistemas operacionais
•Usando terminal / linha de comando
•Memoria
•Unix
•Linux
•Bash-scripting
######Banco de Dados
•Conceitos
-Indexes
-Sharding
-Normalization
•Relacional
-MySQL
-PostgreSQL
-MariaDB
•NoSQL (Não Relacional)
-MongoDB
-NoSQL
-Graph Databases
•API’s
-API REST
-JSON
-GraphQL
•Controle de Versão
-Github
-Gitlab
•Segurança
-HTTPS
-SHA-2
-OWASP
-Katoolin
-Vault
•CI/CD
-Testar código
-Jenkins
•Alguns conceitos de Desenvolvimento (esse é muito importante).
-KISS
-SOLID
•Arquitetura de Software
-Microsserviços
-Servless
•Containers
-Docker
-Kubernets
-Rancher
•Server
-Apache
-Nginx
•Blockchain
-Smartcontracts
-ERC-20
-Ethereum
•DevOps
>Cloud Computing
-AWS
-DigitalOcean
-Azure
>Git
>Mensageria
-Kafka
-RabbitMQ

###Afinal o que Aprendi Depois de Tudo
Trabalhar com tecnologia nada mais é do que pegar um problema, dividir este problema em diversos micro-problemas e, com isso, dividi-los em sprints junto com um time, solucionar cada um deles de maneira eficiente, com a melhor tecnologia possível e dentro de um prazo estipulado.
**Nenhuma linguagem de programação ou tecnologia é menos ou mais importante, afinal de contas o que mais importa é a arquitetura do software que você e seu time está desenvolvendo, se as regras de negócio estão claras, assim como se seu produto é escalável e entrega o melhor resultado para seu cliente, entenda que toda tecnologia quebra, e, por isso, o conceito mais importante é o de “aprenda a aprender”, assim conseguirá, junto com seu time, resolver bugs e quebras o mais rápido possível, isso se chama eficiência. Portanto, aprender a aprender te torna com certeza mais eficiente.**