Re: Ata de reunião: registros são importantes, mesmo quando informais

Durante a minha dose diária e matinal de feeds, percorrendo o google reader me deparei com o post Ata de reunião: registros são importantes, mesmo quando informais. Li o texto e decidi compartilhar um pouco sobre minhas experiências recentes com os registros de reuniões e reforçar a importância de se fazer bons registros. Ainda não considero-me uma pessoa organizada suficientemente a ponto de dar dicas financeiras ou de organização pessoal, mas compartilhar experiências todos podemos.

Sejamos sinceros! Fazer registros de reuniões e distribuí-los entre os participantes é uma tarefa nada empolgante. Para muitos é mera formalidade e não possui utilidade alguma. Não são em todas reuniões que faço registros como sugerido no Efetividade, em algumas apenas anoto as pendência e já saio me dedicando a elas, entretanto tem sido cada maior o número de reuniões que venho registrando. Principalmente porque encontrei uma forma bastante ágil de fazê-lo e que para mim tem sido muito útil.

Nas reuniões que conduzo, gosto muito de utilizar o quadro para fazer anotações das idéias e pontos importantes que surgem durante a reunião. É uma forma de garantir que não sejam esquecidos e também permite que todos presentes acompanhem visualmente a evolução da reunião. O que traz uma série de vantagens:

  • Quando registro alguma idéia no quadro, os participantes validam na hora se minha percepção é fiel a idéia apresentada;
  • No quadro é possível fazer desenhos, setas e rabiscos em diferentes cores, o que além de trazer uma melhor organização, dá uma certa dinâmica a reunião;
  • Este dias ouvi uma piada em que Moisés alertava a Deus que se os 10 mandamentos fossem representados com diagramas e não leis textuais, talvez a humanidade tivesse os compreendido. Certas coisas são difícieis de transmitir em um texto, rabiscos e desenhos no quadro são muito representativos e podem transmitir algumas coisas com mais facilidade.

Porém muitas das informações representadas no quadro são perdidas nas atas formais. Talvez sejam necessário 3 parágrafos para detalhar uma idéia rabisca às pressa em uma lousa…

Hoje, graças ao advento das câmeras digitais é possível tirar fotos e em poucos minutos anexá-las em um documento e repassar aos participantes. Mesmo com celulares já é possível tirar fotos boas que permitam a releitura do quadro construído durante a reunão. Acreditem, voltar os olhos para uma foto do esquema original, criado para organizar as idéias, pode resgatar muitas informações que uma ata textual talvez não conseguiria! Fazendo uso deste recurso otimizei bastante meus registros.

Atualmente registro os participantes, local, objetivo e tópicos os mais importantes. Faço isso de uma forma bem branda, pois anexo as foto na ata. Dessa forma não há necessidade de digitar todos detalhes, uma vez que durante a reunião os tópicos importantes vão para o quadro e a foto traz um resumo bastante significativo sobre cada um.

dsc05786-1.JPG
Exemplo: Cópia tirada uma aula

A única seção que realmente tenho que me preocupar em detalhar são as “Próximas Ações”. Pois são as decisões e ações disparadas que justificam a ocorrência da reunião. E é para o controle e acompanhamento destas ações que o registro é tão importante, pois é ele que lembra aos participantes dos compromissos que assumiram.

Claro, este formato de ata tem suas limitações. Não são em todas reuniões que fazemos registros singnificantes no quadro e mesmo quando fazemos, nem sempre fazem sentido para as pessoas que não participaram da reunião. Quando decisões importantes precisam ser justificadas, ou quando o contexto em que as ações foram planejadas precisa ser conhecido por pessoas que não fizeram parte da reunião, não recomendaria este tipo de registro. Se há intenção de indexar a ata para pesquisa futura, também pode ser ruim utilizar as fotos, pois não há como pesquisar por seu conteúdo.

Tenho usado bastante e gostado, além de ser um método prático tem se mostrado bastante útil.

1 Comment

MindMap: MPS.BR - Nível G

Um mapa mental ou MindMap é utilizado para representar palavras, idéias, trabalhos ou outros items ligados e arranjados em torno de uma idéia ou palavra central. Pode ser usado de forma mais sofisticada para organizar e estruturar um pensamento ou simplesmente para coletar idéias em brainstorming.

Este MaindMap em especial serviu para construir uma visualização mais rápida dos resultados esperados descritos no Guia de Implementação do MPS.BR disponibilizado pela Softex. No Nível G do programa de Melhoria de Processo de Software Brasileiro (MPS.BR) são previstas ações em duas áreas: Gerência de Projetos (GPR) e Gerência de Requisitos (GRE).

mapa-mental-nivel-g.png

Clique aqui para consultar o mapa mental completo.

2 Comments

Implantação do GTD

Aproveitando que nesta terça-feira estava liberado do curso de áudio e que minha tão esperada encomenda havia sido entregue, reservei a noite para iniciar a leitura do Getting things done, que em português recebeu o título “A arte de fazer acontecer“.

Fui apresentado ao GTD (Getting things done) através do Efetividade.net, que acompanho desde o post sobre como emagrecer sua carteira. De lá para cada adquiri uma visão mais crítica sobre a forma como executo minhas tarefas e principalmente sobre a forma como as organizo.

Só então que percebi o grau de proximidade entre minha organização pessoal e as frases “bem que eu gostaria, mas me falta tempo“, “estou extremamente atarefado“, ou ainda “o complicado é arrumar tempo“. Dizem que o primeiro passo é reconhecer que o problema existe e que as vezes esse é o mais complicado. Mas e o segundo passo?

Definir prioridades, seqüenciar atividades e manter to-do lists atualizadas não foram suficientes. Obtive vários progressos, mas ainda assim os dias continuaram passando cada vez mais rápido, a pilha de livros suplicando leitura cresceu, o blog não recebeu atualizações e a lista de pendências continuou me cobrando e gerando frustração.

Já identifiquei uns pontos bem interessantes na leitura, que me trouxeram esperança de que a fórmula elaborada por David Allen realmente esteja correta. Pretendo finalizar a leitura o quanto antes e inicar a implantação assim que possível!

2 Comments

World Usability Day - “Making life easy”

O Dia Mundial da Usabilidade 2007 será realizado simultaneamente em 38 países. No Brasil, cinco capitais brasileiras participam da programação integrada: Belo Horizonte, Curitiba, Porto Alegre, Recife e Rio de Janeiro. Detalhes sobre cada evento podem ser consultados no site oficial do evento.

Nos últimos posts iniciei uma série sobre o pattern MVP, porém não consegui conciliar o tempo para dar continuidade na saga. Olhava para meu blog e fazia a tradicional cobrança: “preciso atualizar o bog!”, porém escrever aqueles artigos levaria tempo.

Resolvi escrever sobre o Dia Mundial da Usabilidade, abandonar as cobranças e tirar a poeira do blog porque passei por um período de estudos sobre Acessibilidade e Usabilidade. Conheci o Laboratório Adaptado de Informática (LAI) da Unisinos, através do qual alunos com deficiência visual recebem materiais adaptados e podem realizar pesquisas e provas com o auxílio de softwares de leitura de telas.

Também conheci um centro de pesquisa da FEEVALE onde alunos com Necessidades Especiais de Ensino (NEE), muitos em função de paralisia cerebral, utilizam computadores em suas atividades educacionais. Estes alunos possuem dificuldades motoras e não possuem os movimentos finos para manuseio de lápis e canetas. Sendo assim, tanto os alunos, quantos os professores e as escolas precisam ser orientados sobre a utilização do computador nas salas de aulas.

Os resultados obtidos pelos projetos são realmente empolgantes! Existem mais iniciativas legais por aí, mas estas serão cenas para os próximos capítulos. Para quem ainda não tem certeza de que os investimentos em acessibilidade e usabilidade são válidos, convém reler o post sobre Padrões Web & Necessidades Especiais e assistir este vídeo.

1 Comment

Model-View-Presenter (Parte II)

Relembrando

Na 1ª parte deste tutorial criamos uma Web Application ASP.NET e construímos uma View para Login. Nossa view é um aspx que contém campos para usuário e senha e implementa a interface ILogin.

Continuando

Na pasta App_Code adicione uma classe LoginPresenter (conforme o nome sugere) este será nosso Presenter. Seu papel será obter as informações da view e repassá-las para que as classes de negócio decidam o que fazer.

Criaremos um método de login que validará se o usuário e senha informados são válidos.

/// 
/// Classe responsável pelo “meio de campo” entre a View e o Model
/// 
public class LoginPresenter
{
    private ILogin view;
    private const string USER_SESSION_KEY = “USER_NAME”;

    public LoginPresenter() { }

    /// 
    /// Valida se o usuário e senha informados são válidos,
    /// depois armazena o nome do usuário na Session.
    /// 
    /// Retorna se o usuário e senha são validos
    public bool Login()
    {
        // Verifica se o usuário e senha informados pelo usuário são válidos
        if (View.Usuario == “admin” && View.Senha == “123″)
        {
            HttpSessionState Session = HttpContext.Current.Session;
            Session[LoginPresenter.USER_SESSION_KEY] = View.Usuario;
            return true;
        }

        return false;
    }

    /// 
    /// Referência para a View, em nosso exemplo o Default.aspx
    /// 
    public ILogin View
    {
        get { return view; }
        set { view = value; }
    }

}

Note que ao validar o usuário e senha o presenter acessa diretamente a propriedade Usuario da referência View. Ou seja, conforme a implementação da interface ILogin que fizemos em Default.aspx.cs, irá obter o usuário da propriedade Text de txtLogin

    public string Usuario
    {
        get { return txtLogin.Text; }
    ...

Para que nosso exemplo torne-se funcional, precisamos alterar a implementação de nossa view. Para isso abra novamente o arquivo Default.aspx.cs e adicione os trechos de código descritos abaixo:

    private LoginPresenter presenter;

    protected void Page_Load(object sender, EventArgs e)
    {
        presenter = new LoginPresenter();
        presenter.View = this;
    }

    private void ExibirAlerta(string mensagem)
    {
        ClientScript.RegisterClientScriptBlock(this.GetType(),
            "ExibirAlerta", "alert('" + mensagem + "')", true);
    }

    protected void btnLogin_Click(object sender, EventArgs e)
    {
        if (!presenter.Login())
            ExibirAlerta("Login Inválido!");
    }

Salve todo projeto e execute a aplicação! Para testar se a implementação funcionou informe o usuário e senha inválidos e verifique se uma mensagem de alerta é exibida. Quando o usuário e senha corretos são informados aparentemente nada acontece… Será?!

No próximo Post veremos em mais detalhes a execução de um cada dos passos.

1 Comment

Model-View-Presenter (Parte I)

A grosso modo podemos dizer que o padrão Model-View-Presenter (MVP) procura dividir as responsabilidades entres as diferentes partes da aplicação, a fim de que estas possam trabalham de forma eficiente estando juntas ou não. Isto é bom porque aumenta a coesão e testabilidade das nossas aplicações!

Como estamos apenas na primeira parte, não aprofundaremos muito o conceito. Por enquanto basta sabermos que:

  • No Model estão contidas as informações e estados das entidades de negócio nossa aplicação. Exemplos: Pessoa, Conta bancária, …
  • Na extremidade oposta temos a View, elemento responsável pela entrada e saída de dados da aplicação. Uma view pode ser uma página ASP.NET, um Windows Form ou até mesmo uma simples classe que carrega dados de outra aplicação.
  • Entre estes dois elementos existe o Presenter, que relaciona e comunica estas duas partes a fim de que uma não dependa da outra. Graças ao presenter também é possível disponbilizar mais de uma View para o mesmo Model.

Metendo a mão na massa

Iniciaremos criando um novo ASP.NET Web Site com nome de “WebSiteMVP” e adicionando a pasta App_Code através do Solution Explorer.

É necessário que todas Views implementem uma interface comum responsável pela troca das informações com o presenter. Esta interface possibilita que o mesmo presenter se comunique com views de tipos diferenets: Web User Controls, Web Forms, Windows Forms, …

Dentro de App_Code criaremos uma interface ILogin conforme o código abaixo:

using System;

public interface ILogin
{
    String Usuario { get; set; }
    String Senha { get; set; }
}

Em Default.aspx adicionaremos um botão de Login e dois TextBox: um para usuário e outra para senha. Depois disto iremos para o code-behind, pois precisamos que nosta página implemente a interface ILogin, conforme código abaixo:

public partial class _Default : System.Web.UI.Page, ILogin
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    #region ILogin Members

    public string Usuario
    {
        get { return txtLogin.Text; }
        set { txtLogin.Text = value; }
    }

    public string Senha
    {
        get { return txtSenha.Text; }
        set { txtSenha.Text = value;
    }

    #endregion
}

Bem, nesta primeira parte apenas criamos o início do elemento View. Ainda precisamos fazê-lo conversar com o presenter, para que este retorne as informações do model… Mas com isto que construímos já é possível deduzir que quando o presenter setar o Usuario na página o valor será enviado diretamente para o TextBox!

public void OnViewLoad()
{
    this.View.Usuario = "Thiago";
}

Parece bom?
Então continue acompanhando.

Atualizado (15/08/2007): Troquei as imagens dos códigos por textos.

3 Comments

Codificando.Net e-magazine

Codificando.Net e-magazine - Edição nº 2 Continuando a série de indicações de revistas: já está disponível para download no formato PDF a edição nº 2 da revista digital Codificando.Net e-magazine.

Destaque para os artigos que demonstram as novidades do Windows Server 2008 e do Silverlight. Também para entrevista com Eduardo Miranda, na qual fala sobre a Microsoft, desenvolvimento Dynamics AX e blogosfera internacional e em português.

Ter meu blog aparecendo numa lista de blogs com informação relevante aumenta a responsabilidade, mas também aumenta a motivação. De fato, tem sido complicado manter a regularidade no blog, mas estamos na luta!

Leave a comment

Mundo.NET - Primeira Impressão

Revista Mundo.NET Edição 03

Hoje finalmente recebi o primeiro exemplar da minha assinatura da revista Mundo.NET. Logo no lançamento tentei adquirir uma revista para fazer uma avaliação, porém tive dificuldades de encontrá-la aqui no sul. Tive oportunidade de folhar a edição nº 1 por alguns minutos, mas não durante o tempo suficiente para fazer uma avaliação.

Deixando de lado os contra-tempos com a entrega - por duas vezes tive que solicitar renvio, pois a revista não chegava - e problemas ao tentar assinar a revista com cartão de crédito - consegui somente com boleto - posso dizer que tive uma boa primeira impressão.

Como em outros tempos eu já havia comprado umas edições da Mundo Java e Mundo PM, minha grande expectativa era de saber se o mesmo padrão de qualidade seria mantido. Ainda não cheguei a ler a revista em sua totalidade, mas gostei tanto dos tópicos, quanto escritores selecionados. Os artigos parecem ter um bom nível de detalhamento, não são apenas cópias de artigos do site da MSDN.

1 Comment

Escolhendo frameworks e ferramentas

Primeiramente gostaria de agradecer ao Eduardo Miranda pela resposta em Escolhendo frameworks e ferramentas, e também para recomendar seu blog como leitura obrigatória a todos desenvolvedores ou entusiastas dotnet.

O texto abaixo era parte do tutorial sobre Model View Presenter que eu estou escrevendo, mas achei que iria contextualizar melhor a discussão (será que um meme dotnet daria certo?):

Que atire a primeira pedra quem nunca se perguntou: “Qual será a melhor opção? Desenvolver um framework do zero ou utilizar um pronto?”. Como o contexto em que a pergunta foi feita é o que determina se a resposta está correta ou não, na empresa onde trabalho temos nos empenhado muito para descobrir isso…

Nossa inteção é de não reinventar a roda e fugir um pouco da nossa tendência natural de fazer tudo do zero, querendo ou não temos dez dedos e dois olhos. Começamos dando uma olhada no MonoRail, um pouco foi sugestão minha, talvez tenha sido em função da minha recente admiração pelo Ruby On Rails e sua filosofia. Como nossas expectativas não foram correspondidas, partimos para o próximo: o Spring.NET Application Framework. Ouvia falar bastante sobre os seus recursos de Dependency Injection, mas quando percebi que seria mais fácil contratar um profissional Java com experiência em Spring e treiná-lo para trabalhar com C# do que capacitar um desenvolvedor .NET para utilizar o framework larguei de mão…

Faltaria antes avaliar o Web Client Software Factory, mas a esta altua do campeonato eu já estava chateado e com saudade de programar com C#, fazia mais de 2 meses que não escrevia uma linha de código .NET… Decidi mudar de estratégia e descobrir as diferenças em MVC, MVC II e MVP. Este artigo me ajudou bastante e me inspirou em meus testes. (O próximo post será sobre o assunto)

Abaixo, alguns pontos (bem alto nível) que julgo importante:

  1. Produtividade: não está necessariamente relacionada com velocidade. Antes do dotnet trabalhei com Delphi, uma ferramente que induz o “DOM” Desenvolvimento Orientado a Mouse. Porém esta prática resulta em grandes problemas a médio prazo, profissionais com experiência nesta ferramenta sabem do que estou falando… Um framework deve induzir à utilização de boas práticas, mas não pode de forma alguma prejudicar o desempenho do profissional que o utiliza. Por melhor arquitetado que seja o framework, sempre necessitará de ferramentas que auxiliem na sua utilização. Somos desenvolvedores, não artesãos!
  2. Capacidade de Evolução: observando os dois últimos anos podemos perceber o quanto os mecanismo de persistência, apresentação e lógica de negócios mudaram. E não foram apenas as nomeclaturas, surgiram, continuam surgindo e sempre surgirão novas técnicas, fluxos, ferramentas e conceitos. Quando uma nova técnica surge e agrega valor a meu trabalho, gosto de utilizar isso a meu favor. Entretanto, um framework com alto nível de acoplamento dificilmente permitirá que seu mecanismo de persistência seja substituído, pelo menos não sem um grande retrabalho.
  3. Pé no chão: se a idéia é impedir uma invasão alienígena vamos precisar de canhões lasers, sintetizadores moleculares, uma central de comando, observadores 24 horas por dia e uma base lunar. Mas se minha cliente é uma nobre camponesa que sai pela manhã para colher amoras e pretende apenas manter o lobo mau distante porque oferecer tudo isso? Não seria melhor um spray de pimenta? Mais fácil, mais simples e barato! Assim também deve acontecer com os frameworks, jamais devem perder de vista a realidade que atendem..

Bom, era isto… Abraço! Comentei com sugestões e opiniões.

2 Comments

Alterações

Gostaria de contar com a paciência de todos que acompanham o blog, andei fazendo algumas alterações de hospedagem e organização do blog, o que pode trazer alguns probleminhas com feeds…

 Porém acredito que as mudanças estejam acontecendo para melhor. Para compensá-los estou preparando uma sequência de artigos (mais ou menos como as que fiz para o svn) falando sobre Model-View-Presenter (MVP).

 Abraço,
Thiago Bohn

Leave a comment