# ★ Pourquoi Python et Django

Retour sur l'événement Scrumpy auquel j'ai participé le mois dernier. J'ai déjà eu l'occasion de m'exprimer ici sur Pourquoi Python et Pourquoi Django mais le contexte était assez différent sur cet intervention car je devais commencer à convaincre des bienfaits de Python. Or convaincre sur un langage ou un framework est relativement stupide.

On utilise un outil pour son usage, on peut faire des trucs super chiants aussi avec Python ou Django. Partant de là, comment parler des usages possibles, facilités par ces outils ? Ou reformulé un peu différemment, qu'est-ce qui me motive pour utiliser ces outils dans mon quotidien ?

Une lecture dont vous êtes le héros : soit vous voulez visionner l'intervention dans son intégralité (25 minutes) et je vous conseille de ne pas lire la suite avant (mais de sauter à la fin), soit vous continuez la lecture et vous pourrez vous rattrapper plus tard.

J'ai choisi d'explorer 2 axes un peu inhabituels : les vacances et le fun !

## Vacances et productivité

Si on veut pouvoir partir en vacances confortablement, il va en fait falloir être plus productif, et ça la productivité ça parle à tout le monde et ça fait pro :-).

### Apprentissage

L'apprentissage de Python est l'un des plus rapides qui soit, on peut l'enseigner aux enfants, aux élèves, aux développeurs, il suffit de quelques heures pour en maîtriser les bases. Avec quelques bases, on peut hacker son premier programme en quelques minutes. Vraiment.

Rapidité d'apprentissage signifie aussi facilité à intégrer de nouvelles personnes dans une équipe ou à transférer des compétences sur un projet (ce qui est plutôt utile pour partir en vacances tranquille).

### Agilité

Agilité : vaste programme car on en arrive à mettre tout et n'importe quoi derrière ce terme. En quoi Python vous fait gagner en agilité ? Il y a bien sûr l'usage des tests dont je parle ensuite qui rendent les refactorisations moins douloureuses, évitant les régressions inévitables autrement. Mais c'est surtout à l'usage que l'on se rend compte à quel point le langage est flexible et puissant.

### Réutilisation

La philosophie de Python et d'être batteries included, c'est à dire de proposer une bibliothèque standard complète permettant d'effectuer les tâches courantes avec le langage de base sans avoir à installer des bibliothèques tierces. Ceci favorise le code portable et réutilisable entre plusieurs projets.

## Fun et qualité

La relation entre le fun et la qualité ? Une équipe qui prend du plaisir à développer va introduire de la qualité dans son produit.

### Conventions

Python repose sur des conventions de codage fortes qui favorisent la compréhension du code par un autre développeur. Ça paraît anodin énnoncé ainsi mais c'est pourtant capital pour la réutilisation et la maintenabilité du code. Lorsque vous prennez un code en main, bibliothèque externe ou code de votre collègue, vous n'allez pas être perdu grâce à une normalisation familière. C'est un gain de temps considérable à l'usage.

### Tests

Python encourage l'usage des tests qui sont indispensables à la pérennité d'un code. Je ne vais pas me répéter sur ce point, c'est juste la représentation du capital de votre application, ce qui fait finalement sa valeur à long terme.

### Élégance

Ici aussi, je vous renvoie sur le billet l'Artiste qui sommeille en chaque geek, la part d'élégance que vous pouvez trouver dans votre code dépend de vous, de votre sensibilité et de la vision que vous avez de vos créations.

En conclusion, grâce à une productivité accrue et à la qualité de son code, on gagne en séreinité et en confiance.

## Django

Je ne vais pas réexpliquer la boîte à outils qu'est un framework web, vous pouvez aussi consulter une ancienne présentation sur Django si vous souhaitez aller plus loin.

### Applications réutilisables

C'est aujourd'hui LE point fort de Django : un écosystème d'applications développées par la communauté de très bonne facture. Vous cherchez une application pour faire de l'OpenID, gérer des droits finement, pousser vos média sur S3, etc etc c'est possible et facilement intégrable à votre projet.

### Cohérence

Le framework ayant été pensé dans sa globalité, on retrouve une cohérence et une qualité constante sur les différents points du framework. Et l'une des grandes forces de Django c'est la cohérence de sa documentation et son excellente qualité. Allez faire un tour dessus, ce n'est pas une légende :-).

### Rapidité

Enfin un dernier argument en faveur de Django, c'est la rapidité de développement rendue possible grâce aux nombreux outils mis à disposition par le framework permettant d'éviter les tâches fastidieuses et répétitives. Vu la vitesse à laquelle les sites évoluent, c'est un point essentiel à prendre en compte au lancement d'un projet.

## Démonstration et code

Suite à la théorie, j'ai réalisé une démonstration live de ce que l'on pouvait avoir en pratique qui a également été filmée. Et je viens de rendre le code accessible pour que vous puissiez continuer/hacker/etc, c'est un twitter-like qui reprend pas mal des concepts Django. J'ai ajouté un peu de code pour que vous puissiez aller plus loin, pour repartir de la présentation il suffit de prendre la révision qui va bien. N'hésitez pas à poser des questions ici au besoin.

## Formation

Suite à cette intervention était prévue une formation qui malheureusement a été reportée faute de participants. C'est vraiment dommage car j'étais bien motivé et j'espère qu'il y aura davantage de curieux lors de la prochaine session. Si vous êtes intéressé, n'hésitez pas à me contacter ou à contacter Stéphane, en plus le cadre est vraiment unique !

En conclusion, j'ai eu des retours assez positifs et j'espère avoir convaincu ou au moins donné envie à certaines personnes présentes d'essayer de nouveaux horizons :-). Si l'agilité vous intéresse (et ça devrait), je vous encourage également à aller consulter les vidéos de Claude Aubry.

### Articles peut-être en rapport

- Stratégie de chiffrement des données et emails
- Un projet Python : de l'idée à la publication
- ★ De l'OpenData au LinkedData : exemple de nosdonnees.fr

### Commentaires

4strO le 11/12/2009 :

As-tu testé symfony ?
Si oui django ou symfony ? et pourquoi ?

David, biologeek le 11/12/2009 :

@4strO : oui, et tout dépend du contexte.

Laurent le 11/12/2009 :

Je vais encore passer ma journée à regarder des vidéos...

Un des aspects qui m'avaient finalement convaincus de passer à python+django, c'est la facilité de compréhension du code écrit par d'autres, notamment grâce au mvc et à l'indentation python.

Kemar le 11/12/2009 :

En ce qui me concerne tu m'as convaincu depuis bien longtemps :)
Par contre pour la conférence (payante) ça serait bien qu'ils n'envoient pas des emails non sollicités :p

David, biologeek le 11/12/2009 :

@Kemar : oui c'est noté pour LE mail non sollicité qui était pour la formation payante, la conférence était gratuite.

Benoit le 11/12/2009 :

Merci pour la vidéo de la démo live, c'est super sympa ! ça permet vraiment d'appréhender comment on développe en Django.

Nicolas Steinmetz le 11/12/2009 :

J'arrive à la même conclusion en sortant de ma formation perl qui est le standard de fait pour le langage de scripting système.

Quand bien même perl a qqs aspects sympa (j'ai plutôt été agréablement surpris en fait), la lisibilité du code python (bcp plus explicite que perl) en fait pour moi un meilleur outil.

Mais bon, je ne vais pas écrire mon prochain billet ici ;-)

@4strO : pour ma part, je trouve symfony trop verbeux et moins immédiat que django ; cf http://nicolas.steinmetz.fr/journal/post/2009/08/03/Mon-comparatif-Django-vs-Symfony

4strO le 12/12/2009 :

merci Nico :)

Arthur LEDARD le 18/12/2009 :

Bonjour David,

As tu testé/joué avec WSGI?
Qu'en penses tu?

cyber le 01/01/2010 :

"un écosystème d'applications développées par la communauté de très bonne facture. Vous cherchez une application pour faire de l'OpenID, gérer des droits finement"

Est ce que tu peux me dire le nom de l'application de gestion de droit dont tu parles ?
Merci

Killy Ek'Fael le 01/01/2010 :

Bonjour.

Je cherche à faire un site web personnel sans prétention. Je suis intéressé par l'utilisation d'un framework web python et par l'utilisation d'un ORM python via le framework tel que Zope Object Database.

En faisait beaucoup de recherche je crois avoir compris que zope 3(c'est zope qui a réussit à me faire succomber à python à cause de la vidéo des rmll avec EPR5), grok (zope 3 avec une surcouche rendant zope 3 plus facile si j'ai bien compris), et django (j'ai lu la page de documentation en anglais pour utiliser les API native de django à la place de SQL pour gérer la persistance) semblent satisfaire mon désir.

Vu que ta présentation ne cherchais pas à faire de comparaison et que j'ai essayé de dire ce qui m'intéresse, pourrais t on me dire si django est un bon choix ?

Merci.

glibersat le 05/01/2010 :

@cyber: je ne sais pas si c'est celui-ci dont il voulait parler, mais django-authority ( http://packages.python.org/django-authority/ ) fonctionne très bien !

David, biologeek le 05/01/2010 :

@Arthur LEDARD : Oui WSGI est une très bonne solution, l'avenir était un peu incertain à un moment mais ça a l'air d'être reparti. On verra bien :-)

@cyber : la réponse de glibersat est celle à laquelle je pensais.

@Killy Ek'Fael : tout dépend du "sans prétention" ;-)

Repartir de la base (style web.py) peut-être un très bon exercice pour comprendre les rouages d'un framework web et permet de faire un site très facilement. En tout cas je pense pas qu'il soit nécessaire de sortir une grosse artillerie comme Zope pour arriver à ça (attention, je ne dis pas que Zope n'est pas utile dans certains cas...).

Killy Ek'Fael le 05/01/2010 :

@biologeek
Qu'est ce que j'entends par sans prétention...
Il n'y a pas de contrainte autre que la liberté de pouvoir coder ce que j'aurais envie de coder pour le plaisir, m'entrainer, apprendre, essayer, m'amuser...

Sinon ce qui m'attire dans Zope c'est l'absence de mapping objet-relationnel (d'ailleurs j'ai des cours où je fais ça) et de pouvoir utiliser la persistance directement en objet avec le support des caractéristiques ACID d'une BDD.
Je ne cherche pas vraiment à vouloir rentrer dans les rouages d'un framework web.

Akatsuki le 20/04/2011 :

Bonjour,
Ca fait bien plus d'un an mais je tente quand même...
Que pensez-vous de CodeIgniter ?
Je me permets de posez cette question dans la mesure ou je cherche à évoluer (parceque pour l'instant en developpement WEB je fait du PHP/MySQL avec notepad++) et que je cherche donc une alternative élégante...
Aussi que pensez de RoR ?
Bien cordialement..