Desenvolvimento

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.

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

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.

Arquitetura Geral

Na imagem abaixo, retirada do próprio site da Microsoft, podemos ver a arquitetura geral de um aplicativo 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.

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 =)

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.

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
RAD - Rapid Application Development
Curso de RAD - Rapid Application Development
CONHEÇA O CURSO

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 😀

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?

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.

Boas práticas de programação para iniciantes

Quando estamos começando a lidar com linguagens de programação, ficamos mais preocupados em fazer nosso código funcionar do que qualquer outra coisa. Normalmente, a última coisa que prestamos atenção é se o código está legível e “bonito” se de ver… Porém, é importante começarmos a seguir algumas boas práticas de codificação desde o início. Isso irá lhe auxiliar a criar o hábito de escrever código de fácil entendimento e de manutenibilidade aprimorada. Às vezes, nós mesmos não conseguimos entender um código que fizemos a um tempo atrás.
Se você está iniciando agora, veja algumas dicas para colocar em prática.

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

Utilize nomes significativos

Quando escrevemos qualquer trecho de código que seja, é importante deixar claro o que é uma variável ou o que um método faz. Um dos pontos que precisamos seguir para atingirmos este objetivo é utilizarmos nomes significativos para as nossas estruturas de código. Evite nomear variáveis, métodos e classes com nomes que não tenham nada a ver com o contexto… O código deve ser simples e direto, deixando claro a sua intenção logo na primeira leitura.
Por exemplo: quando estamos iniciando nossos estudos em desenvolvimento e precisamos escrever uma estrutura de código que faça uma soma, geralmente escrevemos algo similar ao abaixo:

public int fazer_a_soma(int a, int b)
{
    return a + b;
}

Veja que temos alguns pontos que poderíamos melhorar, tornando nosso código mais legível: poderíamos simplificar o nome do método e darmos nomes mais claros para os nossos parâmetros… Nosso método, depois de corrigido (ou refatorado), poderia ficar da seguinte maneira:

public int somar(int numero1, int numero2)
{
    return numero1 + numero2;
}

Cuidado com os comentários!

Os comentários geralmente nos ajudam a explicar ou recordar de algo no código. Porém, comentários em excesso não é algo muito legal… Se você está tendo que explicar tudo que ocorre em seu código, é porque o código provavelmente está mal escrito ou bagunçado. Sendo assim, tente sempre restringir os comentários aos trechos onde realmente seja necessário. Trechos de código que sigam práticas como a utilização de nomes significativos geralmente auxiliam a restringir os comentários aos trechos onde os mesmos sejam de fato necessários.

Reaproveite o código

Se você está fazendo algo que já existe em mais de um lugar, é interessante pensar em uma forma de evitar essa duplicidade. Por isso, sempre pense em reaproveitamento de código, criando estruturas (como classes e métodos) mais abstratas e reaproveitáveis. Pensar em reaproveitamento de estruturas diminui o volume de código e torna o processo de manutenção centralizado e muito mais facilitado.

Idente seu código

A identação, que consiste nos tabs ou espaços agrupando os diferentes blocos de código, é algo essencial. Um trecho de código mal identado é terrivelmente difícil de ser lido. Por isso, atente-se sempre à identação dos trechos de código que você escrever. Lembre-se também que a maioria das IDEs e editores de texto modernos possuem atalhos que identam todo seu código de maneira rápida e automática, portanto: utilize este recurso sempre!
Veja abaixo um trecho de código com identação incorreta. Repare que o código é super complicado de ser lido, ainda mais por se tratar de um trecho de código com múltiplos blocos.

if(idade > 18) {
 System.out.println("Idade maior que 18");
} else if(idade == 18) {
System.out.println("Idade é igual a 18");
            } else { 
 System.out.println("Idade menor que 18");}

Veja agora o mesmo trecho de código corretamente identado. Veja que o código parece mais “fluído”, se tornando muito mais fácil de ser lido simplesmente por estar com a identação correta.

if(idade > 18) {
    System.out.println("Idade maior que 18");
} else if(idade == 18) {
    System.out.println("Idade é igual a 18");
} else {
    System.out.println("Idade menor que 18");
}
Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

Mesmo sendo iniciante, é importante sempre estarmos atentos às possibilidades de como melhorar nosso código, pois isso é um ponto que o mercado em geral valoriza muito. Por mais que a maioria das empresas desejarem que seus softwares funcionem, elas também esperam que o código produzido apresente qualidade. Bons desenvolvedores estão atentos hoje às boas práticas de codificação.
Neste artigo, foram abordadas algumas práticas mais simples. Mas, caso queira se aprofundar ainda mais em pontos relacionados às boas práticas de código limpo, temos o artigo “Dicas para manter seu código limpo e legível” para que você possa melhorar cada vez mais a escrita de seus códigos.

Dicas para lançar um aplicativo de sucesso

Os aplicativos tem ganhado cada vez mais espaço na vida das pessoas. A partir deles fazemos desde tarefas mais simples como olhar a previsão do tempo, como também conseguimos pedir um delivery, marcar uma consulta, jogar, estudar e mais uma infinidade de coisas.

Provavelmente você já teve alguma ideia para algum aplicativo, mas ficou sem saber até mesmo como começar. Realmente, o desenvolvimento de aplicativos é um processo que engloba muitas etapas e demanda tempo e conhecimento. Por isso, neste artigo vamos dar algumas dicas do que você tem que pensar e fazer antes de lançar um aplicativo.

Android - Avançado
Curso de Android - Avançado
CONHEÇA O CURSO

Pesquise muito antes de iniciar

Essas pesquisas são importantes antes de iniciar o processo, pois senão, no final você poderá ver que o que foi desenvolvido não era uma necessidade do seu público e consequentemente, ele não será utilizado/vendido. Por isso, devemos fazer uma pesquisa a fundo nos seguintes itens:

Ideia – Pesquise se alguém já teve a mesma ideia que você, se tem algum aplicativo parecido. Se sim, como você pode melhorar essa ideia?
Público-alvo – Esse é um fator muito importante pois, sem eles, seu aplicativo não terá uso. Pesquise mais sobre quem será seu público. O que seu aplicativo terá que fará com que eles baixem? O que eles buscam que seu aplicativo vai atender?
Mercado – Pesquise sobre o mercado. Está pensando em um aplicativo, mas tem vários desse segmento? Será que valerá a pena? Ou você tem um super diferencial para oferecer? Como você vai fazer para que ele traga a rentabilidade que você espera?
Tecnologias – Pesquise sobre as tecnologias e ferramentas que você irá utilizar, estude qual atenderá mais suas necessidades.

Outro ponto que devemos pensar antes do desenvolvimento do aplicativo, é se ele será híbrido ou nativo. Temos um artigo que explica exatamente sobre cada um deles e sobre um ponto importante: App Nativo x App Híbrido: existe o melhor?

Não se esqueça do protótipo

Quando pensamos em um aplicativo, já queremos ir logo para a parte de desenvolvimento em si, até mesmo porque ficamos ansiosos querendo já ver algo rodando na nossa frente. Porém, devemos tirar um tempo antes disso para pensar em como será o layout do app, pensar na usabilidade e na identidade visual. Quando você faz um planejamento de como ele irá ficar, você consegue pensar mais a fundo na melhor forma ou técnica de fazer aquilo. Além de evitar muitas mudanças no design lá na frente, evitando retrabalhos. Além disso, junto com o layout você trabalhará também em outras questões, como por exemplo quantas telas terá, como funcionará cada tela, etc.

Se atente a experiência do usuário

A experiência do usuário no seu aplicativo tem que ser a melhor possível. Você deve dar a devida importância nesse quesito, criando um aplicativo que seja atraente, fácil de ser utilizado e que instigue as pessoas a se manterem nele. Outro ponto importante é evitar ao máximo os bugs. Afinal, ninguém gosta de baixar algo que está cheio de bugs, não é? E eles são sempre mencionados pelos usuários nas lojas oficiais, como App Store e Play Store, fazendo com que seu aplicativo fique com uma nota baixa.

Como é muito comum usuários baixarem aplicativos e minutos depois já desinstalarem, vale muito a pena se atentar nessa primeira impressão.

Ionic - Criação de aplicações mobile
Curso de Ionic - Criação de aplicações mobile
CONHEÇA O CURSO

Campanha de marketing

Como vimos, sem usuários seu aplicativo não tem utilidade. Então você deve começar uma campanha de marketing antes mesmo de lançar o aplicativo. Assim você consegue ir construindo uma marca e ir atraindo o seu público ao lançamento. Você pode fazer um bom uso das redes sociais sem gastar muito, utilizando o Facebook e Instagram por exemplo. Isso é ótimo para atrair seu público, além de você ficar mais próximo deles, criando um bom relacionamento.

Testes e mais testes…

Além de manter uma rotina no desenvolvimento para que o aplicativo saia do papel e chegue ao produto final, é importante sempre estar fazendo testes para que possíveis erros sejam corrigidos antes do lançamento, minimizando assim as chances deles chegarem ao usuário.

Concluindo

Sabemos que não basta somente desenvolver o aplicativo e deixar ele lá – até mesmo porque sozinho ele não vai gerar $$. Como vimos neste artigo, precisamos ter um diferencial, precisamos proporcionar um atendimento legal para os usuários e sempre estar aprimorando o nosso produto, para que nosso aplicativo seja bem utilizado por muitas pessoas.

Caso você esteja com dúvidas quanto ao desenvolvimento, temos diversos cursos voltados ao desenvolvimento mobile. Dá uma conferida 🙂

Paralisia por Análise – o bloqueio que te impede de começar

Olá, Web Developers!

Você possui algum projeto ou plano mas nunca inicia ou finaliza por estar sempre pensando demais? Você pode estar com a “Paralisia por Análise”.

O que é Paralisia por Análise?

Paralisia por Análise é quando não conseguimos chegar em nenhum lugar por pensarmos em excesso. Isso pode pode acontecer tanto na vida profissional quanto na pessoal, e está cada vez mais comum em um mundo conectado e que nos oferece várias opções para um mesmo objetivo.

Por que isso acontece?

Há muitos motivos para a Paralisia por Análise. Um dos motivos mais comuns é o excesso de opções. Você fica pensando em qual a melhor escolha, e por querer algo perfeito acaba não escolhendo e gastando todo o seu tempo apenas analisando as opções. Quantas pessoas você conhece que dizem ficar horas tentando escolher um filme ou série na Netflix e acabam não assistindo nada?

Outro motivo também muito comum que pode contribuir para este fenômeno é o medo de algo: de mudanças, do desconhecido, de falhar, de passar vergonha, etc. E então você começa a treinar, pesquisar e fazer várias coisas para poder traçar o plano perfeito. O resultado é que esse plano acaba nunca sendo iniciado ou concluído, pois nunca é o suficiente.

Também podemos citar o perfeccionismo. Muito comum em entrevistas a pessoa falar “meu pior defeito é ser perfeccionista”. Esse candidato normalmente nem faz ideia que realmente ser perfeccionista pode mesmo ser muito prejudicial.

Um motivo que também vejo muitos colegas cometendo é ficar pensando: “e se eu escolher e me arrepender? E se depois eu ficar pensando como poderia ter sido com a outra opção?”.

Exemplos comuns

Opções, muitas opções

Um exemplo muito comum na vida pessoal é o citado acima: a Netflix disponibiliza várias opções de filmes e séries. Se ficarmos pensando muito, gastaremos todo o nosso tempo livre e não aproveitaremos para assistir nada. Antes dos serviços de streaming, ao passar um filme na televisão, tínhamos apenas duas opções: sim ou não.

Em serviços de entrega como ifood também é muito comum as pessoas ficarem muito tempo escolhendo em meio a tantas opções. Antigamente você basicamente telefonaria para a pizzaria que você tivesse o número anotado na agenda.

Então o excesso de opções é algo que vem crescendo com a tecnologia. É óbvio que ter opções é ótimo, mas nem todos estão preparados para tomar decisões rapidamente.

Inclusive, reduzir opções foi uma das estratégias da Apple em uma época em que ela estava quase indo à falência. Basta comparar quantas opções temos de iPhone em relação aos modelos de smartphones de outras marcas.

Medo e insegurança e perfeccionismo

Já na parte dos medos, isso pode se relacionar com o perfeccionismo também. E sabemos que “feito é melhor do que perfeito”. É muito comum vermos projetos que nunca lançam uma versão final do produto. Sempre tem algo a melhorar antes de mostrar para algum potencial cliente.

Também já vi casos de programadores mais novos produzindo mais do que programadores mais experientes em projetos próprios. Isso parece meio estranho, mas veja o motivo:

Programador Iniciante

O programador iniciante ainda não conhece muitas ferramentas. Se ele precisar fazer algo, ele vai tentar fazer com o pouco que sabe com a única linguagem de programação que ele sabe mexer. Ele provavelmente não seguirá boas práticas, o código pode não estar tão bem organizado, muitas coisas podem acabar tendo sido feitas manualmente e haverá várias outras coisas que podem dar problemas no futuro por falta de planejamento e experiência. Porém, ele foi lá com o pouco que sabia e fez, entregando algum resultado.

Programador Experiente

Já alguns programadores mais experientes vão começar analisando o problema para escolher a melhor linguagem de programação a ser usada. Definido isso, qual dos diversos frameworks que ele conhece será o que entregará mais produtividade, robustes e segurança? Será que esse framework possui uma boa comunidade e é simples de atualizar de versão?
E qual será o banco de dados? Onde iremos hospedar? Qual a melhor estrutura para meus dados que me permita escalonar meu sistema sem problemas? Será que os requisitos foram bem capturados e não está faltando nada? Será que a estrutura da minha tela está bonita e entrega a melhor experiência ao usuário de forma intuitiva?

Só essas perguntas podem fazer uma pessoa gastar meses e ainda nem começar a escrever uma única linha de código. Se o desenvolvimento começar, essa pessoa pode aprender coisas novas e pensar em refazer partes de seu sistema por achar que ele pode ser melhor, mesmo que ele ainda nem tenha terminado de entregar o básico que o sistema deve propor. E assim uma ideia basicamente nunca será finalizada.

Obviamente que nestes casos iremos preferir algo feito por um amador, mas que resolva nosso problema, do que algo feito por uma pessoa bem mais experiente mas que ainda só tem o projeto na cabeça dele e ainda não dá para usar.

Desenvolvedor Java Júnior
Formação: Desenvolvedor Java Júnior
A formação Desenvolvedor Java nível Júnior da TreinaWeb tem como objetivo fornecer uma introdução ao desenvolvimento através do Java e todo o ecossistema para desenvolvimento da Oracle. 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 Java através do Eclipse e o controle de versão de código através do Git e do GitHub. Além disso, também são abordados aspectos mais essenciais da linguagem e estruturas importantíssimas dentro do ecossistema do Java, como a Stream API, que auxilia a lidar com coleções de dados; a implementação das estruturas de dados mais tradicionais como listas, filas e pilhas; e a API de coleções.
CONHEÇA A FORMAÇÃO

Como se livrar?

Há algumas coisas que podemos fazer para evitar ou pelo menos diminuir a Paralisia por Análise.

Primeiro precisamos sempre lembrar que não há solução e nem momento perfeito. O momento sempre é agora e a solução que você escolher pode ser arrumada no futuro, ela não é uma escolha para o resto da vida.

Limite o número de suas opções para o mínimo possível. Defina um objetivo com um prazo. Se chegar o prazo e você decidir que todas as opções são boas, não fará diferença qual escolher, então jogue um dado ou uma moeda e siga em frente sem questionar!

Algo para treinar tomar decisões rápidas é evitar responder para as pessoas “você que sabe”, “você decide”, “para mim tanto faz”, etc. Se te perguntaram é porque estão te dando permissão para escolher.

É ótimo ser curioso, mas contenha-se para não acabar descobrindo pequenas imperfeições que no final não fazem diferença no resultado de seu objetivo.

Planeje tudo em pequenas metas e dê um passo de cada vez. Tomar muitas decisões também causa um cansaço. Então diminua a quantidade de decisões que você precisa tomar durante o dia (não precisa chegar a ser como Steve Jobs e Mark Zuckerberg que usavam/usam sempre roupas iguais para evitar escolher roupa) e sempre comece pelas decisões mais importantes.

Conclusão

Então, a Paralisia por Análise acaba acontecendo quando o nosso excesso de pensar vai além dos benefícios que teríamos caso tivéssemos feito uma escolha mais rapidamente.
Se você está tendo esse tipo de problema, tente seguir as dicas aqui para se livrar o quanto antes e veja sua vida mudar.

Você tem ou já teve algum bloqueio assim? Compartilhe com a gente nos comentários!

O que é uma API?

Você já deve ter ouvido falar, pelo menos alguma vez, sobre esse termo chamado “API” e pode ter pensado o que realmente vem a ser uma API e como ela pode ajudar os desenvolvedores no seu trabalho do dia a dia. Vamos ver então neste artigo o que vem a ser uma API.

Uma API (Application Programming Interface) pode ser definida como um conjunto de padrões que permite a construção de aplicativos, onde ele conecta aplicações, podendo ser utilizada nos mais variados tipos de negócios.

Apesar de ter essa integração, quando um usuário estiver navegando em um site que tem uma integração com uma API por exemplo, nem saberá que sua aplicação está fazendo uma comunicação com uma API, pois ela é invisível ao usuário comum, já que ele enxerga apenas a interface dos softwares e aplicativos.

Com a API você tem uma interface para que um sistema se comunique com outro sistema, compartilhando suas ações e ferramentas. A comunicação é feita através de vários códigos, definindo comportamentos específicos.

Além de conectar sistemas, elas têm um papel muito importante na criação de aplicativos porque nos ajudam muito na produtividade. Você mesmo com certeza já acessou um site onde tinha uma integração com uma API. Vou te explicar melhor com dois exemplos.

Java - Arquivos e I/O API
Curso de Java - Arquivos e I/O API
CONHEÇA O CURSO

Imagine que você está navegando por um site para a compra de um produto. Depois de escolher, você deseja saber quanto isso custará para chegar até o seu endereço e quais são as opções de envio (PAC, SEDEX, etc) e o tempo estimado. Quando você digita o seu CEP para esse cálculo de frete, o site está utilizando provavelmente uma API dos Correios. Isso também vale na hora de efetuar o pagamento, caso o site também aceite PayPal ou o PagSeguro, por exemplo. A transação financeira acaba sendo por meios dessas APIS e diretamente com o site do meio de pagamento. Ou seja, a integração desses sistemas e os sites que utilizamos como exemplo, se dão por meio de uma API.

Outro exemplo é a API do Google Maps. Se você está num site procurando um hotel, já deve ter percebido que aparece um mapa do Google Maps indicando onde é o local exatamente, e através deste mapa você consegue até mesmo navegar por ele.

Muitas pessoas podem confundir uma API com um outro termo muito falado ultimamente, que são os endpoints. Um endpoint é basicamente o que um serviço expõe e esse serviço pode ser acessado por uma aplicação, por isso muitas vezes acaba sendo confundido com uma API, mas vale ressaltar que não é.
Um endpoint contém três principais características: Address (onde o serviço está hospedado), Binding (como o serviço pode ser acessado) e Contract (o que tem no serviço). Além disso, uma API pode existir sem um endpoint e vice-versa.

Python - Banco de dados com DB API
Curso de Python - Banco de dados com DB API
CONHEÇA O CURSO

É seguro utilizar uma API?

As APIs são muito úteis e tem diversos benefícios, além disso proporciona uma troca de informações muito segura, já que somente o proprietário da aplicação define quais informações estarão disponíveis. Você pode e deve utilizar uma API quando necessário, mas sempre visando pontos importantes de segurança.

É importante utilizar SSL nas conexões das APIS, assim toda a comunicação e dados enviados pelas APIS serão transportados criptografados pelo HTTPS. A autenticação também é importante para isolar o que pode ser fornecido de informação para cada um dos softwares que chama a API. Um exemplo são os tokens, que são validados como se fossem uma senha, pois são identificadores únicos que são enviados juntos das chamadas aos endpoints das APIs.

Para levar as informações de um lado para o outro, geralmente é utilizado o JSON, muito utilizado para retornar os dados das APIS baseadas em web. Além disso, esse conceito ocupa pouco espaço e é fácil de transportar via rede.

Apesar de estarmos falando o tempo todo de APIs mais voltadas para web, uma API não necessariamente é utilizada via web. Quem desenvolve softwares desktop pra Windows também pode utilizar APIS, como por exemplo utilizar as APIs do sistema operacional.

Depois que você tiver mais experiência além de consumir APIS de outras pessoas ou empresas, você pode construir as suas próprias, assim você pode utilizar em diversos outros projetos, poupar tempo e até mesmo disponibilizá-las para outras pessoas usarem.

O que define um desenvolvedor como júnior, pleno ou sênior?

Em algum momento da sua carreira você já deve ter pensado: em qual nível será que me encaixo? Será que ainda sou júnior ou já posso ser considerado pleno? Essas dúvidas costumam aparecer ainda mais na hora de elaborar um currículo ou de se candidatar para uma determinada vaga…

Neste artigo iremos abordar exatamente essa questão: quais são geralmente as diferenças entre os níveis de carreira júnior, pleno e sênior. Sim, falamos geralmente porque não existe uma regra específica, ela varia de empresa pra empresa, podendo variar de uma para outra.

Todo desenvolvedor deseja chegar ao ponto máximo de sua profissão, ser expert naquilo que faz. No caso, chegar ao nível sênior é o ápice de carreira pra muita gente. Mas o que determina um profissional sênior? Isso tem muito a ver com o tempo de experiência, mas não somente isso, pois a determinação desses níveis acabam sendo um mix de complexidade de tarefas e maturidade profissional. Sendo assim, vamos passar por cada um desses níveis para que possamos entender melhor.

Nível Júnior

Esse é o primeiro nível. Aqui o profissional pode ser um recém-formado na faculdade ou um profissional que ainda viveu pequenas experiências. Ele terá tarefas com uma complexidade menor, ou seja, tarefas mais básicas, sem tantas exigências. Além disso sempre terá algum outro profissional que irá coordená-lo, dando os direcionamentos, explicando, revisando suas tarefas, para que ele possa ir aprendendo e crescendo na sua área.
Em média, um profissional considerado nível júnior tem até 5 anos de experiência.

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

Nível Pleno

Aqui esse profissional já tem uma experiência mais significativa e geralmente acumula em média mais de 5 anos na mesma área, assim ele consegue tomar decisões mais estratégicas e conhece mais profissionalmente sua área de atuação. É um profissional mais confiante, porém ainda conta com um supervisor para auxiliá-lo, geralmente um profissional nível sênior. No quesito de formação, ele já é pelo menos um pós-graduado.

Desenvolvedor Android Pleno
Formação: Desenvolvedor Android Pleno
A formação Desenvolvedor Android nível Pleno da TreinaWeb tem como objetivo mostrar como recursos mais avançados, como o Bluetooth e as notificações, podem ser utilizados dentro de aplicações Android para interação com o usuário e/ou transmissão de dados entre dispositivos. A formação também contempla o desenvolvimento de aplicações para wearables com o Android Wear, além de se aprofundar na aplicação do Material Design em aplicativos Android.
CONHEÇA A FORMAÇÃO

Nível Sênior

Esse profissional tem 10 ou mais anos de experiência e terá mais participações em reuniões importantes com coordenadores e diretorias, além de receber mais atividades que exigem mais experiência profissional. Muito provavelmente quem chega a esse nível tem mais possibilidade de se tornar um coordenador, um líder dentro da empresa, por isso é interessante a pessoa se desenvolver como profissional, aprendendo um pouco da área de gestão seja por cursos, MBA… para que consiga gerir bem uma equipe, lidar com os projetos, prazos… ou seja, para chegar a esse nível o profissional deve se preparar para esses tipos de atividades também.

Desenvolvedor Front-end Sênior
Formação: Desenvolvedor Front-end Sê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 aprenderemos Sass, Google Analytics, empacotar nossas aplicações com Webpack, criação de aplicações Desktop com Electron, UX/UI e uma introdução aos frameworks mais utilizados no mercado: Angular, React, Vue e Ember.
CONHEÇA A FORMAÇÃO

Concluindo

Apesar do tempo de experiência contar bastante, você não pode ser um profissional estagnado, você deve progredir e evoluir junto com a tecnologia em que trabalha. Por isso nunca se deve abrir mão do estudo, você deve se especializar e se atualizar para ter essa progressão de carreira. E é claro, quanto maior a posição nessa escala crescente, maior a complexidade de tarefas, responsabilidades e, consequentemente, melhor será a remuneração.

Aqui vai uma observação: muitas vezes observamos essas nomenclaturas quando vamos procurar por determinadas vagas, como por exemplo “Desenvolvedor Java Pleno”. Mas vale lembrar novamente que esse nível varia de uma empresa para outra. Você não deve se prender tanto a isso, mesmo se você for um desenvolvedor Java júnior, deve se atentar também aos requisitos da vaga e ao que ela pede, o que pode ser pleno para uma empresa, pode não ser para outra. Se atente aos requisitos e se estiver apto, pode tentar sem problemas =)

Até a próxima!