Desenvolvimento ágil, como não fazer.

22 maio 2013

Este é um artigo de opinião, baseado no que já vi pelo mundo afora. O assunto pode ter ou não a sua aprovação, pois vivemos no mesmo mundo, mas cada um o enxerga do seu próprio  jeito. Gostaria apenas de fazer o caro leitor PENSAR.

1369262984_i_have_no_ideaIndiferença

Um princípio que considero legal é: para descobrir como algo funciona precisamos descobrir primeiro como NÃO funciona. As técnicas ágeis de desenvolvimento muitas vezes não funcionam por causa de uma lei : a lei do menor esforço.

O principal obstáculo para o crescimento dos indivíduos e da qualidade de uma equipe é a indiferença.
Esta doença é visível quando as decisões são baseadas na conveniência ou na comodidade de uma solução.
Equipes e líderes acomodados fazem o que for necessário para se poupar, evitando desafios ou desistindo no meio do caminho.

A refatoração, os testes e controle de versão são ferramentas essenciais para um bom trabalho, tanto individual como em equipe. No entanto, estas atividades exigem esforço e disciplina que precisam ser cultivados e estimulados.

A equipe que se queixa das ferramentas de trabalho indica uma falta de vontade de aprender ou se aprimorar. Um bom trabalhador é aquele que sabe usar bem suas ferramentas. O mesmo pode ser dito do programador. A falta de vontade é o principal obstáculo para o aprimoramento do programador e da equipe.

Liderar para mudar

As empresas, a diretoria ou a gerência podem incentivar, mas não são elas que tem a responsabilidade principal.A equipe e seu líder é que devem buscar metas de qualidade em seu trabalho.

O líder é quem estabelece o modelo para o comportamento de sua equipe. Um líder que não valoriza o esforço e a disciplina prejudica sua equipe tomando decisões que favorecem a comodidade.

A visão deste tipo de liderança é que tudo é muito complicado, que não vale a pena se esforçar em conhecer uma nova ferramenta ou metodologia. A manutenção é sempre vista como um pesadelo, não como uma atividade necessária para manter a qualidade do produto.

As desculpas existem: tempo, prazo, pressão do comercial ou das contas se acumulando. O fato é que quem se justifica não muda. Mudar exige esforço e adaptação, e o partidário do menor esforço não muda nem as desculpas.

Assine sua obra

Outro sintoma da falta de esforço é a ausência da assinatura no código. Os artistas fazem questão de assinar um trabalho bem feito, que levou muito tempo e esforço.Programadores devem fazer o mesmo.

Importe-se em escrever um bom código.
Um código bem escrito e reaproveitável deve ser motivo de satisfação e mesmo orgulho.

Quem não fica contente quando descobre uma maneira de reduzir e simplificar um código, usando novas ou velhas técnicas? Quem não fica muito feliz quando reaproveita um código que escreveu a mais de cinco anos atrás. O defensor da lei do menor esforço não valoriza tais coisas.

Faça valer

O resultado é muitas vezes um trabalho medíocre. Não que o resultado não funcione ou que não atenda as necessidades imediatas. O resultado é medíocre por que poderia ter sido feito melhor, poderia ter uma eficácia e uma qualidade melhor. É como se Picasso entregasse pinturas rasuradas, borradas e sem assinatura.

Fuja da lei do menor esforço, cresça pessoalmente como programador ou líder.
Não faça código para buscar água do rio num balde se puder construir uma represa.
Pense grande.

Tenha orgulho do seu trabalho.
A equipe, a empresa e os clientes agradecem.


Comparando horários

26 janeiro 2011

Está na hora?

Revisando uma rotina de verificação de horários, acabei descobrindo a função CompareTime declarada em DateUtils. A função traz a vantagem de fazer a comparação apenas da parte do horário, desconsiderando a data.

Outra vantagem é deixar o código mais legível. O benefício provém da dispensa dos operadores ‘>’ , ‘<’, ‘>=’ e ‘<=’ que podem causar certa confusão em uma rotina mais complexa. O efeito de uma distração e um sinal trocado por engano podem causar um estrago difícil de diagnosticar.

O exemplo simples abaixo usa as constantes GreaterThanValue e LessThanValue que estão declaradas na unit Types.


// Verificar se uma data está dentro de um intervalo de horário&nbsp; passado.
function VerificarIntervalo(dtInicio, dtFim: TDateTime): Boolean;
 begin
 Result := (CompareTime(time, dtInicio) = GreaterThanValue) &nbsp;and
 (CompareTime(time, dtFim) = LessThanValue);
 end;

// O mesmo código com operadores, só que aqui a parte de data é considerada, o que pode levar a erros lógicos.

function VerificarIntervalo(dtInicio, dtFim: TDateTime): Boolean;
 begin
 Result :=&nbsp; if( time >&nbsp; dtInicio) &nbsp;and&nbsp;&nbsp; (time < dtFim);
 end;

É isso, bom código!


Programar não é só codificar.

17 novembro 2009

Programar envolve uma dose de paciência, uma dose de inspiração e muita organização. Por isso eu sempre procuro novidades e dicas que possam incrementar minha produtividade. O blog Efetividade.net é um grande achado neste sentido.
Especialmente atraentes são as dicas sobre Home Office e organização pessoal.

Visite o blog Efetividade e veja você mesmo como aumentar sua produtividade com os artigos! Mas não basta ler, tem que aplicar! Até a próxima.


Versionando

5 junho 2009

application-x-applix-spreadsheetUma tarefa importante da rotina de todo programador envolve o controle de versões dos seus aplicativos. Afinal, potência não é nada sem controle. E controle é tudo, principalmente se for preciso programar no modo defensivo ou com uma equipe grande.

Há várias ferramentas pra controle de versões dos projetos, mas estas serão assunto de um outro artigo. Por ora veremos o significado que podem ter aqueles números misturados com pontos.

Dígitos:

1 . 0 . 0 . 1
V . S . B . C


V = Versão Base
S = Sub versão
B = Bugs Corrigidos
C = Compilação

Versão Base
Alterada somente em mudanças radicais do aplicativo envolvendo novos paradigmas ou compatibilidade.
Ex : mudança de protocolo de comunicação, mudança de regras essenciais.

Sub versão
Modificações nas funções internas, novas funcionalidades ou uma nova biblioteca.

Bugs Corrigidos
Registra correção de erros de programação. Desejável que os bugs corrigidos sejam documentados a cada versão.

Compilação
Utilizada para controle interno do programador.
Incrementada geralmente a cada compilação completa do aplicativo e seus módulos.

Convencões Opcionais

Com o uso foram assumidas outras convenções para a numeração das versões:

0.0.1 a 0.0.9 – Versão Alpha – Apenas para uso interno
0.1.0 a 0.9.0 – Versão Beta – Versão de testes – não comercial.
1.0.0 em diante – Versão Final – Versão para distribuição.

Há ainda o controle de versões de testes ou instáveis e versões estáveis:

1.0, 1.2, 1.4 – Numeração com dígitos de subversão pares indicam versões estáveis.
1.1, 1.3, 1.5 – Numeração com dígitos de subversão ímpares indicam versões instáveis ou de testes.

Exemplos

0.0.5 – Versão Alpha
0.1.3 – Versão Beta instável
0.4.1 – Versão Beta estável
1.0.0 – Versão Final estável.
1.3.1 – Versão Final instável ou em testes.
1.4.0 – Versão Final estável
1.4.2 – Versão Final estável atualizada com correção de bugs
1.5.0 – Versão Final estável com novas funções em relação á 1.4
2.0.0 – Nova versão de produto, incompatível com versões anteriores.
2.0.1 – Nova versão de produto com bugs corrigidos.

Pra constar : estas são apenas sugestões de uso. Fique á vontade para adaptar á política local de sua empresa ou ao seu uso pessoal.

Bom proveito!


Syntax Highligth no WordPress

3 junho 2009

Navegando

page_previewEu andei pesquisando aqui no WordPress blogs sobre Delphi, e descobri muitos posts legais.
Mas navegando entre textos mais interessantes e aqueles mais apagados, percebi que muitos não usam o recurso de “syntax highlight” disponível no WordPress.

Ao passo que alguns usam o texto simples, outros usam até imagens, ás vezes pesadas, contendo o código. Alem de dificultar a navegação, ainda tira a possibilidade de copiar e colar o código.

Com o destaque da sintaxe nos exemplos de código, a leitura fica mais fácil e ajuda bastante na compreensão, além de dar uma aparência mais profissional. Veja a diferença:

Código Normal
procedure TForm1.Edit1Change(Sender: TObject);
var
OldStart : Integer;
begin
With Edit1 do
if Text ” then
begin
OnChange := NIL;
OldStart := SelStart;
Text := UpperCase(Copy(Text,1,1))+
LowerCase(Copy(Text,2,Length(Text)));
SelStart := OldStart;
OnChange := Edit1Change;
end;
end;

Código com texto formatado.

  
procedure TForm1.Edit1Change(Sender: TObject);
var
      OldStart : Integer;
begin
With Edit1 do
    if Text <> '' then
    begin
        OnChange := NIL;
        OldStart := SelStart;
        Text := UpperCase(Copy(Text,1,1)) + 
                   LowerCase(Copy(Text,2,Length(Text)));
         SelStart := OldStart;
         OnChange := Edit1Change;
     end;
end;

Pensando nisso, resolvi ilustrar nesta rapidinha como usar o destaque de sintaxe pra dar um charme a mais no seu blog. Quer saber como faz? Veja o exemplo a seguir.

Leia o resto deste post »


O básico sempre é básico.

31 março 2009

Lembra como faz pra criar um novo arquivo texto no Delphi? Esqueceu a função? Pois é, eu sempre esqueço algumas coisas elementares também. O site Delphi Basics é minha ajuda nestas horas. Tudo o que é essencial na linguagem é explicado de forma simples e didática.

Até algumas funções óbvias ou mais simples  são explicadas nele.  O fato é que muitas vezes nos perguntam o porquê de um comando óbvio e não sabemos explicar.   Aproveite então esta sopa do básico,  pra crescer forte na linguagem. Até a próxima!


Php no Netbeans

7 agosto 2008

Eu ainda não entendi porque não escrevi sobre isto antes! Eu estava procurando uma IDE pro PHP. Acho que por ter trabalhado muitos anos com o Delphi, senti falta de um ambiente pra debug e desenvolvimento legal. Acabei encontrando  o módulo PHP do NetBeans.

Eu achei fantástico poder usar o mesmo editor para Java e PHP. Melhor ainda foi quando consegui configurar o XDebug e comecei a depurar o código passo a passo. Segundo este wiki, esta é a primeira versão e há um plano de desenvolvimento para acrescentar mais funcionalidades.

Creio que ainda há algumas coisas a melhorar e acrescentar.  Mesmo assim  já é um grande avanço pra quem editava o código no Notepad++.  O recurso de assistente de código é de grande ajuda, capturando inclusive informações das classes em PHP e Javascript adicionadas ao projeto.

Agora é só entrar no site, baixar e experimentar!

Bom proveito!

Download

Wiki


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.