Escolar Documentos
Profissional Documentos
Cultura Documentos
Outros Artigos
Licença CC-BY; permite copiar, distribuir, adaptar etc; porém, créditos devem ser dados ao autor dos slides
1
Temas dos artigos
12. Revisão de Código
13. Microempresas de Software como Serviço
2
Engenharia de Software Moderna
https://engsoftmoderna.info/artigos/revisao-codigo.html
Licença CC-BY; permite copiar, distribuir, adaptar etc; porém, créditos devem ser dados ao autor dos slides
3
Revisão de código
● Prática muito comum para garantia de qualidade de software
4
Ideia Básica
● Código produzido por um desenvolvedor deve ser analisado por
pelo menos um segundo desenvolvedor, chamado de revisor
● O revisor pode adicionar comentários no código, procurando
esclarecer dúvidas, sugerindo melhorias, indicando bugs, etc.
5
Pull Requests
6
Ferramentas
para Revisão
de Código
7
https://blog.jetbrains.com/space/2021/12/15/best-code-review-tools/
8
O que revisar?
● Bugs em geral
● Código mais complexo do que o necessário
● Código que usa algoritmo/estrutura de dados menos eficiente
● Código que viola princípios de projeto
● Código que viola a arquitetura de camadas do sistema
● Código que não trata exceções e erros
● Código com code smells
9
O que revisar? (cont.)
● Otimizações prematuras
● Ausência de testes
● Ausência de documentação
● Falhas de segurança ou privacidade
● Problemas de desempenho
● Problemas de usabilidade com o usuário
● Uso inadequado ou sub-ótimo de APIs
10
O que revisar? (cont.)
● Uso de bibliotecas ou frameworks não autorizados
● Problemas relacionados com alocação de memória dinâmica
● Problemas relacionados com programação concorrente
● Código com problemas de leiaute ou indentação
● Código que viola convenções de nome
11
Exemplo
https://github.com/rodrigo-brito/gocity/pull/63
12
13
14
Recomendações para Revisão de
Código
15
Recomendações Gerais (para revisores)
● Objetivo é detectar problemas relevantes e inequívocos
● Evite comentários subjetivos e relacionados a estilos pessoais
● Nunca use palavras ofensivas
● Restrinja seus comentários ao código
16
Recomendações Específicas (para revisores)
● Procure fazer perguntas e não julgamentos
● Se fizer um comentário sem sentido, reconheça o erro
● Use emojis
● Use imagens e screenshots para ilustrar seus comentários
● Sempre que possível, adicione links para a documentação
● Sempre justifique seus pontos de vista
● Use o pronome "nós"
● Se a divergência escalar, marque uma reunião com o autor 17
Recomendações para Autores
● Separar as coisas: uma coisa é você, outra é seu código
● PRs devem ser pequenos (menos de 200 linhas)
18
Automatização (Linters)
● Sempre que possível, automatize o processo de revisão
● Principal ferramenta: linters
● Eficientes para detectar problemas mais simples, como regras
para nomes e indentação
19
Exercícios
20
1. Descreva uma desvantagem de revisão de código.
21
2. Seja o seguinte código de
uma classe Stack. Quais
comentários você faria caso
fosse responsável pela
revisão do código dessa
classe?
22
Engenharia de Software Moderna
https://engsoftmoderna.info/artigos/micro-saas.html
Licença CC-BY; permite copiar, distribuir, adaptar etc; porém, créditos devem ser dados ao autor dos slides
23
Contexto
Fundamentos de
Programação
Fundamentos
Engenharia de Software
Prática
Engenharia de
Negócios
Software
25
26
Oportunidades para empreender
● Dentro de empresas:
○ Intra-empreendedorismo
○ “Não queremos um desenvolvedor tarefeiro”
● Criando empresas, startups, etc
○ Usando capital de risco, de terceiros, etc
○ Usando capital próprio (bootstrapped): foco desta aula
27
SaaS e micro-SaaS
● SaaS: Software as a Service
○ Pagamento via assinaturas (recorrência)
○ Modelo mais comum de monetização de software
● Micro-SaaS
○ Micro-empresa de software, auto-financiada
○ Administrada por 1-2 desenvolvedores
○ Usando um modelo de assinaturas
28
Exemplos
29
Saber Feedback
https://saberfeedback.com
30
Transistor
https://transistor.fm
31
Reform
https://www.reform.app
32
Plausible Analytics
https://plausible.io
34
Desafio #1
● Achar um problema real
● Possa ser resolvido por software
● E que tenha mercado, isto é, clientes dispostos a pagar
35
Começar pelo cliente e seu problema
Cliente/ Produto/
Problema Solução
Produto/ Possível
Solução Cliente
36
Como ter boas ideias de produto?
37
Como você
definiu o
produto de
sua empresa?
38
Fonte: MicroConf Survey 2020
Você pretende vender aspirina ou vitamina?
39
Não descartar sistemas tradicionais
● Costumam ser aspirinas, isto é, tratam dores reais
● Exemplos:
○ Atendimento a clientes: CRM, help-desk, etc
○ Sistemas de gestão: contábil, financeira, pagamentos, etc
40
Timing muitas vezes é supervalorizado
● Exemplos:
○ Google não foi a primeira máquina de busca
○ iPhone não foi o primeiro smartphone
○ Facebook não foi a primeira rede social
○ Tesla não foi o primeiro carro elétrico
○ etc
41
Isso não significa que timing não seja importante
● Suponha o Instagram
● Se tivesse sido criado alguns anos antes:
○ Problemas com celulares, câmaras ruins, conexão Internet
● Se tivesse sido criado alguns anos depois:
○ Um concorrente forte já poderia ter dominado o mercado
42
Do things that don’t scale (http://paulgraham.com/ds.html, 2013)
43
Diálogo entre Paul Graham (YCombinator) e Brian
Chesky (AirBnB)
Paul: So your users are in New York and you're still in Mountain View.
Brian: Yeah.
Paul: What are you still doing here? Go to your users. Get to know them.
Brian: But that won't scale. If we’re huge and we have millions of customers
https://mastersofscale.com/brian-chesky 44
Qual o segundo desafio?
45
Desafio #2
● Não basta ter uma excelente ideia
● Não basta implementar o melhor sistema
● Se as pessoas não tomarem conhecimento do seu sistema…
● Ou seja, você pode ter o melhor sistema, mas ele não vai se
vender sozinho
46
Quais serão seus canais de distribuição?
● Outbound (“você procura os clientes”)
○ Anúncios (Google, Instagram, etc)
○ Vendedores
● Inbound (“cliente te procura”)
○ Marketing de conteúdo
○ Sites, blogs, canais no YouTube, podcasts
47
Observações sobre distribuição
● Boca a boca pode não ser suficiente para tornar seu produto
conhecido
● Faça testes com alguns canais de distribuição (anúncios, etc),
para ter ideia de preços, alcance, cliques, etc
48
Métricas
● Custo de Aquisição de Clientes (CAC)
● Valor do Tempo de Vida do Cliente (LTV) (Customer Lifetime Value)
● Receita Mensal Recorrente (MRR) (Monthly Recurring Revenue)
● Taxa de Cancelamentos (Churn Rate)
50
https://www.failory.com/blog/startup-mistakes 51
Qual o terceiro desafio?
52
Desafio #3
● Implementar o sistema (ou o MVP)
● Manter o sistema (deployment, operação, etc)
● Atendimento a clientes (dúvidas, suporte, etc)
53
Tecnologia (principalmente no início)
● Maduras, estáveis, com ampla documentação, etc
● “Fora de moda”, mas que você domina e tem experiência
● Exemplos:
○ Python/Django, Ruby on Rails, PHP Cake
○ Banco de dados relacional (Postgres, SQLite)
54
Algumas recomendações
● Love the problem, not the solution
● Keep it Simple, Stupid (KISS)
● You Aren't Gonna Need It (YAGNI)
● Start at the epicenter
● Ship Early, Ship Often
● Done is better than perfect
55
Leia o maior número possível de livros
56
Depois a empresa pode crescer, de
forma auto-financiada ou não
57
ClassMarker
https://www.classmarker.com 58
Less Annoying CRM
https://www.lessannoyingcrm.com
59
Balsamiq
https://balsamiq.com/wireframes
60
Discourse
61
https://www.discourse.org
Discourse
https://blog.discourse.org/2021/08/discourse-series-a
62
Exercícios
63
1. Faça um resumo de um parágrafo sobre a principal mensagem
e lições do seguinte artigo:
https://www.mattlayman.com/blog/2019/failed-saas-postmortem
64
3. Define-se como churn de receita negativo a situação na qual o
novo faturamento obtido com os clientes atuais de um sistema
supera a perda de faturamento devido aos cancelamentos de
outros clientes. Por exemplo, um SaaS tinha 100 clientes e
faturava R$ 10 mil/mês. Em um dado mês, ele perdeu 10
clientes, porém os 90 clientes que ficaram geraram um
faturamento de R$ 11 mil. Em outras palavras, tivemos uma
perda negativa de receita, ou seja, um ganho de receita.
Explique como isso é possível. Quais eventos podem ter sido
responsáveis por essa situação?
65