quarta-feira, 27 de junho de 2012

Exceptions as gotos

try
{
    Client client = getClientByName(name);
    throw new ExistsClientNameException(name);
}
catch (DoesNotExistClientNameException e)
{
    addClient(new Client(name));
}

sábado, 26 de maio de 2012

Interesting times

Yesterday evening, while chatting with a colleague over dinner, he mentioned this sentence by someone, whose name I cannot recall now: may you live in interesting times

Definitely, we live in interesting times. We cannot have a logical, and meaningful, grasp of the future. Of course, we can look at the past and try to foresee the future, but, though the future will for sure repeat something that already happened in the past, we have no idea about what it will be. These times are interesting and risky. 

During the DESRIST conference, there were discussions about innovation and design, and it occurred to me that there is some kind of paradox between design and innovation. For instance, when we design the software architecture for a system, first, we try to build a common understanding among all stakeholders on what is the problem and what are the requirements for the solution. Then, the architect designs an "elegant" solution that fulfills the stakeholders needs and, hopefully, he expects to come out with something that contains some innovation. However, if the result is innovative most of the stakeholders would have disagreed beforehand with it. When there is innovation, consensus is a result of innovation and not its source.

Life is not by design and we live in interesting times.

sábado, 19 de maio de 2012

Science and Enginering

This week I presented an article at the DESRIST Conference in Las Vegas on the integration of IT and organizational design. This conference is the forum for Design Science research, which focus on the IT artefact and its process of construction. This community has its conceptual roots on Herbert Simon's work on the Sciences of the Artificial (1969).

I'm writing this post because I was struck by two different issues, a recurring discussion and an elegant formulation.

First the recurring discussion. During the two conference panels, it was referred the resistance of the academia to accept research on design. Fifteen years ago I remember being involved in similar debates in the context of the design patterns community. The design patterns community had a huge impact on software engineering. Today software developers use design pattern jargon to communicate their designs, the design patterns knowledge is part of the experts language. However, the design patterns community impact on academia is small and its publication outlets, the PLOPs conferences, are not the best forums to publish if you aim to get a PhD degree. Why this happen? An interesting article by Davenport and Markus (Rigor vs. Relevance Revisited: Response to Banbasat and Zmud, 1999) make it clear. Academia pursuit rigor (science) but has some difficult in accepting relevance (engineering) because of its "lack of rigor". Designing and building a system is a clumsy task which is difficult to assess. However, Davenport and Markus argue that the academia must find the means to reward the research on best practices. How? Well, the recurring discussions show that this is not an easy task.

On the elegant formulation, I was positively surprised by Alan R. Hevner formulation of design science research which integrates relevance and rigor in three feedback cycles (A Three Cycle View of Design Science Research, 2007).


Design Science Research Cycles (Hevner, 2007)

From a software engineering perspective, Hevner formulation covers from empirical software engineering, in the relevance cycle, to fundamentals of programming languages, in the rigor cycle. Besides, it gives design science a central role on bridging the gap between rigor an relevance.

I would not say that this perspective is the ultimate solution for the recurring discussions, but it provides  the lens through which we can view software engineering research, and design research in general.

domingo, 19 de fevereiro de 2012

A história universal dos impostos

A história da humanidade poderia ser escrita em função da história dos impostos. Impostos em sentido lato, ou seja, a forma como cada indivíduo, quer seja de livre vontade, quer seja coagido, contribui com parte dos seus recursos materiais para o bem comum. Desde o tempo da escravatura e do Robin dos Bosques até aos dias hoje o processo das contribuições individuais e da sua redistribuição pela comunidade tem procurado ser cada vez mais transparente e equitativo.

A atual crise democrática está ligada a um desfasamento, pelo menos ao nível da perceção de cada indivíduo, entre o que contribui para a comunidade e o que recebe em troca. E o que recebe em troca não necessita de ser de forma direta, pode ser através de estabilidade e diversidade social que podem ser a fonte da geração de mais riqueza. O nível de educação de uma comunidade ou o cultivar da diversidade de opiniões dentro da comunidade são disso exemplos.

Em torno deste desfasamento geram-se duas interpretações ligadas quer à direita quer à esquerda. Segundo a direita existe um esbanjamento dos recursos que são redistribuídos, quer porque a máquina de redistribuição é ineficiente, quer porque os beneficiários da redistribuição não a merecem e acomodam-se. Já a esquerda é muito cautelosa em colocar em causa a máquina de redistribuição e enfatiza a importância social da redistribuição, mas encontra-se atualmente na mó de baixo do senso comum sobre este problema.

Contudo, o processo de redistribuição é mais complexo e a ineficiência não está apenas ligada ao funcionamento da máquina mas também à decisão. Ou seja, a decisão de como e onde se gastam os recursos partilhados está longe das pessoas. E esses valores não são desprezáveis. São valores muito significativos que fazem mover uma parte significativa da economia. Por exemplo, a guerra no Iraque foi paga com o dinheiro dos impostos dos Norte-Americanos e houve muitas empresas privadas envolvidas, quer diretamente na utilização desse dinheiro, quer indiretamente nos negócios gerados em consequência da guerra. Este aspeto da ineficiência da distribuição não é muito referido pela direita e provavelmente origina um maior esbanjamento do que o da ineficiência da máquina do estado. Mas, como disse, não é esse hoje em dia o senso comum.

Considera-se que a invenção da imprensa marca o fim da idade média e o início do período moderno. O seu impacto foi enorme. O acesso e a divulgação do conhecimento ficou mais fácil, aumentou a diversidade, deixou de ser necessário pertencer a uma classe social, o Clero, para ter acesso ao conhecimento, e teve até influência no sucesso da cisão religiosa de Lutero e Calvino pela facilidade e relativo baixo custo com que as traduções da bíblia puderam ser divulgadas. Não obstante o seu impacto, a invenção de Gutemberg resultou da adequada combinação de um conjunto de técnicas conhecidas na altura. Um exemplo da construção de um produto de engenharia.

Também para os impostos é necessário um produto de engenharia. Este produto caracteriza-se por separar a decisão sobre quais são os objetivos da comunidade da forma como eles são concretizados. Os primeiros são definidos conjuntamente pela comunidade quando elege os seus governantes, já os segundos devem ser concretizados por cada indivíduo de acordo com o contributo que a comunidade decidiu lhe atribuir. Os governos definem os objetivos sociais e as pessoas gerem a aplicação da sua contribuição. Os governos são avaliados pelos objetivos sociais que definem, as pessoas são avaliadas pelo sucesso com que gerem a sua contribuição.

Sobre este mecanismo esbocei algumas ideias num post sobre a Gestão dos Impostos, mas agora interessa perceber da viabilidade desta solução. Sim, porque facilmente se alegará que é impossível. Esse argumento terá provavelmente duas facetas, uma técnica e outra social.

A impossibilidade técnica versará sobre a complexidade do problema. Sobre ser impossível medir o sucesso de como as pessoas gerem a sua contribuição. Sobre não ser possível tratar toda a informação ou categorizá-la. Creio que tal como a invenção da imprensa, também aqui as técnicas já existem hoje em dia, é apenas necessária combiná-las de forma adequada.

Já a impossibilidade social é mais subtil, pois está ligada ao poder. Mas o principal argumento terá a ver com as pessoas poderem não ser capazes de tomar as decisões certas. Também aí, o exemplo da imprensa de Gutenberg pode ajudar, pois muito provavelmente um dos argumentos contra a tradução da bíblia seria a sua má interpretação pelos leigos. Mas a história encarregou-se de mostrar precisamente o contrário.