Je suis un lycéen de 16 ans, passionné de programmation informatique. Je suis en 11e année et je l'apprends dans le cadre du programme scolaire depuis environ 8 mois. Je suis allé au-delà de ce qui est enseigné à l'école et j'ai rédigé quelques applications (assez bonnes). Le langage dans lequel je programme est C++, sur la plate-forme Windows. Finalement, j'aimerais me spécialiser en CS dans une bonne université, puis travailler en tant que programmeur.
Les questions spécifiques que j'ai sont:
J'ai essayé d'être aussi objectif que possible.
Si tout cela était tl; dr: Quelle est la meilleure façon de se faire remarquer en tant que jeune programmeur?
Edit: Je ne cherche pas à être embauché directement après l'école secondaire Le but n'est pas d'impressionner la communauté en tant que programmeur professionnel. C'est dans l'intention des applications universitaires où le fait que votre travail soit vu et critiqué par d'autres personnes améliorera votre application. Je ne cherche pas à gagner de l'argent avec ce que j'ai écrit (jusqu'à présent).
Je voudrais vous donner un avertissement et quelques suggestions.
Avertissements:
Ne surestimez pas vos connaissances: en ce moment, je peux supposer que vous en savez assez pour écrire une application simple et plus que ce qui est réellement enseigné en classe. Mais cela ne fait pas de vous un "programmeur professionnel"; cela peut faire de vous un "pigiste" tout au plus.
Ne sous-estimez pas la valeur de ce qui est enseigné à l'école. Même si quelque chose peut vous sembler évident, étudiez-le également: vous verrez de "nouveaux aspects" (je serai plus clair plus tard) au fur et à mesure.
Suggestions:
Les applications professionnelles ont un cycle de vie typique de 3 à 5 ans et nécessitent des milliers (jusqu'à des millions) d'heures de travail. Ils ne peuvent pas être déployés par un développeur seul. Les programmeurs professionnels doivent travailler avec les autres. Ce n'est pas seulement une question de bonne connaissance des outils (comme les langages, les IDE etc.) mais aussi des techniques, des méthodes et des idiomes.
Alors que les outils peuvent être enseignés par des échantillons formels et des exercices, les techniques et les expressions idiomatiques ne peuvent être "décrites" que. Pour les "apprendre", vous devez en faire l'expérience et partager l'expérience avec les autres. Ils sont continuellement inventés et améliorés.
Les entreprises, lors de l'embauche à l'école, vérifient votre compréhension des outils et votre capacité avec les techniques de base, mais - le plus important - testez votre capacité à apprendre rapidement de nouvelles choses et à "capturer le travail" selon les besoins.
Lors de l'embauche de personnes expérimentées, ils regardent combien de choses ils ont faites et quelle expérience ils en ont tirée.
Morale:
Si vous voulez être plus "évalué", apprenez à travailler avec les autres, en participant aux problèmes des autres (comme sur stackoverflow ) ou ouvrez des projets (comme sur sourceforge )
Aussi, ne soyez pas trop rapide pour demander de l'argent; divisez votre "production de code" en "quelque chose à partager" et "quelque chose à vendre". Ce que vous pouvez partager peut être utilisé par d'autres, mais peut également attirer la participation d'autres personnes pour étendre le projet initial. Ce que vous pouvez vendre, c'est ce qui rend votre application "unique" par rapport à d'autres projets similaires, ce qui en fait un véritable produit commercial.
Pour partager du code avec d'autres personnes, vous pouvez vous référer au site codeproject ou sourceforge . Leur évaluation donne également une idée de l'intérêt de ce que vous avez fait pour les autres.
Avez-vous pensé à créer des projets open source pour les applications que vous avez écrites et à les héberger en ligne? SourceForge.net ou GitHub.com sont de bons hôtes de projet open source. Cela vous aidera à gagner en visibilité pour vos applications.
Tout d'abord, soyons clairs: la plupart des 16 programmeurs YO n'impressionneront pas vraiment la communauté.
Il y a une raison à cela à mon avis. Être un bon programmeur ne dépend pas seulement des compétences en programmation. Comme vous l'espérez, pendant votre majeure CS, la programmation n'est qu'un sous-ensemble de l'informatique, et la plupart des personnes qui remportent des prix (des prix académiques au moins) le feront l'ont fait parce qu'ils ont prouvé quelque chose de nouveau (un nouveau théorème par exemple), ou ont découvert une nouvelle façon de réaliser une sorte de tâche (modèles de conception). Pour ce faire, vous devez (au moins):
Si vous sentez que vous avez déjà maîtrisé tout cela, alors oui, vous impressionnerez probablement la communauté.
Vous pouvez toujours essayer de contribuer à un projet open-source, mais vous pourriez également être assez surpris de voir combien vous devez rattraper avant de pouvoir réellement contribuer.
Enfin, jetez un œil sur StackOverflow et voyez combien vous pouvez y répondre dans votre langue préférée ... vous aurez un bon proxy de votre niveau.
Essayez d'obtenir une très bonne réputation sur Stack Overflow. Presque le même sujet a été discuté ici:
ne réputation élevée dans Stack Overflow aidera-t-elle à obtenir un bon travail?
Quelques choses que vous voudrez peut-être essayer:
Je vais continuer réponse de Bernard et ajouter un peu plus. Il y a tellement de projets OSS qu'il peut être difficile de se faire remarquer à moins de créer un projet populaire, ce qui ne sera pas facile pour un programmeur débutant.
En supposant que vous essayez de vous faire remarquer dans la communauté de la programmation, je suggère de publier des modules complémentaires (OSS ou source fermée) pour les outils que les programmeurs utilisent. Imaginez passer un entretien d'embauche et pouvoir dire que l'entreprise utilise déjà le logiciel que vous avez écrit. De nombreux outils de développement ont des API pour créer des modules complémentaires et plusieurs "App Stores" hôtes, où vous pouvez obtenir une certaine exposition pour votre outil sans trop vous soucier de le commercialiser.
Voici quelques exemples du haut de ma tête:
Selon l'outil que vous choisissez, vous pouvez cibler l'enclave spécifique de la communauté de programmation par laquelle vous souhaitez vous faire remarquer.
J'ai ici un point de vue légèrement différent.
Si vous voulez faire remarquer votre logiciel, le meilleur moyen est de le faire utiliser. Bien que Bill Gates et Mark Zuckerberg soient d'excellents jeunes programmeurs, il y avait beaucoup de meilleurs programmeurs. Mais ces deux messieurs ont eu beaucoup de monde pour utiliser leurs produits et sont donc mieux connus pour leur travail.
Pour amener les gens à utiliser votre code, vous pouvez:
À mon avis, le logiciel est presque hors de propos sans offrir d'avantages aux utilisateurs. Et vous serez remarqué pour résoudre des problèmes qui intéressent les gens, et c'est une compétence très rare.
Une réponse que je n'ai pas encore lue: Google Summer of Code.
Depuis le site Web :
Google Summer of Code est un programme mondial qui offre aux étudiants développeurs des bourses pour écrire du code pour divers projets de logiciels open source. [...] Grâce à Google Summer of Code, les étudiants candidats acceptés sont jumelés avec un mentor ou des mentors des projets participants, obtenant ainsi une exposition à des scénarios de développement de logiciels réels.
Vous devez avoir 18 ans pour participer, mais ce n'est pas loin. Je connais des gens qui ont participé et ont eu une grande expérience. Parce que toutes vos contributions sont à des programmes open source, elles sont publiques, donc elles seront remarquées.
Depuis que vous avez moins de 18 ans, Google propose également un programme de type GSOC pour les étudiants pré-universitaires (13-17 ans) appelé Google Code IN .
De mon point de vue, il y a des types de personnes qui programment.
Définitions:
Remarquez, j'ai utilisé le mot "moyenne" ci-dessus. Selon les intérêts personnels et l'expérience professionnelle, ces pourcentages peuvent changer radicalement. Ce ne sont que des stéréotypes trop généralisés. Ne jugez pas un livre par sa couverture. Je suis également juste des pourcentages BSing de mon expérience.
Je suis programmeur indépendant. La programmation est mon principal revenu depuis que j'ai obtenu mon diplôme d'études secondaires il y a 9 ans. J'ai toujours l'intention d'obtenir mon diplôme, mais pour le moment, le moment n'est pas encore venu pour moi.
Mon chemin vers la reconnaissance autonome était le suivant. Je ne dis pas que ces étapes vous feront reconnaître par la communauté de la programmation, mais cela vous aidera à augmenter votre crédibilité quand vient le temps d'interviewer.
Même après avoir été assez versé dans la programmation de l'OMI à l'époque, je suis retourné aux bases et j'ai suivi des tutoriels et me suis construit un portfolio basé sur des travaux inspirés de ceux-ci. J'ai également commencé à me forcer à commenter mon code de manière JavaDoc. Le portefeuille n'est peut-être pas rempli de paillettes et de glamour en ce moment, mais il vous donne une base de référence que vous pouvez construire et éventuellement remplacer ce que vous avez là-dedans. J'ai ensuite eu un ensemble de démos et d'échantillons de code à montrer aux clients potentiels. Ceci est essentiel pour obtenir votre premier emploi. Personne ne veut embaucher quelqu'un qui n'a aucune expérience, cependant, il y a un certain nombre de personnes qui donneront une chance à un programmeur prometteur qui n'a pas d'expérience professionnelle.
J'ai ensuite analysé ces programmes et commencé à écrire des bibliothèques en fonction de mes tâches couramment utilisées. Avec mes nouvelles bibliothèques, j'ai commencé à regarder les problèmes de CompSci sur Internet et j'ai commencé à me chronométrer sur le temps qu'il me faudrait pour créer une solution avec mes bibliothèques. Cela me donnerait une référence à l'avenir quant à ce que je devrais facturer pour une tâche spécifique.
Ce n'est qu'alors que j'avais découvert l'open source. J'ai parcouru les projets sur sourceforge dans la langue qui m'intéressait et j'ai trouvé des applications que je pouvais utiliser. J'ai installé ces applications et j'ai commencé à les utiliser dans le cadre de mon expérience informatique quotidienne. J'ai pu voir les forces et les faiblesses de ces applications dans la mesure de mes interactions quotidiennes et j'ai commencé à les étendre en fonction de mes besoins. Je soumettrais mes correctifs à la communauté en développement pour être examinés, et après quelques-uns, je ferais une demande pour devenir membre du projet. C'est là que j'ai appris à utiliser les différents outils utilisés lorsque je travaillais dans une équipe qui a pris ma "vaste expérience", telle que je la considérais à l'époque, et l'a portée au niveau suivant.
J'ai adapté toutes mes pratiques que j'avais acquises en travaillant sur des projets open source et mis en œuvre des solutions compilables lorsque je travaillais en tant qu'individu. J'ai commencé sérieusement à faire carrière en tant que développeur indépendant et j'ai rejoint un certain nombre de sites de recrutement indépendants. J'ai regardé quels étaient les emplois populaires et j'ai commencé à postuler. Pour chaque emploi qui me serait refusé, je le terminerais pour moi-même comme si j'avais obtenu le travail pour élargir mes connaissances. Cela aiderait à construire mon portefeuille et me présenterait certains défis du monde réel. Quand j'ai finalement eu cette première entrevue, j'étais simple, je leur ai dit que je n'avais aucune expérience professionnelle. J'ai alors commencé à leur dire les projets open source sur lesquels j'avais travaillé, ce que j'avais accompli là-bas. Quelques obstacles majeurs que j'ai rencontrés et comment je les ai surmontés. J'ai pu offrir un portefeuille d'applications de travail et d'exemples de code basés sur mon expérience en tant qu'amateur, et ils ont pris toutes les informations et m'ont donné l'opportunité d'entrer dans le monde indépendant.
Je pense que JohnFX a donné une excellente réponse à cette question.
Quelques réflexions:
Je pense que jQueryUI pourrait être le meilleur endroit pour commencer. C'est amusant et visuel. Vous pouvez donc aller sur le forum des développeurs jQueryUI sur le site jQuery et demander à être un contributeur.
Je pense que vous ferez preuve d'une grande passion et d'un grand dévouement pour la programmation plus que vous ne ferez preuve d'une grande compétence. Mais ne vous laissez pas arrêter! Je vous encourage fortement à vous impliquer.
À ce stade, vous devrez peut-être vous contenter de faire de l'AQ. L'AQ est ennuyeux mais vous pouvez l'accepter et faire preuve de dévouement. Mais à partir de là, vous pouvez contribuer un peu de code et peut-être créer des plugins.
Si vous demandez à être impliqué dans quelque chose et que cela rend les choses difficiles, c'est parce que ce sont des connards. Il suffit de chercher un projet où les gens sont encourageants et gentils.
Après avoir trouvé un projet encourageant, des gens sympas et vous contribuez, vous pouvez demander à l'un des contributeurs adultes ou, espérons-le, à l'un des responsables du projet de vous écrire une courte lettre de recommandation.
Créez une application Web qui fonctionne bien sur iPhone et Android (ignorez les navigateurs standard pour l'instant) et profitez des fonctionnalités étendues de HTML5 (https://developer.mozilla.org/en/HTML/ HTML5) pour surmonter la latence, le réseau inégal et la limitation des navigateurs téléphoniques. Cela signifie très probablement fournir une application de navigateur javascript + html5 qui se connecte à une API basée sur le serveur (choisissez xmlrpc/json/yaml, pas SOAP). crier rapidement. Sur le serveur, je recommande d'utiliser cherrypy sous linux (debian) sur des VPS bon marché. Vous pouvez en obtenir sur 123systems.com, buyvm.net (préféré mais souvent non disponible) pour moins de 4 $ par mois. Apprenez à utiliser Python, et utilisez Fabric pour déployer vos éléments sur votre ou vos serveurs. Obtenez un domaine .info sur namecheap.com pour 2,99 $ par an, et utilisez dnsmadeasy.com pour DNS (plus cher, mais ça vaut le coup - les utilisez depuis des années, n'a jamais eu un seul problème) où vous pouvez faire l'équilibrage de charge via DNS. Ne vous laissez pas rebuter par les bases de données. Utilisez sqlite et apprenez à concevoir vos tables manuellement avec sql stateme nts. Enfin, avec une seule machine, vous pouvez probablement gérer 30 000 utilisateurs. (2000 simultanément à un coup au serveur toutes les 3 secondes). N'oubliez pas de mettre en cache autant que possible dans le stockage HTML5.
Si vous faites cela, et que vous bloguez à ce sujet et que vous twitez sur les entrées de blog et vos progrès, vous serez certainement remarqué. Certes, il y a beaucoup à apprendre, mais vous pouvez le faire!
PS: Cela fait longtemps que je n'ai pas postulé à l'université - ils vous donnent toujours la possibilité de lister des choses comme ça, non? (Par exemple, une section sur les loisirs, ou une question à propos de vos intérêts).
Je suis respectueusement en désaccord avec ceux qui ont répondu "ne vous surestimez pas"!
Si vous aimez la programmation à votre âge, allez-y, vous êtes probablement grand et plus grand que les autres enfants de votre âge, et au moment où vous êtes un vétéran, vous pourriez être le prochain Brian Kernighan, Edsger Dijkstra ou Doug Lea!
Je suggère d'apprendre IPhone ou Android, et de créer de vraies applications.
Soyez bon dans quelque chose et pendant que vous y arrivez, parlez lors de conférences et écrivez des articles, qui vous feront remarquer et affineront vos compétences.
Je programme depuis la fin des années 70 et en Java depuis 1996. Je peux vous dire que le plus important Java livre que j'ai jamais lu était le Gang of Four) Design Patterns, qui a été écrit une décennie avant Java a été inventé. Lisez-le et soyez génial!
Aujourd'hui, l'industrie la mieux rémunérée est la finance, mais elle évolue rapidement. Je crois que ça reviendra, mais on ne sait jamais!
Soyez un programmeur et profitez d'un emploi et d'une satisfaction au travail élevés!
Bonne chance, vous avez une belle carrière devant vous!