Desenvolvimento

Variáveis e constantes na programação

Variáveis e Constantes são conceitos fundamentais para o estudo de lógica de programação, vamos agora entender qual a utilidade de cada uma.

Quando vamos desenvolver um algoritmo precisamos lidar com dados. Eles podem ser do próprio algoritmo ou enviados pelo usuário, sendo necessário manipulá-los para que o objetivo do algoritmo seja alcançado. Neste momento entram as variáveis e constantes, elas representam o “endereço” onde o dado está guardado na memória para que você possa acessar ou alterar esse valor.

Lógica de Programação Completo
Curso de Lógica de Programação Completo
CONHEÇA O CURSO

Variáveis

Uma variável é um nome que definimos para armazenar dados de forma simples. O valor de uma variável pode ser alterado no andamento do algoritmo, por isso o nome de variável.

Vamos pensar em um exemplo onde precisamos fazer um algoritmo que some dois números, portanto podemos representar da seguinte forma:

algoritmo
declare inteiro num1 = 3.
declare inteiro num2 = 8.
declare inteiro soma;

soma = num1 + num2;

exibir soma;

Para facilitar o entendimento podemos demonstrar o algoritmo em um fluxograma:
Fluxograma do algoritmo

Em relação ao exemplo acima, perceba que na variável num1 adicionamos o valor numérico 3 e na variável num2 adicionamos o valor numérico 8, por fim na variável soma adicionamos o resultado do cálculo de soma entre num1 e num2. Desta forma cada variável é representada por seu nome e guardará os valores que são atribuídos a ela, permitindo que uma variável seja o resultado de uma operação entre outras variáveis.

O exemplo acima aplicado na linguagem de programação C ficará da seguinte forma:

void main() {
    int num1 = 3;
    int num2 = 8;
    int soma;
    soma = num1 + num2;
    printf("A soma do número 1 com o número 2 é %d", soma);
}

Ao executar ele retorna o valor da soma:

Soma de variáveis em C

Obs: exemplo utilizando a linguagem C, porém o conceito do uso de variáveis são os mesmos para quaisquer linguagens, alterando somente a sintaxe particular de cada linguagem.

Lógica Orientada a Objetos Completo
Curso de Lógica Orientada a Objetos Completo
CONHEÇA O CURSO

Alterando o valor das variáveis

Vale ressaltar que as variáveis levam este nome justamente porque podem ter o seu valor alterado conforme a necessidade do algoritmo, se após a soma dos números 1 e 2 fosse necessário efetuar a troca do valor da variável num1 para 10, podemos prosseguir com o algoritmo da seguinte forma:

algoritmo
declare inteiro num1 = 3;
declare inteiro num2 = 8;
declare inteiro soma;

soma = num1 + num2;

exibir soma;

num1 = 10;
soma = num1 + num2;

exibir soma;

Para facilitar o entendimento, o algoritmo acima pode ser representado pelo seguinte fluxograma:
Fluxograma do algoritmo atualizado

Este novo algoritmo em C ficará da seguinte forma:

void main()
    {
    int num1 = 3;
    int num2 = 8;
    int soma;

    soma = num1 + num2;

    printf("A soma do número 1 com o número 2 é %d", soma);

    num1 = 10;
    soma = num1 + num2;

    printf("\nA soma do número 1 com o número 2 é %d", soma);
}

O retorno esperado será conforme abaixo:
Soma de variáveis

No retorno esperado é possível verificar que no primeiro momento o resultado da operação foi o número 11, porém depois de alterar o valor da variável num1 e consequentemente o da variável soma, no segundo momento o resultado foi a soma com o valor atualizado da variável num1, no caso, 18.

Tipos de variáveis

Ao declarar uma variável nós precisamos informar de qual tipo é aquela variável. Cada linguagem de programação oferece um conjunto de tipos de variáveis, onde os mais comuns são:

  • int: Variável número do tipo inteiro, positivo ou negativo.
  • float: Variável numérica do tipo decimal.
  • double: Variável numérica do tipo decimal de precisão dupla.
  • char: Variável que representa um caractere do tipo texto.
  • string: Variável que representa um conjunto de caracteres do tipo texto.
  • boolean: Variável booleana, ou seja, que pode representar somente dois valores, verdadeiro ou falso.

Uma curiosidade, algumas linguagens trabalham com tipo dinamicamente e outras fazem a inferência do tipo com base no dado definido na sua inicialização. Temos um artigo muito interessante que fala sobre as tipagem nas linguagens de programação que vale bastante a leitura.

Constantes

Ao contrário das variáveis, que podemos alterar o valor conforme a necessidade do algoritmo a ser desenvolvido, as constantes precisam ser inicializadas e não podem ter o seu valor alterado.

Por exemplo, caso seja necessário calcular a área de uma circunferência, podemos adotar o seguinte algoritmo:

algoritmo
declare real área;
declare real raio = 5;
declare constante real pi = 3.14;

area = pi * (raio * raio);

exibir area;

Para facilitar o entendimento o algoritmo acima, ele pode ser representado pelo seguinte fluxograma:
Declaração de constante

Este algoritmo em C ficará da seguinte forma:

void main() {
    float area;
    float raio = 5;
    const float pi = 3.14;

    area = pi * (raio * raio);

    printf("\nA área é de %0.2f", area);
}

Teremos o seguinte retorno:
Retorno área

No caso a constante pi recebeu o valor de 3.14, afinal, de acordo com as leis matemáticas PI é um valor fixo, se por algum motivo o algoritmo tentar mudar o valor de pi, como se pode ver utilizando C, retornará um erro como abaixo:
Erro Constante

Considerações Finais

Lembrando que é importante entender os fundamentos da utilização das variáveis e constantes pois elas terão um papel muito importante nos seus estudos na área de desenvolvimento.

Outro artigo muito importante que indico para você que está começando no mundo da programação é sobre os condicionais e loops, algo essencial para quem está aprendendo lógica de programação.

Projeto de Banco de dados - Fundamentos
Curso de Projeto de Banco de dados - Fundamentos
CONHEÇA O CURSO

Como se tornar um desenvolvedor melhor

Quando trabalhamos com desenvolvimento, é de suma importância estarmos atentos a como estamos como profissionais. Buscar evoluir quanto profissionais é primordial, pois sempre temos o que melhorar, ainda mais na área de TI onde tudo muda rapidamente. Vamos conferir neste artigo algumas dicas de como se tornar um desenvolvedor melhor, para que você possa se aperfeiçoar e, assim, impulsionar a sua carreira.

Domine os fundamentos da computação

Apesar de preferirmos aprender linguagens e outras coisas mais técnicas, é importante se atentar em construir uma base. Ter uma base consolidada é algo básico, mas muitas pessoas acabam “atropelando”, aprendendo superficialmente ou até mesmo pulando essa etapa. Essa base de conceitos, como os conceitos básicos da computação, algoritmos, arquitetura de sistemas, estrutura de dados, etc, vão ser muito importantes na sua carreira. Além de te ajudar na resolução de problemas, você entenderá melhor como cada coisa funciona.

Java - Estrutura de dados - Parte 1
Curso de Java - Estrutura de dados - Parte 1
CONHEÇA O CURSO

Fique antenado nas novidades do mercado

Diante da velocidade com que novas tecnologias surgem, acompanhar as novidades tecnológicas é uma necessidade para todos os profissionais de TI. Novas versões, linguagens de programação, metodologias e uma infinidade de coisas são lançadas a todo momento. Por isso, é importante que os profissionais se mantenham atualizados com as últimas tendências e técnicas específicas em sua área de atuação, ainda que acompanhar essa constante transformação não seja uma tarefa fácil.

Participar de eventos também é uma ótima maneira para conhecer tendências, lançamentos e ainda poder fazer networking. Nesses eventos ainda podemos ter uma perspectiva do mercado e das novidades que estão a caminho. Se você gosta de rede sociais, também dá pra se manter atualizado no mercado, seguindo conexões de empresas e profissionais da área.

Participe da comunidade

Se envolva com a comunidade. Fazer networking é uma ótima maneira de fazer troca de conhecimento e experiência com outros profissionais da área. Se você gosta de falar em público, palestrar sobre algo que você domina também é uma ótima forma de compartilhar conhecimento.

Uma outra opção é contribuir com projetos open source (de código aberto) para colocar em prática seus conhecimentos e ainda interagir com outros profissionais.

Tenha empatia

Mantenha a simplicidade como profissional, saiba ouvir pessoas mais experientes como também os iniciantes. Sempre existe algo para aprender com eles. Outro ponto importante é saber ver outros pontos de vista, para poder debater diante de cada contexto, o que é melhor para aquele momento.

Nunca deixe de estudar

Estudar é algo imprescindível na vida de um desenvolvedor. É fundamental estar disposto a querer aprender e sempre adquirir novos conhecimentos. Mesmo no dia a dia, sempre estamos aprendendo algo, seja corrigindo algum bug ou mexendo com alguma tecnologia nova. Tenha o hábito de sempre aprender algo, separando um tempinho do dia (por mais que seja pouco) para estudar.

Manter uma constância nos estudos é muito importante, por isso, invista em cursos, especializações, etc, sejam eles pagos ou gratuitos, presenciais ou online. Lembre-se que o aprendizado é contínuo.

Essas foram algumas dicas de como se tornar um desenvolvedor melhor. E você, tem mais dicas? Vamos fazer essa troca nos comentários 🙂

Estruturas condicionais e de repetição

Ao iniciar os estudos em programação nos deparamos com as estruturas condicionais e de repetição, que são dois pilares em relação a lógica de programação.

Lógica de Programação Completo
Curso de Lógica de Programação Completo
CONHEÇA O CURSO

Estruturas condicionais simples (SE – IF)

Primeiramente, uma estrutura condicional é baseada em uma condição que se for atendida o algoritmo toma uma decisão. Nós podemos representar uma estrutura condicional conforme o algoritmo abaixo.

SE (a > b) ENTÃO
    Exibir mensagem "o número A é maior que o número B".
FIM SE

Utilizando a Linguagem C, este algoritmo seguirá a seguinte sintaxe:

if (a > b) {
    printf("o número %d maior que o número %d", a, b);
}

Obs: exemplo utilizando a linguagem C, porém o fundamento das estruturas condicionais são os mesmos para quaisquer linguagens, alterando somente a sintaxe particular de cada linguagem.

Note que o código acima representa a seguinte condição: se o número A for maior que o número B, o algoritmo irá entender que a condição é verdadeira e deve exibir a mensagem “o número A é maior que o número B”, se esta condição não for atendida, ou seja, se ela for falsa, o algoritmo não irá tomar nenhuma ação, pois ela não atende a condição.

Para facilitar o entendimento, podemos representar a estrutura condicional acima utilizando um fluxograma:
Estruturas condicionais - simples (Se - IF)

Caso o algoritmo precise tomar uma decisão dependendo da estrutura de condição, nós podemos utilizar a estrutura condicional composta.

Estruturas condicionais composta (SENÃO – ELSE)

A diferença em relação a estrutura condicional simples é que se a condição for falsa nosso algoritmo também irá tomar uma ação neste caso, seguindo o exemplo anterior:

SE (a > b) ENTÃO
    Exibir mensagem "o número A é maior que o número B".
SENÃO
    Exibir mensagem "o número A é menor que o número B".

Utilizando a Linguagem C, esse algoritmo seguirá a seguinte sintaxe:

if (a > b) {
    printf("o número %d é maior que o número %d", a, b);
} else {
    printf("o número %d é menor que o número %d", a, b);
}

Note que o código acima representa a seguinte condição: se o número A for maior que o número B, o algoritmo irá entender que a condição é verdadeira e deve exibir a mensagem “o número A é maior que o número B”, se esta condição não for atendida, ou seja, se ela for falsa.

Diferente do exemplo sobre estrutura condicional simples onde o algoritmo não tomava nenhuma ação, aqui ele toma uma decisão diferente, exibindo a mensagem “o número A é menor que o número B”.

Para facilitar o entendimento, podemos representar a estrutura condicional acima utilizando um fluxograma:
Estruturas Condicionais - Composta (senão - else)

Casos mais complexos podem exigir a utilização de estruturas de repetição também conhecido como loop ou laço de repetição, onde o algoritmo repete uma ação até que ela não seja mais atendida.

Lógica Orientada a Objetos Completo
Curso de Lógica Orientada a Objetos Completo
CONHEÇA O CURSO

Estruturas de repetição

Para situações que será necessário repetir uma tarefa mais de uma vez podemos contar com as estruturas de repetição.

ENQUANTO (While)

Uma das condições que podemos usar é o enquanto, ou seja, enquanto a expressão booleana for verdadeira o algoritmo executa o bloco proposto, por fim é necessário que algo dentro do bloco altere a condição.

Podemos exemplificar o uso do enquanto supondo um algoritmo que retorne o resultado de uma tabuada, onde:

i sendo uma variável inteira de valor 1.

ENQUANTO i ≤ 10
    Exibir "9 x i = (9 * i)"
    Soma i = i + 1;
FIM DA CONDIÇÃO

Utilizando a Linguagem C, o algoritmo seguirá a seguinte sintaxe:

while (i <= 10) {
       printf("9 x %d = %d\n", i, 9 * i);
       i++;
   }

Note que a condição que empregamos no algoritmo é de que a variável i irá repetir o bloco até que o valor dela seja igual a 10. Enquanto isso será exibido a mensagem “9 x i = (9 * i)”, a cada linha executada é somado a variável i o valor 1, essa soma é chamada de iteração. Na maioria das linguagens pode-se referenciar a interação com a sintaxe i++ (variável seguida de dois sinais de mais) ou variável = variável + 1.

Quando i chegar ao valor 11 o algoritmo irá parar de executar o bloco, desta forma o resultado esperado do exemplo acima será:
Exemplo Tabuada

Para facilitar o entendimento, podemos representar a estrutura de repetição acima utilizando um fluxograma:
Estrutura de Repetição - While - For

Outro laço que podemos utilizar é o PARA (for).

PARA (FOR)

A condição PARA tem o mesmo principio que utilizar enquanto (while), porém este recurso é mais utilizado quando se sabe o número de iterações da repetição, como listar os valores de um vetor por exemplo, também vale ressaltar a legibilidade do código mais limpo.

Seguindo o exemplo acima da tabuada, o algoritmo esperado será:

PARA i = 1; i <= 10; i++;
    Exibir "9 x i = (9 * i)"

Utilizando a Linguagem C, o algoritmo seguirá a seguinte sintaxe:

for (int i = 1; i <= 10; i++) {
       printf("9 x %d = %d\n", i, 9 * i);
   }

Note que ao usar o PARA (for) o contador (a variável i) é inicializado e incrementado na própria condição do laço junto a expressão booleana a ser atendida, deixando o código mais limpo e sem a necessidade de criar variáveis adicionais.

No fim o retorno aguardado será o mesmo que do exemplo que utilizamos a do laço enquanto.

Desenvolvedor C# Júnior
Formação: Desenvolvedor C# Júnior
A formação Desenvolvedor C# nível Júnior tem como objetivo fornecer uma introdução ao desenvolvimento com o C# e o .NET Framework da Microsoft. Nesta formação, são abordados tópicos como o desenvolvimento da capacidade analítica, o paradigma orientado a objetos, a preparação do ambiente de desenvolvimento para o .NET Framework e o C# com o Visual Studio e o controle de versão de código através do Git e do GitHub. Alguns aspectos essenciais do C# também são abordados, como a definição de variáveis e operadores lógicos, tipos de dados e conversões de tipos, manipulação de strings, estruturas de controle e estruturas básicas de coleções.
CONHEÇA A FORMAÇÃO

SPA e SSR: quais as diferenças?

Vamos ver neste artigo as diferenças entre SPA e SSR. Mas, primeiramente, precisamos saber o que vem a ser cada uma delas.

SPA

SPA é uma sigla para Single Page Application, ou Aplicação de Página Única. A utilização de SPAs traz uma melhor experiência do usuário através da sensação de navegação entre as páginas de maneira muito mais rápida. Apesar do nome, isso não quer dizer necessariamente que aplicações SPA terão apenas uma única página.

Aplicações SPA são sempre executadas do lado do cliente – no caso, o navegador. O conteúdo de uma aplicação SPA é carregado completamente logo na primeira requisição – incluindo templates e arquivos JavaScript.

Quando novas páginas precisam ser carregadas, não há a necessidade de uma nova requisição para o servidor: estas páginas são carregadas através de rotinas JavaScript, tirando a necessidade de requisições para o servidor para obtenção do novo conteúdo a ser renderizado: a partir da primeira carga da aplicação, toda a interação para carga de conteúdo passa a acontecer exclusivamente do lado do cliente através do JavaScript.

Vantagens

  • É possível prover interações na aplicação sem a necessidade de recarregamento, oferendo uma experiência muito mais fluída para o usuário;

  • Suporte rico e refinado através de frameworks de mercado maduros, como o Angular, o React e o Vue.js;

  • Pode ocasionar “alívio” ao servidor da aplicação, já que não há a necessidade de se realizar uma requisição ao servidor a cada vez que é necessário carregar um novo conteúdo.

Desvantagens

  • Performance imprevisível: podem ocorrer algumas inconsistências justamente pelo deslocamento do esforço de renderização para o cliente: se existir código JavaScript escrito de maneira incorreta, a performance da aplicação pode ser seriamente afetada;

  • Dificuldades no SEO: aplicações que precisem de SEO podem ter problemas se forem desenvolvidas com frameworks SPA. Como em uma SPA você precisa carregar o JavaScript para então fazer requisições, você acaba não tendo conteúdo para ser indexado por motores de busca como o Google: o conteúdo é carregado de maneira dinâmica. Hoje, já existem maneiras de auxiliar o SEO em aplicações SPA, mas ainda assim, esse é um possível ponto de atenção.

Alguns exemplos de frameworks SPA são o Angular, React, Vue.js e Ember. Alguns exemplos de aplicações SPA são o Twitter, o Gmail, o Google Maps e o Trello.

SSR

SSR é a sigla para Server Side Rendering, ou Renderização do Lado do Servidor. O SSR vem para solucionar um pouco dos problemas das aplicações SPAs, tentando manter suas principais vantagens. O SSR inverte o processo de renderização, trazendo uma parte do esforço de renderização de aplicações SPA para o servidor, de maneira similar ao carregamento tradicional.

O SSR pode fornecer aos usuários um carregamento mais eficiente da aplicação, já que parte da renderização é feita no servidor. Além da possibilidade de melhoria da performance, o SSR ajuda a lidar com alguns problemas de SEO (como indexação), já que parte da aplicação ainda é carregada pelo servidor.

Aplicações SSR também são comumente chamadas de universal apps.

Angular - Tópicos avançados
Curso de Angular - Tópicos avançados
CONHEÇA O CURSO

Vantagens

  • Melhoria do processo de indexação: como parte do conteúdo é renderizado no servidor, é possível definir o conteúdo a ser carregado a partir do servidor da aplicação de maneira que este conteúdo colabore com os mecanismos de indexação dos motores de busca;

  • Menor exigência da máquina do cliente, já que parte do esforço de renderização fica ainda no servidor;

  • Melhor performance da aplicação em geral na maioria dos casos, justamente porque parte da aplicação já é pré-renderizada. Isso auxilia a reduzir inclusive incômodos na experiência de usuários de aplicações SSR, como a rápida página em branco (ou flicker) que acontece em uma parte das aplicações SPA (a página fica em branco enquanto o cliente não termina de processar o JavaScript para carregar a aplicação toda);

Desvantagens

  • O TTFB (time to first byte) em aplicações SSR é maior, pois o servidor precisa justamente pré-carregar parte do conteúdo antes de enviar a resposta para o cliente. TTFB é o tempo entre o servidor receber a requisição e enviar o primeiro conteúdo a ser renderizado pelo cliente. Enquanto o TTFB não acontece, o usuário vê a página sendo “carregada” pelo cliente;

  • Um pouco de incômodo dependendo da experiência de carga: como aplicações SSR são pré-renderizadas pelo servidor, assim que o TTFB é concluído, o cliente começa a iniciar imediatamente o processo de renderização, mostrando a aplicação para o usuário. Porém, o usuário só poderá interagir com a aplicação de fato quando o cliente terminar a sua parte da carga da aplicação. Se o processo de carga do lado do cliente for um pouco extenso, isso pode causar uma experiência de usuário estranha;

A maioria dos frameworks SPA modernos oferece também suporte a SSR. É possível utilizar SSR com Vue.js através do Nuxt.js por exemplo, assim como é possível utilizar SSR com React através do Next.js e com o Angular através do Angular Universal.

Quando utilizar um ou outro?

A decisão de utilizar SPA ou SSR vai depender muito dos objetivos da aplicação. Porém, de maneira geral, os seguintes pontos devem ser levados em consideração:

SPA é uma boa opção caso…

  • A página precise oferecer uma experiência de usuário mais rica e fluída;
  • Existirão muitas interações na página com a renderização de conteúdos dinâmicos;
  • A indexação no Google não seja prioridade.

SSR é uma boa opção quando…

  • Ter boa indexação no Google é um requisito;
  • Existir a necessidade da fluidez do SPA, porém, com um tempo de carga para o usuário mais eficiente;
  • A aplicação possui um número mais extenso de páginas. Nesse cenário, a divisão do trabalho de renderização com o servidor pode vir a ser interessante.

Web Designer x Web Developer: quais as diferenças?

Muitos iniciantes da área de tecnologia ficam em dúvida de qual carreira seguir, no que devem focar… afinal são diversas opções. Dentre essas opções estão as carreiras de Web Designer e Web Developer. Por serem áreas que se complementam, muitas pessoas acabam confundindo elas e principalmente sobre o que cada profissional realmente faz. Essas são dúvidas principalmente de quem quer ingressar na área de desenvolvimento web e é o que vamos abordar neste artigo.

Web Designer

Web designer é o responsável pelo design – o visual – da aplicação. Esse profissional deve dominar conceitos de design, usabilidade (UX e UI), identidade visual e design de interfaces, além de ferramentas de edição visual, como o Photoshop, Illustrator e Sketch App, por exemplo, pois são através dessas ferramentas que ele irá desenvolver a parte visual da aplicação.

Mas, para ser um Web Designer eu preciso saber programar? Não necessariamente. O foco do web designer é focar totalmente no design, como o próprio nome diz é um design só que mais focado para web. Ele também deve saber HTML e CSS, mas essas não são consideradas linguagens de programação. Alguns profissionais de Web Designer acabam aprendendo JavaScript, mas não é uma obrigatoriedade, pois ele não precisará mexer com o código da aplicação de fato.

O Web Designer deve fazer o planejamento, a criação de toda a aparência da aplicação e a manutenção de interfaces digitais, tudo isso considerando aspectos importantes do design. É essencial que os designers criem algo atraente, para gerar uma boa experiência do usuário.

Depois do Web Designer fazer seu trabalho teremos um layout, porém um layout é algo estático, não tem funcionalidade nenhuma, nenhum usuário conseguirá ter alguma interação com a aplicação. Sendo assim, para que ele se torne algo utilizável, com ações pelo usuário, precisamos utilizar tecnologias onde através de sua implementação com códigos, podemos torná-lo acessível para os usuários. O profissional de Web Designer entrega o projeto cheio de recursos visuais aos desenvolvedores para codificação.

Web developer

O Web Developer é quem realmente coloca a mão no código. Ele cuida da codificação onde tornará possível que a interface gráfica (que vimos acima) seja acessada e utilizada. Geralmente são profissionais com a parte lógica mais aguçada e esses sim devem possuir habilidades em programação.

Um ponto importante de ressaltar aqui é que o Web Developer pode ser dividido em dois tipos: front-end e back-end. De maneira sucinta, os desenvolvedores front-end se concentram na parte que o usuário vê, como as interações por exemplo, fazendo com que a experiência do usuário naquela aplicação seja positiva. Já o desenvolvedor back-end está mais para a “parte de trás” do site, aquilo que não vemos, como a configuração de servidores e banco de dados. O papel do back-end também é importantíssimo para o funcionamento da aplicação. Na verdade, o Web Designer e o Web Developer (desenvolvedores front-end e back-end) se complementam a fim de entregar um bom resultado aos usuários finais.

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

No final, o que acaba fazendo muita confusão é um profissional acabar fazendo ambos os papéis. Pode acontecer do próprio web developer ter que pensar no design e planejar a aplicação. Como também pode acontecer de um web designer acabar aprendendo a programar também, fazendo com que ele mesmo siga os próximos passos ao invés de passar para um programador. Neste caso, seria um acúmulo de funções, pois vimos quais tarefas pertenceriam a cada profissional.

Agora que você já sabe a diferença entre Web Designer e Web Developer, mas quer conhecer melhor o que um front-end e um back-end faz, temos um artigo específico disso em nosso blog.

Até a próxima! =)

O que é Xamarin?

Xamarin é uma plataforma open source da Microsoft para a criação de aplicativos mobiles 100% nativos, onde tudo é desenvolvido acessando as APIs nativas de cada uma das plataformas, como iOS e Android, por exemplo.

Se você deseja escrever apenas um código para diversas plataformas o Xamarin é uma ótima opção, pois ele tem justamente o intuito de compartilhar a mesma base de código para a criação de apps em várias plataformas. Assim, você consegue ter o aspecto multiplataforma e a performance e eficiência das aplicações nativas. Aqui no blog já falamos sobre as diferenças entre aplicativo nativo ou híbrido.

Os aplicativos gerados com a plataforma são nativos pois contém controle de interface dos usuários padrões, além de ter o mesmo desempenho dos aplicativos nativos já que o Xamarin aproveita a aceleração de hardware específica de cada um deles. O Xamarin fornece a interoperabilidade, onde é possível invocar diretamente o Objective C, Java, C e C++. Assim é possível reutilizar libs escritas para iOS e Android.

O Xamarin tem como IDE padrão o Visual Studio, que apresenta todos os recursos necessários para o desenvolvimento com o Xamarin, incluindo um recurso para o desenvolvimento de apps iOS: o Pair to Mac. Ele conecta o Visual Studio a um host de build do Mac, facilitando o desenvolvimento para essa plataforma.

Xamarin.Forms - Primeiros passos
Curso de Xamarin.Forms - Primeiros passos
CONHEÇA O CURSO

Arquitetura Geral

Na imagem abaixo, retirada do próprio site da Microsoft, podemos ver a arquitetura geral de um aplicativo Xamarin.

imagem ilustrando a arquitetura do xamarin

Para compilar os apps de forma nativa no Android é utilizado o Xamarin.Android. Os apps rodam num ambiente de execução mono, este que manipula automaticamente tarefas como alocação de memória e interoperabilidade com plataformas subjacentes, e passa por uma compilação JIT (Just-In-Time).

Para aplicativos iOS é utilizado o Xamarin.iOS onde as apps também são executadas no ambiente de execução mono e usam a compilação ahead-of-time (AOT C#) para compilar o código para a linguagem assembly.

O Xamarin estende da plataforma .NET e traz para ela acesso a recursos nativos, como a XAML para a criação dinâmica de aplicações mobile usando o C#. Ainda é possível utilizar features do C# no desenvolvimento destes aplicativos, além de bibliotecas para trabalhar com padrões, como o MVVM e libs específicas para trabalhar com outras plataformas que incluem a acessos a APIs do Google, Apple e Facebook.

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

Um framework bem importante para o desenvolvimento com o Xamarin é o Xamarin.forms. O desenvolvimento de apps na plataforma Xamarin é feito utilizando Xamarin.Forms, Xamarin.iOS ou Xamarin.Android. O Xamarin.forms é um cross-platform UI library, ou seja, uma abstração para a criação de elementos comuns em todas as plataformas, como elementos de design, navegação, animações, etc. Permite que os desenvolvedores criem interfaces do usuário em XAML com code-behind em C#. Essas interfaces do usuário são renderizadas como controles nativos de alto desempenho em cada plataforma.

Considerações finais

Com o Xamarin você tem grande reaproveitamento de sua base de código quando está desenvolvendo com o foco em mais de uma plataforma. O Xamarin é indicado para todos os desenvolvedores, principalmente os que querem escrever apps multiplataforma em C# e compartilhar códigos, testes e lógica de negócios entre plataformas.

Desenvolvedor Xamarin Júnior
Formação: Desenvolvedor Xamarin Júnior
A formação Desenvolvedor Xamarin nível Júnior da TreinaWeb tem como objetivo apresentar os princípios básicos relacionados ao desenvolvimento de aplicações mobile cross-platform. São abordados tópicos como a configuração do ambiente de desenvolvimento, os controles básicos disponibilizados pelo Xamarin.Forms, a definição de interfaces através de código XAML e o padrão MVVM, com uma implementação pura e através dos frameworks Prism e MVVMCross.
CONHEÇA A FORMAÇÃO

Dicas para impulsionar sua carreira como desenvolvedor

Sabemos que, hoje em dia, um profissional precisa conseguir se manter no mercado e, para isso, ele não pode ficar parado. Ele deve estar em constante aprimoramento em busca de suas metas e objetivos, que podem ser a conquista de uma determinada vaga, ser promovido ou qualquer outra coisa que você almeje.

Se você deseja impulsionar sua carreira, separamos algumas dicas para você se destacar como desenvolvedor.

Aprenda os conceitos de clean code

Atualmente, o mercado exige que os desenvolvedores não “programem” simplesmente. Muitas empresas desejam profissionais que possuem domínio de boas práticas e noções de arquitetura – o famoso “código limpo”.

Por isso, é importante colocar esses conceitos em prática, para evitar que seu código fique mal escrito ou tenha funcionalidades que não foram implementadas da maneira correta. Além disso, acaba dificultando outra pessoa de entender o código e principalmente na hora da manutenção.

Confira algumas dicas em nosso artigo “Dicas para manter seu código limpo e legível”.

Git e GitHub - Controle de versão
Curso de Git e GitHub - Controle de versão
CONHEÇA O CURSO

Git está virando o “básico”

O Git é muito utilizado pelos desenvolvedores, muito mesmo. Então é importante que você, como desenvolvedor, saiba utilizar o Git de verdade, não somente o básico. Existem muitos comandos úteis que nos ajudam a facilitar o trabalho.

Além do curso de Git em nossa plataforma, temos artigos que explicam sobre o GIT e seus comandos em nosso blog. Dê uma conferida em: Comandos do Git que você precisa conhecer – Parte 1 e Comandos do Git que você precisa conhecer – Parte 2 – Repositórios Remotos.

Compartilhe seus conhecimentos com outras pessoas

Escrever um post sobre alguma tecnologia nova ou até mesmo criar um tutorial é uma ótima opção para você compartilhar seus conhecimentos e trocar experiências. A produção de conteúdo relevante pode ajudar muito a quem lê, além do engajamento que você terá com essas pessoas. Com isso, você consegue aproveitar e utilizar melhor seus conhecimentos ajudando o próximo.

Se você não tiver um blog, pode criar no seu próprio LinkedIn, pois a interação do LinkedIn está crescendo a cada dia mais.

Contribua em projetos open source

Se você gosta e trabalha com uma ferramenta “X” e ela for open source, por que não contribuir? Além de você participar no desenvolvimento de um grande projeto, você ainda trabalha com outros desenvolvedores que podem ser de até outros países. É uma ótima forma de você aprender também, pois estará vendo o código de outras pessoas e vai precisar não só entender o mesmo, mas interagir com ele.

Não há maneira melhor que conhecer desenvolvedores mais experientes do que em projetos open source. Lá você irá compartilhar e absorver conhecimentos.

Construa um portfólio

Essa é até uma dica já batida aqui, mas é sempre importante ressaltar. O portfólio é importante para você mostrar de uma forma “concreta” o que você sabe fazer. Você pode juntar seus melhores projetos desenvolvidos, sejam eles para empresas, faculdade ou até projetos pessoais. Assim, algum recrutador ou alguém que saiba de alguma vaga pode ver seus projetos, o que pode te resultar em novas oportunidades.

Novamente o LinkedIn nos auxilia nisso, você pode postar um mini vídeo de uma aplicação que você acabou de desenvolver, um print de um projeto de estudo… Tudo isso mostra o que você está fazendo naquele momento e aguça a curiosidade dos demais – aqui novamente entram as interações. Fora isso, ainda mostra que você é uma pessoa que sempre está buscando aprender.

Também temos um artigo sobre como dar um up em sua carreira, acesse em Como turbinar sua carreira em 2020 e confira novas dicas =)

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

O que é RAD – Rapid Application Development?

Em busca da agilidade e qualidade no desenvolvimento de software, existem metodologias que são capazes de potencializar o desempenho dos profissionais envolvidos em seus processos. Por isso, as empresas têm cada vez mais adotado essas metodologias para que elas as auxiliem a atingir seus objetivos.

Hoje em dia, existem diversas metodologias de desenvolvimento de software, por isso estamos fazendo uma série de artigos focados em metodologias. Já falamos aqui sobre as metodologias Scrum e Crystal, e hoje vamos abordar a metodologia RAD.

RAD - Rapid Application Development
Curso de RAD - Rapid Application Development
CONHEÇA O CURSO

O que é RAD?

Rapid Application Development (RAD) ou Desenvolvimento Rápido de Aplicação é um modelo de processo de desenvolvimento de software incremental, que foi registrado por James Martin, em 1991. É um processo de desenvolvimento de aplicações de forma rápida com objetivos bem definidos e análise de requisitos extremamente bem alinhada. Esse modelo enfatiza um ciclo de desenvolvimento curto, com o intuito de ter um desenvolvimento melhor e mais rápido.

No desenvolvimento incremental, uma das características de RAD, o sistema é dividido em módulos, tomando por base a funcionalidade. Tendo os incrementos definidos, a cada ciclo é acrescido de novas funcionalidades ou até mesmo modificações, caso seja necessário. Outra característica é justamente essa maleabilidade de adaptação dos processos e a capacidade de se manter em constante evolução.

O processo consiste basicamente em:

  1. Modelagem do negócio
  2. Modelagem dos dados
  3. Modelagem do processo
  4. Geração da aplicação
  5. Teste e Modificação

As fases de modelagem e geração da aplicação são executadas por diversas equipes. Essa divisão otimiza tempo, além do reaproveitamento de módulos prontos que faz com que o desenvolvimento cumpra prazos curtos. Por fim, ocorre a integração desses componentes.

O RAD tem uma capacidade muito grande de potencializar o desempenho dos profissionais da equipe. Algumas outras vantagens são:

  • economia de tempo
  • progresso mensurável
  • trabalho com modelos
  • integração mais rápida de sistemas
  • feedback constante

Quando devo usar?

Um ponto muito importante é que a aplicação deve possuir requisitos muito bem definidos e o sistema poder ser modularizado para o bom funcionamento do RAD. Quando você analisar que o projeto a ser desenvolvido pode ser dividido em componentes e em ser reutilizado componentes prontos, sempre pensando no curto prazo, pode ser uma boa opção.

Não é apropriado quando se tem um risco técnico alto ou quando não se tem equipe suficiente para suprir essa agilidade.

Se você deseja se aprofundar nessa metodologia, conhecendo mais a fundo seus princípios, exemplo de técnicas e ferramentas do RAD temos um curso específico aqui na TreinaWeb, dá uma conferida, e não se esqueça de nossos outros artigos sobre engenharia de software 😀

Gerente de Projetos Júnior
Formação: Gerente de Projetos Júnior
A formação Gerente de Projetos nível Júnior da TreinaWeb tem como objetivo a ilustração dos princípios básicos para o gerenciamento de projetos na área de TI, além de ensinar a utilizar uma das ferramentas mais utilizadas pelos gestores de projetos no mercado atualmente: o Microsoft Project.
CONHEÇA A FORMAÇÃO

Como funciona uma empresa de desenvolvimento de software?

Olá Web Developer! Muitas pessoas que estão querendo entrar em uma área não sabem como será seu dia a dia. Então é comum que alguém que queira trabalhar com programação se pergunte como é trabalhar em uma empresa de desenvolvimento de software.

Não há um modelo a se seguir, cada empresa tem seu jeito de trabalhar e cargos diferentes. Há lugares em que uma mesma pessoa executa tarefas que em outra empresa seria feita por três ou até mais colaboradores. Aqui vou descrever um modelo mais “geral” de acordo com a minha experiência pelas empresas de diferentes tamanhos onde já trabalhei.

Gerente de Projetos

O gerente de projetos é o profissional que se responsabiliza pelo andamento do projeto, garantindo que os objetivos serão alcançados dentro do prazo definido.

Ele deve entender o produto, conversar com o cliente para estabelecer metas e prazos, conversar com a equipe para deixar os objetivos bem definidos, prever dificuldades para agir previamente, etc.

Já vi equipes com programadores iniciantes terem êxito e equipes com programadores incríveis terem problemas por causa das habilidades de gerentes de projetos. Por isso que é importante esse profissional entender o que está sendo feito, ter uma boa comunicação, conhecer a capacidade de produção da equipe para não prometer ao cliente mais do que pode ser cumprido e também saber quando dizer não.

Não confunda esse profissional com Scrum Master. O scrum master pode ser outra pessoa, até mesmo um programador da equipe. Veja mais neste post sobre Scrum.

Gerenciamento de projetos - Fundamentos
Curso de Gerenciamento de projetos - Fundamentos
CONHEÇA O CURSO

Arquiteto da Informação

Uma das principais tarefas do arquiteto da informação é desenhar como serão as telas do software a serem criadas. Ele que cuida como será a estruturação do conteúdo, visando facilitar a usabilidade e acessibilidade do usuário, garantindo uma melhor experiência.

Um campo de texto deverá salvar automaticamente ou é melhor ter um botão “Salvar”? Esse botão deve ficar em que lugar da tela? É preciso ter um ícone para essa ação? Essas são algumas das coisas que um arquiteto da informação deve pensar.

Com as necessidades do sistema em mente, este profissional irá desenhar o chamado Wireframe, que funciona como se fosse a planta de uma casa.

Wireframes são feitos sem cor, da forma mais simples. Assim as funcionalidades serão o foco do trabalho.

Há ferramentas que possibilitam que desenhemos wireframes interativos. Isso significa que podemos clicar em um botão e ele nos envia para uma outra tela. Assim teremos algo bem parecido com um protótipo, o que facilita apresentar como o sistema deve parecer e funcionar tanto para clientes quanto para a equipe de desenvolvimento.

Em algumas empresas menores esse papel é feito pelo gerente de projeto, designer ou pelos próprios programadores.

Designer

O designer, ao trabalhar no desenvolvimento de sistemas, atuará junto ao arquiteto da informação. Ele receberá o wireframe e irá definir como os componentes da interface deverão ser.

Normalmente é ele quem define uma paleta de cores a serem usadas, a tipografia, espaçamentos, ícones, etc.

Caso a equipe possua pessoal de marketing, o designer também poderá ajudar na criação do layout do site para a publicidade e outros elementos para serem publicados em redes sociais.

Em empresas menores pode ocorrer dessas funções ficarem a cargo dos próprios programadores.

Programador

Os programadores são as pessoas que vão escrever o código dos softwares a serem criados, sejam eles sistemas web, sistemas desktop, aplicativos mobile, etc. Normalmente são divididos em Front-end e Back-end.

Para mais detalhes, veja o nosso post sobre O que é front-end e back-end?

Desenvolvedor Front-end

O desenvolvedor front-end é quem vai dar vida às telas que foram criadas pelo arquiteto da informação e designer. Trabalha com HTML, CSS e JavaScript. Por ter conhecimento com essas tecnologias, pode ser aproveitado para criar sites.

Como o JavaScript está cada vez mais presente em diversas áreas, esse desenvolvedor também pode ser escalado para trabalhar no back-end, criar softwares desktop, aplicativos mobile, etc. Para saber mais, veja nosso post sobre O que se pode fazer com JavaScript hoje em dia?

JavaScript Intermediário
Curso de JavaScript Intermediário
CONHEÇA O CURSO

Desenvolvedor Back-end

O desenvolvedor back-end é quem vai cuidar do código que ficará no servidor. Trabalham com linguagens como C#, Java, PHP, Python, Ruby, etc. Ele vai cuidar da parte da aplicação que lida com as regras de negócio.

Ele é quem fará as conexões com o banco de dados para recuperar informações que o desenvolvedor front-end possa precisar para exibir ao usuário ou salvar as informações que o front-end envia.

Além de front-end e back-end, também há o FullStack, que faz os dois ao mesmo tempo. Para saber mais, veja nosso post sobre Devo começar como Front-End, Back-End ou Full Stack?

Analista de Testes

Também conhecido pela sigla “Q.A.” (Quality Assurance), o analista de testes é responsável por testar o software, verificando se todos os requisitos estão sendo cumpridos.

Mesmo que os programadores precisem testar seu código, é visível a diferença que um profissional dedicado a testes faz em um projeto.

Ele segue/cria métodos de testar um software com mais eficiência, possibilitando encontrar mais problemas com uma menor quantidade de testes. Quando problemas forem encontrados, deve identificar a causa do problema e indicar como deve ser o comportamento para que os programadores corrijam. Portanto, deve entender tão bem das regras de negócio do sistema quanto o gerente de projetos.

Não é obrigatório mas é importante saber um pouco sobre programação, pois isso permite que esse profissional crie testes automatizados.

Administrador de Banco de Dados

Também conhecido como DBA (Database Administrator), esse profissional cuida do banco de dados da aplicação.

Ele fica responsável por cuidar da estrutura do banco, realizar backups, atualizar, garantir a segurança e integridade dos dados, estabilidade ao acesso às informações, melhorar o desempenho do acesso aos dados, etc.

MySQL - Desenvolvedor
Curso de MySQL - Desenvolvedor
CONHEÇA O CURSO

Outros cargos

Os cargos citados acima são os mais comuns de se encontrar nas empresas. Dependendo do tamanho da empresa pode ser que haja alguns cargos a mais ou a menos, e também pode ser que em cada empresa um mesmo cargo seja chamado por nomes levemente diferentes.

Podemos ter também o gerente financeiro, analista de marketing, RH, engenheiro de software, arquiteto de redes, etc.

Na área de T.I. está crescendo muito a demanda por profissionais em áreas que lidam com dados, como Analista de Segurança da Informação, Cientista de dados, Engenheiro de Inteligência Artificial, etc.

Se quer entrar nesse mercado de trabalho ou alavancar a sua carreira, não deixe de conferir nossos cursos e também nossas formações

É 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?

logo 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.

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.

Andrey Breslav

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

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?

Desenho de um computador

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.

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

© 2004 - 2019 TreinaWeb Tecnologia LTDA - CNPJ: 06.156.637/0001-58 Av. Paulista, 1765, Conj 71 e 72 - Bela Vista - São Paulo - SP - 01311-200