>
- Introdução
- Pré-requisitos
- Passo 0: Entenda-se
- Passo 1: Escolha uma ideia
- Passo 2: Defina as Funcionalidades Centrais
- Step 3: Sketch Your App
- Passo 4: Planeje o Fluxo da IU do seu aplicativo
- Passo 5: Projetando o Banco de Dados
- Avançado
- Passo 6: UX Wireframes
- Passo 6.5 (Opcional): Desenhe o UI
- Passo 7: Pesquisando soluções
- Olhando para Soluções
- Escolhendo ferramentas para começar com
- Passo 8: Construindo a aplicação
- Checklist
- Write Tests First
- Use Git
- Se você ficar preso…
- Pergunte no StackOverflow
- Alternativa: Encontre um Mentor
- Dica Final
- Author Bio
- Outros Artigos em que Você Pode Estar Interessado:
Introdução
“Qual é a melhor maneira de aprender a codificar?”
“Como se tornar um programador”
“Como construir um aplicativo”
>
Estas são perguntas comuns feitas todos os dias por iniciantes que estão ansiosos para aprender a codificar. Sem dúvida você já pesquisou no Google algo nesse sentido e leu artigos/respostas suficientes ao ponto de estar farto dos conselhos “padrão”.
Se você não tem, ou se você de alguma forma pensa que eu tenho algo novo para dizer e quer ouvir de qualquer forma (eu não tenho), aqui está uma resposta curta e praticamente sem sentido (eu vou dar-lhe um nome SEO-friendly click-bait: “3 Passos para se tornar um Programador”):
Passo 1: Escolha uma língua
Passo 2: Aprenda a língua
Passo 3: Construa coisas e continue aprendendo
Hey, não me atire sapatos. Por mais que eu gostasse de dizer que há um método único para aprender a codificar, realmente não há. (Deixe-me adicionar um Passo 0: aceite que todos aprendem de forma diferente).
Inúmeras respostas mais detalhadas elaborando os passos 1 & 2 já existem na web, mas a resposta comum ao passo um é aprender Python ou Ruby como sua primeira linguagem (não fique muito preso à linguagem, você nunca vai começar). Se você precisa de recursos de aprendizagem, nós curamos vários guias que você pode conferir:
- Aprenda Python
- Aprenda Ruby on Rails
- Aprender desenvolvimento iOS
- Aprender desenvolvimento Android
Aprenda JavaScript (Sempre aprenda JavaScript antes de aprender frameworks como AngularJS ou React ) >
>
>
>
Several de você chegaria a este ponto:
>
>
Se você está tendo aquele momento em que você se tornou uma ovelha perdida, não se assuste porque você não está sozinho.
Pretty much every time you ask “how do I become a programmer”, developers will say you to build things, as building things is how you can improve as a programmer and it’s the best way to learn, etc etcetera.
But how do you build your own app?
Você sempre pode seguir os tutoriais existentes sobre como construir um Twitter/Pinterest/Instagram/etc clone com qualquer linguagem & tecnologia que você está usando, mas tenha em mente que os autores desses tutoriais fizeram a maior parte do trabalho para você, e tudo que você está fazendo é entender o código e sua lógica.
Este artigo irá tentar fornecer-lhe um esboço que você pode seguir quando construir sua própria aplicação a partir do zero.
Pré-requisitos
A maior parte das aplicações precisaria de um banco de dados, então se você for construir sua própria aplicação por si mesmo (ergo o front e back end), você provavelmente terá que conhecer uma linguagem de consulta de banco de dados (geralmente SQL). A menos que você esteja construindo algo que não precise interagir com um banco de dados como o Flappy Bird, por exemplo.
O que é mais, se você está procurando construir um aplicativo web, você precisará conhecer alguns DevOps básicos para poder configurar seu ambiente/servidor de desenvolvimento, e ser capaz de realmente lançar o aplicativo.
Se você só está procurando ser um desenvolvedor web front-end, você pode aprimorar suas habilidades em HTML, CSS e JavaScript no Codepen ou JSfiddle. Se você só conhece JavaScript e não quer aprender outra linguagem, então você pode tentar Node.js, pois é uma plataforma JavaScript para desenvolvimento back-end (Você também pode usar MongoDB como sua base de dados, pois também é baseado em JavaScript.)
Outras, você também deve conhecer uma das seguintes linguagens (e geralmente uma estrutura web) se você pretende construir uma aplicação web completa:
- Ruby
Python PHP Java Go C##
Se você está procurando construir jogos, então você pode considerar aprender Lua, embora C# seja também uma escolha muito boa graças ao motor de jogo 3D da Unity e sua comunidade massiva. Quanto ao desenvolvimento de aplicativos nativos para celular, você precisará conhecer Swift/Objective-C para desenvolvimento iOS e Java para desenvolvimento Android.
Sem mais delongas, vamos começar a construir um aplicativo do zero.
Passo 0: Entenda-se
Primeiro e acima de tudo, construa algo pelo qual você seja apaixonado. O interesse é a melhor forma de se manter motivado, por isso pergunte-se o que lhe interessa ou o que gosta de fazer.
Por exemplo:
- Que aplicações gosta mais de usar?
- Que aplicativos você não pode viver sem?
- Você gosta de jogar jogos?
- Você gosta de projetar coisas?
- Etc.
Identifique seus interesses para que você esteja trabalhando em algo com o qual você se divertirá. Desta forma, é menos provável que você se sinta com menos vontade de desistir a meio caminho.
Passo 1: Escolha uma ideia
Agora que você se tenha descoberto, é hora de escolher uma ideia para construir. Comece simples.
Sim…mesmo que você esteja pensando em construir um jogo, neste momento você não deveria estar pensando em construir o próximo CounterStrike mas sim em como construir jogos tão simples quanto o infame Flappy Bird. Ei, não olhes para o Flappy Bird─it foi uma sensação que fez as pessoas de todo o mundo descobrir o seu masoquista interior. Mas eu divago.
Então, com base em seus interesses, venha com uma idéia para um simples aplicativo que fará algo simples. Não importa se o aplicativo já existe (na verdade ele pode ajudá-lo se projetos similares já existem).
Aqui estão algumas dicas para ajudá-lo a obter alguma inspiração:
- Se você gosta de cozinhar, talvez você possa pensar em construir um aplicativo para as pessoas mostrarem suas receitas caseiras.
- Se você é viciado na Liga das Lendas, você pode tentar olhar através da API do Riot e construir um site que possa obter & mostrar informações sobre o jogo.
- Se você está em dieta, tente construir um aplicativo que irá registrar seu consumo de calorias.
Se você sempre quis saber como o Twitter funciona, tente construir um clone do Twitter super simples. Se você é uma pessoa esquecida que depende de gerentes de tarefas, tente construir um você mesmo.
Se você gosta de jogar jogos de cartas, tente construir um simples (por exemplo, Black Jack)
E assim por diante. Aqui está uma lista de idéias de projetos se você precisar de mais inspiração.
Após ter uma direção, escreva em uma frase o propósito, e, se aplicável, os usuários alvo mais importantes para este aplicativo.
Por exemplo: Um aplicativo de adoção de animais de estimação para pessoas que pegam animais perdidos.
Passo 2: Defina as Funcionalidades Centrais
Pense no que seu aplicativo deve ser capaz de fazer e liste-os. Se você acabar listando um monte de coisas, dê uma olhada melhor e se pergunte se este aplicativo REALMENTE precisa, por exemplo, de login no Facebook para funcionar? Precisa REALMENTE de carregar dados em alguma nuvem para funcionar?
É ótimo ter um projeto dos sonhos com especificações incríveis, mas neste momento a questão não é construir algo que seja completo com muitas funcionalidades legais. Tenha em mente que nenhuma aplicação está completa, e tudo começa simples.
Não tente construir uma aplicação completa. Não vá por aí. Já vi isso acontecer mesmo em um ambiente profissional, e o resultado é muita dor e pouco progresso.
Sem você ter uma vontade férrea ou se você realmente ama desafios, você vai acabar frustrado e desanimado se o seu primeiro projeto for muito difícil de construir. Você é um iniciante…a questão agora é se divertir. Diversão é a maneira mais eficiente de aprender.
Então, dê uma olhada na lista de funções que você fez, e se for muito longa, comece a cruzar as funcionalidades que sua aplicação pode funcionar sem.
Remmbrar, esta é a sua versão 1 e você deve apenas manter as coisas simples. Concentre-se em coisas que permitirão que a aplicação execute o que quer que seja suposto fazer – tudo o resto pode ser deixado para um projecto diferente.
Para uma lista de exemplos de funcionalidades centrais para um clone Reddit:
- usuários podem criar uma conta
- usuários podem recuperar senhas perdidas
- usuários podem mudar suas senhas
- os utilizadores podem subir/baixar links
- os utilizadores têm um perfil mostrando a sua história/actividade
usuários podem postar novos links usuários podem comentar links>
>
>
As funcionalidades listadas acima são as funcionalidades principais em que se deve concentrar primeiro. Outras funcionalidades como:
>
- usuários podem compartilhar para redes sociais
- usuários podem excluir comentários
- usuários podem editar comentários
usuários podem excluir sua própria conta
Are secundário e pode ser salvo para a versão 1.x-only work on these after you can actually launch version 1.0
Step 3: Sketch Your App
CC License
Nada é mais rápida do que uma caneta & papel. Agora você já deve ter uma idéia bem sólida do que sua aplicação deve fazer, então esboce a wireframe da UI (interface do usuário) da sua aplicação. Onde botões devem estar localizados, qual é o propósito desse botão, e assim por diante.
Aponte notas e escreva como a aplicação deve funcionar. Você ainda está na fase de brainstorming, então mude as coisas ao redor até ficar um pouco satisfeito com isso.
Remmbre-se, mantenha as coisas simples. Se você encurtou sua lista a partir do passo 2, fique apenas com as funções de esboço listadas aqui – não se deixe levar. Se você não pode se ajudar, então esboce 2 versões: uma versão básica e a versão final em seus sonhos.
Em geral, este não é o visual final, mas apenas um passo para ajudá-lo a ter uma compreensão mais firme do seu aplicativo.
Passo 4: Planeje o Fluxo da IU do seu aplicativo
Tudo certo. Você tem uma boa idéia de como será sua aplicação, o que cada elemento deve fazer, e como os usuários podem interagir com sua aplicação. Agora é hora de descobrir o fluxo de IU do seu aplicativo. Ou seja, como um usuário deve usar o seu aplicativo do início ao fim. Trace um gráfico de cada passo que eles têm que dar, e cada cenário que eles podem encontrar. Tente considerar cada caso de uso.
(Licença CC)
Inclua todas as ações que seu usuário pode tomar no fluxograma. Por exemplo, se a sua aplicação requer que os utilizadores façam login, como é que eles criam uma conta? E se os usuários esquecerem sua senha? E se eles calcularam a senha errada? O que um usuário deve ser capaz de fazer em cada interface (adicionar novo item da lista > salvar; editar > salvar/apagar)? E assim por diante. Isto é feito da forma mais rápida com caneta e papel.
Again, como sua aplicação deve ser bastante simples, seu diagrama não deve ser muito massivo.
Passo 5: Projetando o Banco de Dados
Tudo bem! Depois de ter planejado todos os cenários possíveis, dê uma olhada nele para determinar que tipo de dados você precisaria manter. Por exemplo, se o seu aplicativo requer que os usuários criem uma conta, você precisará acompanhar coisas como nome de usuário, ID do usuário, e-mail do usuário, senha, se o e-mail do usuário está confirmado, quando a conta foi criada e toda vez que o usuário entrou no seu aplicativo.
Se você está construindo um clone no Twitter, você precisaria saber o ID do tweet, o conteúdo do tweet, quando o tweet foi publicado/retweetado, quantos retweets ele tem, e quantas estrelas ele tem. Você também precisaria manter um registro dos retweets e estrelas de um usuário.
Você pode desenhar um diagrama ERM (Entity-Relationship Model) para mapear a relação de dados.
Um exemplo de diagrama de relação de entidades e estrelas de um site de seleção de curso.
Além disso, se você tiver alguma característica futura planejada, este é o momento de planejá-la em seu banco de dados. Aqui está um bom artigo para conferir enquanto você projeta um banco de dados.
Avançado
Se a aplicação que você está planejando vai interagir com um servidor (por exemplo, se você está construindo uma aplicação web fulltack) ou se a sua aplicação vai interagir com uma API (por exemplo você está tentando obter informações do Yahoo! Weather ), então é provavelmente uma boa idéia desenhar um diagrama de seqüência para você ter uma idéia melhor de como os processos devem operar.
Da Wikipedia
Passo 6: UX Wireframes
Okay, você tem o back-end planejado. Agora, é hora de planejar seu front-end.
esperadamente, você ainda está tão animado quanto os lacaios acima. Você sabe do que você precisa – agora você tem uma idéia muito melhor de como sua aplicação deve ser.
CC Licença
Posto que os humanos são em sua maioria criaturas visuais, você teria um tempo melhor para entender o que você deve fazer se você tiver um visual de cada vista que você estará codificando. Entretanto, se você é como eu e seu desenho é tão confuso que mal consegue entender a obscura peça de…obra-prima da tosse…que você criou, é naturalmente insensato prosseguir com este passo abusando de suas pobres células cerebrais artísticas.
Felizmente, muitas ferramentas de wireframing e mockup existem online para ajudá-lo a planear o seu fluxo UX/UI (ex. Gliffy, Mockflow, Framebox, Wireframe.cc, Invisionapp).
Passo 6.5 (Opcional): Desenhe o UI
Este é um passo opcional, mas se você pretende se especializar em desenvolvimento front-end ou se você se preocupa muito com o aspecto da sua aplicação ao ponto de uma aplicação mais bonita o motivar a codificar, definitivamente vá em frente e desenhe a aplicação para que todos aqueles elementos de UI wireframe possam ser substituídos por outros mais bonitos.
Se você adora desenhar, você provavelmente vai desenhar o aplicativo antes de começar – talvez você já o tenha desenhado durante o passo 2.
Se você não desenha mas ainda se importa com a aparência do seu aplicativo, considere o uso de elementos de kits de IU. Aqui estão alguns recursos para elementos de IU:
(Nota: Photoshop necessário)
Nuvem de IU
Graphicburger
Dock de IU
Para jogos:
Recurso de Spriters
Não fique muito pendurado na aparência da aplicação, no entanto. Neste momento você deveria estar focado na construção das funções de um aplicativo.
Passo 7: Pesquisando soluções
Great! Você terminou o estágio de planejamento…mas como você deve codificar todas essas coisas?
Uma habilidade importante que você terá que aprender como programador é avaliar quando você deve usar algo que outro desenvolvedor já escreveu, e quando construir a função você mesmo.
Desde que todos estejam construindo uma aplicação única, nem todos os casos de uso são iguais. Assim, você tem que julgar quando usar uma solução existente e quando construir a sua própria, e você ficará melhor em fazê-lo com experiência.
Se você está se sentindo como um barco sem direção perdido em um vasto oceano, respire fundo e não entre em pânico. Você pode fazer isso.
Quando você ganhar mais experiência com pesquisa, aprimoramento do seu “Google-fu”, e construção de coisas, você acabará se apaixonando por esse processo.
Olhando para Soluções
Dê uma olhada em todos os diagramas que você desenhou, bem como na lista de funcionalidades que você fez no passo 2.
Quais são algumas coisas que você não tem absolutamente nenhuma idéia de como construir?
Por exemplo, os usuários precisam criar uma conta? O seu aplicativo depende de atualizações em tempo real? Que funções você precisa?
Na maioria das vezes é uma boa idéia usar uma solução existente para grandes funções como, por exemplo, sincronização em tempo real (por exemplo, Firebase), rede/roteiro (por exemplo, AFNetworking para aplicativos iOS), autenticação, e componentes relacionados a UI (e.Por exemplo, flipboard ou pinterest-esqueado app).
Muitos bancos de dados online existem para você procurar por componentes/pacotes/gems/etc relacionados com backend-, mas você precisa ter cuidado com sua avaliação do que outras pessoas escreveram – não apenas usá-los cegamente. Esperemos que você não esteja construindo nada muito complexo agora, então agora você provavelmente não vai precisar de componentes que outras pessoas tenham escrito.
De qualquer forma, a melhor maneira de começar é estudar o que outros desenvolvedores fizeram antes de você e aprender a lógica por trás das decisões deles. GitHub é seu melhor amigo.
Para um exemplo real do processo de pesquisa de um desenvolvedor experiente para uma determinada função, você pode conferir este post sobre como o criador do Angular-Plunker construiu as diretrizes de arrastar e soltar do Plunker.
Escolhendo ferramentas para começar com
Se você está construindo uma aplicação web, talvez você possa checar Yeoman, pois ele visa ajudá-lo a iniciar rapidamente novos projetos, ajudando-o a configurar a estrutura do seu projeto.
Se você está construindo uma aplicação React, você também pode checar starter kits e implementações Flux existentes. HTML5Boilerplate e Bootstrap são templates front-end populares para a sua aplicação. Na maioria das vezes, boilerplates usam Gulp ou Grunt para gerenciamento de tarefas.
Desde que você provavelmente estará usando alguns componentes ou soluções existentes, você também deve instalar bower para gerenciamento de dependências (npm para aqueles usando Node.js e CocoaPods para desenvolvedores iOS). Não se preocupe – na maioria das vezes estas ferramentas vêm com tutoriais que lhe ensinarão como instalá-las.
Passo 8: Construindo a aplicação
Sim! Você está pronto para construir a aplicação agora! Aqui estão algumas dicas que você deve ter em mente ao construir seu aplicativo.
Checklist
Você deve focar na construção da função do aplicativo por função. Assim, se você não tiver terminado com uma tarefa como um sistema de comentários, não comece de repente a construir uma vista de perfil de usuário. Em outras palavras, se você está construindo um formulário, por exemplo, você deve trabalhar tanto no código front e back-end até que a função esteja completa.
Em suma, para acompanhar o seu progresso, você pode escrever uma lista de funções e usá-la como uma lista de verificação.
Write Tests First
Unless your building a game app, é uma boa idéia escrever um teste para a sua função primeiro antes de começar a codificar a função. Bugs são inevitáveis, mas testes irão reduzir muito seus erros e suas chances de liberar o código do buggy para a produção.
Granted, escrever testes unitários leva tempo e às vezes você pode questionar se vale a pena. No entanto, se você está procurando construir projetos maiores no futuro, nos quais você continuaria a adicionar novas funcionalidades, isso pode acontecer com seu app:
Então isso (é um exagero do que) pode acontecer:
Or deus proibido:
E este seria você, tentando corrigir a app:
…Mais ou menos.
>
Então, é uma boa idéia começar pequeno e adquirir o hábito de fazer Desenvolvimento Orientado a Testes (TDD), especialmente porque você está começando de novo e construindo algo simples.
Você não está em algum prazo com uma forquilha de um gerente de projeto nas suas costas agora, está?
Para dicas sobre padrões de testes unitários, você pode conferir este artigo. Outra dica a ter em mente é evitar afirmar muitas trivialidades.
Muitas ferramentas de teste estão disponíveis para você escolher, como Jasmine ou Karma para JavaScript, Rspec para Ruby, PyTest para Python, PHPUnit para PHP, Quick como uma alternativa ao xCTest para desenvolvimento iOS, ou qualquer ferramenta que você acha que funcionaria para você.
Além disso, se você está construindo um aplicativo iOS ou Android, é uma boa idéia conferir Crashlytics.
7 Passos para Depurar com Eficiência e Eficácia
Use Git
Git é um sistema de controle de versão e um repositório completo com histórico completo e capacidades completas de rastreamento de versão. É uma boa idéia começar a aprender como usar Git enquanto constrói sua primeira aplicação. Desta forma, você pode facilmente desfazer seus erros, recuperar dados perdidos, e muito mais. Além disso, se você planeja trabalhar com uma equipe de desenvolvedores no futuro, você precisará usar o Git de qualquer forma. GitHub é o mais popular serviço de hospedagem de repositório Git para projetos de código aberto, enquanto Bitbucket é para repositórios privados.
Se você acabar tendo problemas ao usar git, este post sobre os 10 problemas mais comuns de Git e Como consertá-los pode ajudá-lo.
Se você ficar preso…
Como um iniciante, você vai se sentir como aquele hamster com mais frequência do que não.
Você não está sozinho. Às vezes, tudo o que você tem que fazer é fazer uma pausa e deixar o assunto ferver para que você possa limpar sua mente.
Se isso ainda não funcionar, aqui estão algumas maneiras de se desanuviar:
I mencionei o Google-fu no passo 7, mas deixe-me enfatizar novamente que aprender como usar o Google é uma habilidade importante que todos os programadores precisam adquirir. Se você ficar preso em um bug ou não souber porque o seu código não está funcionando, é uma boa idéia para o Google.
Pergunte no StackOverflow
Você provavelmente notará que os resultados do seu google irão apontar principalmente para perguntas e respostas no StackOverflow. Se mesmo assim não conseguir encontrar uma solução para o seu problema depois de pesquisar no Google, pode tentar colocar uma pergunta no StackOverflow.
Lembrar-se para mostrar que fez a sua pesquisa na sua pergunta – é mais provável que obtenha uma resposta dessa forma.
Alternativa: Encontre um Mentor
Algumas pessoas dirão que o StackOverflow não é amigável para iniciantes porque os iniciantes não sabem como formular suas perguntas. Mas e se você nem sabe qual é o seu problema?
Se você chegar à beira do headdesking (ou se você já estiver headdesking…), você não precisa abusar da sua testa (se você bater com a cabeça com força suficiente, você só vai perder as células cerebrais).
Uma ótima alternativa para facilitar o seu desenvolvimento e o seu processo de aprendizagem é obter ajuda de um programador experiente. Você não precisa sentir que é de alguma forma estúpido porque o Person X é um famoso especialista e um programador autodidata. As pessoas simplesmente aprendem de forma diferente, e todos os iniciantes se beneficiarão da orientação pessoal, pois você pode estar cometendo erros que não são uma grande coisa agora, mas que na verdade são uma má prática.
Lembrar, naquela época muitos desenvolvedores autodidatas não tinham os serviços que agora estão disponíveis para você.
Assim, você pode obter ajuda de programadores experientes através de sessões ao vivo 1:1 no Codementor, onde as taxas de mentores começam a partir de $15/minutos. Durante estas sessões, você pode ter um chat de vídeo com um programador experiente e compartilhar sua tela/código com eles, e o mentor irá ensiná-lo como corrigir seu código, bem como dizer-lhe o que você fez de errado para que você possa evitar o erro no futuro. Você também pode rever o código da sessão ou gravar a sessão no seu disco local através da ferramenta de chat de vídeo. Inscreva-se agora e tente os primeiros 15 minutos grátis com mentores oferecendo o acordo.
Dica Final
Programadores cometem erros o tempo todo, então não se sinta desencorajado quando você não consegue nem passar um teste que você escreveu ou se você está constantemente tropeçando em si mesmo. Pense no iOS9, Android Lollipop, ou algum aplicativo que você adora usar. Certamente mesmo os aplicativos mais maduros por aí ainda têm bugs, então não assuma que você pode construir o aplicativo mais perfeito e sem bugs por aí (claro, isso não significa que você deve definir padrões baixos para si mesmo – você deve sempre se esforçar para construir aplicativos de qualidade).
Além disso, é muito comum você passar horas ou até mesmo dias em uma coisa e ainda ter dificuldade para fazer funcionar como você quer. Se programar novas funcionalidades rapidamente fosse fácil, o mundo não precisaria de novos programadores. Diabos, provavelmente estaríamos em um iOS100 sem falhas agora e teríamos construído um mundo digitalizado como o da Matrix.
Assim, muitas vezes, você ouviria o termo “cometer erros” sempre que as pessoas o encorajassem a começar a construir coisas. Elas estão a falar a sério. Uma coisa que você terá que aceitar como programador é que você não vai ser uma máquina codificadora de mau gosto que pode conjurar funcionalidades em um piscar de olhos. Você vai estar falhando muito e isso é ok.
Again, lembre-se que você é um iniciante, então muitas coisas vão ser inevitavelmente difíceis no início. Você vai gastar muito tempo em algo que você acha que deveria ser simples e vai parecer uma luta difícil, mas conforme você ganha mais experiência, as coisas vão ficar mais fáceis. Anseie por essa sensação de realização quando você finalmente conseguir construir a sua primeira aplicação, e você pode até considerar vender a sua aplicação se você achar apropriado.
Happy Coding!
Author Bio
Yi-Jirr Chen ||Maketing de Conteúdo &Operações
Seu típico geek massivo que joga e ama ciência/tecnologia. Também publica ficção sob um nome de caneta que é um nome de caneta por uma razão
Outros Artigos em que Você Pode Estar Interessado:
- Como conseguir seu primeiro emprego como desenvolvedor (mesmo que você não tenha um grau de CS)
>
9 Dicas para iniciantes na comunidade de desenvolvedores 40 Idéias de projetos paralelos para engenheiros de software Como lançar sua carreira e conseguir seu primeiro cliente como desenvolvedor freelancer