Uma das coisas que mais ouvimos de iniciantes seduzidos pelo mundo do desenvolvimento mobile:
“Decidi o que quero fazer da vida! Vou criar um app que vai viralizar e, com isso, ficarei rico!”
Logo que isso acontece, preparo um e-mail de 5 páginas tentando explicar toda a trajetória que um profissional precisa percorrer para chegar ao nível de um desenvolvedor mobile, tanto para plataformas Android, iOS ou qualquer outra.
Provavelmente até perdemos o cliente após o e-mail. Existem três possibilidades:
- A pessoa nem leu o e-mail e simplesmente decidiu trocar de escola de cursos de TI;
- O indivíduo leu até o fim, chorou, quis me matar e, por fim, desistiu da ideia;
- O profissional leu, entendeu e falou: “challenge accepted!”
Pensando nisso, para evitar mais e-mails de 5 páginas (que ninguém gosta de ler), resolvi colocar tudo que sei sobre a trajetória de um desenvolvedor mobile em um só post. Esperamos que você goste e, mais que isso, que você diga: “Challenge Accepted!”
Conhecendo a Lógica de Programação
Pense da seguinte forma: qualquer software (mobile ou não) se propõe a solucionar um problema ou atender a uma necessidade. Agora pense no seu cotidiano e em problemas simples, como ‘cozinhar’. Para cozinhar, você precisa executar uma série de passos lógicos e sequenciais (ou em paralelo) para chegar a um determinado resultado (‘comida’).
Esta solução, basicamente, é um conjunto estruturado de ações que, a partir da resolução de problemas menores, realizam a solução de problemas maiores e, por fim, atingem o objetivo final.
Problemas computacionais não são diferentes, para serem solucionados precisam executar sequências lógicas e bem estruturadas de passos (algoritmos). A maneira como esta sequência de passos deve ser estruturada é apresentada quando você aprende sobre Lógica de Programação. Esse conhecimento é o primeiro passo na jornada de qualquer desenvolvedor de softwares, independente da área de especialização.
Resumindo, pensou em aprender a programar, pensou em Lógica de Programação!
E, portanto, antes de pensar em ter o seu próprio app, é extremamente necessário que você compreenda e saiba escrever algoritmos, bem como, dominar os demais conceitos de Lógica de Programação, entre eles: variáveis, comentários, tipos de identificadores e suas atribuições, operações aritméticas, estruturas de tomada de decisão e repetição, além de entender para que servem e o que são vetores.
Experiência com Linguagens de Programação
As linguagens de programação são as responsáveis por identificar e processar as sequências de passos lógicos (algoritmo), descritos para a resolução de um problema ou necessidade. Em outras palavras, todas as linguagens adotam os padrões de Lógica de Programação citados no tópico anterior, o que salienta ainda mais a importância desse conhecimento para qualquer programador.
Linguagens Orientadas a Objetos
Afunilando para o mundo do desenvolvimento mobile, grande parte das aplicações móveis são desenvolvidas com linguagens de programação que utilizam o paradigma de Orientação a Objetos. Este paradigma possibilita ao desenvolvedor criar seu aplicativo encapsulando lógicas de negócio e escrevendo códigos menores e mais organizados.
IMPORTANTE: o paradigma de Orientação a Objetos é muito mais que isso! Por si só já é um conteúdo fascinante e, por isso, desenvolvemos um post específico sobre o assunto. Neste post explicamos o que é o programação orientada a objetos (POO) e porque é tão importante para desenvolvedores. Se você ainda não sabe exatamente o que é POO, recomendamos a leitura! Até porque você precisará dominar esse conteúdo para ser um desenvolvedor mobile de ponta!
Qual linguagem escolher?
Para desenvolver nativamente na plataforma escolhida, você precisa aprender a programar com a linguagem utilizada nessa plataforma: Android, iOS ou Windows Phone.
Obs: mais adiante no post, iremos explicar o que é ‘nativamente’.
- Se você é iniciante na área, recomendamos que você inicie com o Android, pois é a plataforma que domina o mercado e, portanto, possui mais empregabilidade e potencial de mercado. Se essa for a sua escolha, aprenda Java.
- Caso você opte pelo iOS, você terá que aprender Objective-C ou Swift. Ainda é possível desenvolver utilizando o Objective-C, contudo, o Swift é a linguagem mais recente/moderna, a sucessora do Objective-C. Portanto, ao que tudo indica, é o futuro da programação mobile para iOS. Na Becode, temos um curso que ensina o básico da linguagem Swift, confira!
- Não recomendamos que você aprenda sobre desenvolvimento para Windows Phone, pois é uma plataforma que acabou não se consolidando, principalmente no Brasil. Contudo, se ainda assim essa é a sua vontade, opte por aprender C# ou Visual Basic.
Na Becode, você tem a opção de aprender Orientação a Objetos e Java em um só curso, dê uma olhada!
Antes de escolher, é importante…
Muita gente esquece de detalhes que são extremamente importantes na escolha por Android ou iOS. O device! Sim, o próprio Smartphone! Claro, existem emuladores, nos quais você poderá rodar e testar a sua aplicação no seu notebook ou PC. Contudo, estes emuladores – apesar de extremamente úteis e importantes – são limitados e, portanto, não reproduzem a real experiência mobile.
Sendo assim, se você optar por iOS, é fundamental que você possua um iPhone ou um iPad. O mesmo vale para o caso de você optar pelo Android. Entretanto, convenhamos, existe uma diferença grande de valores entre um iPhone e um celular Android, certo? Sim, ser um desenvolvedor para iOS é mais caro. Isso fica ainda mais claro no tópico que fala sobre publicação de apps nos marketplaces (Google Play e Apple Store).
Outro ponto que limita ainda mais a escolha pelo desenvolvimento iOS é o seguinte: o desenvolvedor precisa ter um MacBook ou um iMac rodando o sistema operacional da Apple, o MAC OS, pois, para instalar o Xcode (ambiente de desenvolvimento do iOS), você precisa desse sistema operacional.
Até é possível emular o MAC OS no Windows, contudo, você precisa ter certeza de que o seu PC é capaz de rodar o sistema operacional sem maiores problemas. Em outras palavras, é necessário ter um computador poderoso para isso.
Apps Nativos x Apps Híbridos
Anteriormente, comentamos que para desenvolver nativamente para Android e iOS, você precisa saber, respectivamente, Java e Swift (ou Objective-C). OK, isto está correto. Contudo, se você detesta Java e qualquer linguagem de programação da Apple, nem tudo está perdido. Você pode desenvolver o seu app de forma híbrida.
WTF!? Qual é a diferença?
Aplicativos nativos são desenvolvidos com as linguagens de programação nativas do sistema operacional, oferecidas pelo seu Kit de desenvolvimento de software (Em inglês, SDK – Software Development Kit). Os aplicativos nativos possuem a grande vantagem de poder acessar as funcionalidades do sistema operacional de forma facilitada, uma vez que a linguagem de desenvolvimento é nativa ao próprio sistema.
Já os aplicativos híbridos são desenvolvidos com linguagens de programação não nativas ao sistema operacional. Para isso, utiliza-se ferramentas (cross-platform ou multiplataforma) criadas especificamente para esse propósito. Em outras palavras, com essas ferramentas, o leque de caminhos possíveis para o desenvolvimento de uma aplicação mobile é ampliada. Entretanto, você ainda precisará saber sobre Lógica de Programação e Orientação a Objetos. Isso é essencial independente do tipo de aplicação: nativa ou híbrida.
Entre as ferramentas mais conhecidos dessa categoria, destaca-se:
Para o desenvolvimento de aplicativos híbridos, podem ser utilizadas linguagens de programação para desenvolvimento Web, tais como HTML, CSS e Javascript. Portanto, se para você, o desenvolvimento utilizando estas tecnologias é mais proveitoso para os seus objetivos profissionais, vá em frente!
Contudo, recomendo que você estude as diferenças existentes entre desenvolvimento mobile nativo ou multiplataforma e, a partir disso, tome sua decisão com base nas vantagens e desvantagens de cada um, somado ao seu contexto atual (ideia de app ou projeto no qual você está envolvido).
Se nada impossibilitar o desenvolvimento do app utilizando ferramentas multiplataformas (apps híbridos), não hesite! Aprenda HTML, CSS e JavaScript!
Armazenando Dados e Informações
As aplicações móveis são as principais responsáveis pela geração e pelo consumo dos dados existentes no mundo. Diferentes aplicações geram quantidades ilimitadas de dados a cada segundo, ao mesmo passo que consomem dados de aplicações externas. Todo esse fluxo de dados gerados precisa ser armazenado em algum lugar.
Obviamente, as aplicações móveis possuem recursos que permitem o armazenamento destes dados. Este que pode ser realizado de diferentes maneiras:
- Armazenamento interno: dados privados e armazenados na memória interna do dispositivo;
- Armazenamento externo: dados públicos e armazenamento em ambiente externo e compartilhado;
- Banco de dados: dados estruturados (ou não), armazenados em uma base de dados privada.
Sim, o armazenamento em Banco de Dados é a forma mais utilizada e, portanto, mais profissional. Sendo assim, é nesse momento que eu preciso dizer:
“Sim, você precisará estudar sobre Banco de Dados!”
Grosseiramente, Banco de Dados são coleções organizadas de dados que podem ser facilmente acessados, manipulados, gerenciados e atualizados. Para o gerenciamento de um banco de dados utiliza-se um SGBD – Sistema Gerenciador de Banco de Dados, e pode ser um SGBD relacional ou NoSQL. Como o assunto é complexo e de extrema importância, criamos um post que foca exclusivamente em SGBDs: o que são, para que servem, funcionalidades e quais são os mais utilizados no mundo.
Resumo da história, o desenvolvedor mobile de sucesso precisa compreender sobre a criação e o gerenciamento de um Banco de Dados.
Ambientes de Desenvolvimento – IDEs
Durante o desenvolvimento de uma aplicação mobile é fundamental otimizar todo tipo de processo, desde a escrita do código até sua execução. Quando o processo de desenvolvimento é otimizado, o desenvolvedor atinge maior produtividade e despende energia com o que é realmente necessário: a lógica da aplicação que está sendo criada (Lógica de Programação), bem como, sua aplicabilidade com os problemas e necessidades da vida real (Orientação a Objetos).
Sim, a vida de um desenvolvedor seria extremamente sofrida, caso não existissem os Ambientes Integrados de Desenvolvimento – IDE. As IDEs são responsáveis por proporcionar a capacidade de gerar escrita, teste, compilação e execução de código de forma rápida e correta.
Estes ambientes possuem diversos recursos integrados, sendo os principais:
- Editor de texto para a escrita do código;
- Compilador para, obviamente, compilar o código-fonte e gerar linguagem de máquina;
- Depurador que auxilia no processo de encontrar e corrigir os defeitos de código-fonte;
- Mecanismos de distribuição responsáveis por auxiliar no processo de criação do instalador do aplicativo;
- Mecanismos de refatoração que permitem melhorar o código-fonte do aplicativo, tornando-o mais limpo, otimizado e facilitando a compreensão por parte do desenvolvedor mobile (ou equipe de desenvolvimento).
Em outras palavras, um desenvolvedor mobile precisa ter domínio completo sobre a IDE a ser utilizada. Isso com certeza irá influenciar na qualidade final da aplicação, tanto em termos de código, quanto em termos de experiência do usuário final. Entre as IDEs mais conhecidas, destacam-se:
- Android Studio – desenvolvimento de aplicativos para Android;
- Xcode – desenvolvimento de aplicativos para iOS.
Para mais informações e download, você pode visitar o site oficial das ferramentas: Android Studio e Xcode.
Modelando o aplicativo: conhecendo a UML
Se você já tem todos os conhecimentos apresentados acima, parabéns! Você já está preparado para participar de projetos com clientes externos, internos, e porque não criar o seu próprio app e empreender?
Contudo, antes de iniciar qualquer novo app, é fundamental que você extraia corretamente os requisitos e as funcionalidades que o aplicativo deverá possuir. Este levantamento de requisitos é de extrema importância, assim você consegue identificar riscos, possíveis problemas no desenvolvimento, definir os atores envolvidos no desenvolvimento, testes e utilização final; definir a estrutura e a arquitetura do aplicativo e fazer a modelagem do aplicativo. Para isso utiliza-se UML!
UML – Unified Modeling Language (em português, Linguagem de Modelagem Unificada) é uma linguagem de modelagem que permite ao desenvolvedor representar a aplicação, visando facilitar a compreensão e a pré-implementação. Com UML, o desenvolvedor pode modelar:
- elementos (estruturais, comportamentais, grupos de elementos e entre outros)
- relacionamentos (dependências, associações, generalizações e implementações)
- mecanismos de extensibilidade (estereótipos e regras)
- diagramas (diagramas de caso de uso, diagramas de classes, diagramas de atividades, dentre outros)
Sendo assim, à medida que você vai crescendo na profissão, os conhecimentos em UML vão ficando cada vez mais essenciais para se obter êxito no projeto e na aceitação do cliente final, seja ele externo, interno ou você mesmo.
User Experience (UX) e User Interface (UI)
O sucesso de um aplicativo mobile está completamente conectado com uma ótima experiência proporcionada ao seu usuário final (UX) e uma excelente interface gráfica para navegação e utilização do app (UI). Portanto, estudar esses dois tópicos é primordial para o desenvolvedor mobile.
- Quando falamos de UI, nos referimos à visualização da tela do aplicativo em um determinado momento. Em outras palavras, os componentes que integram a tela mobile, como exemplo, botões, campos de texto, checkbox, tabs e entre outros elementos, além da forma como estes elementos são posicionados na tela.
- Já UX está relacionado à dinâmica do app e a experiência proporcionada ao usuário. Tempo de carregamento, facilidade de utilização, interação com o usuário e outros fatores que podem influenciar diretamente na usabilidade do app.
UX e UI estão completamente conectados. Não vou dizer que é impossível, mas é raro você ter uma aplicação com uma excelente UX, mas com uma UI desorganizada e pouco intuitiva.
Moral da história, praticamente toda aplicação mobile depende de UX e UI para ter sucesso. Assegurar que um aplicativo possua esses requisitos não é uma obrigação unicamente do desenvolvedor. Muito pelo contrário, irá competir ainda mais às áreas de Marketing, Design e Negócios. Contudo, se você está criando um app por conta ou você ainda não possui uma equipe completa, é muito provável que você será o responsável único pelo sucesso do seu app. Portanto, UX e UI serão conhecimentos cruciais para você.
Mesmo que você possua uma equipe completa, esses conhecimentos valorizam muito o profissional da área. Sendo assim, são conhecimentos sempre bem-vindos ao desenvolvedor mobile, pois em algum momento, durante a construção do app, você terá que se comunicar com as outras áreas para chegar a melhor solução para o seu usuário final.
Testes para aplicativos móveis?
A fim de garantir que as funcionalidades do aplicativo estejam sendo executadas conforme o esperado, é essencial que o profissional saiba escrever e executar testes para seus apps. Afinal de contas, o desenvolvedor é o principal responsável pela qualidade do seu código.
Existem diferentes tipos de testes. Estes podem ser realizados para verificar:
- A interação e comunicação com o sistema operacional – testes de compatibilidade;
- Se o aplicativo demonstra lentidão – testes de desempenho;
- A capacidade de comunicação com outros aplicativos – testes de mobilidade;
- Se o aplicativo executa as tarefas que devem ser executadas – testes de funcionalidade.
Entendido isso, o profissional precisará de ferramentas para atestar a qualidade do seu código. Entre elas, destaco o: AndroidJUnitRunner, Expresso e UI Automator (para aplicações Android); e XCTest para desenvolvimento de aplicativos iOS.
Publicação em Marketplaces
Este tópico é mais importante para empreendedores ou desenvolvedores autônomos, àqueles que pretendem ganhar dinheiro com o seu próprio app (monetizar). Entretanto, são conhecimentos que podem ser extremamente úteis a qualquer profissional da área, inclusive àqueles que fazem parte de grandes equipes de desenvolvimento. Afinal de contas, nunca se sabe o futuro. Vai que um dia você resolve publicar o seu próprio app mobile?
Você já tem todos os conhecimentos e ferramentas para isso, sendo assim, a pergunta que fica é: por quê não? Se você resolver disponibilizar o seu app de forma gratuita (ou paga) nos marketplaces, você precisará passar por uma das seguintes plataformas: Google Play (apps Android) e a Apple Store (apps iOS).
Para disponibilizar os aplicativos na Google Play, o primeiro passo necessário é ter um cadastro no Google Play Developer Console. A taxa de abertura da conta tem um custo único de U$25. A partir daí, basta enviar o seu aplicativo pelo próprio console.
Já, para publicar na Apple Store, primeiro você precisa criar uma conta no iOS Developer Program. O iOS Developer Program é o serviço obrigatório para quem deseja distribuir apps na loja da Apple. Assinando o iOS Developer Program você terá acesso às ferramentas de desenvolvimento e testes. O custo individual é de U$99 anuais. A partir daí, basta distribuir o aplicativo.
Como monetizar o meu app?
Que fique claro! Essa é uma preocupação que você deve ter na etapa de planejamento do seu app. Logo no início do projeto! Combinado? Então, vamos ao que interessa. Existem diferentes maneiras de se monetizar um aplicativo, entre elas:
- Versões premium: o download do aplicativo custa um determinado preço que é cobrado pelas lojas de aplicativos. Neste caso, o marketplace recebe uma comissão pela venda do aplicativo.
- Anúncios: nesta modalidade, anunciantes pagam o proprietário do app para exibir publicidade nas telas da aplicação. Neste caso você possui o poder de definir onde exibir os anúncios e quais exibir, de acordo com o perfil dos seus usuários. Ex: 2048
- Apps freemium: combina o modelo gratuito e o modelo premium (pago). Neste caso, embora o aplicativo seja gratuito, o usuário pode comprar funcionalidades extras. Modelo muito comum em jogos. Ex: Clash of Clans
- Venda de produtos físicos: outra maneira de monetizar o seu aplicativo é a partir da venda de produtos físicos. Neste modelo, você realiza um comércio eletrônico dentro do aplicativo, disponibilizando um portal para que os usuários possam descobrir e comprar produtos. Ex: Netshoes
- Modelo de assinatura: nesta modalidade, o usuário é cobrado mensalmente (ou anualmente) para ter acesso aos recursos premium de determinado aplicativo. Geralmente existem partes acessíveis gratuitamente também. Ex: Spotify
Monetização de apps é um assunto e tanto! Acima, apenas tentamos resumir o que há de mais comum e mais importante sobre o assunto. Para assim, tentar dar aquele incentivo inicial para quem está começando a se preocupar com o tema. Contudo, a verdade é que não existem muitos limites quando o assunto é monetização! Com criatividade, você pode combinar diversas formas de receita e, inclusive, criar novos modelos de negócio.
Desistir ou “Challenge Accepted”?
O desenvolvedor mobile é um dos profissionais mais valorizados dos últimos tempos. Se você não conhecia muito sobre essa área, bom, agora você entende o porquê de tanta valorização. Não é fácil ser desenvolvedor mobile e é mais difícil ainda ser um profissional de ponta! Contudo, não desanime, é possível! Para tudo há seu tempo, comece pelo básico e vá avançando conforme o seu ritmo. Particularmente, espero que este artigo seja o ponto de partida para sua trajetória de sucesso na área e não o fim.
Se você já é desenvolvedor, procure sempre se aperfeiçoar, buscando características que o torne único como profissional. Para evoluir na área, pratique, estude e modele soluções de problemas, programe, teste e desenvolva mudanças!
Tente contribuir para o mundo, proporcionando soluções a problemas e necessidades. Se você tiver essa mentalidade, com certeza há um espaço imenso para você nessa área! Desde que você possua os conhecimentos ou equipe necessária para isso!
Boa sorte! Esperamos que o post sirva como um norte para você iniciar ou moldar a sua carreira como um desenvolvedor mobile. Qualquer dúvida, sugestão, crítica, enfim… fique á vontade para deixar um comentário que logo iremos responder! Caso você deseje começar a aprender Android ou iOS ainda hoje, confira nossos cursos na área, você irá gostar! Até a próxima!