Cada vez mais, vivemos em um mundo totalmente digitalizado, fazendo com que o desenvolvimento de software esteja cada vez mais inserido na sociedade. Isso vem desde o aumento de uso de aplicativos e sistemas por parte da população, até países que estão colocando a disciplina de programação nas escolas. Dessa forma, o mercado vem crescendo e tornando o surgimento de novas empresas de desenvolvimento de software algo natural.
Se você está lendo esse artigo, pode ter dois motivos:
- Porque está procurando entender o que faz uma empresa de software para trabalhar em uma;
- Está procurando contratar uma empresa de desenvolvimento de software;
Pensando nisso, vou tentar ser o mais introdutório possível nesse post, afim de contemplar as duas situações. E então, se você quiser conhecer sobre assuntos mais específicos, deixarei ao longo do texto alguns links que te redirecionarão a outros conteúdos interessantes. Vamos lá?!
O que é uma empresa de desenvolvimento de software
Para começar, vamos entender o que é uma empresa de desenvolvimento de software.
Esse tipo de empresa, como o próprio nome diz, desenvolve softwares sob demanda para outros negócios. Para uma melhor visualização, imagine que você é dono de uma padaria e precisa controlar todas as finanças e o estoque do seu negócio.
Você tem duas opções, contratar um software pronto de uma startup, por exemplo, ou contratar uma empresa para desenvolver um software sob demanda para a sua empresa. Ambas as soluções tem seus prós e contras. No caso do software customizado, ele provavelmente será mais caro do que um produto pronto, porém você terá certeza que ele contemplará todas as minúcias do seu negócio.
O ponto aqui é você entender que desenvolvimento de software não é uma ciência exata, e achar que você sabe exatamente o que quer como resultado final, pode ser um tiro no pé. Por isso, é de extrema importância ter um escopo de projeto aberto, para que possa fazer alterações quando precisar (acredite, você vai).
Disciplinas envolvidas no desenvolvimento de software
Desenvolver softwares vai muito além de programar, já que existem diversas disciplinas necessárias para determinado programa saia do papel.
Gerente de projeto
É o responsável por controlar todas as questões burocráticas de um projeto de software. É ele quem cuida do roadmap do produto e elenca quais atividades serão priorizadas.
Atualmente essa disciplina está muito relacionada a metodologias ágeis. Hoje esses gerentes assumem papéis de PO’s ou PM’s e garantem que o processo e o produto caminham para rumo certo.
Existem empresas que deixam essa disciplina a cargo de um dos desenvolvedores do time, o chamado “Tech Lead”, o que é uma boa opção para projetos menores que não necessitam de tanto “gerenciamento”.
Designer
Peça fundamental para a criação de um bom software. Engana-se quem acha que designers só servem para deixar uma aplicação bonita. Eles são responsáveis por garantir que a ferramenta construída seja de fácil utilização.
Hoje a área é dividida em UX e UI, uma focando mais na usabilidade do produto enquanto a outra no aspecto visual.
QA
Outra disciplina essencial no desenvolvimento de um bom software é o chamado analista de testes. Este profissional fica responsável por garantir a funcionalidade de determinado projeto.
Todo projeto de tecnologia possui bugs. Até o Facebook, que é mantido por milhares de engenheiros, possui seus problemas. É natural. O trabalho do QA é minimizar todos os possíveis problemas que um software pode ter, seja através de testes manuais ou automatizados.
Tipos de empresa de desenvolvimento de software
Existem algumas maneiras de uma empresas prestar um serviço de desenvolvimento de software customizado. Cada uma delas tem suas particularidades e, cabe ao cliente, decidir a melhor opção para a sua realidade.
Fábrica de software / Software house
É a mais comum hoje em dia, e consiste em uma empresa que entrega software sob demanda, como o próprio nome diz, como se fosse uma fábrica. Então, teoricamente, existe uma linha de produção trabalhando para que, ao final do processo, você tenha o produto que solicitou.
Essa abordagem possui alguns problemas, e você os confere com mais detalhes neste artigo aqui.
Outsourcing alocado presencialmente
Esse tipo de serviço é ideal para quando você já possui um time de tecnologia. Aqui você contrata uma pessoa ou time completo para juntar-se ao seu time principal, fisicamente. Aumentando a vazão de novas funcionalidades.
O lado negativo é que você precisa de um espaço físico e de gestores para gerenciar esse time. E por isso, se você tiver começando uma empresa agora, o outsourcing alocado presencialmente não é a melhor opção.
Outsourcing remoto
É praticamente a mesma coisa que o de cima, porém nesse caso, esse time contratado fica alocado remotamente. A grande diferença nesse caso é que você tem acesso a talentos do mundo todo, aumentando a facilidade de contratação e qualidade técnica do seu time.
Outro ponto negativo do serviço de outsourcing, seja ele remoto ou alocado presencialmente, é que os talentos estão sob a resposabilidade da empresa contratada e, por isso, há uma grande rotatividade dos profissionais que trabalharão no seu projeto. Isso, além de quebrar toda a continuidade do processo de desenvolvimento do software, pode comprometer o sigilo do seu produto, já que as informações estarão ao alcance de várias pessoas.
Customização de produtos prontos
Nesse caso, você contrata uma empresa para customizar produtos já prontos, mas claro, o produto precisa permitir esse tipo de abordagem. Temos diversos exemplos de grandes corporações que vivem em cima desse tipo de serviço, como o caso da Salesforce, SAP e produtos TOTVs.
Você compra uma solução pronta e contrata serviços (podendo ser da empresa que criou o produto ou não) para modificar o software de acordo com suas necessidades.
Marketplace de Talentos de Tecnologia
Ainda não tão comuns no Brasil, os Marketplaces de Talentos de Tecnologia vieram com uma proposta muito diferente dos demais serviços citados anteriormente, na tentativa de suprir as desvantagens de cada um deles em um único lugar.
A experiência dos marketplaces de tecnologia, principalmente os gerenciados, permite que você aloque os talentos da empresa contratada dentro da squad que você já tem no seu negócio, como no outsourcing. A grande diferença é que, neste caso, seu produto não passará pela mão de várias pessoas e nem terá o sigilo comprometido, já que os profissionais que você contrata, ficarão com você até o final do processo.
Tudo funciona como um ecossistema, e existem diversos outros benefícios em contratar um marketplace de talentos de tecnologia. Para saber mais a respeito, te aconselho a ler este artigo!
E aí, agora você entendeu o que faz uma empresa de desenvolvimento de software?