Comment puis-je acquérir plus d'expérience en programmation [fermé]


9

Je vais être un étudiant en troisième année d'informatique et j'ai lu Head First Java, Head First C, et je lis actuellement C ++ qui est le langage que j'aime le plus car il a un bon style d'enseignement pour les personnes expérimentées. Je prévois d'apprendre à créer des logiciels avec QT, d'apprendre Objective-C (pour iPhone) ou de lire C ++ efficace.

Comment puis-je acquérir de l'expérience en tant que programmeur? Ai-je les compétences pour rejoindre un projet open source ou dois-je apprendre le php, mySQL ou tout autre langage. J'adore la programmation et l'informatique en général bien que certaines classes puissent être extrêmement difficiles (informatique théorique). Je prévois également de devenir un gourou en c ++, mais cela ne se fera pas de si tôt.


1
Avez-vous écrit des programmes que d'autres utilisent? Sinon, écrivez-en un dont un membre de la famille a besoin et rendez-le utile pour lui (cela peut prendre plusieurs itérations). La dernière partie est où se trouve la vraie leçon.

Comment arrive-t-on au Carnegie Hall?
jfrankcarr

1
Je vais ressembler à un trou du cul pendant une seconde mais ... expérience - Participation active à des événements ou activités, conduisant à l'accumulation de connaissances ou de compétences. Alors commencez à participer activement à la programmation.
Steven Evers

1
BTW, quelle est la différence entre StackOverflow et les programmeurs? Le schéma des questions de clôture est-il destiné à faire des programmeurs un autre StackOverflow? Quel est le point alors - juste fusionner les deux. Auparavant, nous pouvions poser des questions ésotériques sur les programmeurs, ce que nous ne pouvions pas faire dans StackOverflow.
שינתיא אבישגנת

Réponses:


11

ABC - TOUJOURS CODER. C'est vraiment aussi simple que cela. Une de mes façons préférées d'apprendre à connaître une langue est d'écrire un jouet interprète pour un sous-ensemble de la langue dans la langue elle-même ou si ce n'est pas votre truc alors peut-être un ray tracer ou quelque chose d'autre qui est juste assez grand pour être non trivial mais pas si gros qu'il ne peut pas être terminé en un mois environ. Le point est de travailler sur quelque chose qui vous forcera à regarder la bibliothèque standard et les installations d'abstraction de données qu'offre le langage. Parfois, le projet est un succès, parfois non, mais à la fin, je connais suffisamment une langue pour savoir quelles sont ses forces et ses faiblesses et si je veux continuer à en apprendre davantage. S'il s'avère que j'aime la langue, chaque fois que je lis un article ou un article de blog intéressant, j'essaie de démarrer un projet dans lequel je mets en œuvre certaines des idées présentées dans l'article ou l'article de blog. De cette façon, je m'entraîne toujours et j'apprends de nouvelles idées, ce qui en fait devient un cycle vertueux.

Certains projets qui ont très bien fonctionné pour moi dans le passé: interprète pour un sous-ensemble d'une langue, ray tracer, générateur d'analyseur PEG, analyseur d'en-tête HTTP, client / serveur d'écho simple, robot twitter pour publier automatiquement des tweets à partir d'une file d'attente, produit amazon grattoir pour rechercher des offres.


+1 Vous avez mentionné des projets vraiment intéressants, merci.
Anthony

8

Comme bien expliqué dans S'enseigner la programmation en dix ans , vous devez suivre les étapes suivantes:

  • Intéressez-vous à la programmation et faites-en parce que c'est amusant. Assurez-vous que cela continue d'être assez amusant pour que vous soyez prêt à consacrer vos dix ans / 10 000 heures.

  • Programme . Le meilleur type d'apprentissage est l'apprentissage par la pratique. Pour le dire plus techniquement, "le niveau maximal de performance pour les individus dans un domaine donné n'est pas atteint automatiquement en fonction d'une expérience étendue, mais le niveau de performance peut être augmenté même par des individus très expérimentés grâce à des efforts délibérés pour améliorer . " »(p. 366) et« l'apprentissage le plus efficace requiert une tâche bien définie avec un niveau de difficulté approprié pour l'individu particulier, une rétroaction informative et des possibilités de répétition et de correction des erreurs ». (p. 20-21) Le livre Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life est une référence intéressante pour ce point de vue.

  • Parlez avec d'autres programmeurs; lire d'autres programmes . C'est plus important que n'importe quel livre ou cours de formation.

  • Si vous le souhaitez, passez quatre ans dans un collège (ou plus dans une école doctorale). Cela vous donnera accès à certains emplois qui nécessitent des titres de compétence, et cela vous donnera une compréhension plus approfondie du domaine, mais si vous n'aimez pas l'école, vous pouvez (avec un certain dévouement) acquérir une expérience similaire par vous-même ou au travail . Dans tous les cas, l'apprentissage du livre seul ne suffira pas. "L'éducation informatique ne peut pas faire de quelqu'un un programmeur expert pas plus que l'étude des pinceaux et des pigments ne peut faire de quelqu'un un peintre expert", explique Eric Raymond, auteur du New Hacker's Dictionary. L'un des meilleurs programmeurs que j'ai jamais embauchés n'avait qu'un diplôme d'études secondaires; il a produit beaucoup d'excellents logiciels, a son propre groupe de discussion et a fait suffisamment d'options d'achat d'actions pour acheter sa propre boîte de nuit.

  • Travaillez sur des projets avec d'autres programmeurs . Soyez le meilleur programmeur sur certains projets; être le pire sur certains autres. Lorsque vous êtes le meilleur, vous pouvez tester vos capacités à diriger un projet et inspirer les autres avec votre vision. Quand vous êtes le pire, vous apprenez ce que font les maîtres et vous apprenez ce qu'ils n'aiment pas faire (parce qu'ils vous font le faire pour eux).

  • Travaillez sur des projets après d'autres programmeurs . Comprendre un programme écrit par quelqu'un d'autre. Voyez ce qu'il faut pour le comprendre et le corriger lorsque les programmeurs d'origine ne sont pas là. Réfléchissez à la façon de concevoir vos programmes pour les rendre plus faciles pour ceux qui les maintiendront après vous.

  • Apprenez au moins une demi-douzaine de langages de programmation. Inclure un langage qui prend en charge les abstractions de classe (comme Java ou C ++), un qui prend en charge l'abstraction fonctionnelle (comme Lisp ou ML), un qui prend en charge l'abstraction syntaxique (comme Lisp), un qui prend en charge les spécifications déclaratives (comme les modèles Prolog ou C ++), un qui prend en charge les coroutines (comme Icon ou Scheme), et une qui prend en charge le parallélisme (comme Sisal).

  • N'oubliez pas qu'il y a un "ordinateur" en "informatique". Sachez combien de temps il faut à votre ordinateur pour exécuter une instruction, extraire un mot de la mémoire (avec ou sans échec de cache), lire des mots consécutifs sur le disque et rechercher un nouvel emplacement sur le disque. (Réponses ici.)

  • Participez à un effort de normalisation linguistique. Il peut s'agir du comité ANSI C ++, ou il peut décider si votre style de codage local aura 2 ou 4 niveaux d'indentation d'espace. De toute façon, vous apprenez ce que les autres aiment dans une langue, à quel point ils le ressentent et peut-être même un peu pourquoi ils le ressentent.

  • Ayez le bon sens de quitter le plus rapidement possible l'effort de normalisation linguistique.


3

Je vous suggère de vous entraîner en écrivant efficacement des programmes fonctionnels. Prenez un plus gros projet une fois que vous pensez avoir les bases. Apprenez le cadre qt pour le développement de logiciels et continuez à pratiquer. La meilleure façon d'apprendre à programmer est d'écrire du code.

Je dirais que la lecture joue également un rôle important, vous pouvez rechercher une équipe de développeurs qui hébergent un projet open source (recherchez-en un sur github ou d'autres sites similaires) car ils pourraient vous offrir une précieuse expérience de développement d'équipe.


2

Parfois, des endroits comme sourceforge sont un peu intimidants au début. Une très belle façon de trouver quelque chose à faire est de parcourir les suiveurs de problèmes des projets et de trouver un bug / problème que vous aimez le son de la correction.

Sur certains projets Github à petite échelle, cela devient beaucoup plus accessible. Vous avez effectivement une direction et un but en essayant de grogner le code, au lieu de le parcourir aveuglément.


1

Les échantillons dans les livres ou les travaux à l'université sont de bons points de départ pour comprendre comment fonctionne la programmation et ils montrent les possibilités pour vos futurs projets.

Travailler sur de vrais projets

Mais sans une véritable expérience de projet, vous avez tendance à oublier les choses que vous avez apprises.

Les problèmes sont des occasions de montrer ce que vous pouvez

De plus, vous voyez dans un projet réel à quel point les exigences peuvent être complexes et vous avez du mal à résoudre les problèmes. Ces problèmes sont des occasions de montrer ce que vous pouvez. Vous pouvez voir vos côtés faibles que vous devriez améliorer.


-1

dois-je apprendre php, mySQL ou tout autre langage.

Oui monsieur, veuillez considérer les langues du World Wide Web. HTML5, CSS3 et JavaScript.

Voici pourquoi:

  1. Ils sont rapides à apprendre et de plus en plus riches à mettre en œuvre.

  2. Ils n'écrivent plus seulement sur le Web, mais aussi sur le système d'exploitation, le serveur et la base de données.

  3. Plus important encore *

    Ils sont maintenant utilisés pour redéfinir l'informatique 101 - par le créateur de jQuery, John Resig.

Ne tirez pas sur le messager, vérifiez simplement ce lien vers l'académie de l'école khan .

Les modèles de conception c / c ++ / c # y sont transférés vers JS.

J'espère que cela pourra aider.


+1 - Tellement mal que cela a été rejeté. Les informations sont valables. Le lien est crédible. La source est jQuery Genius John Resig - démarrer un cours de programmation 101 avec JavaScript, et cela fonctionnera. Découvrez Khan Academy. Votez pour le potentiel de faire progresser l'éducation; du moins. THX.
Jack Stone
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.