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.
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.
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!
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.
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:
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! "
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
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.
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 :)
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.
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/
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)
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.
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.
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.
Mes suggestions
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.
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.
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.
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.
"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.