Como começar o desenvolvimento mobile?

Rogério Marques

10 maio 2017 - 09:00 | Atualizado em 12 abril 2023 - 18:03

Pessoa sentada em um deck programando em um laptop

Se você é um desenvolvedor experiente tentando se aventurar em uma nova área ou um calouro entusiasmado da faculdade tentando saudavelmente consumir seu tempo através do aprendizado de algo novo, se colocando assim um passo à frente de seus colegas, ou ainda se você é um aposentado tentando ocupar seu tempo aprendendo algo completamente diferente, este artigo sobre desenvolvimento mobile é pra você.

Em uma era onde é previsto que cerca de 75% do uso da internet será em dispositivos móveis, saber como desenvolver apps para celulares pode certamente ser uma importante habilidade em sua carreira, não somente por ser uma tecnologia sendo consolidada mais e mais a cada dia, mas também por conta de seu mercado de crescimento rápido e sem pessoas suficientes trabalhando nele. Portanto, por que não experimentar e aprender a desenvolver coisas que milhões de pessoas irão utilizar?

Além do mais, é um tipo de desenvolvimento bem divertido!

Durante meus dias de iniciante e sem rumo na universidade — e talvez até agora em que estou perto da graduação — uma das coisas que realmente costumava me incomodar era a dúvida. Sempre digo que a ciência da computação pode ser tão vasta quanto medicina em termos de diferentes áreas de atuação, e como elas podem ser ao mesmo tempo diferentes e conectadas, desde computação gráfica, até computação aplicada à física ou estatística, desenvolvimento web, inteligência artificial, bioinformática, redes e por aí vai. Tive a chance de cair no meio do desenvolvimento mobile durante a faculdade e graças a isso, meu fator dúvida foi diminuído e agora eu tenho mais ou menos uma ideia do que eu realmente curto na computação.

O que eu quero compartilhar aqui é a minha perspectiva, a de um sujeito com cerca de 2 anos e meio de experiência com desenvolvimento mobile que já esteve em contato com as três atuais maiores plataformas mobile, pra te ajudar a decidir onde começar, caso um dia você acorde sem vontade de gastar o resto da vida assistindo Netflix.

Basicamente, é a perspectiva de um iniciante para ajudar outros iniciantes. Não só porque eu sou um cara muito legal e gente fina, mas também porque quando eu me tornar um desenvolvedor sênior eu provavelmente vou ter esquecido de muitas das coisas que planejo dizer. Provavelmente vou estar mais preocupado em onde guardar as toneladas de dinheiro que eu certamente possuirei, ou decidindo se passarei minhas próximas férias no Japão, Machu Picchu ou em Marte.

Mas então, por que raios mobile? Resposta simples: apps são responsáveis por cerca de 92% da utilização de internet nos dispositivos móveis, como mostra o gráfico abaixo:

Pessoa sentada em um deck programando em um laptop

 

Estou tendo a ajuda de um desenvolvedor sênior colega de trabalho na revisão técnica da coisa toda pra evitar que eu espalhe desinformação pela internet. O nome dele é Guilherme Minglini, então caso você veja algo errado aqui, reclame com ele também, não só comigo.

Ah, também não vou cobrir plataformas híbridas/frameworks de desenvolvimento neste artigo, como Xamarin ou React Native. Eu até agora trabalhei apenas com desenvolvimento nativo, mas os primeiros são também opções muito legais se você deseja acelerar o processo de desenvolvimento.

Como começar o desenvolvimento mobile

Aqui vão algumas coisas importantes que você deveria considerar antes de pôr as mãos na primeira IDE em que tropeçar pelos guetos da internet.

A Curva de Aprendizagem

Embora a quantidade de aprendizado que alguém pode adquirir dada uma determinada fatia de tempo é relativa — algumas pessoas podem aprender Android mais facilmente do que iOS se elas já tiverem o conhecimento de Java, por exemplo. A curva de aprendizagem é um fator subjetivo que pode ser sentido, ainda que difícil de ser medido.

Em minha humilde opinião, Windows Phone ganha nesse pódio, seguido do Android e depois do iOS, pelo menos no começo. A Microsoft provê um ambiente mais intuitivo com o Visual Studio, uma linguagem de programação completa e pouco verbosa (C#) e um editor visual consistente para construir interfaces gráficas.

iOS contudo, oferece um conceito de difícil absorção nos estágios iniciais. O XCode (IDE da Apple para iOS) conta com simplicidade, o que é incrível para usuários experientes, mas não tão simples pros noobs. O Interface Builder oferece storyboards, que permitem que a aplicação seja visualizada completamente, incluindo a forma como seus componentes (telas, modais, etc.) interagem entre si, porém também traz as infelizes das constraints e controllers, que podem ser mais difíceis de aprender do que aprender a desviar dos ataques de tias perguntando sobre namorados/namoradas. Com relação à linguagem, se você planeja utilizar Objective-C, recomendo alocar tempo extra pra aprender a sintaxe pouco comum. Caso você pretenda usar Swift, certamente irá se divertir mais.

Finalmente temos Android, e este ponto lhe trará pequenos enjoos. Apesar de ser relativamente fácil construir aplicações simples, se você precisar utilizar controles mais complexos, estes não serão fáceis de aprender. Em aplicações complexas, o Android se torna altamente fragmentado em termos de componentes e classes (fragments, adapters, e mais outros nomes esquisitos).

O Android Studio oferece um jeito até fácil de construir interfaces e tem atalhos muito úteis, mas o Java joga maioria do trabalho fora. Um projeto de app Android pode ter mais arquivos do que o cérebro pode absorver de primeira, o que pra mim é bem desestimulante. Aprender Android leva tempo e pode parecer assustador em estágios mais avançados, mas felizmente outros aspectos da plataforma fazem valer a pena estudá-la, como você verá a seguir neste artigo.

Em suma, aqui está um gráfico extremamente tendencioso, não confiável, baseado somente na minha opinião e que jamais deve ser usado como referência pra nada de como eu vejo a curva de aprendizagem para as três plataformas:

gráfico

 

O que eu quero dizer é: Windows Phone é o mais fácil no começo, mas fica difícil quando o assunto é construir coisas complexas, principalmente por conta de seus recursos escassos. Android é relativamente simples quando você começa, mas controles complexos podem demorar mais pra serem feitos. Quanto ao iOS, começar é um pesadelo absoluto, mas uma vez que você entende os conceitos básicos e se familiariza com o ambiente, a vida volta a brilhar novamente.

O Mercado

Uma das principais coisas a serem consideradas quando se pensa em entrar no mundo do desenvolvimento mobile é a fatia de mercado de cada plataforma. Ninguém quer passar centenas de horas construindo uma interface, cuidado dos detalhes de cada mínima diferença de pixel entre componentes ou documentando cada método criado em prol de algo que ninguém vai usar, especialmente no mercado de mobile onde a possibilidade de viralização de um app entre usuários mobile é consideravelmente maior do que em outros tipos de software na indústria de TI.

Programadores tendem a pensar sobre eles mesmos como artistas e seus códigos como obras primas escritas. Ninguém quer sua obra prima esquecida num quartinho escuro solitário no fundo da casa junto das ferramentas enferrujadas.

Só pra você ter uma ideia, aqui vão alguns números interessantes sobre as vendas de smartphones pelo mundo para usuários finais por sistema operacional no quarto trimestre de 2016 (em milhares de unidades):

android

A IDC também fornece uma visão geral das fatias de mercado mobile, do terceiro trimestre de 2013 até o terceiro trimestre de 2016:

mobile

Como apontado pelos números, o Windows Phone hoje em dia está praticamente morto, e é aí que ele perde a corrida. Mesmo que em 2016 muitos acreditassem que o lançamento do Windows 10 e da Universal Windows Platform poderia salvar o mercado mobile para a Microsoft, a base de usuários diminuiu mais do que a fé média das pessoas na humanidade desde a popularização da internet, o que na minha opinião é bem triste, já que o ambiente de desenvolvimento para a UWP é excelente.

Os Recursos

Uma coisa importante a se considerar ao se começar é por onde aprender. Documentação? Tutoriais? Stackoverflow? A resposta é: todos.

Quando o assunto são recursos e o que está disponível em termos de material de estudo, Android ganha o topo da lista, seguido do iOS e do Windows Phone, nesta ordem.

Android não só tem respostas boas e consolidadas no stackoverflow e bons tutoriais, mas também fica muito à frente nas maneiras de se fazer as coisas. Enquanto no Windows Phone e no iOS há uma ou duas soluções para um problema, no Android há dez ou onze.

Isso se deve provavelmente a dois fatos óbvios: mais usuários requerem mais apps, que requerem mais desenvolvedores, que geram mais problemas, que geram mais perguntas a serem respondidas e, felizmente, garantem a nós noobs mais respostas. Você pode confirmar isto com estas incríveis estatísticas do stackoverflow disponibilizadas mais cedo neste ano.

O Ambiente de Desenvolvimento

Em termos de IDEs, um claro vencedor se mostra: Visual Studio. Grande parte dos programadores tende a gostar dele por conta de seu grande número de funções, plugins, atalhos, debugger, e o fato de que ele praticamente pensa por você. Às vezes ele chega a te perguntar se tudo está indo bem na sua vida quando você escreve código errado. Ele te traz um chá de camomila pra te acalmar e confortar também.

O XCode, como dito antes, opta pela abordagem simplista. Utiliza o mínimo de ícones necessário, oferece muitas ferramentas de alto nível para a construção de interfaces (é possível muitas vezes não ter que escrever código nenhum pra colocar um componente na tela do app), mas seu debugger pode ser bastante verboso e complicado. No começo, é bem difícil aprender onde está o quê, mas depois de certa prática as coisas se movem mais suavemente. Caso você não tenha experiência utilizando Macs, que é necessário para rodar o XCode e desenvolver pra iOS (exceto considerando-se uma plataforma de desenvolvimento híbrido), os atalhos podem causar leve irritação.

Contudo, o XCode possui uma das melhores funções já inventadas na história da programação: você pode colocar emojis no código e usá-los como variáveis. Não é nada funcional, mas quem liga, são pequenos emojis super daoras no código, né não?

Código fonte em html

No Android, o Android Studio é atualmente a melhor opção para desenvolvimento. Ele oferece uma boa maneira de se construir interfaces e de se navegar pelo código. Contudo, se você não tiver um bom hardware (tipo, MUITO bom), os tempos de build podem ser tão longos que dependendo do tamanho do projeto você pode considerar aprender um hobby pra encaixar no tempo em que você espera pela finalização do build. Não mencionei outras IDEs pra Android porque a maioria ou é mais lenta ou menos utilizada do que o Android Studio (sim, estou falando com você, Eclipse).

O Android, provavelmente numa tentativa de concorrer com os emojis no código oferecidos pelo XCode, possui um método de extrema utilidade que permite saber se o usuário é uma cabra ou não, o método isUserAGoat(). Nas palavras da própria documentação oficial, o método “automaticamente identifica cabras utilizando a tecnologia avançada de reconhecimento de cabras”. Magnífico.

Voltando aos aspectos mais sérios do texto, no quesito velocidade, o pódio tem o XCode em primeiro, Visual Studio em segundo e Android em décimo primeiro, mas claro que isso varia de projeto pra projeto. Eu consigo de certa forma medir isto porque já trabalhei no mesmo projeto nas três diferentes plataformas, com as mesmas tarefas pra serem feitas em cada um deles.

Conclusão

Qualquer um dos três que você venha a escolher para iniciar seus estudos em desenvolvimento mobile, certamente haverá um bom ganho de conhecimento que pode em geral ser transferido entre eles — pelo menos no que diz respeito a padrões de projeto e arquiteturas de aplicações. Tudo depende do seu objetivo enquanto programador e dos objetivos da sua aplicação.

Quanto aos objetivos enquanto desenvolvedor, os salários não são ruins: o salário médio para um desenvolvedor mobile sênior é em torno de US$100,000 anuais nos Estados Unidos e os números mostram aumentos não somente nos salários, mas também na demanda por este tipo de profissional. Isso significa: rios de dinheiros pra você comprar quantos pacotes de Ruffles puder carregar!

Quanto aos objetivos de sua aplicação, se seu objetivo é atingir o maior número de usuários possível utilizando módulos customizáveis, bibliotecas e características nativas e tendo os custos de produção mais baixos possíveis, Android é a sua praia. Caso você queira construir aplicações atrativas, bonitas, intuitivas e amigáveis, mirando usuários de grande maioria pagantes e utilizando um bom ambiente de desenvolvimento, aliste-se no #teamiOS.

Se você quer construir protótipos e aplicações portáveis para o Windows desktop e aprender C# no meio tempo e também não quer ganhar muito pra isso, Windows Phone está à sua espera de braços abertos.

Então, qual você irá escolher? Feche este texto e comece a escrever um ou dois códigos!

[Kit] Checklist, vídeos e artigos com dicas para criar um app

Se interessou por desenvolvimento mobile? Então baixe nosso Kit – Checklist para criar um app de sucesso.

download

Este texto foi originalmente postado por mim aqui, em inglês, e adaptado para o português.

Recomendados para você

Imagem em preto e branco exibindo homem utilizando máscara de proteção
Como o corona vírus podem afetar o financiamento de startups? ...
Homem pensativo em sala de escritório
Como os líderes de TI podem atrair e manter os melhores talentos ...
Pessoa utilizando teclado com led de notebook
A grande integração de dados, tecnologia e serviços ...