Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quel conseil donneriez-vous à un débutant en développement ?
Et lequel auriez-vous aimé recevoir quand vous avez commencé ?

Le , par Idelways

24PARTAGES

11  0 
Le développement est un métier riche et passionnant, mais aussi dur et souvent difficile d'accès.

S'il n'est pas correctement orienté lors de ses études par des enseignants passionnés ou s'il est autodidacte par un parrain compétent, le débutant peut vite se perdre, se lasser et changer de cap vers d'autres métiers de l'informatique, jugés moins « prise de tête ».

Bryan Woods, un développeur américain a posté sur son blog quelques excellents conseils aux débutants. En fait, des conseils qu'il s'adresserait à lui même s'il pouvait remonter le temps.

Le premier conseil qu'il donne, c'est de ne pas sous-estimer le développement et d'admettre une bonne fois pour toute que c'est un métier difficile, qui nécessite beaucoup d'efforts et de détermination afin d'être cerné et maîtrisé.

Sans quoi, à la rencontre de chaque nouveau concept qui semble étrange, difficile ou non-intuitif, le débutant remettra en question son intelligence et sa capacité à cerner le domaine.

"Pas grave, le développement c'est dur" est beaucoup moins négatif que "je suis nul" ou "le développement c'est pas mon truc".

Le deuxième conseil que donne Woods est de bien choisir le premier langage à apprendre. Car ce choix est capital dans la mesure où il conditionne la base du développeur pour comprendre tous les autres langages.

De même qu'on ne peut "avoir des pensées" que dans sa langue maternelle, il n'y a selon Woods aucune raison pour que ce ne soit pas le cas avec les langages informatiques.

Un autre conseil : la meilleure manière d'apprendre le développement est de ... développer.

Apprendre par la pratique permet de mémoriser rapidement les concepts du développement et les spécificités des langages. Ce qui permet d'apprendre à s'exprimer mieux et de plus en plus vite avec la machine.

Sans pratique au quotidien, tout le reste est inutile.

En revanche, ne pas être fort en math n'est, selon Woods pas un problème. Il admet avoir été surpris à ses débuts, de constater à quel point les math sont si peu présentes dans ses développements quotidiens.

Finalement, il donne un dernier conseil aux débutants, peut-être le plus important : celui d'apprendre à apprécier l'apprentissage du développement, car ils ne finiront jamais d'apprendre.

Et vous ? Quel conseil donneriez-vous à un débutant ?

Et quel conseil auriez-vous aimé que l'on vous donne quand vous avez commencé à programmer ?

Source : le Blog de Bryan Woods

En collaboration avec Gordon Fowler

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de seeme
Membre éclairé https://www.developpez.com
Le 22/10/2010 à 15:28
Citation Envoyé par Blum Blum Shub Voir le message
En premier conseil je me dirais de commencer par un langage pas trop bas niveau mais qui ne cache pas le fonctionnement interne, tel que C++, qui permet à la fois d'apprendre la programmation fonctionnelle et de passer petit à petit à l'objet et/ou autres joyeusetés, avant de se lancer dans un langage qui intègre certaines features plus en profondeur (comme Java pour l'objet).

En second conseil, et en y réfléchissant c'est sûrement le plus important des deux, je dirais que le développement est un cycle infini: laborieux (apprentissage d'un paradigme/d'une techno), intéressant (s'amuser avec), passionnant (développer), puis il faut repartir au début (nouvelle techno/nouveau paradigme à apprendre) et ainsi de suite.
Je pense que C++ serait le dernier langage que je conseillerais (aller y a peut-être l'ASM aussi ^^ ). Dire à un débutant de se lancer avec cpp, c'est lui garantir une balle dans le pied...

Je pense qu'il faut se concentrer sur un langage qui permette de se concentrer sur l'algorithmique qui doit toujours être le plus important..

Et d'ici à ce qu'un débutant se sente limité par python/VB/Basic quelconque.. Il y a de la marge...
10  1 
Avatar de albesoft
Membre du Club https://www.developpez.com
Le 26/10/2010 à 11:42
Bonjour,

L'informatique ? je suis tombé dedans quand j'étais petit... euh, pas tout à fait quand même mais l'informatique (ou du moins la micro, accessible aux autodidactes, l'était). C'était au début des années 80 !!!
Commencer en BASIC sur un TRS-80 avec 16Ko de RAM (oui ! 16K tout compris) avec des noms de variables sur 1 ou 2 caractères, faire la chasse à l'octet perdu... vous fait prendre de bonnes habitudes.

Ensuite, j'ai évolué (avec beaucoup de temps, de lecture, d'essais et de ré-essais... bref de pratique) vers des langages de plus en plus intéressants en parallèle avec l'évolution de la puissance des machines.
La vitesse des processeurs et la taille de la mémoire (vive en gigaoctets) ou externe (en téraoctets) ont complètement changé l'approche du développement.

Actuellement, après avoir été Programmeur Système puis Analyste, (j'ai participé activement à la mise en place et au développement d'applications nationales), je termine ma carrière comme enseignant dans une Ecole Nationale d'un grand ministère...

Préalable
Avant de vouloir donner des conseils techniques, il faut se préoccuper de l'esprit de la personne concernée. Plusieurs articles font mention de la motivation (++) et du plaisir que l'on doit éprouver à développer (++++) car développer c'est créer ! la programmation, comme la médecine dont je suis issu, est un art aussi bien qu'une science.
Il faut, pour réussir, avoir une "tournure d'esprit" qui soit logique (pas au sens matheux mais dans le sens commun du terme) c'est à dire :
    des capacités d'analyse (chercher à comprendre ce qu'on a en face de soi ou ce que doit faire le projet en cours),

    de diagnostic (pourquoi ça ne fonctionne pas comme je le voudrais?)

    et de synthèse (maintenant que j'ai les matériaux, je peux commencer à construire) en expliquant pas à pas à la machine ce qu'elle doit faire.

    En fait, il n'y a rien de plus bête qu'un ordinateur, il fera exactement (et très rapidement) tout ce qu'on lui dit de faire mais seulement ce qu'on lui dit de faire. Et si on lui dit de faire une bêtise, il la fera (ou il tentera de la faire...).

Sa seule intelligence lui vient des programmes écrits par ses concepteurs...

Pour bien débuter :
Comme l'ont souligné également plusieurs articles, le crayon et le papier sont INDISPENSABLES avant de "se jeter sur le clavier"... Combien de fois ai-je vu des élèves lire rapidement l'énoncé d'un exercice ou d'un TP plus complexe et commencer à saisir du code, sans aucune réflexion d'ensemble préalable... et "se prendre la tête" à modifier cent fois leur code pour le faire correspondre à ce qu'ils n'avaient pas prévu...
10 minutes passées à crayonner un schéma, à prévoir l'architecture globale et à noter les choses à faire (je reste volontairement très vague et ne fais appel à aucune méthode ni langage) font gagner des heures de débogage.

Pourquoi faire simple quand on peut faire compliqué ? vieil adage hérité (malheureusement) de certaines pratiques d'optimisation (?) du code, particulièrement en C où il était de bon ton de créer des instructions ultra-complexes ou de regrouper tout un programme dans une unique boucle for.
L'optimisation ne doit pas être un obstacle à la maintenabilité. Vu la vitesse des processeurs actuels (et sauf à réaliser un programme qui doit fonctionner en temps réel bien sûr) qu'est-ce que quelques micro-secondes de plus en séparant un traitement en quelques instructions plus simples à relire et à comprendre, par rapport aux temps de réponse d'une page WEB (même avec le câble...) et surtout aux heures perdues lorsqu'on doit "remettre le nez" dans ce code (surtout si ce n'est pas vous qui l'avez écrit!)
Il faut donc favoriser la lisibilité.

Commentez votre code :
En évitant, évidemment, des commentaires superflus ou non pertinents...
Quelque soit le langage utilisé :
    commencez par écrire, en français (les pseudo-codes ne sont pas indispensables pour un débutant) ce que votre programme doit faire, mettez au clair la démarche employée (un peu d'algorithmique ne nuit pas...)

    Saisissez votre démarche sous forme de commentaires dans votre code source

    Insérez, entre les commentaires, les instructions du langage que vous avez choisi

Testez, testez, suivez pas à pas le déroulement du programme et les valeurs prises par les variables (il y a maintenant de très bons outils de débogage dans la quasi totalité des langage) et si vous n'avez pas d'outil à votre disposition, écrivez des messages dans un fichier de traçage...
Avantages :
1) votre programme a toutes les chances de fonctionner rapidement et sans erreur.
2) on n'a jamais le temps de revenir dans un source pour ajouter, après-coup, les commentaires nécessaires.
3) votre programme sera lisible, maintenable et évolutif !

Comment progresser ?
Avant d'inventer la roue, commencer par maîtriser (ou fabriquer) ses outils.
Pour cela, ne pas se lancer tout de suite dans des développements complexes, mais faire des "test-cases" qui, en quelques lignes, mettent en oeuvre la fonction ou l'instruction que l'on veut comprendre et savoir utiliser au mieux. Un des intervenants parlait d'un jeu de LEGO : c'est tout à fait ça !

La curiosité est un vilain défaut SAUF chez les informaticiens
Bien entendu, lisez beaucoup, apprenez, tenez-vous au courant des évolutions techniques et fonctionnelles des outils que vous utilisez, et n'oubliez pas de commencer par la documentation officielle (la non lecture des modes d'emploi est un défaut bien français...)

Le choix du langage :
Le premier langage que vous allez utiliser dépend de votre parcours : secondaire, Fac, IUT... et, à moins d'en avoir été rebuté, il influencera vos préférences.
Faut-il commencer tout de suite par un langage orienté objet ?
Pas évident car, dans le coeur de vos classes, vous devrez programmer de façon structurée et claire... La POO est une surcouche dont le niveau d'abstraction n'est pas indispensable au début. (Pensez au LEGO : on construit d'abord des modèles simples avant de s'attaquer à des interactions entre modèles évolués)
Faut-il choisir un langage "de bas niveau" ?C, C++, c# et dans une moindre mesure JAVA
S'il est vrai que la prise en compte des allocations d'espaces mémoires et d'un typage fort des variables permet de mieux comprendre le fonctionnement interne de la machine, est-ce réellement indispensable dès le début ? Après tout, vous conduisez votre voiture sans être un dépanneur expert ni un constructeur de véhicules !
Les langages "évolués" accessibles (Basic pourquoi pas, mais maintenant PHP) le sont justement parce qu'ils libèrent le programmeur d'un grand nombre de contingences en leur permettant de se concentrer sur le fonctionnement lui-même et non sur son environnement technique.
Il sera toujours temps, si le sujet vous passionne ou si les besoins fonctionnels du projet le nécessitent, de se tourner vers un langage plus contraignant.

Conclusion :
Désolé d'avoir été si long, mais résumer en quelques lignes 30 années de pratique intensive (pro et perso) n'est pas chose facile.
Persévérez, soyez curieux, toujours à l'affût des évolutions, regardez le code des autres pour vous en inspirer (mais évitez le copier-coller bête et méchant, il ne correspondra que très rarement à votre projet personnalisé).
Prenez dès le début de bonnes habitudes (arborescence de votre projet ou de votre site, commentaires judicieux, indentation...)
et puis... pratiquez, pratiquez encore...

Bon courage et beaucoup de plaisir !!!
9  0 
Avatar de Jidefix
Membre éprouvé https://www.developpez.com
Le 22/10/2010 à 14:52
J'aurai dit exactement le contraire de Bryce

Justement je lui conseillerai de ne pas vouloir aller trop vite et de bien comprendre les principes de base, tels que la syntaxe, l'algorithmique basique, la gestion des variables, la compilation...
Combien j'ai vu de développeurs se lancer dans le développement d'applis J2EE sans être à l'aise avec les concepts objets ou même avec la syntaxe java ("ça veut dire quoi static? c'est quoi la différence entre une classe et une instance?"!

Sans aller jusqu'à réinventer la roue, comprendre comment elle roule et ce qui la rend efficace, c'est quand même important!
9  1 
Avatar de Lordsephiroth
Membre confirmé https://www.developpez.com
Le 22/10/2010 à 15:56
Pour commencer, un peu d'humour (un brin réel) :

"Google is your second best friend..."
"developpez.net is your best friend !!"

Je suis étonné que ça n'ait pas été dit plus haut, mon second conseil serait que l'informatique est déterministe. A moins d'avoir trouvé un cas particulièrement rare dans une environnement et un bug réel dans un langage, généralement le programmeur a tort. Le comportement peut sembler archi-aléatoire et rendre des résultats totalement aberrants, c'est toujours une erreur de programmation. Ne pas se laisser décourager devant des comportement arbitraires est parfois difficiles. Certains bugs sont vraiment... mais vraiment... super frustrants.

Sinon, je conseille un langage moderne et orienté objet, de préférence web sur browser (afin d'éviter au début le contact avec les clients lourds, particulièrement difficile à réaliser selon les langages).

Sinon, RTFM
8  0 
Avatar de alternux
Nouveau membre du Club https://www.developpez.com
Le 22/10/2010 à 15:46
Citation Envoyé par Idelways Voir le message
En revanche, ne pas être fort en math n'est, selon Woods pas un problème. Il admet avoir été surpris à ses débuts, de constater à quel point les math sont si peu présentes dans ses développements quotidiens.
100% d'accord !

J'étais nul en maths au lycée. Quand je disais que je voulais faire de l'info m'a prof me racontait qu'il fallait être bon en maths. Archi faux ! A part savoir compter et avoir de la logique (càd penser comme une machine), on a largement pas besoin du programme de bac S pour faire du développement. Sauf cas spécifique comme le traitement du signal... mais c'est loin d'être la majorité et c'est un choix pas une obligation.
8  1 
Avatar de callapa
Membre du Club https://www.developpez.com
Le 22/10/2010 à 16:30
Un conseil qui ne vaux peut être que pour moi. Je suis un développeur autodidacte et quand je rencontre des difficultés à me sortir d'un problème je commence par le fameux "c'est un bug" (faut bien un coupable) puis je finis par trouver et là je me dis "mais quel c... je suis" Mais entre ces deux phases il y a le "lacher prise". Une pause qui peux durer jusqu'à 2 jours pendant laquelle je bosse sur autre chose mais qui me permet d'oublier mon problème et quand j'y retourne c'est limite si mon erreur ne me saute pas aux yeux. De plus la nuit porte conseil, une bonne nuit de sommeil et vous voilà frais comme un gardon avec un nouvel algo.
7  0 
Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 22/10/2010 à 16:53
le premier conseil que j'ai eu en informatique était dans un livre d'initiation à la programmation sur Commodore 64 (oui je sais ça remonte )

il était indiqué "sachez que quoi que vous tapiez sur votre clavier, vous ne pourrez jamais endommager votre ordinateur...sauf à utiliser un marteau"

bon ce conseil n'est pas forcément aussi vrai sur un Windows Seven qu'il ne l'était sur cet écran :


mais si j'en suis là où j'en suis aujourd'hui, c'est grâce à cette petite phrase qui m'a donné tout pouvoir sur la machine
7  0 
Avatar de pmithrandir
Expert confirmé https://www.developpez.com
Le 22/10/2010 à 17:04
"Fais confiance aux mecs qui font les normes quand ils te disent de faire les choses d'une certaine manière, dans 99% des cas ca marche mieux comme ca sur le long terme."

Et surtout le plus important :
"Le papier et le crayon seront tes meilleurs amis et tu fera plus efficacement du bon boulot avec eux que collé a ton écran".

Ou, "ne pas confondre vitesse et precipitation."
8  1 
Avatar de Camille_B
Membre confirmé https://www.developpez.com
Le 23/10/2010 à 21:22
Si vous êtes autodidacte:

1. VBA
2. VB6
3. C
4. C++
Bon, ce genre de réponse ça veut dire à peu près : "c'est comme ça que j'ai fais, c'est comme ça qu'il faut faire".

Ça n'a pas de sens. (et puis franchement, Visual Basic...)

Bref, je pourrais répondre exactement de la même manière.

SI vous êtes autodidacte :

1) sh
2) emacs lisp
3) C
4) perl
5) php
6) javascript.

Ça n'a aucun sens.

Il faut commencer avec le langage qui nous met à l'aise. Et l'idéal c'est de jeter un œil sur plusieurs langages à la fois afin de ne pas s'enfermer trop vite dans des modes de raisonnement trop rigides.
7  0 
Avatar de slim_java
Expert confirmé https://www.developpez.com
Le 22/10/2010 à 15:16
Salut,

Citation Envoyé par Idelways Voir le message

Quel conseil donneriez-vous à un débutant ?
Citation Envoyé par Idelways Voir le message


Apprendre par la pratique permet de mémoriser rapidement les concepts du développement et les spécificités des langages.

J'ajoute aussi que la lecture (doc, blog, article, livre...) est la base de tout en informatique.

Aussi, une inscription sur un forum d'entraide comme DVP.com a sa valeur ajoutée
6  0