Back-end

É possível usar Kotlin no back-end?

Nos últimos anos, várias linguagens de programação, como Python e as linguagens funcionais em especial, começaram a ser mais e mais adotadas pelo mercado em geral. Uma destas linguagens que começou a se tornar mais popular, apesar de uma história peculiar, foi o Kotlin, a linguagem de programação da JetBrains.

Muitos conhecem o Kotlin como a linguagem padrão para desenvolvimento na plataforma Android, já que a Google trocou o Java pelo Kotlin em 2017. Porém, poucas pessoas sabem que o Kotlin pode também ser utilizado no desenvolvimento back-end.

Antes de tudo: o que vem a ser o Kotlin?

O Kotlin é uma linguagem de programação completamente open source, multiplataforma e multiparadigma com forte influência de C#, Scala, Groovy e JavaScript. Softwares escritos em Kotlin podem ser compilados para três diferentes plataformas: para a JVM, rodando sob a infraestrutura da plataforma Java; para JavaScript, sendo possível compilar código Kotlin e gerar código inteiramente JavaScript; e para código nativo, através do LVVM. O LVVM é basicamente uma biblioteca modular de compiladores e ferramentas escritos em C++ que permitem a criação de compiladores. Embora o Kotlin ofereça todas essas possibilidades, seu uso mais comum ocorre no processo de compilação e execução na JVM, utilizando toda a infraestrutura da plataforma Java.

Kotlin com Android - Primeiros Passos
Curso de Kotlin com Android - Primeiros Passos
CONHEÇA O CURSO

O Kotlin foi criado em 2010 por Andrey Breslav, engenheiro de software da JetBrains. A JetBrains é a empresa responsável por excelentes ferramentas de desenvolvimento, como o IntelliJ IDEA, PhpStorm, WebStorm e Resharper. Andrey Breslav deu esse nome à linguagem por se tratar do nome de uma pequena ilha russa. A ideia foi seguir a mesma filosofia do nome do Java, já que Java também é o nome de uma pequena ilha na Indonésia. Embora o desenvolvimento da linguagem tenha iniciado em 2010, a primeira versão estável oficial foi lançada somente em 2016.

Segundo a JetBrains, o Kotlin foi criado para ser uma linguagem completamente voltada ao mercado e completamente interoperável com o Java (já que ambos são compilados para bytecode, código intermediário este que é executado pela JVM). Porém, a ideia é que o Kotlin solucionasse alguns pontos de design que eram considerados problemáticos no Java. Por isso, o Kotlin adota recursos de linguagem muito interessantes, como uma sintaxe sensivelmente menos ruidosa e verborrágica, a incorporação natural de conceitos de linguagens funcionais (principalmente com relação à aspectos de imutabilidade) e a proteção natural ao “erro de um bilhão de dólares”: as referências nulas, ou o famoso NullPointerException. O Kotlin possui uma maneira peculiar que faz com que as chances de ponteiros nulos sejam drasticamente reduzidas.

A sintaxe do Kotlin é de fato muito mais concisa, direta e expressiva. Enquanto um tradicional “hello world” em Java ficaria da seguinte maneira…

package br.com.treinaweb;

class HelloWorld 
{ 
    public static void main(String args[]) 
    { 
        System.out.println("Hello, World"); 
    } 
}

O mesmo “hello world” em Kotlin poderia ser escrito da seguinte maneira:

fun main() {
    println("Hello, World")
}

Atualmente, o Kotlin é patrocinado pela Kotlin Foundation, uma organização sem fins lucrativos formada pela JetBrains e pela Google.

O Kotlin pode ser usado no backend?

Sim, o Kotlin pode ser utilizado para desenvolvimento backend, além do desenvolvimento para Android. A interoperabilidade com o Java permite que você utilize os tradicionais e poderosos frameworks Java, como Spring e Hibernate, em conjunto com o Kotlin de maneira praticamente transparente. Isso permite obter toda a extensibilidade e maturidade característica dos frameworks e bibliotecas Java através de uma linguagem muito menos verbosa, com uma API mais agradável e com um design mais moderno.

De maneira geral, utilizar bibliotecas Java em conjunto com o Kotlin é algo praticamente transparente, sendo idêntico à utilização do Java. Porém, algumas bibliotecas podem ir contra alguns princípios da filosofia do Kotlin. Um exemplo clássico desse “choque” é o Hibernate sendo utilizado em um projeto baseado no Kotlin. Um dos princípios do design do Kotlin é a imutabilidade. O grande problema é que o Hibernate preza justamente pelo contrário, ou seja, pela mutabilidade das entidades que são manipuladas. Não é impossível utilizar o Hibernate junto com o Kotlin, muito pelo contrário… Mas, nessa situação por exemplo, pode ser necessário abrir mão de algumas ideias legais de design que o Kotlin tem.

O Kotlin vem sendo adotado com muita força pelo mercado desde 2017. Hoje, grandes empresas como Pinterest, Uber, Amazon, Prezi, Slack, além da própria Google e da JetBrains, utilizam o Kotlin para desenvolvimento de aplicações internas e externas. Isso têm feito com que frameworks e bibliotecas específicas para o Kotlin também surjam com frequência. Hoje temos, por exemplo, o Ktor, um framework Kotlin para desenvolvimento web; e o Exposed, um framework SQL da JetBrains completamente baseado no Kotlin. Além disso, uma pesquisa do StackOverflow elegeu o Kotlin como a segunda linguagem de programação mais amada pela comunidade. Estes dados mostram como o Kotlin hoje é uma opção que deve ser considerada seriamente ao se desenvolver aplicações multi-propósito, além de aplicações para Android.

Devo começar como Front-End, Back-End ou Full Stack?

Olá, Web Developers!

Muitos programadores no começo de suas carreiras acabam encontrando os termos Front-End, Back-End e Full Stack quando vão se candidatar a vagas de emprego. Então surgem as seguintes dúvidas: “o que devo seguir?”, “qual a mais difícil e qual a mais fácil?”, “qual paga melhor?”, etc.

Todos possuem vantagens e desvantagens. Vamos ver os pontos base sobre cada um.

Front-End

Desenvolvimento Front-End

Necessidades

O desenvolvedor Front-End terá que desenvolver as telas da aplicação que foram projetadas pelo Arquiteto e Designer, normalmente com HTML, CSS e JavaScript.

Este desenvolvedor também terá que saber analisar o trabalho do designer para poder seguir o que ele projetou, portanto também pode ser necessário saber o básico de softwares como PhotoShop, Illustrator, Adobe XD e Sketch.

Você não precisa saber sobre experiência de usuário e design, mas há empresas em que o próprio desenvolvedor Front-End precisa desempenhar os papéis de arquiteto e designer, tornando esses conhecimentos um diferencial deste profissional.

Há empresas que também vão querer um desenvolvedor Front-End para criar um site/blog feito com WordPress, então também pode ser interessante saber um pouco de PHP.

Desvantagens

O código feito por um Front-End é executado no cliente. Porém, não sabemos se o usuário está em um smartphone, tablet, notebook ou desktop. Será que o usuário está usando um bom Wi-Fi ou está com uma Internet móvel bem lenta?

Também não sabemos o sistema operacional, qual navegador, versão, etc. Um desenvolvedor Front-End precisa desenvolver um código que possibilite que a maioria dos usuários possam utilizar a aplicação sem problemas. Portanto, é necessário muitos testes em diversos ambientes.

Como estará em contato direto com o usuário, deverá entregar uma boa experiência, e isso se inicia no tempo de carregamento da aplicação. Portanto, também é preciso se preocupar com a otimização dos arquivos HTML, CSS, JS, imagens, etc.

Vantagens

Um Front-End tem como principal linguagem de programação o JavaScript, que está crescendo muito. Você pode ver mais no post O que se pode fazer com JavaScript hoje em dia?.

Além da web, este profissional pode aprender facilmente a criar aplicações desktop e mobile, desenvolver jogos e começar a trabalhar com Back-End utilizando apenas JavaScript.

Ele também não precisa se preocupar com performance do processamento feito no servidor e nem com o Banco de Dados.

Todas as empresas precisam de um Front-End, permitindo que você envie currículo para qualquer empresa.

Outro ponto é que o resultado do seu trabalho pode ser visto em ação (sistemas, aplicativos, sites, etc), permitindo deixar o seu currículo mais interessante.

Como normalmente as regras de negócio ficam no servidor, o Front-End pode ser um pouco mais amigável para quem não tem tanta lógica de programação (isso não significa que lógica é dispensável).

Hoje em dia as empresas estão valorizando cada vez mais o JavaScript, fazendo a demanda e o salário oferecido aumentarem, já que ainda há poucos Front-Ends de qualidade se comparar com a quantidade de desenvolvedores Back-End.

Back-End

Desenvolvimento Back-End

Necessidades

O desenvolvedor Back-End é aquele que responderá às requisições do cliente. Ele precisa saber alguma linguagem de programação, ter uma boa lógica para programar as regras de negócio do sistema, se conectar ao banco de dados para recuperar ou gravar dados, etc.

O banco de dados pode ser de responsabilidade de um profissional especializado, mas muitas vezes ele fica por conta do próprio desenvolvedor Back-End, fazendo da otimização de banco de dados algo interessante de se saber. Independente disso, o Back-End precisa saber mexer com banco de dados.

Além disso, este desenvolvedor também precisará saber publicar a aplicação, podendo ser necessário conhecimento em serviços como AWS ou Azure e a criação de contêineres como o Docker.
Para saber mais sobre o que é Docker, veja nosso post: No final das contas: o que é o Docker e como ele funciona?

Hoje em dia, dependendo do sistema, pode ser necessário que este profissional saiba lidar com Internet das Coisas (IoT), Aprendizado de Máquina (Machine Learning), Mineração de Dados (Data Mining), etc. Algumas destas habilidades será um grande diferencial deste profissional.

Desvantagens

Normalmente desenvolvedores Back-End tem mais familiaridade apenas com uma linguagem de programação, o que ilmita os lugares para onde podem enviar currículos. Então entra a questão: “devo estudar outra linguagem ou me especializar no que já sei?”

Se um Front-End pode enviar currículo para qualquer lugar, um desenvolvedor Back-End especializado em Java dificilmente será chamado por uma empresa que só trabalhar com Python, por exemplo.

Como lidam diretamente com a regra de negócio, precisam ser os mais atentos a cada detalhe, inclusive os dados enviados pelo Front-End, pois o cliente pode dar um jeito de burlar as regras do Front.

Devem estar atentos a vários casos de teste e lidar com a segurança do servidor para evitar ataques aos dados. Um pequeno problema aos dados e toda a empresa pode ter sérios problemas. Front e Back precisam estar atentos, mas erros no servidor podem ser muito mais graves.

Outro ponto é que a velocidade do Front-End muitas vezes vai depender das respostas do servidor, então também devem saber otimizar o banco e o código. Todos os usuários estarão acessando o seu servidor, então é preciso saber como escalar a sua aplicação para que ela não caia em um momento de grande quantidade de acessos.

Vantagens

O Back-End não precisa se preocupar com o dispositivo ou versão do navegador do cliente, pois seu código estará rodando em apenas uma única máquina a qual você mesmo pode configurar.

Um Front-End precisa saber logo de início HTML, CSS, JavaScript, deixar as telas funcionando em todos os tamanhos de dispositivos, etc, enquanto o Back-End precisará de uma linguagem de programação e um banco de dados, podendo o Back-End ser um pouco mais amigável para alguns iniciantes, principalmente os que tem boa lógica de programação e/ou aqueles que não se dão muito bem com as partes mais visuais de um sistema.

Além disso, hoje em dia ainda é muito comum que empresas paguem salários maiores para desenvolvedores Back-End, principalmente por sua alta responsabilidade com os dados da aplicação.

Full Stack

Pessoa Trabalhando

Necessidades

O NINJA! O Full Stack é o desenvolvedor que faz tanto Front quanto Back. Então tudo o que foi dito aqui são necessidades para que alguém seja considerado um verdadeiro Full Stack.

Mas deve-se tomar cuidado! Há desenvolvedores Back-End que só por saberem se virar com JavaScript e um pouco de CSS se consideram Full Stack (precisa mais que isso para ser Front), do mesmo jeito que muitos Front-Ends, por saberem como fazer uma API e salvar algo no Banco de Dados (precisa mais que isso para ser back), já se consideram Full Stack também.

Um verdadeiro Full Stack deve estar bem familiarizado com ambos os lados. Por esses motivos, muitos acreditam que um verdadeiro Full Stack é algo que não existe, como um ser mitológico. Porém, isto não te impede de ser Full Stack.

Há empresas que apenas esperam que uma mesma pessoa pegue dados do banco e exiba em uma tela, e depois pegue os dados da tela e salve no banco. Conseguir fazer o fluxo completo com qualidade já pode qualificar este profissional como Full Stack, mas é preciso se dedicar muito para fazer tudo isso com qualidade.

Você pode aprender mais sobre isso com o nosso curso MEAN 2 – JavaScript FullStack

MEAN 2 - JavaScript Full Stack
Curso de MEAN 2 - JavaScript Full Stack
CONHEÇA O CURSO

Desvantagens

As tecnologias estão sempre evoluindo, e é muito difícil se manter atualizado em várias coisas ao mesmo tempo, o que seria o ideal para quem quer se manter como Front e Back ao mesmo tempo.

Não confunda Full Stack (sabe bem Front e Back) com um generalista (sabe um pouco de tudo).

Vantagens

Possibilidade de enviar currículos para mais lugares e poder encontrar empresas que ofereçam salários maiores. Além disso, pode se oferecer para trabalhar apenas como Back ou apenas como Front.

Conclusão

Cada caminho possui vantagens e desvantagens. O melhor é analisar sua realidade, necessidade e objetivos para fazer a melhor escolha. E não se preocupe em ter que escolher certo de primeira, pois se não gostar da sua escoha sempre haverá tempo de recomeçar com algo diferente.

Confira também nosso Post sobre Ser especialista em algo ou saber um pouco de tudo?

Java, C# ou PHP: qual linguagem escolher?

Ah, essa é com certeza uma dúvida que qualquer profissional da área de desenvolvimento já passou pelo menos uma vez na vida. Ela é super recorrente para quem está começando. Afinal de contas, qual linguagem estudar e escolher para entrar no mercado de trabalho?

De fato, fazer esse tipo de análise pode ser um processo complexo, além de ser algo completamente subjetivo e que também sofre a influência de muitos fatores externos. Mas, independente disso, chega um momento onde nós precisamos escolher uma linguagem para nos dedicarmos. E como podemos ter certeza de que fizemos a escolha correta? Como saber se eu escolhi a linguagem certa para entrar no mercado de trabalho?

Vamos fazer uma análise sobre alguns pontos interessantes. Neste artigo, compararemos três das mais populares linguagens de programação – que no caso são Java, C# e PHP – e as analisaremos através de alguns tópicos: presença e adoção no mercado, interoperabilidade, adequação à execução no Windows, “estilo” da linguagem, presença na plataforma web e curva de aprendizagem.

Ah, antes de qualquer coisa: não estamos defendendo uma linguagem em detrimento das outras. Todas as análises nesse artigo são puramente baseadas em números e na minha vivência no mercado de trabalho. Sinta-se à vontade para utilizar estes números para auxiliar em sua decisão. 😉

Presença e utilização no mercado de trabalho

Essa é a primeira análise que passa pela nossa cabeça quando precisamos decidir entre um grupo de linguagens aquela que queremos nos dedicar.

Para isso, temos dois conjuntos de números de dois sites diferentes: os números do Tiobe Index e os números do Institute of Electrical and Electronics Engineers (“carinhosamente” conhecido como IEEE).
Começando pelo ranking Tiobe, temos o seguinte gráfico:

No gráfico acima, vemos que a linguagem mais utilizada no mundo atualmente é o Java. O C# fica em quarto lugar, enquanto o PHP fica em sétimo lugar.

Se pegarmos os dados da IEEE, não temos uma discrepância muito grande:

Pela IEEE, o Java também é a linguagem mais utilizada do mundo. O C# aqui fica em quinto lugar, enquanto o PHP fica em sexto.

A partir desses números vemos que o Java tem mais mercado de trabalho de maneira geral, seguido pelo C# e pelo PHP, respectivamente.

O complicado destas análises é que elas são puramente quantitativas, desprezando aspectos qualitativos como região e empregabilidade. O caso do Java ilustra bem isso: de fato, o Java é mais utilizado em linhas gerais do que o C# e o PHP, o que consequentemente aumenta a disponibilidade de vagas para profissionais Java. Porém, justamente pelo fato de o Java ser uma linguagem muito popular, isso causa uma certa “saturação” no mercado de trabalho: existem muitas vagas para se trabalhar com Java, mas a quantidade de profissionais que são adeptos da plataforma da Oracle também é grande. Também existem muitas vagas para C# e PHP (muitas mesmo), mas a saturação do mercado nestes dois últimos casos é relativamente inferior, se compararmos diretamente com o Java.

Interoperabilidade entre plataformas

Hoje, esse é um ponto muito importante, afinal, ninguém quer mais saber de escrever código específico para cada plataforma. Os desenvolvedores buscam escrever um único código que vai poder rodar nos mais variados sistemas operacionais e dispositivos.

Sob esse ponto de vista, o Java e o PHP saem na frente. Ambos já foram concebidos para serem multiplataforma desde o início. Esse ponto se aplica mais ainda ao Java, já que este foi (e ainda é) um de seus principais apelos técnicos na comunidade.

O C# demorou um pouco mais para entrar nessa onda do multiplataforma. A Microsoft, com seu mind set antigo, sempre fechava seus produtos para sua própria plataforma, o que inclui o .NET Framework e, consequentemente, o C#. O resultado antigamente era que, embora o C# também fosse concebido desde o início para ser multiplataforma, ele ficasse atrelado aos produtos Microsoft, principalmente por causa do .NET Framework. Até era possível executar o C# em ambientes não-Windows, mas isso ocorria através de ports da comunidade (no caso específico do C# e do .NET, estamos falando do Mono). Infelizmente, esses ports no caso do .NET sempre estavam atrasados em relação às versões mais novas do framework.

Java - Fundamentos
Curso de Java - Fundamentos
CONHEÇA O CURSO

Hoje essa realidade mudou completamente. A Microsoft abraçou o conceito de ser multiplataforma, além de se tornar uma das maiores adeptas do open source. Mantendo distância da discussão se essa mudança de atitude visa unicamente lucro ou não, isso foi fantástico para o .NET Framework e para o C# consequentemente e tecnicamente falando. Hoje, nós podemos (finalmente) rodar aplicações .NET em ambientes Windows, Linux e até MacOS/iOS utilizando o .NET Core. Porém, é fato que o C# saiu atrás com relação a este ponto se comparado ao PHP e ao Java.

Adequação à utilização do Windows

Pode parecer contraditório, principalmente com relação ao tópico anterior, mas é fato que o Windows é o sistema operacional mais utilizado no mundo em termos quantitativos. Sendo assim, é importante que uma linguagem de programação ofereça um bom suporte ao sistema operacional da Microsoft, tanto em termos da linguagem em si, como em ferramental de desenvolvimento (principalmente SDKs e IDEs).

Neste tópico, as três linguagens até se equivalem. Obviamente, há uma pequena vantagem para o C#, já que estamos falando de produtos Microsoft. Entre as três, talvez a que ofereça o suporte mais limitado seja o PHP, mas é algo tão irrisório que podemos considerar as linguagens muito similares nesse tópico.

Características da linguagem

As três linguagens possuem características muito bem definidas com relação ao paradigma adotado.

As três linguagens possuem uma forte orientação imperativa por essência. Isso quer dizer que as três “se preocupam” com a maneira que alguma massa de dados deve se processada, e não com a massa de dados em si.

As três linguagens também trabalham em cima do conceito de mudança de estados. O código criado com estas linguagens funciona o tempo inteiro em cima de variáveis que têm seus valores alterados durante a execução do algoritmo. As decisões também são tomadas em cima dos valores destas variáveis.

As três linguagens também suportam formalmente o paradigma orientado a objetos. Nesse ponto, o PHP pode sair um pouco atrás do Java e do C#, já que a adoção completa de conceitos formais de orientação a objetos só ocorreu mesmo a partir da versão 5 em diante, enquanto o Java e o C# sempre tiveram forte vocação orientada a objetos desde as primeiras versões. Mas, considerando-se as últimas versões de cada linguagem, todas elas se equivalem nesse aspecto.

As coisas começam a mudar de figura quando começamos a falar principalmente sobre o paradigma funcional. Vamos relembrar o gráfico do ranking Tiobe:

Veja que existe claramente uma tendência de queda nas quatro primeiras linguagens. E, mais ainda: podemos ver uma forte tendência crescimento em linguagens de outro nicho, como o JavaScript. Isso está acontecendo porque, atualmente, o mercado está começando a adotar linguagens fundamentadas no paradigma funcional de maneira mais efetiva. Como elas trabalham em cima do processamento de informações e não em cima de transições de estados, linguagens funcionais têm a tendência de facilitar processos como os de escalabilidade, principalmente quando falamos sobre escalabilidade vertical.

C# (C Sharp) Básico
Curso de C# (C Sharp) Básico
CONHEÇA O CURSO

Falando sobre o aspecto funcional, o C# sai na frente do Java e do PHP. A versão mais recente (o C# 7) já adota estruturas claramente funcionais (como pattern matching), além de todo o ferramental fornecido pelo LINQ (que possui claramente uma orientação funcional). O Java começou a pouco a se movimentar mais no sentido de se tornar mais funcional (muito também para quebrar a verbosidade característica da linguagem), enquanto o PHP tem se movimentado no sentido de se tornar mais formal com relação aos conceitos OO. Isso, em tese, torna o C# mais preparado para lidar com essa nova realidade funcional.

Ah, antes de qualquer coisa: não estou dizendo que é impossível programarmos de maneira funcional com PHP ou Java. Aqui, digo de recursos “naturais” à linguagem. 😉

Presença na plataforma Web

Obs.: não critique a presença do IE na imagem acima… Ele teve (e ainda tem) sua importância, haha 😛

Atualmente, uma linguagem que não suporte o desenvolvimento para Web de maneira satisfatória certamente não será tão bem vista no mercado de trabalho, já que existe uma fortíssima tendência na adoção de ferramentas baseadas (principalmente) na web, em cloud e em dispositivos móveis. Novamente, as três linguagens se equivalem nesse sentido, já que todas elas suportam desenvolvimento Web.

Porém, o PHP já possui essa vertente Web muito mais acentuada do que o C# e o Java desde o início. Aliás, o PHP foi criado para ser uma linguagem web desde o início. E, mais: cerca de 80% da web roda em cima do PHP. Inclusive, ferramentas famosas para criação de páginas de conteúdo, como o WordPress, Drupal etc são construídos com o PHP.

Além da questão da linguagem em si, também devemos considerar todo o mecanismo necessário para que elas possam ser executadas na plataforma Web. Java e C# são conhecidos por necessitarem de stacks relativamente pesadas para conseguirem prover esse suporte, enquanto PHP é conhecido na comunidade por justamente necessitar de uma stack muito mais leve nesse sentido.

Agora, não se esqueça desse aspecto multi-plataforma que o Java e o C# possuem. Se voltarmos para aquele gráfico da IEEE, ele fica evidente:

Veja que o Java e o C# suportam desenvolvimento web, mobile e desktop de maneira “natural”, enquanto o PHP suporta somente o desenvolvimento web. Esse também é um aspecto que precisamos levar em consideração.

Curva de aprendizado

Esse talvez seja um aspecto muito subjetivo para ser discutido, pois cada pessoa possui uma velocidade e afinidade de aprendizado diferente das outras pessoas. Porém, podemos comentar sobre o material de apoio para aprendizagem.

Novamente, as três linguagens se equivalem nesse sentido. Tanto Java, quanto C# e PHP, possuem documentações oficiais excelentes, tanto em sua versão original (em inglês) como em sua versão traduzida. As três linguagens também têm uma comunidade grande e participativa. Também é fácil encontrar materiais e cursos para estudo para cada uma das três linguagens. Inclusive, temos cursos muito legais de Java, C# e PHP aqui no TreinaWeb. Sendo assim, é relativamente fácil aprender qualquer uma delas.

E a grande vencedora é…

Depois de toda essa conversa, você deve estar curioso para saber qual linguagem é a grande vencedora. Mas o grande fato é que não temos uma linguagem vencedora!

PHP Básico
Curso de PHP Básico
CONHEÇA O CURSO

Java, C# e PHP são linguagens relativamente parecidas ao mesmo tempo que são completamente diferentes. As três possuem a mesma vertente (são linguagens originalmente imperativas e orientadas a objeto) e possuem muito material disponível para aprendizagem. As três também suportam desenvolvimento de aplicações para web e possuem representatividade relevante no mercado de trabalho.

Aqui, entram em cena aspectos com uma análise mais complicada. A região onde você pretende atuar é um ponto que pode influenciar muito. Há regiões e países onde uma destas linguagens pode ser mais forte. Há mercados onde as três se equivalem em termos de oportunidades. Tudo vai depender de quais são seus objetivos profissionais e pessoais. A afinidade com uma linguagem em detrimento das outras também é um aspecto muito importante a ser considerado.

Agora, um ponto é consenso e fato: você pode escolher tranquilamente Java, C# ou PHP. Existe um excelente mercado para todas elas. E mais importante ainda:

Não se prenda à linguagem em si. Quase todas são muito parecidas. Se preocupe com o desenvolvimento de sua lógica e com conceitos essenciais, que são exatamente os mesmos em qualquer uma delas.

Se você absorver conceitos essenciais (como lógica de programação, boas práticas de codificação, funcionamento do protocolo HTTP, etc.), você conseguirá desenvolver com qualquer uma das três linguagens! 😉

7 aspectos que revelam o futuro próspero de um desenvolvedor web

São muitas as dúvidas que envolvem a escolha de uma carreira profissional e os estudantes de tecnologia acabam ficando confusos em relação ao futuro.

Por isso, nós do TreinaWeb resolvemos divulgar algumas informações sobre uma das principais tendências de carreira da modernidade: a carreira de Desenvolvedor Web.

Certamente a carreira para desenvolvedores Web não poderia estar em um momento melhor em 2017. Em uma pesquisa feita pela Forbes em conjunto com a Robert Half, uma empresa especialista em recrutamento dos Estados Unidos, a profissão de desenvolvedor Web está entre as 10 profissões mais promissoras de 2017, com um crescimento de 5,2%:

Certamente, o profissional que optar por seguir este caminho terá um futuro garantido em termos financeiros, já que a demanda por desenvolvedores Web é alta e tende a aumentar cada vez mais. Isso é justificado porque todas as organizações, em algum momento, precisarão de um desenvolvedor web, seja para manter projetos institucionais ou para criar aplicações internas e externas para apoio ao negócio.

E não são somente as empresas cujo core business é tecnologia da informação que necessitam de desenvolvedores web: a demanda por profissionais de desenvolvimento web em áreas como publicidade e marketing só vem aumentando ano após ano.

Profissionais da área de desenvolvimento web não tem só a ganhar em termos de oferta de trabalho e salários, mas também têm a ganhar em qualidade de vida, pois a profissão permite muita flexibilidade de tempo e espaço. Hoje, é perfeitamente viável e possível para um desenvolvedor web trabalhar do conforto de sua casa para uma empresa que às vezes nem fica no Brasil.

Neste artigo abordaremos 7 aspectos que revelam essa tendência positiva aos futuros desenvolvedores web.

  1. O mundo segue uma tendência digital
  2. As tecnologias e as linguagens estão mudando rapidamente
  3. Alta demanda por profissionais qualificados
  4. Diversas possibilidades de atuação: funcionário, prestador de serviços ou empreendedor digital
  5. Alta probabilidade de valorização individual
  6. Ótima remuneração financeira
  7. Alta probabilidade de qualidade de vida elevada

Boa leitura e não esqueça de comentar no final. =)

Ahh, e depois de ler o artigo, sugerimos que você confira a exclusiva Formação de Desenvolvedor Web Iniciante que preparamos pra você.

1. O mundo segue uma tendência digital

É fácil perceber: praticamente todas as empresas, desde as pequenas até as grandes, estão fazendo uso da tecnologia digital para otimizar os seus negócios em vários âmbitos, como por exemplo, propaganda e marketing, automatização de processos, comunicação interna, entre muitas outras aplicabilidades.

Os smartphones mostraram que vieram para ficar e já são a tela preferida de praticamente todos as pessoas. Por isso, algumas empresas se adaptaram e passaram a oferecer diversos serviços e comodidades por meio dessas telinhas. Isso é comprovado por uma pesquisa do IBGE que mostra que, entre todas as pessoas que acessam a internet regularmente no Brasil, 92,1% fazem esse acesso pelo celular, enquanto 70,1% fazem esse acesso pelos computadores tradicionais. Pelas diferenças nas porcentagens de acesso, já podemos perceber que uma parte considerável da população utiliza os smartphones como forma primária e única para acesso à internet e, consequentemente, para consumo de conteúdo, entretenimento, comunicação e negócios.

Desenvolvedor Java Web Júnior
Formação: Desenvolvedor Java Web Júnior
A formação Desenvolvedor Java Web nível Júnior da TreinaWeb tem como objetivo a introdução à tecnologias web que são utilizadas em conjunto com o Java para a criação de aplicações e páginas web. A formação aborda as estruturas básicas para o desenvolvimento web: o HTML 5, o CSS 3 e o JavaScript. Em seguida, são abordadas as estruturas essenciais para o desenvolvimento de aplicações web com o Java em conjunto com o HTML, o CSS e o JavaScript, como o Java Server Pages (JSP), a JSTL (Java Server Pages Standard Library) e a EL (Expression Language). No fim, um dos frameworks para desenvolvimento web com Java mais utilizados no meio corporativo é apresentado: o Struts2.
CONHEÇA A FORMAÇÃO

No entanto, a maioria das empresas ainda não está fazendo uso do mobile e sobram oportunidades para desenvolvedores web auxiliarem nesta empreitada, seja como funcionário fixo ou até mesmo como prestador de serviços.

Uma coisa é fato: O mundo está se tornando extremamente digital. As empresas precisam se adequar a essa realidade, se fazendo cada vez mais presentes na internet e nos smartphones… E isso é algo extremamente positivo para o profissional que decidir seguir uma carreira nesta área.

2. As tecnologias e linguagens estão mudando rapidamente

O que funciona perfeitamente e é moda hoje pode se tornar obsoleto amanhã. Este é o cenário atual, pois o mundo digital está evoluindo com muita rapidez e com isso há a necessidade de novas tecnologias e recursos.

Isso pode parecer ruim, mas na verdade, esse avanço rápido garante uma oxigenação constante de vagas profissionais, pois ao mesmo tempo em que surgem novas vagas para os profissionais mais antenados e atualizados com as tecnologias novas, há também oportunidades de atender empresas que estão em migração ou até mesmo aquelas que optam por continuar usando tecnologias mais antigas.

Outro ponto importantíssimo é que os ambientes web e mobile já são os principais, tomando frente em relação às aplicações desktop.

Está curtindo a ideia de se tornar um desenvolvedor web? Então não deixe de conferir a nossa exclusiva Formação de Desenvolvedor Web Iniciante que preparamos pra você.

3. Alta demanda por profissionais qualificados

Assim como em qualquer área, os melhores se destacam. E no mundo digital, muitas vezes os melhores não necessariamente são os mais experientes. Muitas organizações estão valorizando os mais atualizados, ou seja, aqueles que acompanham e correm para aprender as novidades.

Acontece que muitas empresas estão buscando profissionais com perfil de aprendiz, ou seja, dispostos a aprender e apaixonados pela resolução de problemas.

Esses perfis de profissionais na maioria das vezes com pouca experiência, estão sendo considerados muito importantes pelas empresas, pois para as organizações não compensa manter funcionários que estão parados no tempo e não acompanham as tendências.

Por isso, existem muitas oportunidades para aqueles que estão com garra e vontade de aprender.

4. Diversas possibilidades de atuação: funcionário, prestador de serviços ou empreendedor digital

O profissional que decidir se tornar um desenvolvedor web é privilegiado, pois pode trabalhar de diversas formas dependendo das suas preferências ou da sua “visão de evolução na carreira”.

Para alguns, se manter numa empresa muitos anos é o cenário preferido, pois garante uma boa estabilidade com ótima remuneração, além de se tornar cada vez mais uma peça chave na organização.

Já para outros, ser funcionário é apenas um ponto de partida para que em seguida se possa montar seu próprio negócio de prestação de serviços na área, podendo ganhar muito mais que um funcionário. No entanto, esta empreitada envolve muito mais do que conhecimento técnico e exigirá do profissional um espirito empreendedor, muita resiliência e visão de negócios.

Há também o que é considerado “sonho” para muitos: aliar a tecnologia ao empreendedorismo e conseguir criar sua própria aplicação, software ou produto digital e assim ter a possibilidade de maiores rendimentos devido a escalabilidade dos negócios digitais e também, se bem administrado, uma qualidade de vida superior.

São diversas ramificações de carreira que o desenvolvedor web pode seguir e, portanto, um grande diferencial desta área.

Como o mercado para desenvolvedores web está em um momento excelente pelos motivos destacados anteriormente, as três possibilidades podem ser atingidas por quem trabalha com linguagens web.

5. Alta probabilidade de valorização individual

O que queremos dizer com isso é que independentemente se o desenvolvedor web trabalha numa empresa, é prestador de serviço ou tem seu próprio negócio digital ele certamente poderá trabalhar o seu “nome” ao longo do tempo.

Assim como os advogados e médicos tem uma alta valorização por seu nome, o desenvolvedor web poderá trabalhar o seu portfolio e seu marketing pessoal ao longo de sua carreira, conquistando assim um ativo muito valioso e que perdura no tempo: a valorização do seu nome.

É claro que essa tarefa não é simples e nem rápida, mas o profissional que se atentar às suas entregas e que sempre procurar divulgar e tornar esses méritos públicos, seja em seu blog, LinkedIn ou um site de portfolio, certamente conquistará essa reputação.

Uma boa pitada de networking a partir da participação em eventos, fóruns na internet e sites gringos também garantem mais visibilidade do seu nome e do seu trabalho.

6. Ótima remuneração financeira

Os profissionais de TI em geral estão sendo muito mais valorizados do que antigamente, pois agora, mais do que nunca, a tecnologia é parte essencial dos negócios.

Isso significa que os desenvolvedores web deixam de ser vistos como “custo” pelas empresas e passam a ser peças-chave para o sucesso financeiro das organizações.

Outro ponto importante é que a evolução digital está demandando muitos investimentos por parte das empresas e por isso há boas oportunidades com ótima remuneração, pois os bons profissionais estão escassos.

O site LoveMondays revelou que um desenvolvedor web júnior ganha em média R$ 2.360,00 no Brasil. Um desenvolvedor web sênior, segundo o mesmo site, ganha em média R$ 6.113,00.

Dependendo de fatores como o desenvolvimento da região ou cidade de atuação e do tamanho da empresa, além da qualificação e experiência do profissional, os salários podem facilmente ultrapassar essas médias. No próprio LoveMondays podemos encontrar empresas que oferecem um salário de mais de R$ 12.000,00 para desenvolvedores web.

Desenvolvedor Front-end Júnior
Formação: Desenvolvedor Front-end Júnior
HTML, CSS e JavaScript são a base de toda a web. Tudo o que você está vendo aqui agora depende deste tripé. Nesta formação vamos iniciar aprendendo lógica. Teremos uma introdução ao HTML e CSS e conheceremos a linguagem JavaScript.
CONHEÇA A FORMAÇÃO

E tem mais ainda: a média deixa de ser parâmetro quando o profissional se torna um especialista e vai crescendo ao longo da carreira colecionando cases de sucesso. Profissionais que conseguem um nome forte na comunidade e que se apresentem como profundos conhecedores das tecnologias web podem facilmente ganhar rendimentos mais superiores ainda às médias apresentadas.

Assim como em qualquer outra carreira, o profissional deve procurar se diferenciar e sempre estar atento a caminhos diferenciados que podem garantir remunerações complementares ou até mesmo remunerações oriundas do seu próprio negócio.

Realmente vale a pena, não acha? Então, confira a Formação de Desenvolvedor Web Iniciante que preparamos pra você.

7. Alta probabilidade de qualidade de vida elevada

Esse é um dos aspectos preferidos dos desenvolvedores web, pois a carreira permite uma boa flexibilidade de tempo e espaço mesmo quando se trata de empregos convencionais dentro das empresas.

A IBM por exemplo já tem 20% do seu quadro de funcionários em modelo remoto, algo que garante mais conforto e qualidade de vida.

É uma tendência mundial e as empresas estão percebendo que resultado é alcançar objetivos e metas e não cumprir horas em regime fechado.

Por serem altamente tecnológicos e dependentes apenas de internet, os desenvolvedores web têm alta probabilidade de conquistarem empregos diferenciados pelo modelo remoto e assim terem uma vida melhor.

Sendo funcionário ou não, o modelo remoto permite uma vida mais repleta de viagens, sono de qualidade, exploração de novos ambientes como coworkings e maior probabilidade de networking.

O mais interessante é que contando com a mobilidade geográfica, a remuneração de um desenvolvedor web pode passar a valer de 1 a 5x mais dependendo do país em que ele decidir morar ou passar um tempo.

Há países na América do Sul em que o custo de vida é baixíssimo!

Assim, dentre muitas outras carreiras e ramificações da área de tecnologia da informação, os profissionais que optarem pela jornada como desenvolvedor web certamente encontrarão um “lugar ao sol”.

Esperamos que tenha gostado!

Você conhece o GraphQL e como ele pode te ajudar?

Olá, Web Developers!

Muitos aqui já devem ter ouvido falar desse tal GraphQL há algum tempo, mas sem saber ainda o que ele é e por que deveríamos cogitá-lo na nossa stack de desenvolvimento. Talvez ele seja uma boa pedida para o seu projeto.

Vamos entendê-lo um pouco mais?

Google Chrome Developer Tools
Curso de Google Chrome Developer Tools
CONHEÇA O CURSO

Como tudo começou

O GraphQL começou no Facebook. Imagine que para exibir uma lista de posts era necessário o acesso a uma API, e dentro de cada post tinha que vir uma lista dos usuários que curtiram. Dentro de cada objeto de usuário tem que vir o nome, foto do perfil, link para o perfil, se o usuário já é seu amigo, etc.

Pelo menos é isso que nós podemos ver quando acessamos o Facebook pelo navegador. Mas quando estamos no aplicativo mobile, não temos todas essas informações do usuário. O que temos é uma lista de usuários que curtiram e o link para seu perfil.

Poderíamos então evitar que o servidor nos envie dados que não vamos precisar, deixando o nosso app mobile mais rápido e economizando dados (bom para quem está no 3G ou 4G).

Mas, sério, não é legal criar uma nova API apenas para enviar uma estrutura levemente diferente, como “mobile/posts”.

É muito comum também que, em sistemas maiores, os dados fiquem em diferentes bases de dados. Podemos, por exemplo, ter dados relacionais no MySQL, guardar certas informações em forma de documentos no MongoDB e ter pequenos dados para consultas rápidas no Redis.

É aqui que começamos a ver que teremos um bom trabalho: juntar dados de bancos diferentes e enviar uma estrutura diferente para cada tipo de aplicação.

O GraphQL entra em cena

GraphQL

Ao invés de ter que ficar criando uma API para cada estrutura diferente de dados e/ou ficar manualmente fazendo consultas para cada banco e depois juntar os dados, que tal simplesmente dizer a “alguém” o que você precisa?

Para fazermos uma consulta no GraphQL, teríamos algo parecido com isso:

query {
   posts
}

Declaramos uma consulta com query e indicamos que queremos um campo com o nome posts.

Também podemos criar consultas que tenham mais níveis, como:

query {
   posts {
      likes
      comments
      shares
   }
}

É possível, ainda, passar parâmetros, como:

query {
   posts (userId: 157321){
      likes
      comments
      shares
   }
}

Dúvidas comuns

Não gosto de ferramentas do Facebook

O GraphQL é mais uma especificação. Então você pode usar outras ferramentas que fazem o mesmo e que não sejam do Facebook.

Uma ferramenta parecida, que visa resolver o mesmo problema, é o Falcor, desenvolvida pela Netflix.

Se eu for trabalhar com GraphQL, terei que usar React?

Não. O GraphQL pode ser usado com qualquer framework, biblioteca ou linguagem de programação.

A ideia do cliente dizer o que quer não me parece segura…

Fique tranquilo. O GraphQL tem uma coisa chamada resolvers. Com eles você pode cuidar da segurança de seus dados, permitindo ou não que determinado usuário acesse-os.

Ainda acho que não preciso disso. Minha aplicação já está muito boa com as APIs existentes.

Se você acredita que não tem problema e que a sua solução hoje já funciona perfeitamente, ótimo.

A ideia do GraphQL é ajudar a solucionar determinado problema. Se você não tem esse problema em sua aplicação, realmente você não precisa gastar tempo implementando uma ferramenta a mais.

Concluindo

O GraphQL é uma linguagem de consulta que facilita o nosso trabalho na hora de fazer requisições, basta que indiquemos os campos que queremos sem que nos preocupemos de onde os dados estão vindo.

Caso queira fazer alguns testes, acesse o GitHub GraphQL.

Tente executar, por exemplo, a seguinte query:

query {
  repository(owner: "graphql", name: "graphql-js"){
    name
    description
  }
}

O que achou do GraphQL? Já teve algum problema que poderia ter sido resolvido com ele? Acha que precisará dele em um novo projeto? Compartilhe com a gente aí nos comentários!

React - Dominando Componentes
Curso de React - Dominando Componentes
CONHEÇA O CURSO

O que é front-end e back-end?

Apesar de suas diferenças, os desenvolvedores de front-end e back-end se completam na maioria dos casos e, principalmente, quando o assunto é desenvolvimento web. Mas, você sabe a diferença entre as duas áreas?

Front-end

O desenvolvedor front-end é responsável por “dar vida” à interface. Trabalha com a parte da aplicação que interage diretamente com o usuário. Por isso, é importante que esse desenvolvedor também se preocupe com a experiência do usuário.

Na parte de estudo, este profissional foca em HTML (linguagem de marcação), CSS (linguagem de estilo) e JavaScript (linguagem de script/programação).

HTML5 e CSS3 - Desenvolvimento web Básico
Curso de HTML5 e CSS3 - Desenvolvimento web Básico
CONHEÇA O CURSO
JavaScript Básico
Curso de JavaScript Básico
CONHEÇA O CURSO

Para CSS e JavaScript há bibliotecas e frameworks que alguns profissionais se especializam como: Angular, VueJS, Bootstrap, Sass, etc.

Vue.js - Criação de interfaces web
Curso de Vue.js - Criação de interfaces web
CONHEÇA O CURSO
AngularJS - Criação de interfaces web
Curso de AngularJS - Criação de interfaces web
CONHEÇA O CURSO
Bootstrap 4 - Básico
Curso de Bootstrap 4 - Básico
CONHEÇA O CURSO

Nos últimos anos, esta área também viu a introdução de outras linguagens e pseudo-linguagens, como TypeScript e CoffeeScript, que podem ser utilizadas de acordo com as necessidades da aplicação.

Caso esteja interessado em ingressar nesta área, um estudo complementar como teoria das cores e design gráfico, podem ser diferenciais.

É comum alguns profissionais de front-end trabalharem mais com a parte “criativa” e “artística” da aplicação. Assim como também há os que possuem um perfil mais voltado ao back-end, mesmo atuando como front-end. Esses possuem mais familiaridade com programação e suas nuances. Um tipo de perfil não invalida o outro.

Back-end

Como o nome sugere, o desenvolvedor back-end trabalha na parte de “trás” da aplicação. Ele é o responsável, em termos gerais, pela implementação da regra de negócio.

Em uma aplicação web, este desenvolvedor, quando focado, não toca na parte visual da aplicação. Por lidar com a regra de negócio, as vezes um programador de sistemas, como de aplicações comerciais e até científicas, pode ser chamado de desenvolvedor back-end. E geralmente, nessas aplicações, este desenvolvedor trabalha um pouco com a parte visual. Por isso, para este artigo, o desenvolvedor back-end levado em conta, é o desenvolvedor de aplicações web.

Quando falamos de back-end em desenvolvimento web, nos deparamos com várias linguagens, como Go, Clojure, C#, PHP, Java, Python, Ruby, entre outras. Cada uma possui vantagens e desvantagens em relação ao uso no desenvolvimento web, bem como no mercado de trabalho.

Java Básico
Curso de Java Básico
CONHEÇA O CURSO
C# (C Sharp) Básico
Curso de C# (C Sharp) Básico
CONHEÇA O CURSO
PHP Básico
Curso de PHP Básico
CONHEÇA O CURSO
Ruby on Rails Básico
Curso de Ruby on Rails Básico
CONHEÇA O CURSO

Algumas linguagens são mais atuais e com poucos profissionais no mercado. Desta forma, há uma grande demanda por elas (ex: Go e Clojure). Outras são mais tradicionais, fazem parte de um mercado já consolidado e possuem uma grande gama de material de estudo (ex: C#, PHP, Java e Ruby).

Para quem está iniciando, é recomendável focar nas linguagens mais tradicionais, pois o aprendizado será mais completo, dado o número extenso de materiais disponíveis. Isso também facilitará o posicionamento no mercado de trabalho, já que essas linguagens possuem mais oportunidades de emprego disponíveis.

Para que o aprendizado em back-end seja ainda mais completo, é preciso ter conhecimento em banco de dados (ex: MySQL, SQL Server, PostgreSQL, entre outros). Normalmente o banco de dados é escolhido com base no que possuir mais recursos disponíveis na linguagem que será utilizada na aplicação.

Projeto de Banco de dados - Fundamentos
Curso de Projeto de Banco de dados - Fundamentos
CONHEÇA O CURSO
MySQL - Desenvolvedor
Curso de MySQL - Desenvolvedor
CONHEÇA O CURSO
PostgreSQL - Desenvolvedor
Curso de PostgreSQL - Desenvolvedor
CONHEÇA O CURSO
Oracle - Desenvolvedor
Curso de Oracle - Desenvolvedor
CONHEÇA O CURSO

Conclusão

Em resumo, o desenvolvedor front-end trabalha com um foco maior na camada da interface da aplicação que “tocará” o usuário, seja ela de um site, de um programa desktop, ou um de aplicativo móvel. O seu objetivo é oferecer para o usuário a melhor experiência em sua plataforma. Por outro lado, o back-end é o que está por “trás” da aplicação, atuando no que o usuário não pode visualizar. O profissional deste segmento se preocupa com a persistência dos dados, regras de negócio, segurança da informação, performance etc.