J'ai codé depuis mes années d'adolescence précoce. J'ai commencé avec HTML, continua à PHP / MySQL (créé mes propres forums, sites de réseautage social, etc.), puis ramifié dans des langages plus traditionnels tels que Java et C ++ (également ramassé un peu VB .NET en hauteur l'école). Je connais le plus maintenant avec C ++, car c'est la langue de choix qui nous a enseignée dans l'informatique Science II (SCI IP SCI I) à la RPI. Je me sens maintenant comme si j'ai une très bonne connaissance de la façon de programmer de cette classe (les devoirs étaient brutaux). p>
C'est maintenant l'été et je suis interringue dans une entreprise qui me fournit un niveau de nouvelles expériences avec la programmation, mais j'en veux plus. Je tiens à sentir l'incroyable satisfaction que je suis sorti de mes cours d'informatique à RPI chaque fois que j'ai terminé une longue affectation (générer tous les tersiers possibles d'un ensemble de mots à inclure et à exclure vous vient à l'esprit). P>
Ma question est, où est-ce que je vais d'ici? J'ai essayé de suivre un tutoriel en ligne, mais ils étaient tous trop simples. J'ai ensuite essayé de vous diriger vers Sourceforge et d'aider avec divers projets. Mais, dès que j'ai téléchargé le code, je me suis perdu dans sa complexité. Je n'ai jamais créé un logiciel d'une échelle applicable de vie réelle. Et je ne sais pas où commencer. Comment transition des connaissances de programmation pour activer la création de logiciels? P>
Je suis également ouvert à l'apprentissage de nouvelles langues (JavaScript / JQuery, ASP .NET, C #, Python) ou à l'aide de nouvelles bibliothèques et / ou de frameworks avec C ++ (nous avons utilisé uniquement la STL dans Comp SCI II) et d'autres langues . Encore une fois ma question est, où est-ce que je vais d'ici? Et je suis bienvenu à toutes les réponses possibles. P>
Merci beaucoup, Michael p>
17 Réponses :
Vous pouvez rejoindre un grand projet open source, vous apprendrez beaucoup et accomplir quelque chose de cool. P>
modifier strong> après commentaire em>: Si cela est trop compliqué pour vous, essayez de démarrer un projet "réel". Je dis "réel" parce que cela devrait être quelque chose que vous voulez faire, pas un "Créer un blog" ou "Comment faire une boucle". Par exemple, l'année dernière, j'ai créé un système de gestion de projet entièrement fonctionnel que j'utilise maintenant pour certains de mes projets. Si cela est réel, vous serez plus motivé et vous voudrez vous faire faire. P>
Choisissez la technologie que vous voulez pour cela. Je recommanderais ruby sur les rails car il est génial et plein de concepts intéressants qui amélioreront la façon dont vous codez les heures supplémentaires (sec , Reposant, mvc ...) ... mais vous pouvez choisir ce que vous voulez. P>
Essayez de créer votre projet en utilisant ce que vous connaissez et des tutoriels de base. Vous serez coincé et devrez apprendre d'autres pour obtenir les fonctionnalités que vous souhaitez aller. Pour moi, c'est le meilleur moyen d'améliorer votre façon de coder et de programmer des connaissances générales. P>
Depuis que vous allez commencer le projet à partir de zéro, vous verrez où commencer et comment cela va évoluer. Je prendrai l'outil de gestion de projet. Nous avons commencé avec "un projet contient des TODOS" et nous avons fini par toutes sortes d'autres fonctionnalités telles qu'un calendrier complexe, une interface AJAX complète, une chatte intégrée ... P>
Une fois que vous avez vu ce que vous avez fait cela, essayez de faire de même avec un ami à vous de faire votre fuite de travail d'équipe dans le développement. Apprenez à utiliser svn, basocamp ... En savoir plus sur Processus de développement de logiciels ( agile !), programmation par pairs .. p>
Il y a beaucoup à vivre! Ensuite, vous pourriez donner une autre source ouverte un autre essai. P>
espoir que cela aide p>
J'ai essayé cela et j'aime que j'ai dit rapidement se perdait simplement dans la taille du code. Je n'ai jamais créé de projet plus grand que 5 ou deux fichiers. Je regarde ensuite un projet sur Sourceforge et ils ont plus de dossiers que mes projets ont eu des fichiers. Je n'avais aucune idée de l'endroit où commencer à comprendre le code de moi.
J'ai édité ma réponse, espérons que cela aide plus
Merci pour votre exemple. Vous avez commencé mon esprit sur de nombreuses pistes ici et je pense que je commence à voir comment je peux continuer ici. Vous avez recommandé d'apprendre une nouvelle technologie ce projet. N'est-ce pas trop à la fois? Y a-t-il une chute de chute à l'aide, disons C ++, quelque chose que je suis bien versé pour commencer mon projet?
Tout est à propos de ce que vous voulez faire. Je suis plus dans Web Technologies que les applications de bureau ... Apprendre une nouvelle technologie est toujours agréable, mais si vous avez envie de travailler trop de travail, il suffit de vous concentrer sur ce que vous savez pour l'instant et concentrez-vous sur l'apprentissage de la gestion d'un grand projet.
Oui, j'aime cette réponse, avant de commencer à travailler en tant que programmeur, j'ai formé des programmes qui m'aident dans mon calcul quotidien tel qu'un programme de gestion des tâches, un programme qui conserve tous mes contacts, un programme qui affiche des informations météorologiques et de petites choses comme cette
Je recommanderais d'essayer une langue fonctionnelle pure, telle que Haskell. C'est une façon complètement différente de regarder la programmation et je l'ai trouvé très em> satisfaisant. P>
Je recommande le livre Real World Haskell pour l'apprendre. p>
Edit: En réponse aux commentaires, mon interprétation de la question est celle où peut-il partir d'ici comme programmeur. La programmation fonctionnelle est une direction logique. Pour que quelqu'un apprenne la programmation fonctionnelle pour la première fois, Haskell est bien, car il ne permet pas vraiment de pratiques de programmation impératives. En outre, il dispose essentiellement de toutes les fonctionnalités que vous trouverez dans d'autres langues fonctionnelles, ce qui signifie qu'il sera facile de récupérer d'autres langues fonctionnelles. P>
Je ne doute pas de l'utilité de Haskell dans des applications du monde réel, mais l'apprentissage de Haskell semble être une recommandation très étrange de quelqu'un qui tente d'apprendre à construire un logiciel mondial réel, par opposition à l'apprentissage d'une autre langue.
La connaissance de F # est probablement plus utile pour «les choses du monde réel.
La connaissance de la programmation fonctionnelle de tout type est utile, simplement parce qu'elle élargit votre boîte à outils. Le sujet de programmation fonctionnelle que j'ai pris à l'université m'a probablement aidé plus de 10 autres sujets.
Vous devez trouver un type particulier de fonctionnalités qui vous intéresse. Pour moi, il s'agit d'une programmation de la prise de base et de mes propres protocoles. J'ai reçu ce sentiment lorsque j'ai pu créer un contrôle de téléchargement de fichier fonctionnel qui a fonctionné conjointement avec un service de téléchargement de fichier sur le serveur que j'ai créé. Le protocole gère l'authentification, le chunking et la comparaison de hasch. Peu de temps, je prévois également d'incorporer une fonctionnalité de CV-reprend. P>
Je suggérerais de regarder Project Euler . C'est un moyen formidable et amusant d'apprendre une nouvelle langue et fournit ce niveau de satisfaction lorsque vous résolvez les problèmes. Ils offrent une vaste gamme de problèmes à tous les niveaux de difficulté. P>
C'est un excellent site! Merci pour la contribution. J'ai participé à une compétition de programmation accueillie à mon collège et ils avaient de nombreux problèmes algorithmiques similiaires à cela. J'aime toujours y retourner et faire ceux-ci, mais ce n'est plus ce que je cherche. Je veux commencer à faire des choses sur une grande échelle de vie plus réelle, je ne sais tout simplement pas où commencer sur ce chemin.
Eh bien, mon conseil sera de trouver un problème / projet qui vous intéresse et essaie de le coder. Essayer d'un vrai problème est quelque chose qui vous conduit. Trouvez quelque chose de ne pas trop complexe mais pas trop simple. Quelque chose à essayer lors du démarrage d'une nouvelle langue consiste à écrire des outils. Vous pouvez par exemple programmer un script Python qui imprime des métriques sur un projet C ++. Vous pouvez écrire un outil qui extrait des statistiques d'un site Web que vous utilisez, etc. Lorsque j'apprends que la programmation de programmation est très amusante (j'étais jeune :-)). Vous pouvez essayer de programmer un jeu simple à l'aide d'un moteur 3D comme ogre3d par exemple. Participer à un projet OpenSource est super aussi, mais comme vous l'avez dit peut-être un peu écrasant pour le moment; -) P>
Trouvez quelque chose que vous aimez et qui a un objectif utile réel pour vous. Vous allez prospérer pour résoudre le problème et apprendre beaucoup le long du chemin! P>
Je pense que le meilleur moyen d'améliorer vos compétences en tant que programmeur est de faire quelle émission était destinée à: résoudre des problèmes. Je suis sûr que vous jouez sur votre machine et à une fois, pensez-vous à vous-même "J'aimerais qu'il y ait un programme qui a fait cela ..." ou "Je me demande s'il y a des programmes qui font x ..." Au lieu de simplement googler pour voir si quelqu'un d'autre l'a écrit, écrivez-le vous-même. Commencez avec quelque chose de petit, et progressivement le rendre plus complexe. Ajouter des fonctionnalités. Permettez-vous d'échouer et quand vous faites, demandez-vous à vous-même (ou à Stackoverflow) comment surmonter cet obstacle. Une fois que vous avez les bases de la programmation, tout le reste ne fait que faire de grandes choses sur des choses de plus petite, et les petites choses sont généralement assez faciles. P>
Lorsque vous faites quelque chose, vous savez que vous utiliserez réellement, c'est plus amusant et plus gratifiant lorsque vous avez terminé. P>
Je pense que la transition du type de problèmes traitables finis qui font partie des projets de classe (et certains stages) au "monde réel" est assez difficile. Cela ressemble à la syntaxe de langue, à la sortie de bugs du code, etc. est quelque chose que vous êtes confortable avec. P>
Lorsque nous arrivons à des projets plus importants, probablement avec de nombreux cycles de libération, les développeurs travaillant ensemble, différents types de problèmes émergent. Je me souviens d'être choqué quand j'ai vu mon premier grand plan de projet - à quoi rédigerait un petit contrôle du temps! P>
La chose que j'ai trouvée utile comme un junior était "assis par Nelly", j'ai eu la chance de travailler pour des employeurs éclairés qui m'ont mis avec des développeurs très expérimentés et utiles. Parfois travailler avec, parfois travailler à côté. Je pense que cela m'a aidé à remettre les obstacles que vous décrivez. P>
Donc, je pense que vous devez trouver un emploi de ce type. Être moins préoccupé par les technologies spécifiques, le salaire, etc. Regardez plutôt la culture et le niveau de responsabilité que vous auriez. p>
Comprenez-vous tous les éléments suivants et comment ils fonctionnent? P>
Si vous ne vous sentez pas complètement conversé dans aucun de ces éléments, prenez une classe dans les structures de données et les algorithmes. P>
Oui, je comprends tout ce qui précède. Il s'agit davantage de prendre cette connaissance de base maintenant pour créer des logiciels réels que je m'interroge sur.
@mcfreid: C'est génial; Ensuite, à l'abri des conseils standard "écrire plus de code", je voterai pour la suggestion de Marcgg de rejoindre un projet Open Source. Vous apprenez des choses spécifiques de travailler sur un grand projet, des règles relatives à la collaboration que vous n'obtiendrez pas dans une salle de classe; faire le faire pour l'apprécier.
On dirait que vous avez connu de nombreuses langues, mais n'a pas créé une application PS: la création de logiciels est beaucoup plus que de savoir simplement jouer avec une langue. P>
Où dois-je commencer à faire ça? Je ne sais pas où commencer.
Il suffit de faire une application que vous utiliseriez personnellement, même si cela existe déjà. Un lecteur RSS, un client de messagerie, un logiciel de blogging ...
Je pense que vous devriez vraiment commencer une "application du monde réel" comme suggéré ici. Vous verrez qu'un vrai projet nécessite un peu plus que de simplement connaître la langue. P>
Je vous suggère de trouver un problème simple que vous avez eu un problème et faites un logiciel qui résout ce problème. P>
Par exemple, si vous voulez une sorte de logiciel qui vérifie les flux RSS toutes les 5 minutes et rend un peu pop-up dès qu'un nouveau arrivé. Ou vous voulez un programme qui vous permettra de faire des présentations simples en faisant glisser quelques images dans. P>
Ensuite, tout ce que vous choisissez, commencez à faire la solution simple au problème et à étendre à partir de là (comme des paramètres différents, des fonctionnalités supplémentaires, etc.) P>
J'ai cherché la réponse à cette question pendant un moment maintenant. La plupart des suggestions sont généralement aidées à un projet open source ou à créer quelque chose qui vous intéresse. Je commence à comprendre que ces réponses sont vagues, car l'expérience "intéressante" ou "précieuse" et comment commencer à le faire est complètement subjective. En outre, il n'y a qu'une seule façon d'obtenir une réelle expérience, ce qui est de travailler sur de vrais projets. C'est difficile, mais trouve un projet, personnel, open source ou autrement qui augmentera vos connaissances dans une technologie ou une plate-forme que vous jugez tiendra votre intérêt. Ensuite, il suffit de creuser. Il n'est pas nécessaire d'être de la Terre de briser l'importance, juste de valeur par rapport à vos propres objectifs. p>
Consultez les modèles de conception. p>
Je crois que c'est au-delà de Mere Codage simple. P>
Vous pouvez offrir vos capacités à un but non lucratif ou à un ami ou à une personne qui a besoin d'un site Web ou d'un programme construit. P>
Dites-leur que vous pouvez le faire gratuitement, puis juste aller pour cela. Comme vous commencez à le faire, vous commencerez à voir ce que vous devez apprendre. P>
Par exemple il y a un peu, j'ai eu le programme Peelw www.getpeel.com sur mon Mac. Mais vendu mon mac pour le vent alors que je voyage. P>
Voir qu'il n'y avait rien pour Windows (ou rien que je puisse trouver) comme Peel. Je construis le mien en PHP et je suis à la 4ème reconstruction de cela, car j'apprends les moyens de faire chaque nouvelle chose que j'apprends. P>
Il n'y a pas de transition de balle magique des programmes de résolution de puzzle académique aux applications du monde réel. La meilleure façon d'apprendre est juste de sauter en première tête. Il vous faudra très longtemps pour apprendre ce dont vous avez besoin si vous ne regardez jamais votre propre code. Vous devez regarder le code écrit par des professionnels et avoir du mal à comprendre pourquoi cela fonctionne comme ça jusqu'à ce que vous le comprenez. P>
Cela semble écrasant au début, mais vous commencerez rapidement à voir des modèles si l'application est du tout logique. Le code bien écrit sera séparé de manière logique, de sorte que vous devriez pouvoir la choisir une couche à la fois. P>
Par exemple, vous pouvez essayer une approche ascendante sur laquelle vous essayez de comprendre comment les interactions de la base de données sont traitées avant d'examiner le code qui utilise le calque de base de données. Vous continuez à monter jusqu'à ce que vous arriviez aux manipulateurs d'événements de l'interface graphique. P>
Les applications de grande entreprise peuvent être encore plus difficiles à comprendre car il pourrait y avoir beaucoup plus d'un exécutable ou d'un composant. Essayez de rester concentré et d'apprendre ce que le composant est responsable de la faire, puis de la choisir une pièce à la fois. P>
Vous verrez qu'il n'y a pas que des modèles au niveau de la fonction et de la classe, mais à des niveaux plus élevés. Cela rend plus simple à comprendre ce qui se passe lorsque vous comprenez ces modèles. P>
Essayez de trouver un stage ou une position coopérative. J'étais dans une situation similaire après mes premiers cours. J'ai pris une position de vocopore Année de deuxième année et j'ai appris tellement plus sur le tas que j'ai fait en classe. La classe est idéale pour vous enseigner la théorie et les bases. J'ai appris C # sur mon premier projet sur ma coopérative et cela m'a eu ma deuxième position coopérative chez un autre employeur (voulait voir comment elle travaillait dans une petite entreprise). p>
Ce printemps passé, j'ai accepté une position à mon premier employeur coopératif, retravailler mon premier projet majeur que j'avais commencé sur ma coopérative. J'ai une liste de projets latéraux que je souhaite également compléter, ce qui aidera à compléter mes compétences, ainsi que d'apprendre d'autres langues. P>
Donc, ma suggestion est essaie de trouver un emploi où vous pouvez avoir un grand mentor. Lors de ma deuxième coopérative, j'ai appris beaucoup les normes de codage que je code contre mon superviseur. Il était un excellent professeur et avait vraiment eu de la bonne contribution et a expliqué pourquoi les choses devraient être faites certaines manières. p>
Vous irez presque certainement nulle part à moins que vous ne trouviez quelque chose qui vous intéresse. Déterminez ce qui est intéressant, puis comment écrire des logiciels en impliquant. P>
Le seul moyen de commencer est de commencer! Il n'y a vraiment pas d'autre moyen ... Les meilleures réponses que vous obtenez voudraient toujours vous dire cela. Vous avez la connaissance, maintenant le mettre au travail! P>