Um desenvolvedor front-end trabalha com o código da aplicação responsável pela apresentação do software (client-side). O desenvolvimento está relacionado a interface, telas e ferramentas utilizadas pelo usuário para interação com um determinada aplicação.

No contexto de aplicações web, o código front-end é exatamente o código do sistema que é executado no navegador. Um desenvolvedor front-end, geralmente, trabalha com linguagens como HTML, CSS e JavaScript, além de frameworks e bibliotecas, tais como ReactJS e Angular.

Existem muitas oportunidades no mercado para desenvolvedores especialistas em front-end. Normalmente, esses programadores não conhecem nada ou conhecem muito pouco de back-end. São pessoas que preferiram se especializar no front da aplicação.

Embora esses programadores não precisem conhecer como desenvolver código de back-end (server-side), é extremamente importante que eles conheçam os fundamentos sobre a arquitetura do software, pois o código que eles desenvolvem fazem parte de um todo e se comunica com o back-end.

Desenvolvedores front-end não lidam diretamente com banco de dados, servidores de aplicação complexos e outras coisas conhecidas pelos desenvolvedores back-end.

Os desafios são outros: criar páginas ou telas com boa usabilidade e carregamento rápido para oferecer uma ótima experiência ao usuário no uso dos serviços do software, garantir o funcionamento nos diferentes navegadores, integrar com os serviços do back-end.

O termo SOLID é um acrônimo para os cinco princípios da programação orientada a objetos que facilitam no desenvolvimento de softwares, tornando-os fáceis de manter e estender. A seguir um resumo de cada princípio:

S(Single responsability principle): uma classe deve ter apenas um motivo para ser alterada.

O(Open closed principle): uma classe deve ser aberta para extensão e fechada para modificação.

L(Liskov substitution principle): uma classe base deve poder ser substituída pela sua classe derivada.

I(Interface segregation principle): muitas interfaces específicas são melhores do uma interface única.

D(Dependency inversion principle): dependa de uma abstração e não de uma implementação.

A escalabilidade vertical se baseia no aumento de memória para que uma aplicação/serviço tenha mais recurso disponível para atender as solicitações recebidas. Ao passo que na escalabilidade horizontal são adicionadas mais nodes (ou seja, máquinas) que replicam o serviço para que esse tenha disponibilidade em atender as requisições enviadas pelos clientes.

Normalmente, não se deve aplicar em todo o projeto esse princípio. Aplicar o princípio aberto-fechado em todo lugar é um desperdício desnecessário e pode gerar um código complexo e de difícil compreensão. É preciso se concentrar nas áreas que têm mais probabilidade de mudar no projeto e aplicar os princípios nelas.

Um desenvolvedor back-end trabalha com linguagens de programação que são executados no lado do servidor (server-side). O código escrito por essas linguagens é compreendido pelo servidor.

No código do servidor são criadas e fornecidas as regras de negócio, acesso a banco de dados, segurança e escalabilidade.

Apesar do front-end possa também ter algumas regras e validações, é o código do servidor que deve garantir a integridade dos dados.

Desenvolvedores back-end trabalham com linguagens de programação, tais como: Java, PHP, JavaScript (Node.js permite a execução de códigos JavaScript fora de um navegador web), Ruby, C#, Python, entre outras existentes.

Este termo foi criado pela Netflix, depois da publicação do artigo "Full Cycle Developers at Netflix - Operate What You Build" no Netflix Tech Blog. No contexto, significa um desenvolvedor responsável por todo o ciclo de desenvolvimento do software, que se preocupa por todas as fases do produto:

Design -> Develop -> Test -> Deploy -> Operate -> Support

O ideal, portanto, é que um desenvolvedor consiga entender todo esse ciclo e consiga melhorar as performances também nos testes.

Um Desenvolvedor Fullstack é o profissional da área de computação que desenvolve tanto o front-end (client side) quanto o back-end (server side).

O Programador Fullstack é mais valorizado no mercado por ter a capacidade de desenvolver uma aplicação completa sem precisar necessariamente da ajuda de outro desenvolvedor para criar uma parte do programa.

O primeiro passo para se tornar um Desenvolvedor Fullstack reconhecido e valorizado no mercado é conhecer os fundamentos da arquitetura e tecnologias que você vai utilizar.

Um grande erro dos programadores iniciantes é querer aprender desenvolvimento de software pelas tecnologias, sem entender antes a base da arquitetura.

Por esse motivo que muitas pessoas ficam “perdidas” por vários e vários meses e até anos, e nunca aprendem corretamente como criar software profissional.

Pense num profissional da engenharia civil aprender a assentar janelas e enfileirar tijolos, sem antes entender como tudo isso vai se sustentar ? Com software podemos fazer essa analogia similar!

Um método HTTP é idempotente se uma requisição idêntica pode ser feita uma ou mais vezes em sequência com o mesmo efeito enquanto deixa o servidor no mesmo estado. Em outras palavras, um método idempotente não deveria possuir nenhum efeito colateral (exceto para manter estatísticas).

Implementados corretamente, o GET, HEAD, PUT, e DELETE são métodos idempotentes, mas não o método POST. Todos os métodos seguros também são idempotentes.

Vamos lá algumas dicas que pode te ajudar:

Referências. Busque referências. De código. De programadores. De Designers. Referências de como fazer um carrosel do zero. Como fazer um menu do zero. Como fazer uma feature ou uma aplicação que as empresas costume usar. Busque também seguir projetos e pessoas com códigos legais nas redes sociais e no github. Não se distraia pelos influencers. Tiktok com dancinhas e mostrando setup colorido RGB não é uma referência. Livro de Clean Code do Uncle Bob é uma referência. Curso de React do Manguinho é uma referência. Palestras sobre open source e cases em eventos são uma referência. Saiba buscar as referências certas, elas podem te levar aonde você quer chegar.

Pegue o currículo e o Linkedin de quem você admira. Como será que a pessoa chegou onde chegou? Quais cursos fez? Quais técnicas aprendeu? Como será que formatou o currículo, o portfolio? Como se apresentou nas entrevistas?

O mercado é muito melhor e mais estruturado do que a 5 ou 10 anos atrás, mas uma dica sempre valeu em todos os tempos: Indicação. E freelances. Faça network. Consiga freelances. Já fez um portfolio bacana? Conseguiu prospectar clientes? Pode ser você mesmo que vai atrás ou pode usar plataformas como Upwork, Workana, GetNinjas etc.. ou até no Linkedin.

Diversas empresas tem programas de novos talentos essa é uma saida mas é muito concorrida.

Uma faculdade pode ser uma porta de entrada para um estágio também.

Existem escolas de programação como a Trybe ,Digital Innovation One a LeWagon ou a 42 que já tem parcerias com empresas pra você atuar.

Não tenho dinheiro pra investir, sou um fudido o que eu faço? Cursos no Youtube, tem um monte e dos bons. Tem livros e tutoriais e documentação gratuita também. Na Udemy tem cursos bons em inglês por 20 reais. Faça esses cursos e tente aplicar o conhecimento ali num projeto real seu. Pra muitas empresas esses projetos de cursos, aplicados a problemas reais já vale mais do que muito teste.

Faça testes de vagas. Tem diversos repositórios no github com esses testes de empresas. Tem plataformas como HackerRank e leetcode também. Triple Byte. Você tendo um score alto nos testes dessas plataformas, as próprias empresas vem atrás de você.

Responda no StackOverflow. Eu já recebi emails de vagas, por que respondi perguntas lá, e também por repositórios que fiz no github. Sempre é um canal.

Por último: Pratique sua comunicação, tente fazer chamadas de vídeo com colegas e entrevistar inclusive fazendo livecoding. O hábito de fazer esse tipo de dinamica, pode deixar você mais seguro na hora da entrevista!!

Boa sorte!

Créditos: Ruben Marcus Luz Paschoarelli

Linkedin do Ruben: https://www.linkedin.com/in/rubenmarcus/

Para definir o quanto acha que deve ganhar para sua função, você pode estudar os seguintes pontos:

1 – Descubra o valor médio que o mercado está pagando para profissionais na sua área e com a sua experiência. Considere nessa pesquisa as tecnologias, pois um desenvolvedor PHP pode ter um salário diferente comparado ao desenvolvedor Python, por exemplo. Outro ponto importante é a região que deseja trabalhar, procure saber o salário médio da cidade que irá trabalhar para utilizar como base, empresas de diferentes regiões poderão ter um salário médio diferente utilizando a mesma tecnologia, isso acontece devido ao custo de vida específico de cada cidade. No site do Glassdoor, você pode realizar a pesquisa de salário médio para seu cargo definindo uma localização:

https://www.glassdoor.com.br/Sal%C3%A1rios/index.htm

2 – Leve em consideração os benefícios e as oportunidades de carreira que a empresa oferece.

3 – Ao comunicar sua pretensão, informe uma faixa salarial (por exemplo, de R$ 8K a R$ 10K), e não um valor único. Dessa forma, você mostrará de modo prático que está disponível para negociação.

Não, quem se forma em análise e desenvolvimento de sistemas tem um vasto campo para atuar.

Dentro da grande área da tecnologia da informação você pode trabalhar com redes, programação, desenvolvimento de interfaces, banco de dados, gestão de projetos, testes, suporte, sucesso do cliente, e tantas outras.

Créditos: Faculdade Senai 2022 (quiz).

Sim, segundo a ACATE (Associação de Empresas de Tecnologia de Santa Catarina) em 2019, o setor de tecnologia catarinense gerou 3,4 mil novas vagas de trabalho.

A região da Grande Florianópolis foi a líder do estado, com cerca de mil novas vagas abertas.

Santa Catarina teve o maior crescimento no número de empresas de tecnologia durante o período de 2015 a 2019.

Créditos: Faculdade Senai 2022 (quiz).

Falso, de acordo com a ACATE A demanda por profissionais de TI está cada vez maior, e o crescimento de profissionais atuando em empresas especializadas é de 9,9% ao ano, devendo se intensificar no futuro.

Com esse ritmo, a tendência é de ampliar a carência de colaboradores qualificados no setor de TI.

Créditos: Faculdade Senai 2022 (quiz).

Falso, programação é para todos! A programação sim utiliza conceitos matemáticos e de lógica.

Os bons cursos ajudam os alunos de diferentes níveis a entrar neste universo com disciplinas preparatórias, como: pré-cálculo, algoritmos e lógica de programação, matemática aplicada, e tantas outras.

Créditos: Faculdade Senai 2022 (quiz).

Verdadeiro! Santa Catarina possui mais de 12 mil empresas no setor de TI.

A grande Florianópolis representa 32,5% desse total, com aproximadamente 4 mil empresas no setor.

Créditos: Faculdade Senai 2022 (quiz).

Falso! O trabalho em equipe e socialização entre desenvolvedores, gestores, suporte e outras pessoas da equipe é fundamental.

Trabalhar bem com os outros colaboradores, dividir tarefas, compartilhar ideias e feedbacks torna o trabalho mais agradável e produtivo.

Assim como melhora a qualidade das entregas da equipe.

Créditos: Faculdade Senai 2022 (quiz).

Algumas dicas sobre gestão do tempo:

- Manter uma lista de tarefas;

- Não procrastinar;

- Focar no agora;

- Definir metas atingíveis;

- Fazer pausas;

- Priorizar;

- Gerir distrações;

- Focar em uma tarefa por vez;

- Saber dizer não;

- Estabelecer objetivos pessoais.

Ao nos candidatarmos a uma vaga de certa hierarquia, podemos ter dúvidas se cumprimos ou não aqueles requisitos. Não existe uma série de critérios únicos e invariáveis para definir cada nível. Essa hierarquia, assim como a estrutura organizacional, varia muito de empresa para empresa, da área do cargo e do tipo de função exercida.

Júnior: O profissional júnior geralmente é aquele recém formado, com pouco tempo de experiência e funções menos complexas que outros níveis. Podem ser exigidos conhecimentos técnicos e habilidades específicas, mas nunca tão aprofundadas. Cursando ou graduado na área e tem entre 2 e 4 anos de experiência.

Pleno: já graduado, com experiência mais significativa na área. Exerce funções de mais complexidade, mas ainda pode precisar que suas decisões sejam aprovadas por superiores. Média de 3 a 7 anos de experiência.

Sênior: o profissional sênior é aquele que tem tarefas mais complexas. Não necessariamente precisa ser pós graduado ou ter MBA, mas é um requisito comum. Uma coisa é certa: tem altos níveis de responsabilidade, autonomia para tomar decisões, conhecimentos muito aprofundados em sua área (geralmente adquiridos pela experiência) e gerencia projetos e equipes.

Créditos: Maise Gabriele Meira.

Linkedin da Maise: https://www.linkedin.com/in/meiramaise/

É um tipo de arquitetura de software que consiste em um sistema único, ou seja, uma grande quantidade de código organizado que compõe uma única aplicação acessando a mesma base de dados.

Vantagens:

- Fácil de Debugar;

- Intuitivo durante o processo de desenvolvimento;

- Pode ser construído por um time pequeno.

Desvantagens:

- Deploys lentos;

- Uma falha pode derrubar todo o sistema;

- Uma mesma tecnologia em todo o sistema;

- Assume muitas responsabilidades;

- É necessário escalar toda a aplicação ao invés de serviços específicos.

Quando usar:

- Quando a velocidade de entrega e custos baixos do projeto são uma prioridade;

- Quando o time de desenvolvimento é pequeno e não há previsão de alocação de desenvolvedores especializados construindo uma funcionalidade particular;

- Quando a aplicação não é tão grande e facilmente pode ser construída em três principais camadas;

- Quando um único time está trabalhando no projeto por um longo período de tempo.

Casos de uso:

- Pequenos sistemas;

- Sites de empreendimentos;

- Em MVPs (versão mais simples de um produto com mínimo esforço de desenvolvimento).

É um tipo de arquitetura de software que consiste em pequenos serviços independentes que se comunicam usando APIs bem definidas e possuem bases de dados distintas.

Vantagens:

- Escalável conforme as demandas do negócio;

- Deploys mais rápidos;

- Possibilitam equipes mais gerenciáveis;

- Falha no serviço é isolada, não derruba todo o sistema;

- É possível usar diferentes linguagens de programação.

Desvantagens:

- Debug mais complexo;

- A comunicação entre os microserviços deve ser bem planejadas.

- Monitoramento é mais complexo;

- Diversas tecnologias podem ser um problema.

Quando usar:

- Quando a aplicação cresce e há necessidade de micro gerenciamento;

- Quando escalabilidade é um fator importante;

- Quando os benefícios de longo prazo são mais importantes que os de curto-prazo;

- Quando o time de desenvolvimento é maior e especializado.

Casos de uso:

- Aplicações escaláveis;

- Aplicação em tempo-real;

- Aplicações multi-plataforma;

- Grandes plataformas de gerenciamento.

As principais unidades de medida para avaliarmos a performance de um software são: latência e throughput.

A latência ou “response time” pode ser definida como o tempo de resposta que vamos receber. Por exemplo, sempre que vamos fazer uma requisição, o tempo até o software processar essa chamada e ele nos retornar o resultado é considerado a latência. É mais comum ouvirmos o termo “response time”, mas saiba que tem o mesmo significado que latência.

O segundo indicador que devemos utilizar é o throughput. Este nos mostra o quanto de requisição nosso software consegue suportar.

Créditos: Livro digital Full Cycle (Wesley Willians).