web-dev-qa-db-fra.com

Comment puis-je améliorer mes compétences en codage?

Voici quelques informations sur moi, avant de commencer par la question.

Je suis un étudiant en informatique, Java étant mon langage de codage principal.

Le problème de base dans mon université sont les normes d'enseignement. Personne ne se soucie de l'enseignement des connaissances de codage aux étudiants, plutôt que des connaissances théoriques.

L'effet étant, la plupart de mes camarades de collège ne comprennent pas du tout la programmation.

Même moi, je n'ai pas pu sortir de l'environnement de programmation traditionnel, ce qui limite mon codage dans une certaine mesure.

Quelles sont les façons possibles par lesquelles je peux développer et étendre mes compétences en programmation/codage.

Pouvez-vous également suggérer les sources de la même chose?

Modifié: Sources suggérant le développement de compétences en codage.

76
ykombinator

La programmation est l'un des domaines où l'expérience compte. Par conséquent, pour devenir un meilleur codeur, vous devez coder davantage. Cependant, l'écriture n'est pas la seule chose à faire. Vous devriez également lire le code d'autres développeurs et en apprendre ce qu'est un bon code. Reportez-vous à SO questions à ce sujet .

Vous pouvez également trouver des livres, spécifiquement consacrés au codage, utiles; tels que "Code complet". Ils contiennent des descriptions de ce qu'est un bon code qui, combiné à vos connaissances fondamentales, peut faire de vous un bon programmeur.

46
P Shved

Ma citation préférée est de Confucius:

J'entends, je sais. Je vois, je me souviens. Oui, je comprends.

Toutes les connaissances que j'ai acquises provenaient de l'application d'une seule et même stratégie:

Prenez toujours le chemin le plus difficile.

Vous voulez apprendre le C #? Obtenez un emploi en tant que développeur C #.

Tu veux apprendre l'italien? Allez-y avec un dictionnaire anglais/italien et parlez italien

Vous voulez apprendre le codage? Code!

98
user2567

Le codage est un excellent conseil, mais sans personne pour vous donner des commentaires, vous répéterez simplement vos erreurs. Trouvez un emploi, travaillez sur un projet open source, trouvez un mentor et demandez-lui de regarder votre code.

21
JeffO

Voici une présentation Dan North a donné et QCon sur comment passer du novice au programmeur expert appelé Sharpening the Tools . Voici les principales suggestions de la présentation:

  1. Pratiquez les bases: kata, code pour le plaisir ...
  2. Apprenez des autres: lisez des livres, des blogs, etc., lisez du code, programmez par paires ...
  3. Comprendre les tendances: ce qui se passe dans l'industrie maintenant
  4. Partager les connaissances: la meilleure façon d'apprendre quelque chose est de le comprendre et de l'enseigner
  5. Entretenez votre boîte à outils: utilisez des outils "intemporels" et nouveaux
  6. Apprenez à apprendre: comprenez comment fonctionne l'apprentissage
10
ysolik

Essayez d'écrire un compilateur pour un langage simple à partir de zéro. Vous améliorerez beaucoup vos compétences en cours de route (avec en prime quelques techniques théoriques de Nice issues de la théorie du langage formel). J'ai essayé d'écrire une version simple d'Excel, et c'est aussi un très bel exercice.

Comme d'autres l'ont dit, la seule façon d'améliorer vos compétences en codage est de le faire. Obtenez votre main sale avec de grands projets. Mais pour un programme volumineux, il est encore plus important que vous maîtrisiez les techniques de conception de logiciels, sinon la taille du programme semble ingérable.

Il y a une belle citation de Nate Kirby:

"Les mauvais programmeurs ignorent les détails. Les mauvais concepteurs se perdent dans les détails."

Donc, basculer entre ces deux niveaux d'abstraction est la compétence que vous devez maîtriser.

De plus, la vitesse du nombre de lignes de code que vous pouvez écrire par heure n'est pas ce que vous devriez viser. J'aime une citation de David Parnas :

"J'entends souvent les développeurs décrits comme" quelqu'un qui sait construire rapidement un grand système ". Il n'y a aucune astuce pour construire rapidement de grands systèmes. Plus vous les construisez rapidement, plus ils deviennent gros! "

8
D. L.

J'ai mis en place un pool de paris ou un jeu de baccara dans presque toutes les langues que j'ai apprises.

Ce type de logiciel couvre

  • Dates et heures, avec calculs
  • Types de devises et objets pouvant être convertis vers et depuis la devise
  • Un ensemble discret de règles faciles à tester
  • États, transition entre les États et plusieurs entités responsables de la transition des États
  • Plusieurs utilisateurs avec des vues différentes du même modèle
  • Conditions de fin multiples

Le blackjack et le poker à plusieurs joueurs fonctionneraient également.

Une mise en garde est que dans mon travail de jour, je travaille sur les systèmes financiers et il y a un énorme chevauchement entre les choses à considérer lors de l'écriture d'un jeu de hasard multijoueur et d'un système de trading.

5
sal
  • Sélectionnez de bons projets open source et lisez le code.
  • Prenez un projet de taille moyenne pour vous et commencez à coder
    • Si vous êtes intéressé par le développement Web, essayez de créer un site existant à partir de zéro en utilisant votre technologie préférée; que diriez-vous de Twitter dans django?
    • Si vous êtes dans le développement d'applications de bureau, commencez par un bloc-notes et improvisez-le pour prendre en charge des fonctionnalités avancées (recherches basées sur des expressions rationnelles, pour commencer).
4
Amarghosh

Sautez dans l'eau, il peut faire froid au début et vous serez tenté de sortir mais bientôt votre corps s'y habituera et se réchauffera à nouveau et lorsque vous vous sentirez à l'aise dans l'eau, vous pourrez ensuite nager peut-être entrer dans le limite.

Je viens de terminer mes études il y a quelques mois où j'ai étudié Java. Comme vous, je n'avais aucune idée de la façon de coder correctement. Il y a environ un mois, je voulais créer une application Web en PHP. Je ne savais pas ce que je faisais mais j'y suis allé. C'était intimidant et écrasant au début, mais au fur et à mesure que vous pratiquez, cela devient naturel. J'ai même écrit l'application plusieurs fois, à chaque fois en la simplifiant encore plus. Maintenant, je travaille sur l'application à partir de zéro, mais cette fois je trouve comment le faire orienté objet et en utilisant PEAR et sa forme rapide de module qui est un autre obstacle que je dois franchir mais déterminé et excité toutefois.

Alors, pratique. Sautez dans l'eau! Bonne chance :)

4
Jonathan

Pensez-y comme ça ... Tiger Woods n'est pas devenu le "meilleur" golfeur en regardant le golf ou en lisant à ce sujet. Il a réussi, comme tout autre athlète, en étudiant, en s'entraînant, en trouvant où il peut améliorer son jeu et en faisant quelque chose.

Le codage est le même. La meilleure façon de s'améliorer est d'étudier ce que font les autres, de comprendre POURQUOI ils le font de cette façon, puis de le faire vous-même.

4
Muad'Dib

Comme dans toute autre activité humaine, la meilleure façon de s'améliorer est de pratiquer vos connaissances, mais vous avez besoin de quelques exercices pour cela. Dave Thomas , l'un des auteurs du livre The Pragmatic Programmer, a présenté le concept de Code Katas , similaire au concept de kata dans les arts martiaux.

Vous pouvez y jeter un œil: http://codekata.pragprog.com/

4
jmservera

Je suggère d'apprendre toute la syntaxe de votre langue préférée. Comprendre comment utiliser les fonctions virtuelles, l'héritage, lambda si elles existent. etc. Une chose que j'ai faite a été de saisir une grande bibliothèque effrayante (je l'ai fait avec boost et STL pour C++) et de voir si chaque ligne et chaque mot clé ont du sens.

Ou bien vous pouvez lire la référence de la syntaxe du langage s'il y en a une bonne qui couvre la version la plus récente. Par exemple, voici la référence C # (Pas la version en haut. J'ai fait l'erreur en regardant une ancienne version plus populaire qui n'avait pas la syntaxe que je cherchais)

3
user2528

Le consensus général est "écrire plus de code", ce avec quoi je suis d'accord, mais j'ajouterai à ce conseil que vous devriez écrire beaucoup de différents types de code. Java est très bien en ce qui concerne les langages, mais vous devriez certainement écrire du code à la fois vers le haut et vers le bas du spectre de puissance. En plus de Java, je suggère de faire quelques petits projets à un niveau inférieur langage (C est un bon pour cela), un langage de script (je préfère Perl, mais python est également un bon choix), un langage fonctionnel (LISP est la recommandation générale ici, mais OCaml et Haskell sont également de bons choix), et au moins se familiariser avec la lecture d'une langue d'assemblage.

Choisissez également une variété de types de programmes que vous implémentez. Envisagez d'implémenter au moins une interface graphique de bureau, une application Web riche, un client et un serveur réseau, un pilote, un utilitaire de transfert de données, un traceur de rayons et une simulation physique.

Tous les projets devraient être de portée relativement petite, l'objectif n'est pas d'avoir un programme complet, mais d'acquérir une vaste expérience dans les différents domaines que vous pourriez rencontrer, d'apprendre les différents types de réflexion nécessaires pour chacun, et pour savoir où sont vos intérêts.

Une fois que vous avez fait cela, vous aurez une bonne idée du type de programmation qui vous intéresse le plus et vous pouvez trouver ou démarrer un projet open source pour acquérir de l'expérience en travaillant sur de grandes bases de code, traitant de projets à long terme, et travailler avec d'autres développeurs.

3
Cercerilla

Vous obtenez quelques réponses similaires et les miennes seront également les mêmes. Écrivez le code. Il y a deux bonnes façons de le faire.

  1. Choisissez quelque chose qui vous plaît vraiment ou qui vous intéresse et essayez de le mettre en œuvre. Si vous aimez les jeux, écrivez un jeu. Si vous êtes intéressé par les trucs Web, montez un site Web intéressant et original. Vous ne réussirez peut-être même pas à le terminer, mais l'expérience vous en apprendra beaucoup.
  2. Choisissez un projet open source que vous trouvez intéressant et impliquez-vous. Apprenez du code existant et utilisez-le pour corriger des bogues, créer des tests unitaires et implémenter de nouvelles fonctionnalités.

L'un ou l'autre vous donnera l'expérience directe de la programmation dont vous avez besoin ainsi que la participation dans les communautés de programmation au fur et à mesure que vous apprenez et devez poser des questions pour en tirer le meilleur parti. Vous ferez de nombreuses erreurs. C'est bien - si vous cessez de faire des erreurs, vous avez arrêté d'apprendre et vous devez trouver une nouvelle façon de vous mettre au défi.

2
glenatron

Mes suggestions

  • Trouvez un projet pour animaux de compagnie et écrivez-le dans une autre langue (lyke python/c #) que celle que vous connaissez. Cela vous en apprendra plus que vous ne pouvez l'imaginer. Regardez d'autres projets similaires et essayez d'obtenir la parité des fonctionnalités avec eux. Vous pouvez aller lentement avec cela et avoir des objectifs modestes, augmentant régulièrement votre niveau de difficulté avec de nouvelles fonctionnalités. Cela devient également votre spectacle lorsque vous vous rendez pour un entretien d'embauche.
  • Trouvez des utilisations dans votre projet pour des technologies pertinentes comme les services Web, javascript, ajax, le géocodage et essentiellement tout ce qui fait des progrès dans le monde du logiciel.
  • Jouez avec d'autres systèmes d'exploitation comme Linux/freebsd. Plus vous serez exposé à différents types de systèmes, plus vous comprendrez la pensée qui les anime et pourquoi ils ont fait les choses comme ils l'ont fait.
  • Lorsque vous avez terminé avec des parties de votre code, retournez-y et essayez de l'améliorer constamment. Trouvez les inefficacités, ajoutez plus de commentaires si nécessaire, essayez de le perfectionner.
  • Creusez sur c2.com. Il existe de nombreuses bonnes pratiques de codage. Apprenez-les et essayez de les appliquer dans votre propre projet.
  • Lisez des livres comme le programmeur pragmatique et le code complet, ils vous donneront la connaissance de la programmation renforcée.
  • Cela peut sembler sans rapport, mais trouvez un autre passe-temps technique si vous n'en avez pas déjà un comme les voitures de course RC, jouer d'un instrument de musique ou apprendre une langue étrangère. Plus vous utilisez de morceaux de cerveau, mieux c'est, et vous devez vous détendre de temps en temps car la programmation peut devenir trop lourde.
2
Tjaart

Les évaluations par les pairs aident vraiment à améliorer la qualité de votre code. Si vous n'avez pas de véritable mentor, vous pouvez publier votre code [après l'avoir réduit au minimum nécessaire] sur StackOverflow ou RefactorMyCode ou sur des listes de diffusion et les gens vous aideront à améliorer la qualité de votre code.

2
missingfaktor

Oui, la pratique est extrêmement importante pour développer des compétences en programmation et pour les garder affûtées. Mais la pratique seule ne vous mènera que si loin. Vous devez également apprendre de personnes qui en savent plus que vous. Il y a des techniques dont vous n'avez jamais entendu parler, des pratiques dont les bénéfices ne sont pas immédiatement évidents, et des astuces que vous ne pourriez jamais vous inventer.

Les moyens d'apprendre de nouvelles techniques, des astuces et des pratiques utiles sont nombreux. Lire des livres. Parlez à des collègues. Poser des questions. Examinez le code des autres et demandez-leur de réviser le vôtre. Lisez des blogs et des articles sur la programmation, y compris ce site. Bref, ne travaillez pas en vase clos.

Oh, et si vous n'êtes pas sûr de ce que signifie NP-complet, ou si la notation big-O vous fait peur, alors vous devriez probablement prendre une théorie des classes de calcul et d'algorithmes.

1
Dima

Je dirais que vous devriez lire sur les modèles de conception, tels que Builder, Factory, Composite et éventuellement Observer, Mediator et Flyweight. Les modèles de conception ne sont pas la solution ultime pour les solutions de codage, mais ils montrent comment implémenter les concepts théoriques de la programmation orientée objet.

1
Tim Claason

Je ne peux que suggérer ce qui a fonctionné pour moi. J'ai rêvé d'apprendre un langage de programmation et de créer un moteur d'échecs avec. J'ai laissé passer du temps sur des livres, des articles et de petits échantillons. J'ai donc décidé de vérifier de vrais projets qui ont une meilleure documentation pour le développeur. J'en ai choisi un et j'ai commencé à lire le projet jour après jour. Ne pensez pas que les jours qui passent perdent du temps à lire. C'est bien mieux que de passer du temps à lire des articles et des livres. Vous rencontrerez beaucoup de choses qui ne sont pas claires à première vue, mais cela changera de jour en jour si vous essayez de faire des recherches avec patience. Ne vous attendez pas à tout comprendre en une semaine. Vous devez garder votre faible estime de soi lorsque vous ne comprenez pas certaines choses. Essayez simplement de découvrir comment cette chose géniale * ucking fonctionne et apprécie.

Choisissez un projet existant qui vous passionne, commencez à lire les codes, déboguez-le et essayez de comprendre comment les choses fonctionnent au quotidien. Utilisez également le projet pour vous-même. Ensuite, commencez à ajouter certaines fonctionnalités que vous souhaitez. Essayez même d'écrire une application identique ou similaire.

1
Freshblood

"Entraine toi!" Voilà un cliché.

Vous devriez revoir ce que vous avez appris dans les cours de mathématiques et créer des programmes qui traitent des problèmes. En outre, implémentez un programme d'ascenseur, un distributeur automatique (qui calcule les changements de pièces), pour affiner vos compétences logiques. Pensez à tout dans la vie quotidienne et mettez-les en œuvre.

1
Ming-Tang