O que são soluções escaláveis e como podem melhorar negócios?

Decidi criar esta postagem para explicar de forma simples, o que são soluções escaláveis, pois bem, podemos definir como soluções escaláveis produtos ou serviços que crescem em números de clientes, usuários ou faturamento sem o aumento proporcional dos custos que são necessários para seu funcionamento, produção ou entrega, como geralmente acontece em negócios tradicionais. Se uma solução consegue atender cada vez mais pessoas, sem o aumento também exponencial de seus custos operacionais, então ela é uma solução escalável.

Uma canal educacional no YouTube é uma solução escalável, pois, um vídeo produzido atende cada vez mais pessoas e o seu custo de produção e disponibilização não aumenta, podemos dizer então que esta é uma solução escalável e o indicador de escala é o número de visualizações dos vídeos deste canal. Outro cenário que podemos observar é uma loja de roupas online, um e-commerce, que atende a todo o Brasil e possui o processo de atendimento e vendas automatizado, esta loja conseguirá atender cada vez mais pessoas e suas vendas irão acontecer em momentos que não existem pessoas disponíveis para o atendimento, como em feriados e no período da noite, o limite da abrangência desta loja é a quantidade de pessoas que podem e desejam consumir os seus produtos. O indicador de escala desta solução é a quantidade de vendas ou o valor do faturamento.

Nos dois cenários que apresentei acima, o custo operacional das soluções ou negócios não aumentou com a sua escala, é neste exato ponto que a tecnologia se encaixa, através de tecnologias digitais conseguimos criar meios de escalar soluções e negócios mantendo aspectos como qualidade no atendimento, disponibilidade ou efetividade nos níveis desejados.

A construção de softwares para aumentar a escala, a eficiência, o controle ou eficácia de negócios e iniciativas é uma prática que tem mostrado resultados absolutamente inquestionáveis. Gestores tem olhado com profundidade para seus negócios, rotinas e processos buscando meios para realizar otimizações, para isto, a construção ou implementação de softwares é o mais adequado a ser feito.

A SoftMakers possui bastante experiência e expertise na concepção e construção de softwares que fazem com que negócios se tornem mais competitivos e escaláveis, conseguimos ao longo da nossa história transformar negócios no presente para as oportunidades do futuro.

Google Data Studio, do conceito ao primeiro relatório.

Diante da necessidade de criar uma dashboard com alguns gráficos e relatórios sobre a operação e finanças da SoftMakers, busquei uma plataforma que me trouxesse agilidade, pois não possuia grande disponibilidade de tempo para integrar, realizar consultas, configurar gráficos e realizar deploys de uma nova aplicação para isto. Estudando sobre as plataformas que existem no mercado e que poderiam me auxiliar na resolução do meu problema, encontrei e decidi utilizar o Google Data Studio.

Neste artigo explico os conceitos básicos da ferramenta e defino um passo a passo para que qualquer um possa criar um relatório através da ferramenta.

Explicando cada conceito do Google Data Studio

O Google Data Studio é composto por 5 conceitos, que são:

  • Origem de dados
  • Conector
  • Modelo de dados
  • Explorador
  • Relatório

Origens de dados

Como o próprio nome sugere, as origens de dados são fontes de dados para alimentar os relatórios, ou seja, será a partir das fontes de dados que o Google Data Studio irá obter os dados que serão apresentados.

Conectores

Os conectores são encarregados de buscar os dados nas fontes de dados periodicamente e armazenar no cache do Google Data Studio, a periodicidade das requisições pode variar de acordo com a fonte de dados e configurações realizadas no relatório construído.

A conexão com as fontes de dados são permanentes (sempre ligadas) mas a consulta das informações são periódicas.

  • Existe conectores grátis como o do Google Analytics ou Google Sheet por exemplo e conectores desenvolvidos por terceiros, para várias plataformas ou serviços, que podem ser pagos ou não.
  • Os conectores buscam os dados periodicamente e salvam em cache, para que sejam renderizados os relatórios.

Modelos de dados

O modelo de dados é a definição da estrutura dos dados que são obtidos na origem de dados pelos conectores, no modelo de dados definimos o tipo e formato de cada campo (Real, Dólar, Data e Hora, Somente data, etc.), também é possível criarmos campos que são o resultado de cálculos, adicionamos rótulos e descrição para cada campo.

Exploradores

O explorador é a área destinada a modelar os relatórios. É um ambiente otimizado para a realização dos filtros onde se pode modificar os gráficos e tabelas, as filtragens e atualizações dos dados no explorador são mais rápidas. Na prática o explorador é um ambiente de modelagem otimizado para o alto número de atualizações que é inerente ao momento criativo.

Os exploradores possuem algumas limitações, quando comparados aos relatórios, que são:

  • Não são suportadas fontes de dados com mais de 100MB.
  • Explorações não podem ser exportadas diretamente.

Relatórios

Como o próprio Google fala: “os relatórios do Data Studio “usam os dados para contar histórias”. Os relatórios são o objetivo do Google Data Studio, ou seja, através deles será possível visualizar as informações e obter conhecimento para embasar as tomadas de decisões.

Passo a passo para criar um relatório no Google Data Studio

  1. Prepare a fonte de dados que você utilizará para criar uma origem de dados, pode ser uma planilha, um banco de dados relacional ou uma conta do Google Analytics.
  2. No Data Studio, crie uma origem de dados utilizando o conector adequado.
    1. Clique no botão “+ Criar” que fica no canto superior esquerdo e depois em “Origem de dados”;
    2. Selecione o conector que irá utilizar;
    3. Preencha o que for necessário para realizar a conexão ou enviar o arquivo;
    4. Após realizada a conexão, clique no botão “Conectar” que fica no canto superior direito;
  3. Estruture o modelo de dados para realizar a montagem do relatório;
    1. Defina o que considerar necessário, rotulo das dimensões, tipo de dado, se é uma agregação ou não e descrição adicione uma descrição. A definição é opcional, mas facilita posteriormente a visualização.
  4. Modele o relatório através do explorador, clicando no botão explorar que fica no canto superior direito da tela;
    1. No meu exemplo eu apliquei o filtro por todos os não deletados (softdelete);
    2. No meu exemplo eu criei o campo “Documento utilizado no registro”, que é o resultado de operações;
    1. Por segurança salvei a exploração 😀;
    2. Defini como dimensão de período a data de criação do registro, como dimensão o campo criado acima e como métrica é a contagem de registros;
    3. Adicionei um gráfico do tipo pizza e uma tabela simples;
  5. Ao finalizar a modelagem do relatório no explorador, clique no canto superior direito em “Compartilhar” → “Criar um novo relatório e compartilhar”, pois assim, o relatório será criado e você poderá finalizar adicionando filtros, rótulos ou estilizações;
    1. Assim que a exploração é transformada em um relatório, o relatório será passível de compartilhamento ou incorporação (Iframe).

Vídeo da apresentação que fiz para os integrantes da SoftMakers e pessoas interessadas

Apresentação utilizada no vídeo acima

https://docs.google.com/presentation/d/1oPHUTpdkCFACgkCQuZzaq7BkaYepi0UXG1zh6gH0DDw/edit?usp=sharing

Fontes

https://support.google.com/datastudio/?hl=en#topic=6267740

Integrar Ramificações entre dois ou mais Projetos do GIT.

Quando estamos desenvolvendo nos deparamos com diversos problemas, e esta é a parte onde evoluímos, nem sempre sabemos o que realmente deve ser feito, nem quando temos a necessidade de migrar um projeto para outro, então, chegamos no real objetivo deste POST.

Vejamos como exemplo os seguinte projetos:

Projeto A:

Projeto B:

Projeto C:

Estória:

Os Projetos tem a mesma finalidade, mas são de clientes diferentes, houve necessidade de pegar a ramificação (brach) ‘hml’ do projeto A e colocar no projeto C, e depois pegar a ramificação (branch) ‘new-feature’ do projeto B e colocar no projeto C.
Para isto vamos utilizar o terminal e os comandos que o GIT nos forneçe.

Para iniciar-mos vamos abrir o terminal e aponta-lo para o diretório referente ao projeto C:

Suponha-se que a branch master do projeto C é a atualizada, então vamos criar uma branch a partir dela chamada sync-from-projects

Agora vamos criar a ramificação que precisamos do projeto A…

Antes, vamos entender:

Existem duas formas de criar a, ou, as ramificações:

1º Formato:git remote add [-f] <nome-do-ramo> <url>

A expressão git remote add, como a própria expressão indica, é o comando de adição remota do git.
A expressão [ -f ] significa ‘fetch’, no caso em específico é utilizado para indicar todas as ramificações existente do projeto A para serem adicionadas ao projeto C.
O <nome-do-ramo> é o nome que deseja nomear as ramificações, nome que será a identificação das branches do projeto A no projeto C.
Por último temos a <url> que nada mais é que a url do repositório git, no caso em específico, a url do repositório do projeto A.

Exemplo:

Cuidados a serem tomados:

  • Por exemplo, se o projeto A tivesse 100 ramificações teria sido criado 100 ramificações remotas, uma para cada, no projeto C.
  • Se por acaso uma ramificação tenha sido criada remotamente e você deseja retira-la do projeto C, “ESQUEÇA”, quando o processo anterior é executado, ele só pode ser desfeito por completo, e não por parte. Se por acaso uma ramificação criada no processo for deletada do projeto C, a branch original referente a ramificação será deletada do repositório original, no nosso caso, por exemplo, se por acaso a ramificação develop -> project-a/develop , for deletada do projeto C, a branch referente a mesma será deletada do projeto A.
  • Caso seja preciso desfazer o processo anterior, deve ser utilizado o comando: git remote rm <nome-do-ramo>
    Exemplo: git remote rm project-a

NOTA:
Observem que desta forma todo o processo anterior é desfeito, sendo retirada com segurança todas as ramificações criadas no projeto C sem haver nenhum dano ao projeto A.

2º Formato: “git remote add [-t] <nome-da-branch> <nome-do-ramo> <url>

A expressão [ -t ] da o significado para a branch.
A expressão <nome-da-branch> significa a branch que deseja ramificar, no nosso caso, será a branch hml do projeto A.

Para o nosso exemplo temos que utilizar uma relação entre os dois formatos.
Exemplo: git remote add -f -t hml projeto-a https://admin@bitbucket.org/projeto/project-a.git

Desta forma estaremos criando apenas uma ramificação remota no projeto C, referente a branch hml do projeto A.

Feito este processo, agora vamos fundir os projetos:


Para poder fundir a ramificação project-a/hml a branch sync-from-projects, vamos utilizar o camando: git merge <nome-do-ramo>/<nome-da-branch>

O Processo foi finalizado com sucesso, mas deve-se notar que normalmente ao fazer este processo, ‘Conflitos’ existiram, e devem ser corrigidos.

Agora basta fazer o mesmo processo para criar uma ramificação da branch ‘new-feature’ do projeto B para o projeto C.

NOTA:
Neste Caso, as branches estavam atualizadas, por isso não houve ocorrências.

Conclusão

Para se fundir dois ou mais projetos, basta ter 3 coisas importantes:

  • CUIDADO
  • PACIÊNCIA
  • MUITO CAFÉ

Espero que tenham gostado e até o próximo Post!!!

Construindo um MVP e validando soluções durante a pandemia

Qualquer que seja a ideia, precisa ser testada, validada e antes de totalmente desenvolvida, se faz necessário verificar a existência do problema que ela pretender resolver, para isto, uma pergunta bem pertinente é: “O problema que eu tenho ou penso realmente existe?”, obtendo resposta positiva para esta pergunta, podemos pensar em como evoluir com o desenvolvimento da solução, caso contrário, corremos o risco de criar algo que não será utilizado, muito menos pagarão pela sua utilização. A solução para um problema deve ser proposta com o minimo de esforço, com o intuito de identificar sua efetividade, amenizando riscos e desperdícios. Após validada a solução é sim prudente investir no desenvolvimento, mostrarei neste artigo com fiz isto durante a pandemia da COVID-19.

Falarei sobre todo o processo neste artigo, desde a ideia até a verificação dos indicadores que nos responderam que a solução resolvia um problema existente, como também, teria adesão.

Identificando a necessidade

Precisávamos colaborar no enfrentamento da COVID-19 e na resolução dos problemas que ela tem gerado na economia, com nossas expertises. Uma iniciativa nossa foi o projeto “Tenho Máscara” (https://www.tenhomascara.com.br/).

O objetivo do “Tenho Máscara” é catalogar fabricantes de máscaras e permitir para os que desejam comprar (pessoas, empresas e/ou governos) a possibilidade de obter o contato através da internet e negociar diretamente com o fabricante e/ou vendedor.

Tomando decisões a partir de métricas

Acompanhando as orientações da Organização Mundial de Saúde e do Ministério da Saúde do Brasil, falando para a população que o uso das máscaras ajudam na prevenção da disseminação do vírus e lendo as notícias pensei: “Será que os fabricantes que conseguem produzir máscaras estão vendo esta possibilidade?”, eu literalmente precisava de respostas. Transformei o meu pensamento em três perguntas, pois precisava validar se o problema existe, abaixo vou mostrar como validei minha ideia.

1ª pergunta: “Pessoas e/ou empresas estão fabricando máscaras para vender ou doar?”

Entrei em contato com máximo de empresários e associações que pude, a maioria disse estar produzindo ou se adequando para suprir a esta demanda que julgavam ser emergente no mercado, das 20 empresas que havia falado até então, 14 responderam positivamente a minha pergunta. Meu ultimo contato foi com a CDL de Santa Cruz do Capibaribe, a entidade me informou que 96 pessoas ou empresas de vários portes estavam produzindo, ou seja, corroborando com as respostas que eu já havia obtido, obtive um enorme “sim”, de posse dos dados dei por finalizada a pesquisa.

2ª pergunta: “Expor seus contatos na internet faz sentido para quem está produzindo?”

Criamos uma Landing page para o projeto agora denominado “Tenho Máscara”, foi concebida uma estratégia de marketing focada na divulgação para o máximo de pessoas ou empresas que tinham capacidade de produzir. A página possui a unica e exclusiva função de receber os cadastros, com isto, estávamos medindo a “Quantidade de cadastros realizados por dia”, estes números nos mostraria se as pessoas ou empresas estavam querendo se expor na internet para vender as máscaras.

Como se pode ver nos gráficos abaixo, na primeira semana 1045 pessoas visitaram a página, 261 se cadastraram para serem incluídos na base de dados.

Quantidade de acessos na página
Quantidade de cadastros através da página

Quando confrontamos estes números com a quantidade de possíveis fabricantes, para o publico que acessou a página definimos então que sim, expor na internet é um objetivo dos fabricantes e vendedores.

3ª pergunta: “Na internet pessoas estão buscando fornecedores para comprar máscaras?”

A ultima pergunta que eu precisava responder, não validava se os ofertantes adeririam a nossa solução, isto as perguntas anteriores já respondiam, mas sim, se existe a procura das mascaras na internet, afinal de contas, nossa solução está disponível nela, sendo respondida positivamente, mostrava que realmente existe a demanda. Recorremos ao Google Trends para confirmar se as pessoas estão buscado as máscaras na internet, mais uma vez a resposta foi muito conclusiva e positiva, observe os gráficos abaixo.

Pequisas pelo termo “máscara” tem crescido exponencialmente desde o fim de 2019 até então.
As 5 consultas mais buscadas demonstram que as pessoas estão interessadas nas máscaras de tecido, N95 e descartáveis, nos fazendo entender que a demanda pelo produto realmente existe e a internet é um meio pelo qual buscas massivas estão ocorrendo.

Você precisa definir a “Única Métrica que Importa”

Única Métrica que Importa (UMI em português, ou OMTM, Only Metric That Matters, em inglês), na prática nos faz definir através de uma única métrica a efetividade da nossa proposta de solução, no caso do “Tenho Máscara” a UMI foi: “Quantas pessoas e empresas desejam vender máscaras através da internet?“, descobrimos quantas e onde, como também conseguimos medir a evolução da adesão na plataforma.

Quando conseguimos respostas positivas para a primeira e segunda pergunta do tópico “Tomando decisões a partir de métricas“, estávamos validando o problema e a solução. Neste exato momento, o “Tenho Máscara” está em processo de evolução, lançamos o MVP (Cadastro e página para buscar os fabricantes) em 3 dias, recebemos feedbacks e estamos evoluindo a plataforma para entregar da melhor forma o valor que o projeto propõe.

Meu objetivo é melhorar negócios

Falei sobre todo o processo desde o surgimento da ideia até a solução, conseguimos realizar tudo isto em 3 dias, fico a disposição para receber suas dúvidas ou sugestões se desejar conversar sobre o assunto, como uma empresa de tecnologia, temos a possibilidade de propor uma solução escalável e adequada para variados problemas.

Carta aos empreenderores: Auxiliando negócios que precisam vender através da internet

Todo negócio pode, total ou parcialmente comercializar seus produtos e serviços através da internet, a forma de fazer negócios tem sofrido mudanças, modelos novos de negócios tem surgido e se demonstrado necessários para o dia a dia das cidades. Iniciativas espetaculares e inovadoras trouxeram um novo olhar sobre a forma com que nos locomovemos, comemos, moramos ou vestimos, setores de nossas vidas que parecem possuir pouca possibilidade de reinvenção. Dando sentido no mundo dos negócios para a palavra “disrupção”, pessoas e empresas estão mostrando como é possível fazer melhor tudo o que fazíamos ou fazemos, após termos contato com melhores formas de falar ao telefone ou nos locomovermos por exemplo, isto se torna o novo “normal”, mudando então a forma de vivermos.

Como empreendedores, temos contato ou possuímos plataformas, sistemas, serviços, iniciativas ou ideias que podem auxiliar nossos parceiros e clientes a se adequarem as mudanças que o mercado tem sofrido, mudanças estas que serão severas desde a forma de consumo até o “marketshare” que cada um possui. Olhemos ao redor e analisemos como poderemos unir necessidades com soluções.

É natural considerarmos óbvio para pessoas e empresas que conhecem seu negócio, publico e produto, a tomada de certas atitudes, como assinar uma plataforma de e-commerce, cadastrar seu restaurante numa plataforma de venda de comida online, usar o Instagram para expor seus produtos e permitir a interação com seu publico, porém os dias estão conturbados por vários motivos e a preocupação com problemas que surgiram agora podem deixar pessoas atordoadas ao ponto de não conseguir refletir com clareza, porém vamos nos unir para trazer luz para o outro e assim nos tornarmos juntos mais fortes.

Nos próximos dias estaremos criando conteúdo e trabalhando para unir problemas e soluções.

A importância do UX Design no desenvolvimento de um produto

Design vector created by stories – freepik.com

Para falar da importância do UX Design, devemos começar respondendo o maior questionamento: o que é User Experience Design?

O termo foi criado por Donald (Don) Norman, famoso engenheiro de usabilidade, e significa, em tradução livre, design da experiência do usuário. A expressão muitas vezes é utilizada erroneamente por muitos designers e programadores, mas é válido salientar que uma boa experiência do usuário não se trata apenas de criar um código bem feito, uma interface clean ou uma boa embalagem. A UX começa a partir do momento em que o usuário final passa a interagir com um produto e essa interação nem sempre precisa ser direta, ela pode iniciar no momento em que ele ouve falar sobre.

Qualquer produto/serviço, seja ele físico ou digital, causará um impacto na vida do usuário, que terá um grau de satisfação, positivo ou negativo. O trabalho do UX Designer é garantir que esse grau seja positivo e que sejam satisfeitas as necessidades do cliente e da empresa.

Ao decidir comprar um carro, e após fazer um test drive, o cliente não levará o carro mais bonito se ele não atender suas necessidades enquanto motorista. O mesmo acontece no mundo dos softwares. A aparência de uma aplicação é importante porque é como ela será apresentada ao usuário final, mas ele só continuará a utilizá-la se suas exigências como cliente forem atendidas.

Tomando como exemplo os seguintes apps e uma pessoa vegetariana que irá utilizá-los, o primeiro representa uma péssima experiência do usuário. Você consegue ver o porquê?


Não é difícil perceber que ambos são muito parecidos visualmente, ou seja, o UI (User Interface) Design é praticamente o mesmo. O que faria o usuário dar preferência ao segundo aplicativo é o fato dele entender o seu cardápio e não sugerir pratos que contenham proteína animal.

Esse é um exemplo bem simples, que fala sobre uma das áreas pelas quais o UX Designer é responsável: a arquitetura da informação. Nesse caso, durante o estudo de estratégia, uma das cinco etapas entre a ideia e o layout, o profissional responsável pela segunda aplicação levou em consideração que pratos que estão de acordo com os gostos e estilo de vida dos usuários são mais relevantes e devem ser exibidos em destaque, enquanto os outros podem manter-se em segundo plano e aparecer somente quando solicitado.

Mas se agora você acha que pode fazer uma boa experiência do usuário para o seu produto apenas organizando os elementos por graus de relevância, eu sinto ter que dizer que o processo não é tão simples assim.

Podemos partir do seguinte fato: Seja boa ou ruim, a UX não é feita pelo projetista. Depois de tudo que foi dito aqui, isso chega a parecer contraditório, mas calma! Deixa eu explicar.

Anteriormente, foi esclarecido que a UX se inicia quando o usuário interage com o produto ou serviço. Sendo assim, é impossível que o designer – ou qualquer outro membro da equipe – tenha controle sobre o que acontecerá. É muito difícil prever tudo que impactará na opinião do usuário e desenhar soluções, o que se faz é diminuir ao máximo os impactos negativos e enfatizar os positivos. Mas como isso é feito?

Através da criação de protótipos, um bom design de interações, estudo do negócio, desenvolvimento front-end, estratégia de conteúdo, pesquisas com usuários, testes de usabilidade, visual design, bom uso e conhecimento da arquitetura da informação, compreensão de aspectos comportamentais do público alvo e, principalmente, trabalho em equipe.

Falando em trabalho em equipe, se você é ou trabalha com programadores, talvez esse link seja útil para você. É um artigo que fala 5 Extensões do Visual Studio Code que facilitam o trabalho colaborativo.

É importante, também, lembrar que tudo que se cria visa resolver um problema. E o intuito de todo esse esforço e estudo é que as resoluções desses problemas estejam cada vez mais íntimas do usuário, ligadas ao seu psicológico e emocional, se tornando cada vez mais humanas.

Pra se aprofundar

“O design do dia a dia” – NORMAN, Don
“Information Architecture” – MORVILLE, Peter & ROSENFIELD, Louis

Ainda tem dúvidas?

Me manda um DM no Instagram.

Durante a pandemia de COVID-19 é viável desenvolver iniciativas através da internet?

Vender produtos e serviços através da internet ainda é difícil para muitas empresas. É preciso entender bastante de aspectos variados, desde a melhor forma de fazer campanhas em redes sociais e compras de anúncios, até como atender bem o cliente, remotamente. Estar preparado para a interação através da internet é importante e se torna mais valioso no momento atual em que as relações de consumo estão passando por mudanças.

Existem empresas e profissionais especialistas em auxiliar e orientar quem deseja adequar seus negócios para a realidade da internet. Especialistas em marketing podem auxiliar na comunicação. Empresas que desenvolvem software podem construir sites, plataformas e integrar bancos de dados a fim de garantir a consolidação dos dados e segurança da informação. Consultores de negócios podem guiar os empresários e envolvidos no processo de transformação digital.

O caminho a ser seguido se torna claro quando se tem suporte de especialistas, e pode gerar resultados expressivos em diversos indicadores, como por exemplo, em número de vendas e/ou audiência.

A forma de entrega para o cliente precisa mudar

Se você possui um restaurante de sucesso, com uma paisagem maravilhosa a ser contemplada, bom som ambiente e vários detalhes pensados para bem estar do cliente e para prover uma experiência inesquecível, como fará para que seu produto continue sendo comercializado? Como motivará as pessoas a consumirem os seus pratos? De alguma maneira será necessário prover aos clientes a satisfação de consumir sua comida, e, com toda a certeza, a maneira não será a mesma.

Mas, com a mesma certeza digo: sim. É possível satisfazê-los ainda que à distância, sem os atributos da experiência sensorial que o seu local proporciona.

A agilidade e feedbacks devem estar presentes

Agora é a hora dos empresários entenderem que é um momento propício para se testar coisas novas e por sinal necessárias. Começar a implementação de iniciativas que usam a internet como meio, para atingir os seus clientes, é um excelente caminho.

Em detrimento do isolamento social e necessidade de manutenção das portas fechadas, a possibilidade de se chegar até os consumidores através da internet existe há muito tempo, apenas se evidencia ainda mais, neste momento. Para isso, a presença digital pode se fazer através de táticas como construção/alimentação de site, redes sociais, estratégias de marketing bem calibradas para o público alvo, entre outras.

Como dito, os recursos estão disponíveis, e podem ser melhor utilizados com auxílio de especialista. Independente do modo de condução, é importante que os movimentos sejam ágeis, e que, não percam de vista a imprescindibilidade de que as ações sejam precedidas decisões bem pensadas e validações. Assim, imprescindível, por exemplo, se utilizar de estratégias como o MVP (produto viável mínimo), que, a propósito, pode e deve ser utilizado exaustivamente.

Nessa linha, os negócios devem desenvolver a capacidade de lançar soluções que atendam as demandas de mercado rapidamente e possam ser maturados com muitos feedbacks, que serão apresentados ou, devem ser provocados.

Tenha muita atenção aos sinais

Métricas e análises sempre são importantes em quaisquer segmentos e iniciativas e por agora não será diferente.

Produtos e serviços lançados no mercado precisam de observação minuciosa de cada indicador, cuja definição deve ser feita juntamente com os especialistas que estarão apoiando o empreendedor nesta jornada, de modo que todo sinal deve ser, além de observado, considerado importante.

É preciso entender que o negócio que passa por uma transformação digital precisa de acompanhamento, clareza do seu processo de desenvolvimento e constantes ajustes.

Hoje é o momento de transformar

Agora é sim um momento para inovar e reagir aos sinais que o mercado está apresentando.

A forma de consumo está sofrendo mudanças. As portas estão se abrindo para negócios digitais uma vez que consumidores que não possuíam o habito de comprar pela internet agora estão o fazendo. Essa nova desenvoltura do mercado consumidor, por si só, já é motivo mais que suficiente para ditar uma nova forma de se expor e vender.

Se o mercado muda, tudo muda. Portanto, é hora de se reinventar.

Para colaborar nesse processo de mudança, tornando-a mais leve, trazemos exercícios que podem clarear como entender e agir em meio às dificuldades e possibilidades.

  • Quais oportunidades surgiram em detrimento do que vem acontecendo no mundo?
  • O que minha empresa sofreu com esta mudança furtiva de comportamento da população?
  • Na internet, minha empresa existe?
  • Como posso usar a internet para potencializar meu negócio?
  • Os pontos fortes do meu produto ou serviço são evidentes também pela internet?

Provocações contidas nas perguntas acima trarão reflexões que são importantes independente do momento econômico, porque trazem à tona questões inerentes ao “empreender” na era atual. Mas, indiscutível que em tempos de Pandemia, em que o mundo sente fortes mudanças econômicas e empresarias, questionamentos como estes se apresentam quase que essenciais à sobrevivência de negócios.

5 Extensões essenciais do Visual Studio Code para Trabalho Colaborativo

Edição de texto. Redefinida.

Esse é o slogan da página inicial do Visual Studio Code. Na minha jordana, por IDE’s e editores de texto, nenhum deles mudou minha concepção ao que um ambiente completo e integrado pode ser. Seja pela imensidão de extensões disponibilizados pela comunidade e pela microsoft, seja pelo seu design compacto e robusto. O Visual Studio Code, mesmo no mercado a tão pouco tempo, 2015, conseguiu atrair uma grande quantidade de desenvolvedores que buscam por uma solução convidativa e simples.

Comentando sobre extensões, o editor não seria completo sem elas. Apresento aqui 5 extensões e mais algumas extras que podem auxiliar você ou sua equipe no dia a dia.

Live share

A ferramenta busca trazer um ambiente colaborativo em tempo real para editar ou debugar código no Visual Code. Trabalhar com um colega de classe ou de trabalho remotamente, seja em pair-programming, revisão de código ou para resolver um problema específico da empresa não é mais um problema. Você se engana se acredita que seja apenas isso, não é um simples editor remoto. Você consegue também, conversar via chat, compartilhar seu servidor e terminal local! Isso mesmo, além disso, você pode até convidar mais de uma pessoa para trabalhar coletivamente.

Apresentação do Live Share.

A extensão vem com um pacote: Live Share, Live Share Audio, Live Share Chat e o Peacock . Que em conjunto traz essa ferramenta incrível para trabalho remoto.

Git lens

Apresentação do Git Lens.

Eu sabia que estava passando tempo de mais no terminal para realizar os comandos para adicionar, ‘commitar’ e realizar o push. Foi quando percebi que precisava de uma ferramenta para automatizar esse processo, e no percurso saber mais informações do histórico dos meus commits. O Git Lens me acolheu e me deu o poder do Git Supercharged, grandes insights das alterações do código, um histórico de arquivo e linha, além de várias outras ferramentas. Com certeza, se você precisa avançar na utilização do git e precisa de mais dados sobre o progresso do seu codebase, essa é uma ferramenta essencial.

Live share whiteboard

Apresentação do Live Share Whiteboard.

Você já não entendeu algum conceito ou explicação, e seu professor ou mentor precisou sair do Visual Code para desenhar em outra ferramenta? A proposta da extensão é justamente essa, ter um ‘Quadro-Branco’ colaborativo dentro do Visual Code, exatamente. Você pode agora, desenhar modelagens de banco de dados relacionais, arquitetura de software, ou mesmo realizar uma apresentação para equipe.

Jira and bitbucket

Apresentação do Jira and Bitbucket.

O Atlassian criou sua própria extensão para o Visual Code Studio. Nela, você consegue ter acesso as Issues e Pull Request do Jira e Bitbucket. Além disso, por ela, você consegue criar suas próprias issues, pull requests, fazer revisão de código entre outras atividades.

CodeStream

A revisão de código ficou mais fácil com o CodeStream, ele permite que você adicione comentários do código de algum integrante da sua equipe e encaminhar diretamente para o Slack e Gitbucket.

Apresentação do Code Stream.

Você consegue discutir blocos de código com sua equipe, deixar perguntas ou comentários em formato de marcação.

Apresentação do Code Stream com integração com o Slack.

Menções honrozas

Todo tree

Crie tags de TODO ou FIXME no seu código para auxiliar outros(as) desenvolvedores(as) ao que precisa ser feito com Highlight.

Settings sync

Sincronize todas as configurações do seu Visual Studio Code, extensões, configuração do editor, cores, snippets, tudo que você precisa na nuvem.

Tem algum para compartilhar?

Essas são as que conheço, ferramentas que auxiliam bastante no trabalho remoto ou na produtividade do dia a dia. Se você conhece alguma, deixa um comentário abaixo ou manda um Tweet.

Ferramentas que auxiliam o trabalho remoto ou Home office

Neste post falarei sobre algumas ferramentas (grátis ou com um nível de uso gratuito que permite conhecer bem) importantes que propiciam gestão, controle e produtividade quando se é necessário trabalhar remotamente ou manter a sua equipe operando a distância, não tratarei sobre serviços específicos de uma empresa, mas sim de soluções que juntas podem criar uma suite que fará com que seja possível fazer negócios e gerir remotamente.

Resultado de imagem para google meet

O primeiro da lista é o Google Meet de propósito, além de propiciar a criação de salas de reunião virtual para até 250 participantes é muito simples, intuitivo e fluido, permite apresentação de tela, chat e pode ser utilizado em computadores através do navegador ou em celulares e tablets através de seu App.

https://gsuite.google.com.br/intl/pt-BR/products/meet/


Resultado de imagem para jitsi meet

O segundo é o Jitsi Meet, uma ótima ferramenta para video chamadas e possui funções muito parecidas com o Google Meet, porém ele possui um detalhe que pra nós brasileiros pode fazer bastante diferença quando necessário, pessoas podem acessar o meet via chamada telefonica também, quando uma sala é criada ele também disponibiliza um numero com DDI e DDD do Brasil, permitindo que pessoas que tenham sinal de celular e não possuam internet consigam participar!

https://jitsi.org/jitsi-meet/


Resultado de imagem para slack

O terceiro da lista ainda falando de comunicação é o Slack, ferramenta de comunicação por texto largamente difundida entre equipes de tecnologia por todo o mundo, possui versões para computadores, celulares, tablets e web, ferramenta fácil de usar que possui muitos artifícios que propiciam produtividade, criação de canais de debate, integrações com outras ferramentas, robôs, editores de texto rico, envio de arquivos, vale a pena conhecer.

https://slack.com/intl/pt-br/


Resultado de imagem para trello

O Trello é uma ferramenta que permite que possamos gerir projetos e tarefas, ele utiliza o paradigma Kanban que se tornou popular ao ser utilizado pela Toyota, é uma ferramenta fluida, flexível e simples de ser utilizada, nele é possível criar quadros por projeto, atribuir responsáveis, adicionar anexos e comentários, rótulos por cores, comentários, em resumo uma ferramenta simples, gratuita e poderosa para gestão.

https://trello.com/


Resultado de imagem para autentique

O Autentique é uma solução que propicia a assinatura de documentos digitalmente, com ele consigo negociar novos negócios e de forma simples enviar os contratos para que sejam revisados e assinados através da plataforma, nos proporcionou rapidez no fechamento de novos negócios, melhor gestão dos documentos (ainda mais por não precisar utilizar papel) e transparência no processo.

https://www.autentique.com.br


Resultado de imagem para tangerino

Por ultimo e não menos importante trago pra vocês o Tangerino, solução para controle de ponto através de aplicativos e internet, com ele é possível aos colaboradores da empresa realizar o registro de seus horários de trabalho, como também é permitido aos gestores realizar a gestão, com o Tangerino é possível identificar em qual local o ponto foi registrado, também é possível só permitir registro em locais e dispositivos específicos, por fim é uma boa alternativa para o relógio de ponto que fica na parede.

https://tangerino.com.br

Como trabalhar com Async / Await e entendendo Promises.

Entenda como trabalhar com Async/Await

Promises

Antes de falar sobre async / await é preciso entender Promises.

Promises JavaScriptPromise, ou Promessa, é um objeto usado para processamento assíncrono.
Uma Promise representa um valor que pode estar disponível agora, no futuro ou nunca.
Usando uma Promise, é assegurado que a API não será processada nem formatada até que a chamada da API seja bem sucedida.

Estados de uma Promise :

  • pending (pendente): Estado inicial, que não foi realizada nem rejeitada.
  • fulfilled (realizada): sucesso na operação.
  • rejected (rejeitado):  falha na operação.
  • settled (estabelecida): Que foi realizada ou rejeitada.

Função assíncrona com Promises.

const fetch = require('node-fetch')

function getPerson(id){
	fetch(`http://swapi.co/api/people/${id}`)
		.then(response => response.json())
		.then(person => console.log(person.name))
}

getPerson(1) //Luke Skywalker

NOTA:

As funções resolve e reject, quando chamadas, resolvem (em caso de sucesso)ou rejeitam (quando ocorre um erro)a promessa, respectivamente. O executor começa o trabalho assíncrono que, quando concluído, chama uma das funções resolve ou reject para definir o estado da promessa.

Referência: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Promise

Async

A declaração async function define uma função assíncrona, que retorna um objeto AsyncFunction, em JavaScript a função assíncrona é por definição um objeto do tipo AsyncFunction.

Para se obter melhor eficiência é recomendado que a função seja declarada com o async, ou seja, com a expression async functions chamado no código, desta forma as funções são tratadas com o resto do código, pois o mesmo sendo criado através do construtor AsyncFunction as funções são tratados na criada, perdendo eficiência.

Exemplo 1 : Declarando uma função async apartir da expression async functions.

async function newFunction("/*... Parametros */") {
    /*... Declarações ... */
}

Exemplo 2 : Declarando uma função async através do construtor de uma AsyncFuntion

let AsyncFunction = Object.getPrototypeOf(async function(){}).constructor

let newFunction = new AsyncFunction(/*Aqui é aplicado todo escopo da função, parâmetros, declarações, retorno.*/)

newFunction('/* Parâmetros */').then(v => {
  console.log(v); // imprime o resultado.
})
  • Observamos Claramente que o Exemplo 1 não só é mais prático, como é é simples e de aplicar e entendimento.

NOTA:

Uma função assíncrona pode conter uma expressão await, que pausa a execução da função assíncrona e espera pela resolução da Promise passada, e depois retorna o valor resolvido.

Referência: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/async_function

Await

O operador await é utilizado para esperar por uma Promise . Ele pode ser usado apenas dentro de um escopo async function.

A expressão await, como o próprio nome diz “Aguardando”, ou seja, enquanto o processo não obtiver retorno a função async fica em pausa, esperando o retorno da Promise, se a Promise for rejeitada a expressão await executa uma Exception com o valor da Rejeição.

Exemplo:

async function newFunction() {
	try{
		return await Promisefunction('/* parametros */')
	}catch(e){
		return e
	}
}
console.log(newFunction())

NOTA:

Se o valor não for uma Promise, ele converte o valor para uma Promise resolvida,  e espera por ele.

Referência: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/await

Exemplo 1: Escrevendo uma função assíncrona com async/await

const fetch = require('node-fetch')

function getPerson(id){
	const response = await fetch(`http://swapi.co/api/people/${id}`)
	const person = await response.json()
	console.log(person.name)
}

getPerson(1) //Luke Skywalker
  • Note que no exemplo acima existe duas expressões await, neste caso quando a primeira esta em execução a função entra em pausa aguardando o retorno da promise, assim que recebe o retorno a função sai da pausa passando para a próxima linha de execução, entrando novamente em pausa e assim poder finalizar todo o processo.

Exemplo 2: Com Arrow Function

const fetch = require('node-fetch')

function getPerson(id){
	const response = await fetch(`http://swapi.co/api/people/${id}`)
	return await response.json()
}

getPerson(1)
	.then(person => console.log(person.name) //Luke Skywalker
  • Neste exemplo temos o mesmo processo do exemplo anterior, mais desta vez utilizando Arrow functions, também podemos notar a notação do then, isto só é possível porque o retorno é uma Promise.

Exemplo 3: Utilizando Promise.all, Arrow function, Map

const fetch = require('node-fetch')
const ids = [1, 2, 3, 4, 5]
let person = []

function getPerson(id){
	const response = await fetch(`http://swapi.co/api/people/${id}`)
	const person = await response.json()	
	return person.name
}

function getData(){
	person.push(Promise.all(ids.map(item => getPerson(item)))
	return person[0]
}

async function result (){
	console.log(await getData())
}

result()
	/*[ 'Luke Skywalker',
		'C-3PO',
		'R2-D2',
		'Dart Vader',
		'LEia Organa' ] */

Para finalizar Deixo este código para Reflexão, Abraço e até o Próximo Post!