A arte de levantar e definir requisitos de software

Sou analista funcional, analista de requisitos ou product owner já há um bom tempo. Apesar de todos esses nomes, mesmo quando eu era analista de produto há ainda mais anos atrás, grande parte do meu papel já era esse: levantar e analisar requisitos e principalmente, propor soluções.

Apesar do enorme crescimento da profissão, em grande parte devido a ser um cargo considerado menos técnico (visão que particularmente abomino), vejo ela cada vez mais desvalorizada, até pela confusão em torno do papel e maior atenção de stakeholders e sponsors (os verdadeiros donos e investidores do projeto) à detalhes antes exclusivos do analista. É comum ver gerentes e diretores, altos cargos de organizações, discutindo requisitos e usabilidade e tirando autonomia do analista.

Apesar de, como eu disse, não concordar com a visão de que o papel é menos técnico (programar não é a única atividade técnica em um projeto) concordo que há um certo ar quase artístico e de percepção nas funções do analista funcional.

Só essa frase já arrepiaria os cabelos de puristas envolvidos no mercado de T.I. e amantes da sua completa lógica e até previsibilidade, mas a verdade é que há grandes fatores humanos e espaço para “feelings“.

Lógico que todo feeling também acaba por se originar de experiência, dados estatísticos e tudo o mais que envolve as diversas questões que se colocam, mas defino dessa maneira pois são fatores as vezes difíceis de se corroborar com dados ou mesmo propor testes e análises específicas, ainda mais na velocidade em que são exigidos.

Pois bem, talvez com alguns exemplos, ou mesmo com apenas uma situação hipotética, eu consiga demonstrar o que estou querendo dizer, assim como muitas vezes fazemos ao transmitir qualquer informação…

Devido a todo esse cenário, é comum hoje em dia, você receber informações do tipo: “o requisito é este, fazer esta tela dessa exata maneira”. Isto ocorre justamente pois o diretor possivelmente desenhou uma tela, e ele é muito reticente a quaisquer mudanças e a deturpação do requisitos começa…

A “arte” da definição de requisitos consiste em identificar os reais requisitos por trás de uma informação como essa, por mais difícil que ela seja, até mesmo politicamente. Nesse caso, os requisitos podem ser os mais diversos: fazer toda a operação numa tela só, usar um recurso visual específico, usar uma regra de negócio de bloqueio e validação, entre outros.

A falha em identificar o requisito real, leva a retrabalhos ou mesmo a situações onde toda a equipe se encontra presa à definições que não fazem mais sentido e onde a tão procurada criatividade murcha, quando não some por completo.

A cartilha diz que devemos fazer as decomposições e sínteses necessárias a fim de buscar essas informações, mas na prática, com prazos surreais e stakeholders que praticam uma ditadura (não que ela não tenha sua parcela de importância), cada vez mais a análise vai passando de um processo para uma simples “tomada de pedidos” e é um dos aspectos mais desmotivantes da rotina de um analista.

Quantas vezes vimos casos onde todo o processo foi completamente seguido à risca e o resultado final é um desastre? Onde o prazo era completamente irreal, quiça desnecessariamente e deixou a qualidade em segundo plano?

Sempre que me pego pensando nisso, me lembro do filme A Origem. Ele possui algumas citações muito interessantes e que cabem bem nessa questão da “ideia original”.

What is the most resilient parasite? Bacteria? A virus? An intestinal worm? An idea. Resilient… highly contagious. Once an idea has taken hold of the brain it’s almost impossible to eradicate. An idea that is fully formed – fully understood – that sticks; right in there somewhere.

Uma ideia, completamente formada e entendida “gruda” e é assim que as informações devem procurar ser moldadas, devemos procurar os detalhes que importam, o que realmente a define.

 The subject’s mind can always trace the genesis of the idea. True inspiration is impossible to fake.

Igualmente a inspiração é original e impossível de ser fingida, sempre enxergo que se o real requisito não for repassado, ele nunca terá a força necessária para espalhar para toda a equipe e para que ela possa dar tudo que tenha de melhor para fazer aquela ideia se tornar real da forma que ela merecia.

Para mim, o grande prazer do papel do analista é a investigação e o uso da criatividade em encontrar soluções para problemas reais. Quaisquer atitudes e procedimentos que fomentem isso irão agregar muita qualidade a todo processo de engenharia de software e aos produtos e à equipe como um todo.

Fonte das citações: GoodReads

2 Roteadores x Repetidor: resolvendo problemas de WiFi

No meu apartamento, apesar de pequeno, o WiFi sempre foi um problema. O sinal do roteador da NET não chega até o quarto.

Eu sei que existem diversas opções para solucionar esse problema mas, enquanto algumas são caras, outras podem dar dor de cabeças maiores e te fazer perder dinheiro.

Comprar um roteador parrudo e passar a usar o da NET como ‘bridge’ (com o WiFi desligado) nunca me apeteceu, não só pelo preço do roteador, que pode variar, mas porque, além de eu temer continuar com o problema de alguma forma, passar a depender de 2 roteadores em vez de um, nos aparelhos que mais preciso, não me parecia uma boa ideia.

Exemplo: meu PC é conectado via cabo diretamente ao roteador da NET, mas passaria a estar no segundo.

Sendo assim parti pros famigerados repetidores. Cheguei a comprar 2 e com a grana que perdi, poderia ter partido direto pra minha solução atual e que me motivou a escrever esse post. Em minha defesa, essa solução dependia de eu passar um cabo de rede da sala, onde está o roteador da NET, até o meu quarto, e isso é chato.

Já os repetidores, não funcionaram pois eles dependem justamente do WiFi, sendo assim, as chances de sucesso eram realmente baixas.

Pois então eu passei cabo até o quarto e comprei um roteador novo para colocar lá. Eu tinha receio que algo não funcionasse, é difícil pesquisar exatamente isso na internet pois os termos se repetem demais e nunca encontrei alguém com a exata mesma solução.

Pois bem, eis que para minha surpresa, funcionou absolutamente tudo bem, em 3 minutos de instalação.

Ao espetar o cabo, ele já reconheceu e configurou tudo. Não houve qualquer problema também nos meus outros aparelhos conectados ao roteador principal, e o WiFi desse novo (que é excelente), só será usado no raio de cobertura do quarto mesmo, então, tudo certo.

Não dá pra acessar no navegador do meu PC, o segundo roteador, porque obviamente, ele não está conectado àquela rede (vou pesquisar se há alguma forma), mas mesmo assim não foi um problema e sequer precisei conectar meu note direto nele para configurar.

Se você também tem problemas de conexão e tem a possibilidade de passar um cabo até o segundo ponto, sem dúvidas essa é a minha recomendação.

Abraços

Emulationstation fácil para Windows – novidades

Já falei sobre meu projeto opensource no Github para configuração fácil do Emulation Station no Windows aqui. E hoje venho apresentar algumas pequenas novidades que inseri no mesmo visando torná-lo ainda mais fácil.

Como sempre, você pode verificar detalhes no próprio arquivo README do projeto, navegando até o repositório e lá terá também acesso ao tutorial de como proceder para instalar.

Meu intuito neste post é comentar rapidamente sobre as adições que fiz.

  1. Executar com o botão direito: Agora você pode utilizar um ‘hack’ para o registro do Windows para facilitar ainda mais a execução e claro, a execução de scripts de uma maneira geral. Como era necessário executar como administrador, a única maneira era abrindo o Powershell como tal e navegando até a pasta para executar. Com essa modificação do registro, isso não é mais necessário.
  2. Sincronizar ROMs com o OneDrive: Muitas pessoas guardam suas coleções de ROMs em serviços em nuvem, como o OneDrive da Microsoft, nesse caso, se você executar este script opcional do projeto, as pastas serão redirecionadas para as pastas comuns do serviço.
  3. Script de scraper: O projeto já continha um executável de um ótimo scraper (programa que busca metadados dos jogos), mas como ele necessita de parâmetros para recuperar dados como vídeos, eu criei um script onde estes parâmetros são inseridos de forma automatizada. Como a maioria deles exige um usuário válido no serviço de busca, será necessário você criar um para utilizá-lo bem.

Lembrando que se trata de um projeto público, que iniciei baseado em um repositório igualmente público disponível e toda a comunidade é bem vinda ao ajudar no projeto, seja dando ideias ou mesmo desenvolvendo suas próprias soluções.

Abraço a todos e até a próxima

Chrome 69 – Utilizando PIP (vídeo flutuante)

08

Essa dica é para o pessoal que gosta de assistir vídeos do Youtube e outros serviços semelhantes no Windows (infelizmente não funciona com o Netflix).

Já há extensões do Chrome que possibilitam este recurso, mas em sua última versão, o navegador implementa a funcionalidade de forma nativa.

Para ativar é muito fácil, basta abrir uma nova aba e colar os links abaixo, que o levará as configurações do seu browser e ativar ambas (um link de cada vez e eles não funcionam de forma automática).

chrome://flags/#enable-picture-in-picture

chrome://flags/#enable-surfaces-for-videos

Depois, basta clicar com o botão direito do mouse (pode ser necessário um duplo clique se o site exibir opções personalizadas no menu de contexto, como é o caso do Youtube) e acionar a opção Picture-in-picture, conforme a imagem abaixo:

E é só. Você irá perceber que não poderá deixar a página, seja fechando a aba ou navegando para outro endereço e também não conseguirá fazer o mesmo com 2 vídeos ao mesmo tempo. Mesmo assim é um recurso muito útil para poder assistir conteúdos enquanto faz outras atividades no PC. E você pode redimensionar a janela com o mouse.

Eu com certeza usarei muito e prefiro ao uso de uma extensão.

Até a próxima.

R.I.P. Skype

Essa imagem que achei na internet tem um problema. Não é essa versão específica do Skype que parece estar morta, é a aplicação como um todo.

Qualquer pessoa que o use todo dia e já experimentou a versão “moderna”, sabe do que estou falando. Ela é péssima.

Fiz questão inclusive de procurar informações no fórum da Microsoft e o que encontrei foi apenas um tópico pra me divertir vendo mais pessoas a passar nervoso como eu. Caso se interesse, pode clicar aqui (não tem tanta resposta assim, mas é legal de ver).

A Microsoft vinha inclusive emitindo um aviso aos usuários da antiga versão desktop, de que ele seria descontinuado, o que me fez voltar a dar uma chance para a versão moderna, mas pelo que li por aí, ela foi obrigada a voltar atrás. E é fácil compreender porque. São problemas com recursos capados, bugs como fechamento automático, notificações que não chegam…

Por enquanto ainda estou insistindo, na dúvida entre voltar para a versão antiga ou alinhar com “todos” meus contatos o uso de um novo mensageiro. Novas opções não faltam (Whatsapp, Discord, Telegram, etc) e acredito que, caso a Microsoft tenha feito essa bagunça propositalmente para promover o Teams (nem vou prover link porque não merecem!), acredito fortemente que ela esteja cometendo mais um erro…

Posts desabafo assim não servem pra muita coisa além disso, pra pormos pra fora nossa frustração ou quem sabe acabar fazendo um click bait, mas por outro lado admito que fico realmente pensante sobre como erros homéricos como esse podem ser cometidos ainda hoje por gigantes da indústria e como isso se relaciona com os erros nossos de cada dia que trabalhamos com desenvolvimento de software, talvez possamos ao menos tirar lições, nem que seja a que oportunidades surgem onde menos se esperam…

KODI – Assistindo vídeos da rede local

KODI é um software de reprodução de vídeos, entre outras funções, muito famoso atualmente. Com versões para Windows, Android TVs, Xbox, etc.

Ele usa add-ons para conexão a servidores e tem uma comunidade ativa e muita informação disponível e se você quiser saber mais sobre ele, não terá problemas em encontrar diversos sites internet afora.

O meu uso particular é para assistir os vídeos que tenho no meu PC, à partir do meu Xbox One (o Kodi está disponível na loja oficial). E eu decidi desenvolver um pequeno projeto, para ajudar quem deseja compartilhar seus vídeos de sua rede local (seu PC com Windows), direto para o seu Kodi (esteja ele em qual aparelho estiver), de forma muito simples.

Basta navegar até o repositório do projeto, fazer o download, colocar na pasta que deseja compartilhar e executar o script.

No próprio projeto eu dei um pouquinho mais de detalhes de como proceder. Há também um vídeo do funcionamento do compartilhamento sendo realizado de forma manual, caso você tenha algum problema.

Após o compartilhamento, você poderá conectar o Kodi usando o protocolo NFS que estará mapeado sob o nome “videos” (se você não conhece o Kodi, recomendo o vídeo citado no projeto, que você pode ver clicando aqui).

Abraços

Automatização de instalações

Com o Windows migrando para um formato loja para seus apps, talvez não seja interessante mais para todo tipo de usuário e softwares, a dica que darei hoje. Contudo, muitos aplicativos ainda não são distribuídos por ela, ou talvez jamais cheguem a ser.

E um software que ajuda muito nessa tarefa é o Chocolatey. Trata-se de uma aplicação, conectada a um repositório, onde os usuários criam scripts relacionados aos diretórios de download de diversas ferramentas. Os próprios usuários mantém esses scripts, mas eles passam por uma moderação para tentar evitar arquivos e códigos maliciosos, sendo assim, é possível dizer que instalar aplicações por ele é tão seguro quanto pelo download comum.

Isto posto, desenvolvi um script Powershell, que baixa o próprio Chocolatey e o utiliza para instalar silenciosamente, todas as aplicações que uso regularmente:

O script acima utiliza o comando upgrade do choco, pois ele instala quando não encontra, ou faz a atualização caso o mesmo já se encontre instalado, ou seja, você pode usar o mesmo script para atualizações futuras.

Se você desejar, pode verificar os softwares disponíveis como pacotes choco, em seu diretório, clicando aqui e customizar meu script como lhe convenha. Neste link você pode também, verificar os detalhes de cada script de instalação, caso queira saber exatamente de onde são baixados os arquivos e todos os comandos.

Basta fazer o download do arquivo (clicando no nome do arquivo na parte de baixo da janela dele no post), ou copiar o seu conteúdo e salvar com a extensão ps1, usada pelo Powershell (você pode clicar no botão “view raw” para ver somente seu conteúdo na tela).

Outra dica relacionada à essa, é o uso de um arquivo para modificação do registro. Com ele, fica disponível no menu de contexto do Windows (botão direito do mouse), a opção para executar um script Powershell diretamente como administrador.

Basta executar o arquivo (da mesma forma que sugerido para o primeiro arquivo do post) e aceitar a modificação do registro.

Abs.

Bluetooth Pioneer + Zenfone

Resolvi registrar essa dica após as dificuldades que passei para configurar corretamente o Bluetooth do meu novo celular Zenfone 4 com meu som do carro Pioneer MVH-X588BT.

Não encontrei nada na internet sobre o meu problema, então, quem sabe este post possa ajudar alguém no futuro.

Usava o Bluetooth do som com meu antigo Moto G4 Plus sem nenhum contratempo, porém, com o celular novo, a conexão ocorria com sucesso, mostrava estar tocando, mas o áudio não saía. Testei o celular com uma caixinha de som Bluetooth e tudo funcionou perfeitamente.

Tentei formatar o som, reconectar mais de uma vez e nada. Pesquisei na internet e não achei também nenhuma informação sequer.

Foi então que, em um golpe de sorte e lógica, uma opção me chamou a atenção na configuração de mídias compartilhadas (ao clicar sobre o dispositivo em questão no Bluetooth do celular). Entre as opções “Usar para” abaixo, me chamou a atenção o item “Usar áudio de alta qualidade”.

Screenshot_20180803-083553

E era justamente ele o causador do problema. Foi só desmarcar a opção e o áudio começou a funcionar corretamente.

Abs.

WhatsApp: usando 2 contas no mesmo aparelho

Todo mundo que possui aparelhos com dois chips, caso um deles seja profissional, já se deparou com esse problema. Como usar o app do WhatsApp nos dois?

No início do ano, a empresa lançou uma versão “Business” do app, voltada para o uso empresarial. Ela contém inclusive alguns recursos específicos, como TAGs que o usuário pode usar para marcar grupos e mensagens (exemplo: “Pedido concluído”), facilitando a usabilidade também como um controle de demandas.

Contudo, um outro uso muito interessante foi proporcionado por esse lançamento: o fato de finalmente podermos acessar duas contas diferentes (uma para cada chip), no mesmo aparelho e de forma oficial.

Já existiam outra maneiras mais nebulosas de se atingir isso, usando apps de terceiros, usando o mecanismo de usuários do Android (que nem todos os fabricantes implementam e ainda por cima, não permite o login em dois usuários simultâneos), entre outras.

Contudo nenhuma delas é tão prática quanto essa e sem a segurança que um método oficial oferece. Embora eu ainda queira pesquisar um pouco mais, pois o modo que a empresa valida as contas é um pouco obscuro (recebi ligações com códigos de confirmações assim como SMS), até agora não tive problemas e mesmo com um certo receio de algum bloqueio na conta, venho usando com sucesso e feliz por aposentar meu segundo aparelho.

Abs.

Contribuindo em projetos no GitHub

Contribuir em projetos opensource no GitHub já é um assunto bem comentado. É um prazer, é útil e está cada vez mais facilitado.

Se engana quem pensa que é necessário um grande conhecimento para poder contribuir, como é o caso no Stack Overflow, onde você precisa ser muito bom e estar extremamente atento para conseguir responder uma pergunta.

Mas o Stack é assunto pra outro post, meu intuito aqui é demonstrar como começar e claro, contar como foi minha primeira contribuição.

Há alguns repositórios prontos para lhe ajudar a entender como o processo funciona e no meu caso eu usei este: first-contributions.

Nele você encontrará um passo-a-passo de como proceder com o fork (que é o primeiro passo, onde você copia o repositório), a alteração, commit, pull request, enfim…

O arquivo README  possui traduções para outras línguas e você não encontrará nenhuma maior dificuldade para começar.

Pois bem, dado este primeiro passo, você está pronto a procurar projetos do seu interesse ou que você possa contribuir de verdade ou de forma mais significativa.

O importante é lembrar que nem toda contribuição decorre de grandes e inteligentes códigos, podendo ser simplesmente uma pequena correção, até mesmo gramatical ou uma tradução.

E aproveito essa deixa pra comentar sobre minha primeira real contribuição!

Veja que o seu nome fica gravado como um contribuidor do projeto, o que é bem gratificante, podendo até mesmo servir como algo interessante no seu currículo virtual.

Você pode acessar esse projeto aqui e saber mais sobre ele nesse meu outro post.

O projeto em questão era muito interessante e apresentava o README apenas em inglês e eu fiz a tradução para o Português. Embora não seja um projeto muito famoso, isso não importa, é grande a satisfação de ajudar e agora ele pode ser acessível a mais pessoas, quem sabe?

Sendo assim, realizei o processo, fiz o fork, submeti a pull request e o mantenedor do repositório aceitou minha contribuição. Excitante!

E é isso.

Porém, contribuir é viciante e logo já comecei ter ideias e escrever novas funcionalidades para o projeto.

Recomendo fortemente que você invista nesse tipo de contribuição (inclusive são bem vindas nos meus repositórios, ok?) e quem sabe você não possa realizar ainda melhores feitos e ajudar toda uma comunidade que utilize o projeto e de quebra aprender muito na jornada.

Um abraço.