The pursuit of (happy|plain)ness

Você pode ler este post em português também.

Hello!

Write and maintain a code should be a pleasure task. Forget about complicated code, difficult things to be understood by human being.

If your program requires concepts that go beyond the classic algorithms, use comments to alert the (or that) future maintainer(s) about what he (they) need to know to maintain the code. Helps a lot to think that next maintainer would be someone else. Consider the simple story of that old KISS (Keep It Simple, Stupid).

Think about the English language. It has a dictionary and rules for syntax and semantics in your writing. There are thousands of resources to write different kinds of text: narratives, poetry and many others. And each type has its rules. In this analogy, each language (PHP, Python, etcetera) Is the English language. Algorithms and design patterns (this last is under the spotlights nowadays) are the types of text available. Each type of text (algorithms and design patterns) have their application, and we need to know and apply them – at the right time. They’re also the issue of preference: I avoid poetry as well I avoid certain algorithms and patterns.

Tell yourself what is a good text. For me, a good text is direct and well focused on its subject, more joinable facts than abstract ideas. Use simple words, the simplest that can express the required sense.

Today, any source code is written almost in the same way that we talk to someone. Manipulate data now has been freed us from those endless loops on tables that needed to be manually locked and indexed. Applications are now object oriented, need to be made for the web, for your phone, for the Xbox, smartphones, 52″ screens and so on.

The human-computer interaction is now an indispensable discipline, fractal-like by the software engineering. By the way, everything related to software development is fractal-like nowadays: We can complicate it to absurd levels, even when unnecessary. It’s common to hear about “abstraction data layers” in applications that never changed your DBMS in last 10 years (and whose supplier will be there for another 10 years).

The subject of this post is a request: I ask to all people involved in a software project to keep things simple, readable and explicit. Tim Peters (a Python guru) has said that. Take a time to read books about algorithms and design patterns. Unlock your creativity. When you develop for the web, think about accessibility, and about it yet, cross your browser boundaries: In fact, the future of your application is unpredictable, and you never know when it will be used inside a big screen or in a cellphone. Use javascript very carefully (always in a suspicious way, and if you can, avoid it).

Cheers!

Em busca da (feli|simpli)cidade

You can see this post in english too.

Olá!

Escrever e manter um programa deve ser uma tarefa prazerosa. Nada de código complicado, difícil de ser entendido por terráqueos.

Se o entendimento de seu programa necessita de conceitos que vão além dos algoritmos clássicos, use os recursos de comentários de sua linguagem para alertar ao(s) futuro(s) mantenedor(es) sobre o que ele precisa saber para manter o código. Ajuda muito pensar que o próximo mantenedor pode ser outra pessoa. Pense no simples, naquela velha história do KISS (Keep It Simple, Stupid).

Pense na língua portuguesa. Ela possui um dicionário, regras para semântica e sintaxe de sua escrita. Há milhares de recursos para escrever diferentes tipos de texto: narrativas, poesias, dissertações e muitos outros tipos. E cada tipo possui suas regras. Nesta analogia, sua linguagem (PHP, Python, etc.) é a lingua portuguesa. Algoritmos e padrões de projeto (em moda hoje em dia) são seus tipos de texto disponíveis. Cada tipo de texto (algoritmos e padrões de projeto) têm sua aplicação, vai de as conhecermos e além disso, saber aplicá-las no momento certo. Há também a questão da preferência: Evito poesias assim como evito certos algoritmos e padrões.

Responda a si o que é um bom texto. Para mim, um bom texto é direto, bem focado em seu tema, mais ligado a fatos constatáveis do que idéias abstratas. Utiliza palavras simples, as mais simples que consigam expressar o sentido requerido.

Hoje em dia, qualquer código-fonte é escrito quase que da mesma forma com que falamos com alguém. Manipular dados agora desobrigou-nos daqueles loops intermináveis em tabelas que precisavam ser manualmente “lockadas” e “indexadas”. Aplicações agora são orientadas a objeto, precisam estar disponibilizadas na web, no celular, no XBox do filho do patrão, nos smartphones, em telões de 52″.

A interação humano-computador agora é uma disciplina fundamental, fractalizada pela engenharia de software. Aliás, tudo relacionado ao desenvolvimento de um software é fractalizado hoje em dia: podemos complicá-lo a níveis absurdos, desnecessário até. É comum ouvir em “camadas de abstração de dados” em aplicações que nunca trocaram de SGBD em mais de 10 anos (e cujo fornecedor ainda tem contrato por outros 10).

Este é o objetivo deste post: Um pedido a todos os envolvidos num projeto de software para que mantenham as coisas simples, legíveis e explícitas. Tim Peters (guru do Python) já disse isso. Disponha um tempo de sua vida lendo livros de algoritmos e design patterns. Desbloqueie sua criatividade. Toda vez que desenvolver web, pense na acessibilidade de sua aplicação, e ao fazê-lo, atravesse as fonteiras de seu navegador: afinal, o futuro de sua aplicação é imprevisível, e desconhece quando ela será utilizada na tela de um celular ou num telão de 52″. Utilize javascript com muito cuidado (desconfie sempre dele, e se puder, evite-o).

Até!