Convenção mais que configuração — “Uma boa interface para desenvolvedores”

Lucas Pereira
orangejuicetech
Published in
3 min readJun 1, 2022

Convenção mais que Configuração

(Convention Over Configuration, CoC) é uma das chaves para o sucesso do Ruby on Rails e foi utilizada por David Heinemeier Hansson como a filosofia do framework¹. Podemos considerar a CoC como um padrão de arquitetura que se preocupa em estruturar as aplicações para que evoluam rapidamente e sejam facilmente extensíveis, poupando esforços dos desenvolvedores com configurações muito complexas.

Em seu livro, Design Patterns in Ruby², Russ Olsen apresenta a CoC como “uma boa interface para desenvolvedores”, acrescentando a essa excelente descrição questionamentos sobre por que não fornecemos a melhor interface a todos os usuários: consumidores e desenvolvedores.

“Why save all of the good techniques for the end user? The engineers who are trying to configure your application or program to your API are users, too, and they could use a hand as well. Why notprovide a good interface for all your users?” (Olsen, Russ)

Em uma tradução livre:

“Por qual razão guardar todas as boas técnicas apenas para o usuário final? Os desenvolvedores que estão tentando configurar sua aplicação, programa ou API também são usuários e também se beneficiariam de uma ajuda. Por que não fornecer uma boa interface para todos os seus usuários? (Osen, Russ)

Estendendo o conceito de usuário não só ao usuário final, mas também aos desenvolvedores e consumidores das APIs da aplicação, Olsen se baseia em 3 diretrizes do desenvolvimento de boas interfaces gráficas para explicar a CoC: Antecipe as necessidades do usuário, não faça o usuário se repetir e forneça um modelo inicial. Leia-as como: antecipe as necessidades dos desenvolvedores, não faça o desenvolvedor se repetir e forneça um modelo inicial ao desenvolvedor.

  • Antecipe as necessidades do usuário: Uma boa interface deve deixar as ferramentas mais utilizadas em uma área de destaque — uma boa interface traz o caso mais comum por padrão. Qualquer que seja o editor de texto que você utiliza, as opções para alterar a tipografia como tamanho, cor e fonte estarão em destaque. A CoC preza por levar essa necessidade ao desenvolvimento, facilitando que aplicações mais comuns sejam rapidamente configuradas. Tarefas incomuns ou mais avançadas ainda devem ser realizadas, apenas com um pouco mais de esforço (um submenu, arquivo de configuração, ou variáveis de ambiente).
  • Não faça o usuário se repetir: Quem não detesta responder pela terceira vez a famigerada pergunta “Tem certeza que deseja fazer isso?” Perguntas ou configurações desnecessárias demandarão esforços dos desenvolvedores e podem atrapalhar quando a aplicação começar a evoluir. Perguntar o mínimo possível para configurar sua aplicação é uma estratégia da CoC.
  • Forneça um modelo inicial: Ajude seu usuário com modelos de acordo com a aplicação. Se você desejar criar o seu currículo, seu editor de texto apresentará modelos e exemplos para você iniciar. Frameworks para desenvolvimento web geralmente iniciam uma pequena aplicação rodando em localhost:3000.

Software em funcionamento mais do que documentação abrangente

Além de estabelecer padrões para que a aplicação seja executada com o mínimo de esforço possível, a CoC se preocupa em reunir aplicativos inteiros estruturando os sistemas para que sejam extensíveis, e que outros desenvolvedores possam acrescentar contribuições mais facilmente, indo de encontro aos princípios do manifesto ágil. Aplicar a CoC diminui a curva de aprendizado de um framework e permite que usuários menos avançados testem a aplicação ou desenvolvam sistemas menos complexos. Como as configurações adicionais ainda existem (“…Tarefas incomuns ou mais avançadas ainda devem ser realizadas, apenas com um pouco mais de esforço…”), as aplicações que utilizam a CoC também podem integrar sistemas complexos.

Considerações finais

A CoC é a filosofia do framework Ruby on rails e seu uso demanda conhecimento e estudo, uma vez que não determina regras e sim diretrizes a serem seguidas: antecipe as necessidades do usuário, não faça o usuário se repetir e forneça um modelo inicial. O objetivo da CoC é que desenvolvedores forneçam softwares com agilidade, que sejam extensíveis, possuam configuração mínima e que evoluam bem estruturados. Além dos ganhos de produtividade para desenvolvedores experientes, a CoC também diminuem as barreiras de entrada para iniciantes. É possível criar ótimos aplicativos sem saber por que tudo é do jeito que é¹.

— -

¹https://rubyonrails.org/doctrine#convention-over-configuration

²Design Patterns in Ruby — Russ Olsen — 2007

—-

Caso tenha tempo e dúvidas, o Fabio Akita fez uma ótima analogia sobre design patterns em uma conversa sobre arquiteturas de soluções com o Paulo Silveira para o #HipsterPontoTube: Arquitetura de sistemas com Fabio Akita | #HipstersPontoTube — YouTube

— -

Você utiliza a CoC e tem contribuições com esse artigo? Não deixe de entrar em contato comigo para que possamos melhora-lo.

Lucas Pereira | LinkedIn

--

--