Mar 17

Always chasing the next (software) utopia

 

The techniques, methodologies and tools at the disposal of those who build software are always improving. New tools are made available, new approaches are presented as the next best thing and often promoted as such. There is nothing wrong with new techniques, methodologies or tools, quite the contrary. We all benefit from such developments, if and when we can properly determine when to use them, considering their advantages and disadvantages.

Most software systems need to use some kind of data store. Traditionally, this data store was a relational database, but the picture has changed a bit in recent years, with the rise of NoSQL databases. NoSQL databases gained rapid acceptance, especially in high scalability scenarios, but they also seem a very interesting option when addressing another common problem faced by software developers – the object relational impedance mismatch.

Accessing the data store, especially a relational data store, as always been a source of problems for developers. Before NoSQL was another option, Object Relational Mappers, such as NHibernate or Entity Framework were offered as possible solutions to the impedance mismatch problem, while offering other advantages. ORMs are still used and their use will sure see a rise, and some ORMs now support NoSQL databases, as well. The overall goal of softening the burden of software developers, when accessing data stores, remains as a valid one, of course.

Sometime ago ORMs started offering Code First Design. While before the ORM would deal with an existing database, Code First Design offered the possibility of leaving the details of choosing and implementing the database structure to the ORM. In theory, this was just another step to set developers free from the tyranny of the storage layer. The problem is that when using relational databases, the mapping is basically a generic one, not taking into account the specificity of the relational database management system, not only in terms of the required indexes to enable the best possible performance, but also in terms of poor choices for the data types chosen to implement some table fields – it’s common to find situations where basically all string properties are implemented as nvarchar(max) fields, in a SQL Server database, which will mean accessing these fields will be slightly more costly to access than length limited nvarchar or varchar fields. The fact is that each relational database has specific characteristics that make generic design by a tool less adequate than a design that takes into account those specific characteristics. This starts with the database design (in Code First strategies) and continues with the usual issues associated with ORM tools, while exploring the database – that is, with the non optimal code generated when querying the database.

Of course, we can always argue that ORMs and Code First Design, as any other tool or strategy, needs to be applied in circumstances where their disadvantages are less noticeable and where their advantages recommend them. This is undoubtedly true. However, if we look at beginners books on topics such as .Net MVC, or tutorial material offered by Microsoft on its web development technologies, examples are almost always given using Code First approaches. I think this conveys quite a wrong idea to programmers starting their own path on such technologies and sometimes the consequences can be serious. I have seen it more than once, in real, production systems and those consequences are not always easy to overcome, at least without some effort.

If there were no performance penalties from Code First Design, or you could establish some degree of control over the generated code, I confess I would be inclined to take advantage of maintaining the data store totally transparent to the code. The reality is totally different though. I understand all technologies need to start, evolve and mature, but I would also like to see less promotion of not as mature technologies, at least without a clear indication of its caveats. ORMs will improve and Code First implementations will, too. At this time, however, the scope of apps where either is more limited then we would be lead to think, in my opinion.

Most systems have to be designed, implemented and deployed in scenarios where we have certain performance requirements and limited computational and financial resources. This is quite common in web applications, where I would think most apps are not cloud scale and need not be. The systems we develop need to be able to work within those limitations and that can be a bit incompatible with our utopias. Naturally, we always need to have utopias we can chase and they can be a driving force for evolution, but it should never be forgotten that we apply technologies in real systems and the negative consequences  of our own utopias should, preferably, be avoided.

 

Note: The image used in this post was obtained from here.

 

Mar 02

A melhor jogada de Vieira?

As notícias sobre a BenficaTV passar a canal pago, ao mesmo tempo que foram adquiridos os direitos da Premier League para as próximas 3 épocas, constituiram uma surpresa que pode ter efeitos de grande alcance. Diria mesmo que, em termos estratégicos, esta decisão pode ser a decisão de maior relevo tomada desde que LFV assumiu a presidência do Benfica.

Por um lado, tal decisão liberta o Benfica da pata da Olivedesportos, diminuindo simultaneamente a capacidade de influência da empresa que tem sido o verdadeiro centro do poder no futebol nacional. Por outro lado, abre, efectivamente, o potencial para o Benfica cavar ainda mais o fosso em relação à concorrência, no que à capacidade de geração de receitas diz respeito, colocando maior pressão sobre adversários, em particular sobre um cujas dificuldades económicas têm sido mais do que evidentes nos últimos tempos, mesmo com as vendas milionárias tão destacadas pelos amigos estrategicamente distribuídos pela imprensa.

A decisão de passar os direitos dos jogos para a BenficaTV não está isenta de riscos. É claro que esta decisão colocará nos Benfiquistas uma parte importante do esforço para a tornar um sucesso. A situação económica do país, que afecta todos os portugueses, mas em particular os de menores recursos, entre os quais se encontrarão um grande número de Benfiquistas, é uma variável que pode after o número de adesões ao canal pago e, com isso, a expectativa de receita que a decisão pode trazer.

Não se deve, de igual modo, pensar que o sistema, ameaçado de forma muito séria por esta medida, vá ficar parado, à espera que aconteça, sem procurar diminuir o impacto que ela pode ter. Seguramente, uma das ameaças que se afigura como mais provável, reside na decisão publicamente assumida pela Liga de Clubes, de centralizar os direitos desportivos. Ironicamente, a Olivedesportos pode ser o maior obstáculo à concretização desta decisão, pelo facto de existirem contratos em vigor com mútiplos clubes, e com os prazos mais variados. No entanto, a decisão do Benfica pode, até, enfraquecer um dos argumentos usados pela Liga para a centralização – o domínio do operador único, que terminará quando se iniciar a transmissão dos jogos do Benfica na Benfica TV. Claro que até que esta situação se concretize, podemos esperar pressão em termos desportivos, mas isso não será nada a que não estejamos habituados.

Já referi que um dos riscos da medida é o facto de serem os Benfiquistas a suportar grande parte do aumento de receita que o Benfica pode ter com esta decisão. A verdade é que esse risco também encerra um grande potencial, porque se alguma coisa distingue o Benfica dos outros, foi sempre o contributo dos Benfiquistas para a construção do clube, bem ilustrado pelo esforço colectivo na construção do primeiro Estádio da Luz. Como dizia o Hugo, no Religião Nacional:

“um clube como os outros, que nasce no meio dos outros, não se torna tão maior do que os outros apenas por fazer o que os outros fazem, ou por pensar como os outros pensam”.

Esta medida da direcção de Luis Filipe Vieira, em quem não votei, é uma medida que tem toda a possibilidade de ser uma daquelas que muda o jogo, porque é radicalmente diferente do que os outros fazem, porque quebra o poder financeiro dos guardiões do sistema e porque dá aos Benfiquistas a possibilidade de, por via do seu próprio esforço, impulsionarem o clube que amam para um patamar onde poderá ser a força dominadora por que anseiam, em linha com a cultura de esforço e trabalho que tornou o Benfica num clube maior do que qualquer outro em Portugal, e num nome respeitado pelo mundo fora.