web-dev-qa-db-fra.com

Quel est le meilleur endroit pour qu'un programmeur du secondaire fasse remarquer son travail?

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:

  • Quel est un bon endroit pour me faire remarquer mon travail?
  • Existe-t-il des revues ou des publications spécialement destinées aux jeunes programmeurs?
  • S'il ne s'agit pas de publications, existe-t-il de bons blogs ou est-il préférable de créer le vôtre?
  • Y a-t-il autre chose qui pourrait m'aider à me faire remarquer en tant que programmeur?

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).

52
viraj

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.

61
Emilio Garavaglia

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.

35
Bernard

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):

  • Obtenez une bonne formation en mathématiques, il est nécessaire de comprendre l'algorithmique et donc de maîtriser les différentes structures de données.
  • Comprendre qu'un bon programmeur comprend d'abord les paradigmes (orienté objet, fonctionnel, ...) avant d'être intéressé par un langage "concret".
  • Comprenez qu'une bonne programmation vient souvent aussi pour la modélisation de code et apprenez les modèles de conception existants.

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.

26
SRKX

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?

13
Doc Brown

Quelques choses que vous voudrez peut-être essayer:

  • Écrivez un logiciel qui résout de vrais problèmes, idéalement des problèmes qui n'ont pas été résolus auparavant (ou du moins pas de manière satisfaisante). Si personne n'utilise votre logiciel malgré vos meilleurs efforts promotionnels, il est fort probable qu'il n'en ait pas désespérément besoin.
  • Annoncez votre travail sur les listes de diffusion pertinentes, IRC canaux et forums Internet. Si votre programme fait un usage intensif de certaines bibliothèques, envisagez de publier sur la communauté de la bibliothèque; s'il complète d'autres logiciels existants, annoncez à leurs communautés, etc.
  • S'il s'agit d'un projet suffisamment sérieux, créez un site Web dédié pour celui-ci. Le site Web doit fournir un résumé des fonctionnalités, des liens vers les téléchargements et la documentation et (le cas échéant) quelques captures d'écran. Assurez-vous qu'il s'agit d'un site Web approprié, et non d'une abomination de style geocities bon marché, vous voulez être pris au sérieux, alors agissez en conséquence. L'ajout d'une section d'actualités, d'un wiki et/ou d'un outil de suivi des bogues donne à l'utilisateur potentiel une indication de l'activité du projet, qui peut fonctionner pour vous ou contre vous (si le projet n'est pas très actif après tout).
  • S'il s'agit d'un projet open source, hébergez-le sur l'un des hubs FOSS populaires (github, bitbucket, sourceforge si vous le devez) et (voir ci-dessus) exposez le wiki et le traqueur de bogues (mais uniquement si vous les utilisez régulièrement).
  • Quoi que vous fassiez, fournissez une bonne documentation. Vous avez besoin à la fois d'un court "démarrage" et d'une référence complète. Si vous n'en avez pas, les gens trouveront votre programme trop difficile à utiliser. Si vous n'avez pas le second, les gens cesseront de l'utiliser car ils ne trouveront pas les informations dont ils ont besoin.
8
tdammers

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.

7
JohnFx
  1. Allez à des compétitions comme Imagine Cup ou, au moins, les concours de votre école (le cas échéant)
  2. Mettez vos applications en ligne, donnez peut-être le code source et, bien que cela ne soit pas lié à votre question, écoutez les commentaires des autres et apprenez-en
  3. Essayez de contribuer à différentes communautés
4
Victor Hurdugaci

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:

  • Vendez votre produit à de nombreuses personnes. Par exemple, installez une application mobile dans un magasin d'applications et suivez les téléchargements, les achats et l'utilisation continue.
  • Faites en sorte que de nombreuses personnes utilisent votre produit et génèrent des revenus publicitaires.
  • Obtenez beaucoup de développeurs pour développer des produits qui fonctionnent avec votre produit. C'est dur.
  • Contribuez à un projet open source populaire afin que vos contributions soient utilisées par de nombreuses personnes.

À 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.

4
Jay Godse

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 .

3
Jeroen

De mon point de vue, il y a des types de personnes qui programment.

  1. "Programmeurs" - Ceux-ci incluent des autodidactes de 16 ans et 99% des effectifs de "développeurs de logiciels" disponibles en Chine. Ils peuvent faire le travail ... en quelque sorte ... dans un sens minimal, mais ont peu d'idées de concepts tels que les modèles de conception, la maintenabilité, le codage robuste/défensif, les algorithmes/structures de données et d'autres choses qui aiment une utilisation efficace de la source Logiciel de contrôle. Ils ont la capacité de lire efficacement la documentation et d'utiliser la plupart des API.
  2. "Ingénieur électrique moyen" - 80% électrique, 10% informatique, 10% ingénieur logiciel. Maîtrise de l'électronique, mais à peu près autant de programmation que le "programmeur" type. La logique et la pensée critique, ainsi que les compétences en gestion du côté électrique seront utiles.
  3. "Diplômé moyen en informatique" - 25% programmeur, 25% ingénieur logiciel, 25% informaticien, 25% électronique appliquée (logique incluse).
  4. "Ingénieur informatique moyen" - Ces personnes sont un mélange de 50% d'ingénieur électricien, 50% diplômé en informatique.

Définitions:

  1. "Informatique" - Dijkstra a déclaré un jour: "L'informatique ne concerne pas plus les ordinateurs que l'astronomie ne concerne les télescopes." L'informatique concerne plus les mathématiques que les ordinateurs. Cela inclut la capacité de développer, comprendre et classer des algorithmes et des structures de données complexes.
  2. "Génie logiciel" - Design Pattern, diagrammes représentant des programmes (je ne me souviens plus comment on les appelle) des trucs comme ça. Codage défensif. Utilisation du contrôle de source,

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.

3
user606723

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.

1
Steve Buzonas

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.

0
Joe

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!

0
Christopher Mahan
  1. Apprenez autant que vous le pouvez. Cela peut être fait par des livres, des forums, des classes, mais surtout par la programmation (et la critique). Si vous avez dépassé les cours de programmation de votre lycée, voyez si un collège local (communautaire) a de bons cours de CS que vous pouvez prendre (peut-être pendant un été ou comme cours du soir); ou essayez de suivre des cours à partir de types MIT/Stanford.
  2. Faire preuve d'initiative. Dire que vous savez que le C++ sera totalement ignoré. Dire que vous avez des dizaines de validations sur une liste de projets open source démontre que vous savez quelque chose, etc. (mais soyez prudent; ne vous engagez pas simplement pour le plaisir de commettre). Démarrez vos propres projets open source. Ce ne sera pas quelque chose que vous ferez dans un après-midi; mais quelque chose qui devient votre bébé sur une période de plusieurs mois. Écrivez et publiez une application Android/iphone qui fait quelque chose d'utile et incite les gens à la télécharger.

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).

0
dr jimbob

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!

0
Victor Grazi