Desenvolvimento de software: Saiba como iniciar o seu produto digital

Negócios

Nos últimos anos o crescimento do uso de produtos digitais cresceu exponencialmente, e com isso a demanda por desenvolvimento de software consequentemente cresceu ainda mais.

Aqui no Brasil empresas únicornios (empresas que valem mais de 1 bilhão de dólares) como 99, IFood, PagSeguro, Movile, Gympass não são mais novidades. Agora elas estão na corrida para se tornarem decacórnios (empresas que valem mais de 10 bilhões de dólares), assim como recentemente fez a Nubank.

Cartão de crédito da Nubank.
Nubank: A primeira decacórnio brasileira.

Tem uma coisa que todas elas tem em comum: desenvolvimento de software, ou seja, todas elas possuem um aplicativo/sistema como produto.

Nesse artigo vou explicar de uma maneira geral no que consiste o desenvolvimento de software e com o que você tem que se preocupar ao construir seu produto digital. Bora lá?

Conceitos do desenvolvimento de software

Linguagens de desenvolvimento de software

Intrinsicamente ligado ao desenvolvimento de software estão as suas linguagens, são elas que nos permitem criarmos soluções digitais.

Aqui vou apenas descrever brevemente algumas linguagens, afim de dar um pouco mais de profundidade ao tema, o objetivo aqui não é comparação, até porque cada uma serve para um contexto diferente.

Javascript

Uma das linguagens com mais ascenção nos últimos anos, hoje é utilizada para desenvolvimento back-end (node), front-end (react, vue e angular) e mobile (flutter, react-native e ionic).

Python

Junto com o Javascript, é também uma linguagem em um crescimento exponencial de uso nos últimos anos, principalmente por conta da sua utilização em conjunto com data science.

Java

Criada no início dos anos 90, JAVA foi uma das linguagens mais utilizadas durante muito tempo, bancos robustos, o sistema operacional Android são alguns exemplos de grandes aplicações que utilizam a linguagem.

C#

Linguagem criada pela Microsoft em 2002. O objetivo da MS foi apostar na produtividade, por isso, quando a criaram se basearam muito nas linguagens já existentes como JAVA, C++ e Object Pascal.

Hoje, em conjunto com o .NET Core vem ganhando muito espaço no mercado, principalmente por agora ser Open Source e rodar em sistemas operacionais baseados em UNIX.

Swift

O Swift foi criado pela Apple para dar suporte para os desenvolvedores criarem aplicativos para as plataformas da marca. A Apple trocou do Objective-C para o Swift por sua sintaxe mais simples e por ser Open Source.

Algumas outras linguagens de programação:

  • Kotlin
  • R
  • Objective-C
  • Ruby
  • PHP

Tipos de desenvolvimento de software

Se você começou a pesquisar sobre desenvolvimento de software provalvemente você ja escutou os termos back-end, front-end, full stack e mobile.

Desenvolvimento front-end

O desenvolvedor front-end é responsável por criar a interface da aplicação, ele quem cria a maior parte de interação com o usuário.

Dessa maneira, ele tem que lidar com questões como, usabilidade, perfomance no navegador, garantir funcionamento na maioria dos navegadores e a arquitetura da aplicação.

Um desenvolvedor front-end trabalha majoritariamente com HTML, CSS e JavaScript e existem algumas ferramentas e frameworks que o auxiliam a criar a melhor experiência possível para o usuário, algumas delas:

Frameworks CSS

  • Bootstrap
  • MaterialUI
  • Vuetify
  • Foundation
  • Bulma

Frameworks e bibliotecas JavaScript

Desenvolvimento mobile

Saindo da WEB, precisamos falar sobre um desenvolvedor mobile. Ele é basicamente um front-end dos aplicativos.

Ou seja, ele programa toda a interface de interação com o usuário, só que em um contexto móvel.

Porém, como o ecossistema de aplicativos é totalmente diferente do ecossitema da WEB, um desenvolvedor mobile precisa ter algumas outras preocupações como versão dos sistemas operacionais, perfomance, consumo de bateria, consumo de banda e entre outras limitações que enfrentamos no desenvolvimento para celulares.

Como sabemos, existem dois sistemas operacionais mais conhecidos para os smartphones, Android e IOS. Dessa forma, temos 3 opções quando vamos iniciar um desenvolvimento:

Desenvolvimento nativo Android

Aqui são utilizadas as linguagens Kotlin ou JAVA, e é recomendado seguir as orientações da Google, tanto para design quanto para a arquitetura da aplicação.

O código criado pode ser rodado apenas em dispositivos Android.

Desenvolvimento nativo iOS

No desenvolvimento para as plataformas da Apple utilizamos as linguagens Objective-C ou Swift, diferentemente da Google que recomenda algumas orientações, a Apple impõe algumas regras, e se não a seguirmos o aplicativo é rigorosamente recusado dentro da loja.

Todo o desenvolvimento para iOS tem de ser feito obrigatoriamente em um ambiente Apple, ou seja, precisamos de um MAC para criar um aplicativo para iPhone.

Aqui, assim como no caso do Android, o código criado só roda em dispositivos com iOS.

Desenvolvimento híbrido

Nessa abordagem, com o auxílio de frameworks, temos apenas um código rodando em ambas as plataformas.

React Native, IONIC, NativeScript, Flutter são alguns desses frameworks e todos esses são escritos utilizando o JavaScript.

Powered by Rock Convert

Ou seja, dessa maneira, você consegue criar aplicativos para iOS e Android utilizando HTML, CSS e JavaScript.

Importante lembrar que nesse caso mesmo utilizando tecnologias da WEB, o contexto ainda é mobile, então vamos precisar nos preocupar com tudo que um desenvolvedor mobile precisa.

Desenvolvimento back-end

Ao contrário do desenvolvimento front-end, no back-end o usuário não percebe como ocorre. Isso, por todo o código do back-end rodar no servidor e não no navegador.

E é ele que garante acesso ao banco, regras de negócio, permissão e segurança. Esse profissional precisa gostar mais de lógica, de pensar em regras de negócio do que um profissional front-end.

Para trabalhar aqui, são utilizadas algumas das linguagens citadas acima, como PHP, Java, C#, JavaScript, Ruby e entre outras.

Desenvolvimento de software: Front-end vs Back-end

Desenvolvimento full stack

Desenvolvedor full stack é o profissional que trabalha tanto no front-end quanto no back-end da aplicação, ou seja, ele consegue entregar um projeto do início ao fim.

Em outras palavras, ele consegue desenvolver a interface, as regras de negócio, conexão com o banco e configurar o servidor para que a aplicação fique disponível para o usuário.

Obviamente, existem inúmeras dificuldades em se trabalhar com desenvolvimento full stack, pois conhecer bem apenas uma área de desenvolvimento já é complicado, imagine todas elas.

Metodologias de desenvolvimento de software

Existem diversos estudos afim de melhorar a qualidade do software desenvolvido, seja em qualidade de código, ou na utilização do mesmo pelo usuário.

A grande maioria de profissionais da área já passaram pelo problema de criar um software que ninguém utiliza.

E são esses problemas que as metodologias ágeis tentam resolver. Ao criar seu produto digital é de grande importância que você utilize um SCRUM, Kanban, ou XP para o desenvolvimento do seu produto digital.

Assim você consegue testar em ciclos se a sua hipótese de solução resolve de fato um problema do seu usuário.

Testes no desenvolvimento de software

Assim como em qualquer produto, o teste é um dos passos mais importantes afim de garantir a qualidade do software.

Dessa maneira, é de grande importância separar uma parte do planejamento para a realização de testes no seu produto digital.

Para isso você pode utilizar de diversas abordagens, como os testes cruzados, alocar um QA ou testes automatizados.

Software Livre (Open Source)

Um dos principais motores de inovação do software são as comunidades Open Source. Hoje grandes empresas como Google, Facebook, Microsoft, IBM e outras movimentam milhares de códigos abertos para a comunidade.

A tradução de Open Source é código aberto, ou seja, como o próprio nome representa, diz respeito a um software que tem seu código liberado para o público.

Dessa forma, outros desenvolvedores podem consultar e utilizar desses códigos em seus projetos e produtos.

Exemplos de ferramentas com o código aberto (Open Source):

Dicas para criar um produto digital

1. Formação de equipe

Agora que você sabe os princípios do desenvolvimento de software, é importante montar uma equipe multidisciplinar para cobrir todas as áreas do produto.

Dessa forma você tem muito mais chance de conseguir criar um produto com mais aderência ao mercado.

Algumas das posições de uma boa equipe de produto:

Gerente de produto (PM)

É o responsável pelo direcionamento do produto, ou seja, é ele quem define o Roadmap com base em métricas e com foco no usuário.

Esse profissional tem de ter uma boa base em growth, ux, métricas de produto e processos.

Desenvolvedores

Como já falamos muito aqui nesse artigo, eles são os responsáveis por desenvolver todo o produto.

E para isso é importante termos todos os tipos de desenvolvedores dentro do time, seja um front, back e até um full stack.

UX/UI Designer

Esse profissional é o responsável por “arquitetar” a experiência da plataforma para que fique da melhor maneira possível.

Produtos com uma boa experiência de uso fazem muita diferença, Nubank, Ifood e Netflix são referências nesse tema.

QA

Como falamos que testes é um dos passos mais importantes no desenvolvimento de um produto digital, precisamos de um profisional dedicado a testar a qualidade da aplicação.

Esse profissional pode realizar testes manuais como testes automatizados, sejam eles de integração, unitários ou end-to-end.

Nesse artigo, passei rapidamente por algumas áreas e conceitos relacionados ao desenvolvimento de software.

Se ficou alguma dúvida deixe nos comentários que responderemos o mais rápido possível.

Tem alguma ideia de produto digital? Entre em contato!