Styles

samedi 9 août 2008

Le chemin bien sinueux de l'excellence

On dit toujours qu'il faut savoir programmer quelque soit le langage. Mais, il est illusoire de croire que l'on peut arriver à un tel degré d'abstraction que l'on saurait alors coder proprement dans n'importe quel langage.

Bien que les bases de la programmation soient toujours nécessaires à acquérir d'une façon abstraite, la maîtrise d'un langage passe essentiellement par la connaissance aiguë des librairies offertes autour de celui-ci. Car un bon programmeur est avant tout un programmeur qui réutilise un maximum ce qui existe déjà.

Mais la capacité d'un programmeur à réutiliser des librairies existantes passe aussi par la compréhension des concepts véhiculées par celles-ci. La mesure de la compétence est quelque chose de difficile à estimer. La meilleur chose est de s'estimer en comparaison des véritables hackers, les demis-dieux, voire, les dieux tout court.

J'ai trouvé une matrice de compétence bien intéressante. Celle-ci offre une vue de ce que devrait être capable de faire un développeur expérimenté (ou avoir comme bagage), comme par exemple :
- Capacité du code à être lu (code readability) : les présupposés du code sont vérifiés par l'utilisation d'asserts, le code défile naturellement - pas d'emboîtement profond de conditionnelles ou de méthodes

- IDE : a écrit des macros personnalisées

- exposition aux langages : Concurrent (Erlang, Oz) and Logic (Prolog)

- années d'expérience professionnelle : 10+

- livres : Structure and Interpretation of Computer Programs, Concepts Techniques, Models of Computer Programming, Art of Computer Programming, Database systems , by C. J Date, Thinking Forth, Little Schemer
On retrouve plein d'idées d'amélioration de ses propres compétences, plein de sujet d'étude à découvrir.

Cela me fait penser à l'article "How To Become A Hacker" qui recense les caractéristiques d'un hacker, au sens "noble" du terme s'entend. Il est toujours bon de connaître le chemin même si l'important est de l'arpenter ensuite, comme dirait l'autre.

Le problème dans tout ça, c'est souvent le temps qui manque, et il n'est pas toujours facile de concilier la vie courante et la vie de hacker.

Où vous situez-vous dans la matrice de compétence, ou alors, pensez-vous que tout cela n'est pas bien réaliste et que les critères sont biaisés ?

Aucun commentaire: