Django, os meus primeiros passos.

Há coisa de uns tempos, aí uns dois meses, decidi ocupar os meus tempos mortos com brincadeiras “parvas”, fazia bastante tempo mesmo que não programava e já começava a sentir a falta de ter de “pensar” como um programador.

Primeira dificuldade: O que fazer?

Se há coisa que eu detesto, é reinventar a roda. Mas chega a uma altura que não há muito mais por onde ir, a roda também começou por uma pedra e agora já vai em modelos todos XPTO de borracha, a isso dá-se o nome de inovar (ler definição antes de comentar). Então peguei numa ideia, estruturei-a no papel (sou daqueles programadores que perde horas de volta de um caderno antes de se agarrar ao pc) e pensei em implementá-la, em PHP.

Discuti essa ideia com algumas pessoas, nomeadamente o Filipe, o João Moreno e o João Rodrigues que curiosamente todos me disseram o mesmo: Vai para django!

Segunda dificuldade: Mudança de contexto.

Como em tudo, mudar é sempre algo complicado ainda para mais quando só conhecemos uma realidade, aliás, a grande maioria dos posts no meu blog dão uma perspectiva disso mesmo.

Ambos os João’s me disseram o mesmo vezes sem conta, lê o manual, segue os exemplos do manual. Mas aquilo é chato…, porque não tentar tirar as ideias base e seguir à minha maneira? Ir directamente para o meu projecto? Depois de o ter esquematizado todo no papel, agora é a parte simples…

Roguei-lhes pragas sem destino.

O django tem a particularidade de ser uma framework como todas as outras mas que corre sobre python, mas tem outra particularidade, só tem o que é realmente necessário deixando o resto para a quem de respeito. CSS e imagens é algo que o django não serve de origem, isso é trabalho para o apache, portanto foi uma grande dor de cabeça para conseguir ver o meu site todo bonitinho com o CSS direitinho e com as imagenzinhas todas a aparecerem…, muito o João Rodrigues me aturou à pala disto…

Mas houve algo que realmente gostei logo de inicio, a organização. Tremoços no prato dos tremoços, amendoins no prato dos amendoins, a cervejinha nunca saiu da minha mão. Não havia margem para dúvidas, eu sabia exactamente o que cada função fazia, onde deveria ser executada, que parâmetros cada página deve receber, os comportamentos de todas as pastas virtuais. Tudinho, preto no branco. Pelo menos houve algo que gostei logo de inicio…

Terceira dificuldade: Saber o que quero fazer.

Este é um ponto interessante, tendo em conta que já tinha tudo estruturado. Cheguei ao django e fui confrontado com uma nova definição, as apps dentro do projecto.

Como raio vou fazer isto? Meter tudo numa só app? O site de facto funciona…, mas depois não fica uma grande confusão? E se separasse? Assim até ajudava numa hipotética portatibilidade de código para outros sites, mas como raio faço isto sem me trocar todo com as apps? Como raio faço isto para ter algum sentido?

Com esta brincadeira…, fiz e refiz o meu site várias vezes, deparei-me com imensos problemas e erros típicos de iniciante (coitado do João Rodrigues, devo-te um grande obrigado por toda as dicas que me deste), depois de o refazer olhava para aquilo e voltava a não fazer grande sentido…, enfim… Perdi mais tempo a tentar fazer algo direitinho de raíz do que se tivesse feito tudo numa só app.

Quarta dificuldade: Focalizar no que quero fazer.

O django é algo de fenomenal! Ainda hoje disse isto ao Filipe e ele foi ler logs antigos meus (psicótico…) em que eu dizia alhos e bugalhos do django, pelo menos dá para notar uma progressão do detesto esta merda até ao o django é fenomenal, podem não acreditar mas há reacções intermédias :P

O painel de admin do django é algo de surreal, uma linha de código e tenho um painel de admin feito. O João Moreno disse-me que era com o painel de admin que eu iria ficar apaixonado pelo django, e ele sabia do que falava, de tal forma que perdi imenso tempo a brincar com aquilo e com detalhes inuteis só para explorar as potencialidades daquilo…, resumindo, empatei aí uma ou duas semanas (de realçar que apenas programava nos meus tempos livres) com brincadeiras parvas.

Quinta dificuldade: Assumir que dei um passo grande demais para as minhas pernas.

Meti aquele projecto de lado, uma das apps seria um fórum com várias funcionalidades…, isto para um projecto inicial numa linguagem que mal conheço e numa framework que nunca tinha ouvido falar…, é capaz de ser uma decisão um bocado para o parva.

Agora vou fazendo alguns projectos pequenos para brincar, onde abuso um bocado do painel de admin e me meto a brincar com aquilo (ainda estou bastante verde em django) e sempre aprendo qualquer coisa. Por exemplo, hoje fiz um pequeno site apenas durante a tarde, com um painel de admin para gerir aquilo. É brutal ver que com meia dúzia de linhas de código ficamos com um pequeno CMS feito.

A vantagem das frameworks e das linguagens de mais alto nível é mesmo isto, o programador abstrai-se de coisas mais baixo nível. O problema está quando o programador nem sabe o que vai lá por baixo, estas ferramentas deveriam servir para facilitar e não para “camuflar” tudo aquilo que está por trás. Tal como eu disse, fiz um site com meia dúzia de linhas de código, quando na verdade há mesmo muito por detrás que eu mal vejo, e só vejo porque eu sou um curioso. Mas há muitos programadores que acreditam piamente que fizeram um site com meia dúzia de linhas de código.

This entry was posted in Programação. Bookmark the permalink.

5 Responses to Django, os meus primeiros passos.

  1. Simao says:

    Humm, mas se não programas no estágio fazes o que? :P

  2. Gil Sousa says:

    Um Engenheiro Informático tem de ser assim tão limitado que só sabe programar?

  3. Também andei por aí a brincar com o Django num projecto que neste momento está em standby. O painel de admin é realmente algo de espectacular pela facilidade com que se faz algo tão completo e que a ser feito à pata demoraria uma eternidade (para além de ser um pincel para manter).

  4. Se estás nessa onda, espreita o Pinax – http://pinaxproject.com/ ;)

  5. Simao says:

    @Gil Claro que não, mas pensava que era isso que se fazia no inicio pelo menos… :)