<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Maxime Palmisano &#187; Divers</title>
	<atom:link href="https://blog.developpez.com/maximepalmisano/pcategory/divers/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/maximepalmisano</link>
	<description></description>
	<lastBuildDate>Wed, 11 Jul 2012 21:46:17 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Qu&#8217;est ce qu&#8217;un bon développeur ?</title>
		<link>https://blog.developpez.com/maximepalmisano/p10264/divers/qu_est_ce_qu_un_bon_developpeur</link>
		<comments>https://blog.developpez.com/maximepalmisano/p10264/divers/qu_est_ce_qu_un_bon_developpeur#comments</comments>
		<pubDate>Wed, 07 Sep 2011 21:40:33 +0000</pubDate>
		<dc:creator><![CDATA[maximepalmisano]]></dc:creator>
				<category><![CDATA[Divers]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[S&#8217;il y a une question que tout développeur se pose au cours de sa carrière, c&#8217;est bien celle là. Et s&#8217;il y a bien une question à laquelle personne n&#8217;a trouvé de réponse magique, c&#8217;est également celle là. La raison est simple : Sur quels points juger un bon développeur ? Est ce que l&#8217;on doit juger son côté technique ? Sa manière d&#8217;aborder les problèmes ? De les résoudre ? Tout cela à la [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>S&rsquo;il y a une question que tout développeur se pose au cours de sa carrière, c&rsquo;est bien celle là. Et s&rsquo;il y a bien une question à laquelle personne n&rsquo;a trouvé de réponse magique, c&rsquo;est également celle là.</p>
<p>La raison est simple : Sur quels points juger un bon développeur ? Est ce que l&rsquo;on doit juger son côté technique ? Sa manière d&rsquo;aborder les problèmes ? De les résoudre ? Tout cela à la fois ?</p>
<p>Evidemment, l&rsquo;analyse qui suit est personnelle et fondée sur mon expérience, elle n&rsquo;engage donc que moi. N&rsquo;hésitez pas à me donner vos points de vues en commentaire <img src="https://blog.developpez.com/maximepalmisano/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<p><span id="more-4"></span></p>
<p>Le métier de développeur est quelque chose de complexe. Il nécessite des compétences diverses et variées qui s&rsquo;écartent du code en lui-même la plupart du temps.</p>
<p>La logique reste le plus grand ami du développeur, elle permet d&rsquo;aborder les problèmes sous un autre angle et de trouver une piste le plus rapidement possible pour le résoudre. Un bout de code reste avant tout une manière logique de résoudre un problème donné.</p>
<p>C&rsquo;est ici qu&rsquo;entre en jeu l&rsquo;algorithmique, processus immuable pour réaliser la moindre ligne de code. Cette &laquo;&nbsp;science&nbsp;&raquo;, si je peux me permettre le mot, est l&rsquo;essence même du développement : Sans algorithme, point de code. Un bon développeur serait-il  donc uniquement une personne dotée d&rsquo;une grande logique ?</p>
<p>Pas vraiment. J&rsquo;en arrive au point qui est le plus souvent mis en avant, et pas toujours à juste titre, l&rsquo;aspect technique. En effet, un développeur se doit de posséder une maîtrise technique approfondie du langage et des outils qu&rsquo;il utilise. Quelqu&rsquo;un qui ne connait que l&rsquo;aspect théorique de la programmation ne pourra jamais rivaliser avec un développeur qui maîtrise son sujet, techniquement parlant.</p>
<p>On pourrait en arriver à la conclusion toute faite qu&rsquo;un bon développeur est quelqu&rsquo;un de logique et de calé techniquement. Il s&rsquo;avère que cela est vrai, mais pas tout le temps. Certaines autres qualités sont (trop ?) souvent passées sous silence et représentent pourtant, à mes yeux, des atouts loin d&rsquo;être négligeables.</p>
<p>Même si je parle dans cet article d&rsquo;un développeur en tant que personne, il ne faut pas oublier que 95% des développements, si ce n&rsquo;est plus, sont réalisés en équipe. Je me demande presque si ce point n&rsquo;est pas plus important que les deux autres au dessus. Un développeur se doit d&rsquo;être conscient du fait qu&rsquo;il fait parti d&rsquo;une équipe, d&rsquo;un tout et il doit mettre tout en oeuvre pour que son travail s&rsquo;inscrive dans la dynamique de ce même groupe.</p>
<p>Si l&rsquo;on devait mesurer l&rsquo;efficacité d&rsquo;un groupe de développement, on le ferait surement en mesurant la durée nécessaire pour réaliser un programme donné. En suivant cette idée, même en ayant des développeurs parfaits sur le plan algorithmique ou technique, je pense que le temps perdu à récupérer des individualités commises suffirait amplement à faire gagner une réelle équipe, moins bonne sur ces plans là mais soudée. Une équipe où chacun des développeurs code pour que les autres puissent passer derrière sans avoir à se prendre la tête. On gagne du temps, sur sa propre relecture, sur la relecture du voisin, les différentes phases de debug et j&rsquo;en passe&#8230;</p>
<p>Un dernier point qui rejoint également celui là est la méthodologie. Pareillement, ce point est bien (trop ?) souvent oublié à mon gout. A une époque où les méthodes agiles sont incontournables, la méthodologie du développeur se doit d&rsquo;être travaillée et réfléchie. Un développeur ne peut se permettre d&rsquo;organiser son code n&rsquo;importe comment, de nommer ses variables d&rsquo;un nom incompréhensible et de faire d&rsquo;innombrables horreurs qu&rsquo;il est donné de voir bien trop souvent.</p>
<p>Encore une fois, le temps perdu à essayer de comprendre ce que mon voisin a essayé de faire (même si l&rsquo;algorithme est optimisé et adapté au maximum à la technologie) est énorme lorsque le code est illisible et indéchiffrable. Je vais devoir le déranger pour pouvoir enfin comprendre et me mettre à travailler dessus. Résultat, on perd le double de temps car pendant que mon collègue essaye de m&rsquo;expliquer le raisonnement logique qui lui paraissait évidente, il ne code pas non plus.</p>
<p>Cette dernière question soulève le problème des commentaires : Faut-il en mettre, ne faut-il pas en mettre ? Personnellement, j&rsquo;ai appris le métier de manière scolaire en commentant mon code et en l&rsquo;apprenant de manière professionnelle, j&rsquo;ai appris à ne plus en mettre. Les raisons sont multiples : Les commentaires permettent de se contenter d&rsquo;un code peu clair parce qu&rsquo;on peut fournir le reste d&rsquo;explication dans le commentaire alors qu&rsquo;un code sans commentaires se doit d&rsquo;être parfaitement clair. Je citerai mon mentor qui me répétait toujours : &laquo;&nbsp;Un bout de code doit être auto-suffisant à sa compréhension&nbsp;&raquo;.</p>
<p>Maintenant que j&rsquo;ai pu travailler dans divers environnements (Multinationales, pme, projet agiles, projet non agiles), je me rends compte que chaque conseil qu&rsquo;on a pu me donner est valable et que le seul problème est de les appliquer le cas échéant. Voilà où se situe toute la magie et le dilemme permanent du développement : Faire la part des choses.</p>
<p>Certains &laquo;&nbsp;bons&nbsp;&raquo; développeurs sont trop &laquo;&nbsp;extrémistes&nbsp;&raquo; dans leur manière de coder. Ils savent faire une chose d&rsquo;une manière et jamais ils ne se remettront en question pour envisager la chose sous un autre angle. Ils feront comme ils savent si bien le faire, sans me se soucier de la méthodologie du groupe ou de l&rsquo;avis du reste de l&rsquo;équipe. Ils ont leur manière de résoudre un problème donné et jamais ne la changeront.</p>
<p>Ca me rappelle une phrase tirée d&rsquo;un <a href="http://www.onintelligence.org/index.php">livre sur l&rsquo;intelligence</a> (Que je vous conseille) écrit par le réalisateur du Palm. Je ne me souviens plus des termes exacts mais cela donnait à peu près ceci : &laquo;&nbsp;Pour réussir à voler, l&rsquo;homme n&rsquo;a pas imité les oiseaux et leur battements d&rsquo;ailes : il a utilisé des ailes fixes. Pour réussir à se mouvoir rapidement, il n&rsquo;a pas imité le jaguar et ses pattes véloces : Il a inventé la roue&nbsp;&raquo;. Cela n&rsquo;a pas vraiment de lien avec le sujet, et pourtant.</p>
<p>Il y a un million de façons de résoudre un problème donné, c&rsquo;est pour cela que des gens arrivent à &laquo;&nbsp;réinventer la roue&nbsp;&raquo; chaque jour en la perfectionnant. S&rsquo;il y avait une solution magique à un problème, ça se saurait. Chacun aborde la chose d&rsquo;une manière différente et la résout à sa manière.</p>
<p>C&rsquo;est pour ça que je trouve que les meilleurs développeurs sont également ceux qui échangent. Ceux là sont heureux de donner leur point de vue mais tout aussi heureux d&rsquo;en entendre un autre qu&rsquo;ils n&rsquo;avaient pu imaginer jusqu&rsquo;à maintenant. Et c&rsquo;est grâce à cela qu&rsquo;ils continuent de progresser là où d&rsquo;autres stagnent.</p>
<p>Je terminerai en citant <a href="http://norvig.com/21-days.html">un superbe article</a> qui m&rsquo;a beaucoup fait réfléchir à ce sujet, malgré qu&rsquo;il ne date pas d&rsquo;hier : &laquo;&nbsp;Work on projects with other programmers. Be the best programmer on some projects; be the worst on some others.&nbsp;&raquo;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
