Comment améliorer mes compétences en codage? [fermé]

76

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

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

Le problème fondamental de mon université concerne les normes d’enseignement. Personne ne s'inquiète de l'enseignement des connaissances de codage aux étudiants, plutôt que des connaissances théoriques.

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

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

Quels sont les moyens possibles par lesquels je peux développer et développer mes compétences en programmation / codage?

Aussi, pouvez-vous suggérer les sources pour la même chose?

Édité : Sources suggérant le développement des compétences de codage.

ykombinator
la source
13
FYI: D'après mon expérience, les connaissances théoriques vous aideront certainement plus tard
Gopi
6
Pouvez-vous nager simplement en lisant le livre "Apprenez-vous à nager dans X jours"?
pramodc84
9
"Pratique délibérée". Faites quelque chose qui est légèrement plus difficile que votre niveau actuel, résolvez-le, apprenez-en, répétez.
7
@ pramodc84 Mais lire un livre sur la natation, puis sauter dans une rivière aidera certainement à sauter directement dans une rivière et essayer d'apprendre à nager
Gopi
5
C'est comme ça dans la plupart des universités. Un diplôme ne signifie pas être un bon codeur; il s'agit de connaître les théories sous-jacentes et de savoir comment les appliquer - vous pouvez dire qu'être un bon codeur est un exercice pour le diplômé.
configurateur

Réponses:

46

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

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

P Shved
la source
8
Code Complete est une bonne lecture - c'est le livre que j'aurais le plus aimé lire lorsque je suis sortie de l'université en tant que programmeur.
glenatron
2
Maintenant, ce livre est sur ma must-readliste. :) Merci!
Ykombinator
2
@ykombinator:(push 'code-complete must-read)
Giorgio
98

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

J'entends, je sais. Je vois, je m'en souviens. Je comprends, je comprends.

Toutes les connaissances que j'ai acquises provenaient de l'application d'une stratégie unique:

Prenez toujours le chemin le plus difficile.

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

Vous voulez apprendre l'italien? Allez-y avec un dictionnaire anglais / italien et parlez italien

Vous voulez apprendre le codage? Code!


la source
19
+1 pour toujours prendre le chemin le plus difficile. Finalement, ils deviennent un chemin facile! Bonne réponse.
Ryan Hayes
3
Vous lancer dans un défi peut sembler une tâche décourageante, mais j'estime qu'il en découle une motivation pour réussir. Très bonne réponse. Les langues que je connais le mieux sont celles avec lesquelles j'ai plongé la tête la première, sans le moindre indice et que j'apprenais continuellement à chaque projet.
Chris
2
J'ai changé le plus durement par le plus challending. C'est plus positif
2
Une bonne programmation n'est pas un sport de spectateur.
Incognito
4
@Pierre, vous voulez apprendre 1) le latin et 2) le Perl. Code Perl en latin: csse.monash.edu.au/~damian/papers/HTML/Perligata.html
21

Coder est un bon conseil, mais sans quelqu'un pour vous donner votre avis, vous ne ferez que répéter vos erreurs. Trouvez un emploi, travaillez sur un projet open source, trouvez un mentor et demandez-leur de regarder votre code.

JeffO
la source
1
Exactement! C'est un bon point. Je n'ai probablement pas de mentor pour l'instant.
Ykombinator
4
Écrivez du code et postez-le avec une question spécifique sur StackOverflow.com et vous en obtiendrez beaucoup.
JeffO
2
C'est pourquoi je n'arrête pas de me plaindre d'avoir des critiques de code sur notre projet, mais "nous n'avons pas le temps pour ça."
MetalMikester
1
@ MetalMikester - mais il y a toujours du temps pour le refaire.
JeffO
1
@ JeffO C'est exactement ce qui se passe maintenant. :(
MetalMikester
10

Voici une présentation de Dan North et de QCon expliquant comment passer du programmeur débutant au programmeur expert appelée Sharpening the Tools . Vous trouverez ci-dessous les principales suggestions de la présentation:

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

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 intéressantes tirées 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, le seul moyen d'améliorer vos compétences de codage est de le faire. Obtenez votre main sale avec de gros projets. Mais pour les gros programmes, il est encore plus important de maîtriser 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, la compétence que vous devez maîtriser est de basculer entre ces deux niveaux d’abstraction.

En outre, la vitesse avec laquelle vous pouvez écrire le nombre de lignes de code que vous pouvez écrire à l'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 comment construire rapidement un système de grande taille ". Il n’est pas difficile de construire rapidement de grands systèmes: plus vous les construisez rapidement, plus ils grossissent! "

DL
la source
5

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

Ce type de logiciel couvre

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

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

Un inconvénient est que, dans mon travail quotidien, je travaille sur des systèmes financiers et il y a un énorme chevauchement entre les éléments à prendre en compte lors de l'écriture d'un jeu de hasard multijoueur et d'un système commercial.

sal
la source
4
  • Sélectionnez les bons projets opensource 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 rien en utilisant votre technologie préférée. que diriez-vous de twitter à Django?
    • Si vous aimez le développement d'applications de bureau, commencez avec un bloc-notes et improvisez-le pour prendre en charge des fonctionnalités avancées (recherches basées sur les expressions rationnelles, pour commencer).
Amarghosh
la source
4

Pensez-y comme cela ... Tiger Woods n'a pas réussi à être "le meilleur" golfeur en regardant le golf ou en lisant à ce sujet. Il a obtenu ce résultat, comme tout autre athlète, en étudiant, en pratiquant, en trouvant où il pourrait améliorer son jeu et en y apportant quelque chose.

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

Muad'Dib
la source
Oui, Tiger Woods peut devenir le "meilleur" golfeur en ayant beaucoup d’amoureux. :-) Donc, il n'est pas vraiment un bon exemple.
DL
4

Comme dans toute autre activité humaine, le meilleur moyen de progresser est de mettre en pratique vos connaissances, mais vous aurez besoin d'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 coup d'œil: http://codekata.pragprog.com/

jmservera
la source
4

Sautez dans l’eau, il fera peut-être froid au début et vous serez tenté de sortir, mais votre corps s’y habituera et redeviendra chaud et, à mesure que vous vous sentirez à l’aise dans l’eau, vous pourrez ensuite nager dans les environs. limite.

Je viens de terminer mes études universitaires il y a quelques mois, où j'ai étudié Java. Même que vous, je n'avais pas la moindre idée sur la manière 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 accablant au début, mais en pratiquant, cela devient naturel. J'ai même écrit l'application à plusieurs reprises, chaque fois en la simplifiant encore plus. Maintenant, je travaille sur l’application à partir de rien, mais cette fois, j’imagine comment le faire objectivement et en utilisant PEAR et son module quickform, qui est un autre obstacle que je dois franchir, mais qui est néanmoins déterminé et enthousiaste.

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

Jonathan
la source
3

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

Vous pouvez également lire la référence de syntaxe de langage s’il en existe une bonne qui couvre la version la plus récente. À titre d'exemple, voici la référence C # (pas la version en haut. J'ai commis l'erreur en regardant une version plus populaire plus ancienne qui n'avait pas la syntaxe que je recherchais)


la source
3

Le consensus général est "écrire plus de code", avec lequel je suis d'accord, mais j'ajouterai à ce conseil que vous devriez écrire beaucoup de types de code différents. En ce qui concerne les langues, Java convient, mais vous devez absolument écrire du code dans le spectre de puissance. En plus de Java, je suggèrerais de faire quelques petits projets dans un langage de niveau inférieur (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 se familiarisent au moins avec la lecture d’un langage d’assemblage.

Choisissez également une variété de types de programmes que vous implémentez. Examinez au moins l'implémentation d'une interface utilisateur graphique de bureau, d'une application Web enrichie, d'un serveur et d'un client réseau, d'un pilote, d'un utilitaire de conversion de données, d'un traceur de rayons et d'une simulation physique.

Tous les projets doivent avoir une portée relativement petite, l’objectif n’est pas d’avoir un programme complet, mais d’avoir 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 des bases de code volumineuses, traitant de projets à terme, et travailler avec d'autres développeurs.

Cercerilla
la source
2

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 intéresse vraiment ou qui vous intéresse et allez simplement le mettre en œuvre. Si vous aimez les jeux, écrivez un jeu. Si vous êtes intéressé par le Web, créez un site Web intéressant et original. Vous ne réussirez peut-être pas à le finir, mais l'expérience vous en apprendra beaucoup.
  2. Choisissez un projet open source que vous trouvez intéressant et impliquez-vous dessus. Apprenez du code existant et utilisez-le pour corriger les bogues, construire 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 votre implication dans les communautés de programmation à mesure que vous apprenez et devez poser des questions pour en tirer le meilleur parti. Vous allez faire beaucoup d'erreurs. C'est bien. Si vous cessez de faire des erreurs, vous avez arrêté d'apprendre et vous devez trouver un nouveau moyen de vous remettre en question.

glénatron
la source
2

Mes suggestions

  • Recherchez un projet animal 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. Examinez d’autres projets similaires et essayez d’obtenir la parité des fonctionnalités avec eux. Vous pouvez y aller lentement et avoir des objectifs modestes, augmentant régulièrement votre niveau de difficulté avec de nouvelles fonctionnalités. Cela devient également votre pièce de théâtre lorsque vous allez pour un entretien d'embauche.
  • Trouvez, dans votre projet, des utilisations pour des technologies pertinentes telles que les services Web, javascript, ajax, géocodage et, en gros, tout ce qui progresse dans le monde des logiciels.
  • Jouez avec d'autres systèmes d'exploitation tels que Linux / FreeBSD. Plus vous serez exposé à différents types de systèmes, plus vous comprendrez comment ils ont réfléchi et pourquoi ils ont agi de la manière qu'ils ont faite.
  • Lorsque vous en avez terminé avec certaines parties de votre code, revenez-y et essayez de l'améliorer constamment. Trouvez des inefficacités, ajoutez d'autres commentaires si nécessaire, essayez de les perfectionner.
  • Creusez sur c2.com. Il y a beaucoup de bonnes pratiques de codage. Apprenez-les et essayez de les appliquer à votre propre projet.
  • Lire des livres comme le programmeur pragmatique et le code complet, ils vous donneront la connaissance de la programmation éprouvée.
  • Cela peut sembler sans rapport, mais trouvez un autre loisir technique si vous n'en avez pas déjà une comme les voitures de course, jouer d'un instrument de musique ou apprendre une langue étrangère. Plus vous utiliserez de morceaux de votre cerveau, mieux ce sera, et vous aurez besoin de vous détendre de temps en temps car la programmation peut en devenir trop.
Tjaart
la source
2

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

manquantfaktor
la source
1

"Entraine toi!" C'est 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'ascenseurs, 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.

Ming-Tang
la source
1

Oui, la pratique est extrêmement importante pour développer des compétences en programmation et les maintenir précises. Cependant, la pratique seule ne vous mènera que jusqu'à présent. Vous devez également apprendre de personnes qui en savent plus que vous. Il existe des techniques dont vous n'avez jamais entendu parler, des pratiques dont les avantages ne sont pas immédiatement évidents, et des astuces que vous ne pourriez jamais inventer vous-même.

La manière d'apprendre de nouvelles techniques, astuces et pratiques utiles est multiple. Lire des livres. Parlez à vos collègues. Poser des questions. Passez en revue le code des autres utilisateurs et demandez-leur de réviser le vôtre. Lire des blogs et des articles sur la programmation, y compris ce site. En bref, ne travaillez pas en vase clos.

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

Dima
la source
1

Je dirais que vous devriez vous renseigner 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 fin ultime des solutions de codage, mais ils montrent comment implémenter les concepts théoriques de la programmation orientée objet.

Tim Claason
la source
1

Je ne peux que suggérer la chose qui a fonctionné pour moi. J'avais rêvé d'apprendre le langage de programmation et de créer un moteur d'échecs avec celui-ci. Il me reste du temps pour des livres, des articles et de petits échantillons. J'ai donc décidé de vérifier les projets réels qui ont une meilleure documentation pour les développeurs. J'ai choisi un et j'ai commencé à lire le projet jour par jour. Ne pensez pas que les jours qui passent perdent du temps en lisant. C'est beaucoup 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 patiemment. Ne vous attendez pas à tout comprendre en une semaine.Vous devez garder votre faible estime de vous-même lorsque vous ne comprenez pas certaines choses.Il suffit d'essayer de découvrir comment cette chose géniale fonctionne et s'amuse.

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

Sang frais
la source