quarta-feira, 5 de setembro de 2012

Software, não é Sistema


Neste post, quero fugir um pouco de questões sobre metodologias ágeis, e abordar um outro assunto, que por mais simples que seja é bastante discutível, o sistema de informação?
Acredito que você já tenha passado por uma destes duas situações, dentre várias que passamos no decorrer deste nossa vida profissional:

Alguem chega para você e diz: 

  “Queria um sisteminha pra minha empresa, é algo simples, controle de contas a pagar, receber e estoque”.

   "Esse sistema não funciona, meu contas a pagar ta uma bagunça, não controla nada, não é isto que quero ver."

Nas duas situações, podemos ver como é visto, pela maioria das pessoas, a questão dos sistemas de informação.

Podemos evidenciar na primeira situação, onde o uso do computador já se tornou algo do cotidiano das pessoas, como o uso da televisão, e hoje é tão fácil utilizá-lo, fazer documentos, blogs, planilhas, navegar internet, entre outras funcionalidades, estas pessoas não tem o conhecimento de quão é complexo o desenvolvimento de um sistema, e para eles tudo é simples de ser feito. 

Veja só, ninguém chega pra um médico e diz: “Preciso fazer um transplante de coração, é algo simples, é só tirar um coração e colocar outro no lugar”.

A segunda situação nos remete as pessoas acreditarem que com um sistema todos seus problemas serão resolvidos, como num passe de mágica.

Com base nestas situações, particularmente não gosto de adotar esta nomenclatura sistema, notem que sempre que apareceu esta palavra, coloquei ela com destaque,  porque o que desenvolvemos não é um sistema, mas sim apenas um elemento de um sistema, que prefiro chamar de Ferramenta, Software.

Mas como assim? Um elemento que faz parte de um sistema?

Para entender isto, primeiro vamos ver o que é um sistema:

“Sistema é conjunto de elementos interrelacionados que interagem no desempenho de uma função”

Portanto,  quando falamos de um sistema de informação, estamos lidando de algo mais complexo, com elementos que dependem um do outro para funcionarem.

Um sistema de informação é composto de:

- Pessoas, usuários que interagem com a ferramenta através de input de dados, disparam rotinas, mantém informações, entre outras ações.

- Processos, que determinam o fluxo destas informações, como elas devem funcionar.

- Software, ferramenta responsável para auxiliar no controle de uma tarefa,  através de instruções a serem seguidas e/ou executadas, na manipulação, redirecionamento ou modificação de um dado/informação ou acontecimento. O próprio software que desenvolvemos, ou outros como Banco de Dados, Web, Sistema Operacional

- Equipamentos, onde serão executados o software e as pessoas utilizarão para interagir com esta ferramenta, como servidores,   impressoras, leitores código de barras, etc.

Então ao se deparar com algumas das situações acima, não venda a idéia de o software faz mágica, que resolverá todos os problemas, que controlará tudo. Tente deixar de forma clara, que se algo errado acontecer ou aconteceu não necessariamente é um problema do software, mas pode ter sido um dos outros elementos do sistema que falharam.

Por isso que podemos dizer, que Software de Computador, não é um sistema de informação.

Pelo menos vejo desta forma. Se concordam ou não,  dêem sua opinião.

Obrigado por lerem este Blog.

sexta-feira, 17 de agosto de 2012

Usar Kanban, não é praticar Scrum.


Com a propagação cada vez maior dos conceitos de metodologia ágeis, muitas empresas passaram a adotar mecanismos de controle para gerência de seus projetos, com base em pontos destes frameworks, e auto denominam-se equipes ágeis com utilização do Scrum.

O Problema ocorre que em algumas empresas utilizam-se do Kanban para exemplificar ou demonstrar o uso do Scrum, mas esquecendo-se dos princípios do manifesto ágeis e das características do framework Scrum. Indo mais além na análise destes casos, podemos dizer que a grande maioria destas empresas nem o uso do Kanban estão realizando de forma correta, mas sim adotando um quadro Branco com uso de post-it, para demonstrar o andamento de alguma tarefa, mas sem usar a essência desta metodologia.

Mas afinal o que é Kanban, o que é o Scrum e de como isto ocorre, veremos a seguir.

KANBAN, de forma sucinta e resumida, é um ferramenta que surgiu através da metodologia Lean, esta por sua vez criada na Toyota, onde o principio básico é diminuir o desperdício.  Podemos dizer que o Kanban é um instrumento de visualização que permite a criação de fluxo via um Pull System (Sistema Puxado). É iniciado pelo que esta sendo feito, usa colunas nomeadas para determinar onde esta cada fluxo de trabalho.
No kanban o trabalho deve ser limitado  em cada etapa. Um dos grandes problemas na utilização por empresas, é que não realizam esta limitação, e com isso não conseguem mensurar a latência ou gargalo do processo.

Kanban – sem limitação



Kanban – com limitação


SCRUM, é um framework de métodos ágeis utilizado no desenvolvimento de software, que foi desenvolvido apartir do Lean. O principio é de que num Scrum, temos equipes auto-gerênciaveis, multi-funcionais e auto-organizadas. O Scrum diferentemente do Kanban, é mais prescritivas, ou seja, tem mais regras a serem seguidas. Possui os time-box, ciclos com tempos determinados a serem seguidos..

Esquema Scrum



Exemplificando o que ocorre em empresas, elas adotam o kanban para visualizar sua rotina de tarefas, mas acabam esquecendo dos princípios do scrum, principalmente na questão de times auto-organizados, pois ainda trabalham com o método WaterFall, onde tem pessoas dizendo o que, como e quando fazer, e não deixando o time desenvolver, apenas programando o que é passado a eles. A questão burocrática, da documentação imposta também é uma das causas que pelo qual podemos afirmar a não utilização do Scrum nestas equipes.

Nenhuma ferramenta é completa, nenhuma ferramenta é perfeita, mas podemos utiliza-lás de forma conjunta, para pode extrair o que há de melhor em ambas.

Veja na sua empresa, o que é melhor de adotar, Kanban, Scrum ou ambas de forma combinadas. Utilize o que se enquadre melhor no seu caso, e tente extrair o máximo de cada uma delas.
Usar as ferramentas adequadas vai lhe ajudar a ter sucesso, mas isso não vai lhe garantir o sucesso.

Pra finalizar um quadro que demonstrar o grau de prescritividade e adaptabilidade de algumas ferramentas.


Deixem seu comentário, dêem um feedback sobre o blog, para que possamos esta melhorando sempre.


terça-feira, 14 de agosto de 2012

Comunicação Eficaz, princípio básico e importante


Um dos princípios, segundo o manifesto, para um time ágil é que "O método mais eficiente e efetivo de transmitir informação é a conversa cara-a-cara.

A boa comunicação entre o time, é um dos fundamentos básicos para garantir a qualidade de um software.

Um boa comunicação levanta problemas e soluções de forma que os tornam mais visíveis, fazendo que fique mais claro ao entendimento de todos. A forma de se comunicar deve ser, sempre que possível, a conversa pessoal, pois assim, com as pessoas localizadas juntas, fica mais evidente como trabalhar as idéias.

Para uma boa comunicação devemos ter foco no que esta sendo discutido, de forma clara, sem uso de jargões e termos muito técnicos, principalmente quando esta conversa é com um usuário de nosso software.

Dentro do time, todos devem ter a liberdade de expor suas idéias, criando uma liga entre os desenvolvedores, formando um time unido para que saiba lidar com suas virtudes, e principalmente com seus defeitos e cada um saiba a responsabilidade que representa dentro do time.

Quando se garante e chega a um nível de comunicação eficaz, passamos a conhecer as habilidades de cada, formamos um time coeso, capaz de responder a mudanças e principalmente aumentamos a confiança, a auto-estima, a segurança, o potencial e consequentemente a produtividade de um time.

Procurem sempre a comunicação da forma pessoal, cara-a-cara, mas não sendo possível, tende ao máximo o uso da palavra, em detrimento a outros meios, pois assim a compreensão do que seu parceiro quer, fica mais coerente ao que ele pede, e não a sua interpretação como na utilização de email por exemplo.

Pra finalizar, é importante que todos falem a mesma língua, tentem a diminuir ao máximo o uso de intermediários nestas conversas, façam que todos estejam interagindo dentro do time.


Comunicação Ineficaz = insegurança = desmotivação = improdutividade = fracasso

Comunicação eficaz = segurança = auto-estima = produtividade = sucesso


2 vídeos que mostra falhas de comunicação:






sábado, 11 de agosto de 2012

No Desenvolvimento, quanto nas Olimpiadas: A importância do Time?

Ao terminar de assistir 2 finais olímpicas, a do futebol e do Volei, já veio a cabeça uma analogia ao projeto de software, e resolvi fazer este post, curto, para passar a analogia que fiz a vocês.

Podemos ver 2 equipes, em busca de um objetivo objetivo, a medalha, ou melhor dizendo, um projeto final.

A equipe de futebol, temos bons desenvolvedores, mas que não conseguiu formar um time, onde não souberam superar o desafio, onde quiseram ser mais que o projeto que estavam inseridos, no caso olimpíadas, no nosso um software.

No volei, tivemos desenvolvedoras, que atuaram apoiando uma a outra, trocando informações, onde não tinham um gerente imponto padrões, mas de certa forma esta inserindo no mesmo time, em busca do mesmo sucesso. Foram passando os obstáculos, mudando estrategias, mas não esquecendo da meta.

Olha só quanto podemos tirar e inserir no scrum, nos métodos ágeis no desenvolvimento do software.

Tivemos dois exemplo de equipe de desenvolvedores, um formando um time outro não.
Um sprint, o torneio olímpico, com algumas histórias (cada jogo é uma).
Uma meta definida: a medalha de olímpica, digo do software.

Mas Rodrigo e a reunião de restropectiva? Também temos inserindo, onde cada uma saiba analisar o porque não chegou ao objetivo, onde errou, o que acertou, e quais ações a serem tomadas para melhorar e atingir a meta do próximo sprint;

O outro time, o que foi ponto negativo mesmo que tenha atingido o objetivo, o que foi positivo e deve continuar a ser seguindo.

Enfim, uma analogia simples, mas que podemos ver a importância de um time, de todos trabalharem juntos, sem um querer ser mais que o outro, tirar proveito das qualidades de cada um.

Uma formiga não consegue carregar uma grande folha sozinha, mas em partes e com ajuda de varias, na mesma tarefa isto é possível.

Ah, e pra finalizar só um ditado: "Não tropeçamos em montanhas, mas sim em pequenos cascalhos"

quarta-feira, 8 de agosto de 2012

Agilidade no desenvolvimento de software

Um dos assuntos mais comentados hoje em dia no desenvolvimento de software é sobre métodos ágeis.

Muitos que estão lendo este post já devem conhecer e praticar métodos ágeis, mas como a idéia é difundir o conhecimento, e muitos estão iniciando sua jornada no mundo da TI, achei interessante para iniciar nossa troca de informações, através de canal, falar um pouco sobre o que é agilidade.

Se você perguntar a uma pessoa leiga no assunto, seja ela um cliente, usuário, gerente ou diretor de sua empresa o que é agilidade para ele, muitos irão responder que ser ágil, é ser rápido no desenvolvimento;

Mas e você, o que acha que é agilidade?

Agilidade num desenvolvimento de software é ter a capacidade de se adaptar rapidamente as mudanças. Com base nisto, podemos dizer que agilidade é ter o poder de resolver os problemas de forma eficaz, segura e com qualidade e não dizer que será resolvido com rapidez.

Fazendo uma analogia ao futebol, ágil é o craque que na frente de um marcador dá um drible, se desenvincilha da marcação, é aquele que faz o jogo fluir. Não seria o lateral que corre rápido, que vai com impeto ao ataque, mas ao encontrar o marcador da um balão e perde toda a jogada.

Podemos afirmar que a agilidade no desenvolvimento de software esta ligada umbilicalmente ao sucesso de um projeto, onde o que determina esse sucesso não é a velocidade com qual será entregue ao cliente, mas sim, é software que atende as necessidades do cliente, que tem um código sem bugs e qualquer manutenção se torna mais fácil de ser realizada.

Então quando alguem pedir para ser ágil na entrega, deixe claro - a esta pessoa - que será ágil mas não um velocista, afinal quem tem pressa come crú.


Iniciando Blog


A muito tempo venho me questionando o quanto estou aquém das novidades no mundo do TI, e o que fazer para mudar este cenário. São questionamentos simples, mais que causam um certo conflito com nós mesmos.

Ao participar deste ultimo final de semana da QconSp 2012, aliás um ótimo evento, de um nível de excelência altíssimo,  seja nas  palestras e assuntos abortados, até a organização por parte da Caelum (abaixo falarei um pouco sobre), vi o quanto precisamos estar no meio para estar atualizados.

Para quem é do interior (no meu caso Cascavel-PR), principalmente onde a cultura de TI seja dentro das empresas, ou até mesmo nas cadeiras de universidades, ainda tem um pensamento um pouco arcaico, acabamos entrando numa zona de conforto, que pode chegar muito cedo, principalmente quando se trabalha com TI em empresas onde o negócio é outro.

Mas o que fazer para mudar isto?

Como sair desta Zona de Conforto?

Pra isto precisamos estar em constante atualização, estudando e principalmente criando uma rede de contato com pessoas da área, o famoso NetWorking, para que possamos trocar informações.

E qual a melhor forma de aprender do que a difundir conhecimento? Passando o que sabemos, temos um feedback maior, trocamos idéias e informações, e consequentemente aprendemos coisas novas.

Por isso resolvi criar este Blog, para passar um pouco sobre as coisas que aprendi e vou aprender, compartilhar informações, estudos, palestras, receber feedbacks, conhecer novos assuntos.

Procurarei para passar estes conhecimentos, de forma simples, até porque não sou um especialista e muito menos professor.

Quem entende dos assuntos aqui postados, espero que dêem um feedback, e possa aprender com vocês.

Para quem como eu, que quer aprender, espero que possamos adquirir conhecimento juntos.

Querem saber mais:

www.caelum.com.br -> na minha opinião, melhor local de ensino de Java e outras tecnologias. Instrutores altamente capacitados, focados no aprendizado realmente. Novo modo de curso,on-line, blog.  (mas não deixem de ler este também).

www.qconsp.com -> um melhores eventos de desenvolvimento de software do Brasil