Comment être un bon programmeur sans diplôme de CS [fermé]

46

Avertissements (à lire avant de sauter pour répondre):

J'ai vu un certain nombre de questions semblables à celle que j'aimerais poser, alors voici quelques questions similaires .

IMHO Ils ne sont ni complètement ce que je demande, ni ils sont aussi complets que je l'espère (je ne veux pas effacer les réponses aux questions ci-dessous, je ne discrédite pas les demandeurs, je veux juste être un un peu plus complet):

Un diplôme CS peut-il profiter à un ancien programmeur?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

Importance du diplôme de CS quand postuler pour des emplois de développement?

Laissez-moi être clair, je ne demande pas ce qui suit:

  • Comment apprendre la programmation à partir de rien (sans diplôme en CS)
  • Comment me présenter comme un bon développeur de logiciels (sans diplôme en informatique)
  • Comment obtenir un bon travail bien rémunéré en tant que développeur de logiciels (sans diplôme en informatique)

Un peu de contexte:

Maintenant que les renonciations sont en suspens, laissez-moi préciser ma question en commençant par un bref historique de mon expérience en tant que développeur de logiciels.

Tout d'abord, j'ai eu une chance incroyable. On m'a donné plusieurs opportunités d'emploi (quelques projets back-end PHP / MySQL lourds et plusieurs applications WP7 en XAML / C #) grâce auxquelles j'ai vraiment appris tout ce que je savais sur le développement logiciel. Presque tous les emplois en développement de logiciel que j'ai occupés sont ceux pour lesquels je n’étais pas légitimement qualifié (et j’ai été clair avec mes employeurs avant de m’engager). Je ne veux pas m'accorder du crédit là où ce n'est pas dû, mais je dirais que la parfaite humilité dispense de la modestie .

Dans presque tous les emplois de développement que j'ai occupés, j'ai dépassé les attentes de mon employeur et me suis révélé être un atout précieux. Il y a bien sûr des exceptions 1 . Mais ce que je veux dire, c'est que je suis assez intelligent et que j'ai pu apprendre moi-même ce que je devais savoir pour réussir dans mon travail. A chaque travail que je faisais, j'étais de plus en plus tendu.

Je fréquente le campus de Seattle à l’ Université de Washington et je suis actuellement dans ma quatrième année, alors qu’il me reste deux ans, à travailler sur un diplôme en mathématiques. Au cours des différents emplois que j'ai occupés (voir mon curriculum vitae si vous voulez cette liste), je suis aussi allé à l'école en tant qu'étudiant à temps plein.

Comme je pense, la plupart des développeurs seraient d’accord pour étudier les cours classiques de premier cycle, y compris les cours d’ initiation à la programmation ABSOLUMENT PALES, par rapport à l’écriture de code réel, la création de 2 produits réels , le travail avec des gens formidables et l’influence positive sur la vie des utilisateurs 3 .

Alors… au fur et à mesure… j'ai passé beaucoup plus de temps et d'énergie à travailler que de me concentrer sur mes études. Parfois, mes performances étaient très horribles , mais la plupart du temps, j'ai réussi à rester à flot avec mes notes.

Cependant, le programme d’informatique à UW est très , très , très , très compétitif.

Donc, ce n’était pas une surprise pour moi que j’ai été rejeté par le programme. Deux fois. Ironiquement, dans la même demi-heure que j’ai reçu la notification de rejet par courrier électronique toujours polie, mais décourageante, j’ai reçu un appel téléphonique d’Amazon me proposant un stage d’été 4 en tant que SDE.

En regardant autour de moi d'autres hommes de mon âge (21 ans), qui partagent les mêmes objectifs que moi en matière de développement logiciel, je me sens plutôt bien à propos de l'endroit où je suis, de ce que j'apprends, de qui je suis et de ce que je suis. Je peux faire. Il y a bien sûr beaucoup, beaucoup, beaucoup plus brillants jeunes de 21 ans que moi, je ne veux pas dire que je me démarque dans une foule, mais simplement que je ne me sens pas terriblement en retard sur les progrès de mes pairs .

Je suis confiant dans ma capacité à réussir dans le monde des logiciels. Plus important encore, je suis confiant dans ma capacité et mon désir de continuer à grandir, à apprendre et à être humilié de façon embarrassante lorsque j'en ai vraiment besoin.

Diplôme de maths

Je me trouve poursuivre des études en mathématiques dans le seul but d’obtenir un diplôme. Il y a ceux qui disent que je devrais abandonner mes études et commencer à travailler maintenant (comme j'ai eu l'occasion de le faire), et d'autres qui disent que je devrais vraiment avoir mon diplôme. Je me suis décidé à obtenir mon diplôme pour des raisons totalement différentes de celles que l'un ou l'autre camp tend à exposer, alors ne m'encouragez pas d'une manière ou d'une autre à cet égard. Considérez le problème "fermé" :)

* DEEP BREATH * ... désolé c'est plus long que prévu.

Ceci est essentiellement ma question:

  • Comment puis-je déterminer de manière objective quels domaines d'études, connaissances générales et autres compétences j'aurais pu acquérir grâce à un diplôme en informatique qui me fait défaut ou non?
  • Comment puis-je trier ces compétences par ordre d'importance?

  • Quel est le meilleur moyen (au cours des deux prochaines années) de compléter mes études pour atteindre ces attributs de manière à égaler, voire dépasser, le niveau d'un étudiant de premier cycle en sciences issu d'une université de premier plan?

Voici les étapes que je suis déjà en train de faire:

  1. Demandez à la communauté de développement (ce post)
  2. Poursuivre le mentorat avec des développeurs chevronnés qui partagent avec moi un cheminement de carrière similaire
  3. Définir les objectifs "d'apprentissage" à court et à long terme et les programmes suivants décrivant les sujets d'étude
  4. Continuer à écrire du code et à travailler sur des projets qui me passionnent

Si vous en êtes arrivé là, vous méritez un cookie :) J'apprécie votre patience.

Alors ... communauté de développement, développeurs expérimentés, camarades étudiants qui sont dans le même bateau que moi, quel conseil auriez-vous?

Aussi ... s'il vous plaît gardez à l'esprit mes avertissements en haut de ce post sur ce que je ne demande pas .

Mise à jour:

Je me rends compte que je n’ai pas fourni de paramètres très concrets pour ce que je considère comme une "réponse" réussie à ma (mes) question (s). Je pense que la question est très vague et pourrait justifier un certain nombre de réponses "correctes".

Après un laps de temps raisonnable, je sélectionnerai la réponse qui correspond aux attributs suivants:

  • Explique le pourquoi derrière leur réponse
  • Peut parler d'un certain niveau d'expérience (qu'il s'agisse d'embaucher / d'interagir avec quelqu'un ou de devenir quelqu'un qui a / est à ma place)
  • Est concis mais complet, donne des principes généraux de préférence accompagnés d'exemples spécifiques
  • Enfin, compte tenu de la longueur que cela semble nécessiter, faites-en une réponse bien communiquée, agréable à lire. J'espère que d'autres personnes pourraient être intéressées par cette question à l'avenir, seront diverties et éduquées par la réponse.

Donc, il y a quelques paramètres pour "correct". Ils sont très élevés, je pense, mais je les ai conçus comme un aperçu de ce que je considère comme la "meilleure" réponse. Évidemment, étant donné assez de temps, je choisirai la réponse la plus proche correspondant à la "réponse".


(1) - J'ai travaillé sur une version antérieure de ce site Web et, même si nous n'avions pas de 
      conversation à ce sujet, j’ai senti que je ne pouvais pas très bien faire du tout (cela peut être 
      en témoignent le fait qu’ils ont entièrement changé de site depuis)
(2) - Premièrement, oui, c’est un vrai produit (même si j’écris ce billet dans Chrome ...), et
      ça donne un coup de pied au cul. Deuxièmement, j’étais un développeur stagiaire du secondaire à l’essai, ai écrit une preuve de
      code de concept pour certaines des nouvelles fonctionnalités pour IE8 ... donc c'était il y a un certain temps.
(3) - Au moment de cet article, je suis le développeur qui a écrit cette application, je ne suis plus
      responsable de sa base de code
(4) - Mon stage débutera en juin 2012 et je travaillerai dans la boutique en ligne. 
      équipe.
Paul Hazen
la source
17
Le monde a besoin de plus de programmeurs diplômés en mathématiques. Dit Nuff.
Pieter B
1
Le marché des psychologues et des autres services de conseil ou de conseil individuels doit être énorme. J'envisage de changer d'emploi ....
Ingo
16
Commencez par éditer cette question et coupez-la en deux.
JeffO
8
@PaulHazen une fois que vous avez supprimé vos antécédents extrêmement verbeux et le contenu de votre clause de non-responsabilité et que vous avez répondu à vos véritables questions, vous demandez trois choses: comment déterminez-vous ce qui vous manque du fait de ne pas avoir obtenu un diplôme de CS, comment obtenir ce qui vous manque et comment hiérarchiser ce qui vous manque. Les deux questions sont complètement couvertes par la question dupliquée. Si vous n'aimez pas les réponses, offrez une prime : c'est pour cela qu'elles existent.
7
@PaulHazen Si vous n'êtes pas intéressé par les questions que vous avez énumérées (qui sont des doublons de la question précédente), modifiez votre question pour ne demander que quelque chose de nouveau. Votre question souffre de trop d'informations - la plupart d'entre elles sont probablement inutiles pour le problème que vous rencontrez - et devrait être jumelée pour poser des questions sur un problème très spécifique que vous rencontrez et qui n'est pas déjà couvert par d'autres questions.

Réponses:

17

OK, je trouve ça trop tentant de ne pas répondre à votre question, alors me voici ...


Quelques petites choses sur moi d'abord


J'ai 26 ans et, grâce à mon père (mathématicien et actuellement professeur), j'ai eu la chance, dès mon plus jeune âge, de me familiariser avec les ordinateurs. (En 1986, lorsque je suis né, bien que ce ne soit pas la chose la plus courante à cette époque, nous avions toujours un ou deux ordinateurs à la maison). Cela étant dit, et - évidemment à cause de ma nature curieuse et axée sur les mathématiques / la résolution de problèmes - il ne fallut pas longtemps pour que je me découvre amoureuse de la programmation. D'abord avec Pascal, à l'âge de 7-8 ans, puis à peu près tout le reste a suivi.

Tout d’abord, permettez-moi de dire que, même à l’école, j’ai toujours excellé dans tout ce qui concerne les mathématiques, simplement parce que cela me plaisait, et honnêtement, je pouvais facilement suivre l’exemple de mon père et devenir mathématicien. Mais cela n'est pas arrivé.

Ce qui s’est passé est probablement la plus grande erreur de ma vie (jusqu’à présent): comment l’appelleriez-vous quand un amoureux du code , parle plus de 15 langues et a écrit des milliers de lignes de code (des compilateurs aux micro-noyaux en passant par le Web)? soudainement (les raisons sont encore trop obscures dans mon esprit, mais l’influence générale, même subtile, de votre environnement n’est jamais trop négligeable) décide de poursuivre une carrière en médecine ? Je suppose une "erreur".

Le résultat? Cinq ans plus tard (à 23 ans) et un an avant de terminer mon diplôme en médecine (je travaille tout le temps sur des projets de programmation personnelle à code source ouvert), j'ai décidé d'en avoir assez et j'ai décidé d'arrêter de fumer. Et ce n’était pas seulement que je détestais tellement ce nouveau domaine (médecine), mais aussi qu’il y avait quelque chose de déstabilisant dans toute cette situation, une démangeaison insatiable cachée au plus profond de lui ... ( c’était quoi, si ...? ) De plus, je venais de me rendre compte que mon passe - temps , ce que je considérais comme un grand mais que je n’avais même pas imaginé comme un vrai travail, pouvait non seulement rapporter de l’argent, mais aussi beaucoup d’argent et me rendre heureuse en tant qu’individu. Alors j'ai décidé d'arrêter. (= le meilleur choix, même si je suis un peu en retard).

Donc, me voilà maintenant, un psychiatre qui allait être médecin (un psychiatre sur le point de sombrer dans une dépression nerveuse pour être plus précis; moi stupide!) Se prépare pour un diplôme en sciences (en 3e année en fait; et, honnêtement, le poursuivre afin de ne pas manquer de ces qualifications typiques redoutées ...) et d’un professionnel plus que content, travaillant sur quelque chose que j’adore et qui est le sujet sur lequel j’ai le plus à offrir.


Quelques observations (de ma propre expérience)


  • La programmation est l’un des rares domaines où les très bons trouveront toujours leur chemin, quoi qu’il en soit. Et ce n’est certainement PAS une question de qualifications habituelles (honnêtement, si j’avais une entreprise et que je voulais recruter des programmeurs, je saurais facilement qui est bon en quelques minutes - qu’il ait ou non un diplôme)

  • Ce qu’il faut pour être un bon programmeur, c’est: une intelligence orientée vers les mathématiques (mais PAS les mathématiques elles-mêmes) et une passion (qui fera des heures interminables d’étudier un plaisir au lieu d’un fardeau; et même si je n’ai pas réalisé cela, la confiance moi-même j'ai étudié des tonnes de documents sur le sujet dans ma vie, uniquement par moi-même) . L’éducation formelle est une bonne chose, mais elle est un peu surestimée. Les ingrédients de base du succès sont les deux premiers.

  • Les mathématiques sont certainement le lieu de naissance de CS. Mais la CS n'est plus que des maths. J'ai toujours eu un fort cerveau orienté vers les mathématiques, mais je ne suis en aucun cas un gourou des mathématiques. Et honnêtement, dans la programmation de tous les jours (sauf si vous construisez un moteur graphique ou quelque chose de trop localisé), vous n'aurez probablement besoin de rien d'autre qu'une simple arithmétique (addition, soustraction, multiplication, division, modulo) et quelques autres choses. à propos des tableaux. (beaucoup seront en désaccord avec moi, probablement des mathématiciens ou des programmeurs trop académiques, mais il est certain que maîtriser le calcul n'est PAS ce qu'il faut pour être un bon programmeur). Avoir de bonnes connaissances en mathématiques vous aidera peut-être, mais PAS à cause des mathématiques elles-mêmes; cela vous aidera uniquement en vous basant sur une chose commune à ces deux domaines: les compétences en résolution de problèmes.

  • Les mathématiques sont une science (et une science que je respecte).

  • La programmation est un art. (Et une science appliquée aussi, si vous insistez) Mais gardez cela à l'esprit: un art - et c'est comme ça que je l'ai toujours traité. Et comme avec tous les arts, cela ne peut pas être enseigné. Je peux vous apprendre la manière formelle de dessiner un visage et de vous rendre meilleur que la moyenne, mais cela ne vous fera pas non plus un Da Vinci, ni un Klimt. Mona Lisas sont peints par Da Vincis et non par des peintres instruits avec soin. Great Code est écrit par de grands artistes de code. Et les compétences et le dévouement peuvent facilement contrebalancer l’éducation formelle.


Alors, que faut-il pour devenir un * très * bon programmeur?


  • Être intelligent, avoir de grandes compétences en résolution de problèmes et une passion pour le sujet (si vous ne l'avez pas, laissez-le simplement; le fait d'être médiocre n'est pas une excuse)
  • Beaucoup de temps à consacrer au sujet
  • Étudier tout le temps ( 'coz vous simplement jamais tout savoir, et note: pourquoi? Studing »doit être lié à un certain degré , je l' ai toujours trouvé beaucoup plus de plaisir à faire des choses sur mon propre rythme ... )
  • Écrire du code tout le temps (peu importe le nombre de livres que vous avez lus, votre niveau de codage est directement équivalent à la quantité de code que vous avez écrit)
  • Et encore une fois, l' amour pour le sujet (si vous ne l'aimez pas assez, et je l' aime vraiment , tout ce qui précède deviendra tôt ou tard insupportable; pour moi, coder en tant qu'emploi est encore comme être payé. . regarder des films: absolument absurde mais tout simplement génial)

Sur vos questions


  • Comment puis-je déterminer de manière objective quels domaines d'études, connaissances générales et autres compétences j'aurais pu acquérir grâce à un diplôme en informatique qui me fait défaut ou non?

Cependant, je dois vraiment savoir ce qui est inclus dans le diplôme en mathématiques. Permettez-moi de résumer ce que vous manquerez probablement d'un diplôme en sciences (cours / matières / etc. - inspiré du programme d'études de mon université ), sans ordre particulier. :

  • Conception logique de systèmes numériques (certains éléments de circuit de bas niveau et / ou / xors / etc. - apparemment pas trop liés, mais toujours très pédagogiques)
  • Architecture de l'ordinateur (avec quelques codages d'assemblage; vous ne l' utiliserez probablement jamais , mais vous ne pouvez pas dire à quel point cela pourrait influencer votre attitude en tant que programmeur)
  • Structures de données (de la liste chaînée aux arbres complexes, etc.; aussi simples que cela puisse paraître, tôt ou tard, vous aurez besoin de bonnes connaissances en la matière; utiliser des solutions toutes faites que vous ne comprenez pas n'est pas un bon programmeur. ferait)
  • Compilateurs (oui, les compilateurs! Écrirez-vous jamais un compilateur? Probablement pas; mais à moins que vous puissiez en écrire un, vous ne saurez jamais vraiment comment les choses fonctionnent ...)
  • Systèmes d'exploitation (comme ci-dessus)
  • Réseaux informatiques
  • Intelligence artificielle et systèmes experts (vous ne coderez probablement jamais non plus dans Prolog; mais cela reste l'un des facteurs susceptibles de façonner votre cerveau de codage et de lui permettre de voir les choses sous un angle radicalement différent)
  • Comment puis-je trier ces compétences par ordre d'importance?

Savoir quoi donner la priorité dans un domaine en constante évolution en tant que CS sera toujours un pari - un jeu de devinettes .

Apprenez à savoir ce que vous voulez faire et faites confiance à votre instict. Bien sûr, il est indispensable d’ avoir de solides connaissances de base . Mais ce que vous allez approfondir, c’est à vous de décider. En outre, planifiez soigneusement votre carrière: si vous voulez être employé, choisissez votre cible et soyez excellent (par exemple, vouloir être employé par Google et ne pas savoir comment lire un simple script Python est probablement l'une de ces situations interdites ) . Si vous lancez quelque chose par vous-même (une entreprise), vous n'avez aucun «patron» à satisfaire; il suffit de choisir ce qui vous convient le mieux.

Par exemple, si vous voulez faire quelque chose lié au Web, je vous conseillerais sans hésiter: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Mais c'est juste moi. Quelqu'un peut aimer (ou voir plus d'avenir dans) Ruby / Rails qu'en PHP.

Par exemple, je code principalement en Objective-C / Cocoa . Est-ce que je vous conseillerais de poursuivre dans cette voie? Définitivement pas. Autrement dit, à moins que vous n'utilisiez les Mac ou que vous vouliez faire carrière dans la vente de logiciels liés aux Mac / iPhone. Si vous aimez le développement Windows, opter pour C # / .NET Framework serait probablement votre meilleur choix. (si vous voulez avoir une idée de ce dans quoi je suis principalement, jetez un coup d'oeil dans mon profil StackOverflow )

  • Quel est le meilleur moyen (au cours des deux prochaines années) de compléter mes études pour atteindre ces attributs de manière à égaler, voire dépasser, le niveau d'un étudiant de premier cycle en sciences issu d'une université de premier plan?

Étudiez beaucoup (livres, Internet, le code des autres, peu importe) et écrivez le plus de code possible.

Ah, et essayez de trouver un emploi dans n'importe quel code. (J'ai commencé à travailler en tant que pigiste et ce fut une expérience vraiment précieuse, juste pour voir comment les choses fonctionnent réellement dans le monde réel).


Juste mes 0,2 centimes amicaux ... :-)

Note: Je sais que certains de mes arguments peuvent sembler controversés et je suis sûr qu'il y en aura beaucoup qui seront en désaccord avec moi. C'est acceptable. Mais cela ne change pas la façon dont je vois les choses - et surtout les choses que j'aime.

Dr.Kameleon
la source
Ceci est exactement ce que je cherchais. Merci! À peu près toutes les autres réponses étaient bonnes, très peu d’entre elles contenaient des informations erronées ou inutiles. Je mettrai à jour la question afin d'inclure une petite section expliquant pourquoi j'ai choisi cette option, ainsi qu'un lien vers un article de blog expliquant plus en détail (la raison pour laquelle une telle explication est fournie sur mon blog plutôt que celle de Programmeurs est due à la La longueur du poste est déjà énorme, ainsi que le nombre croissant de modérateurs concernés qui estiment déjà que la question est mal adaptée à ce site). Restez au courant. Et merci encore.
Paul Hazen
@PaulHazen Vous êtes vraiment le bienvenu! Heureux d’avoir aidé (SI J’ai fait) ... (Maintenant, en ce qui concerne l’énorme longueur de ma réponse ... argh ... Le système l’a automatiquement reconnu comme un "wiki de communauté" et j’essaie d’obtenir les modérateurs ont rétabli son état initial: une réponse simple - bien qu'un peu ré-édité -)
Dr.Kameleon
Au méta ( meta.programmers.stackexchange.com/questions/3513/… ) je les encourage en fait à le déplacer vers une destination plus appropriée. Selon la FAQ officielle, la question ne convient pas à ce forum. Cependant, en observant l' utilisation de facto des programmeurs, j'estime qu'il convient d'être ici. Les modérateurs peuvent décider à leur guise. Pour résumer mes réflexions sur le déplacement: Selon ce que les programmeurs sont censés être, cela n’appartient pas à ici, mais selon quels programmeurs est- ce que cela convient parfaitement.
Paul Hazen
@PaulHazen Eh bien, au moins pour moi (bien que je ne sois en aucun cas un expert en matière de contenus SO), cela me semble tout à fait approprié.
Dr.Kameleon
Ouais, je vais juste jeter mes mains en l'air. Tant que les gens peuvent utiliser google ou stack stack pour au moins trouver les réponses, je suis heureux. Le contenu doit pouvoir être facilement découvert à l'avenir par des personnes qui ont la même question.
Paul Hazen
18

Comment puis-je déterminer de manière objective quels domaines d'études, connaissances générales et autres compétences j'aurais pu acquérir grâce à un diplôme en informatique qui me fait défaut ou non?

Parcourez le programme du département CS de l'UW, empruntez et parcourez les lectures requises, examinez les examens et exercices de laboratoire précédents (devoirs). Si vous ne savez pas comment aborder le problème, vos connaissances sont faussées.

Comment puis-je trier ces compétences par ordre d'importance?

Pensez au type de programmation que vous aimeriez faire à l'avenir. Si vous êtes heureux de créer des sites Web et des applications CRUD, il semble que vous ayez déjà toutes les connaissances dont vous avez besoin.

L' éducation CS entre l'image si vous êtes intéressé par la façon dont la compréhension [distribués] bases de données, serveurs Web, les compilateurs et les interprètes, les systèmes d' exploitation, les protocoles de réseau , etc. travail sous le capot , et sont intéressés à construire vous - même de tels systèmes.

Quel est le meilleur moyen (au cours des deux prochaines années) de compléter mes études pour atteindre ces attributs de manière à égaler, voire dépasser, le niveau d'un étudiant de premier cycle en sciences issu d'une université de premier plan?

Je ne sais pas. Pour moi, le principal avantage de l'université était 1) d'élargir mes horizons (j'ai oublié 90% des détails appris à l'université, mais je me souviens de concepts et d'idées), et 2) de garder ma motivation intrinsèque pour décroissante: il est plus facile de garder la motivation forte lorsque vous vous efforcez d'atteindre un objectif - un examen, un autre examen, etc. jusqu'à l'obtention de votre diplôme. (En outre, structurer l’auto-éducation n’est pas une tâche facile.)

[Ajouté: choisissez une université dont vous souhaitez suivre le programme de formation, choisissez des cours sur des sujets qui vous intéressent et parcourez vous-même le programme: devoirs, examens, etc. La plupart des cours contiennent des diapositives et des travaux / examens des années précédentes. .]

Un conseil cependant: N'abandonnez pas votre diplôme en mathématiques. Toute personne brillante peut apprendre à programmer, mais les mathématiques vous donneront un avantage concurrentiel si vous souhaitez travailler sur des applications autres que CRUD / frontend, telles que des simulations de fluides et de mécaniques, d’infographie, de traitement de l’image, de reconnaissance et d’apprentissage automatique, (même finance!) etc.

MISE À JOUR 2 - Expérience [long]: J'ai obtenu une maîtrise à la faculté d'EE: les deux premières années étaient un programme commun (physique, génie électrique, électronique analogique et numérique et beaucoup de mathématiques - algèbre linéaire; mathématiques discrètes; mathématiques réelles, vectorielles et analyse appliquée complexe.) C’était très précieux, surtout la partie EE et électronique - cela m'a permis de travailler sur des projets mixtes HW-SW, et la coopération avec les concepteurs HW était très excitante. Je n'ai apporté aucune contribution à la conception matérielle, mais j'ai pu suivre le concepteur matérialiste "déboguer" son diagramme schématique et poser des questions sensées (nous ne savions pas si le bogue était dans SW ou HW - il s'est avéré que c'était dans HW: -)].

Ensuite, les lignes sont branchées et je choisis la ligne CS. Certains des "détails" ont contribué à enraciner les concepts (par exemple, "exécuter" l'algorithme de Dijkstra à la main). Aussi j'appris les détails sur la façon dont le travail CPU (signaux de bus, l' interprétation des schémas de bus, exécution, etc.) sur l'exemple de, déjà à l' époque, obsolète Motorola 68000, mais les concepts appris par les détails ne sont pas très différents pour les processeurs modernes soit.

Autres détails, esp. Les implémentations de SW (par exemple, implémentant Dijkstra), étaient pour moi [depuis que je suis assez bon en codage au lycée] un exercice inutile de débogage et ont contribué ZERO à la compréhension des concepts.

Et puis je me suis inscrit au programme de doctorat, où je devais suivre des cours obligatoires. J'ai été déçu par le choix des cours, car beaucoup d'entre eux semblaient être plus orientés vers les demandes de l'industrie (par exemple, utiliser Python pour l'analyse de données scientifiques - merci, je peux programmer et je suis très capable de m'enseigner cela - - ce qui impliquait encore beaucoup de codage inutile) que vers l'enseignement de concepts fondamentaux (heureusement, j'ai développé des cours sur l'optimisation discrète, l'analyse statique de programmes et l'analyse formelle avec Promela).

Ainsi, certains détails étaient utiles pour intégrer des concepts, et certains étaient un fardeau inutile (un autre exemple: programmation de la communication par port série entre deux ordinateurs. J'étais déjà habitué à lire et à interpréter les spécifications matérielles et à programmer par matériel au moyen de registres. Peut-être que je suis naïf en supposant que les ingénieurs CS moyens pour devenir des futurs ingénieurs n’ont pas besoin d’être éduqués sur la façon de lire la documentation HW).

En conclusion: exposez-vous à de nombreux concepts différents (idées de haut niveau) et renseignez-vous en détail pour ceux que vous souhaitez hiérarchiser et pour lesquels vous devenez extrêmement bon. [Vous ne pouvez pas être extrêmement bon à tout!]

zvrba
la source
+1 à coup sûr. Malgré le fait que vous ayez oublié 90% des détails, diriez-vous que l'expérience d'apprendre ces détails était ce qui enracinait les concepts et les idées, ou serait-il plus utile d'investir du temps dans l'apprentissage de moins de détails et d'idées plus conceptuelles / de niveau supérieur ?
Paul Hazen
@PaulHazen Voir la nouvelle modification (à partir de UPDATE2 - cela ne rentre pas dans le champ de commentaire;))
zvrba
Très affirmant des démarches que je fais actuellement. La section ajoutée est inestimable. J'ai l'impression que la liste de choses sur lesquelles je veux apprendre les détails est beaucoup trop longue pour être raisonnable, j'ai toujours eu un problème de portée à cet égard. Existe-t-il un bon moyen d’examiner l’industrie et de déterminer les sujets qui me intéressent serait le plus utile pour en savoir plus? Ou diriez-vous que peu importe ceux que j'apprends, tant que je plonge profondément dans un plus petit nombre d'entre eux? Il semble que l'industrie puisse être difficile à prévoir à cet égard.
Paul Hazen
1
Essayer de prévoir l'industrie est un jeu perdu d'avance [par exemple, je ne suis pas sûr que quiconque aurait pu deviner que Twitter - (presque) le clone IRC pour le Web - deviendrait une telle lubie. Je ne sais toujours pas comment ils entendent gagner de l’argent à long terme.]. Vous devez choisir de manière proactive le type de travail que vous souhaitez exercer et déterminer ce qu'il faut pour l'obtenir. Comment? Trouvez quelqu'un qui travaille déjà dans votre secteur cible et parlez-lui.
Zvrba
1
@ Paul Les concepts sont essentiels, mais les détails (généralement) ne le sont pas. Vous pouvez regarder les détails quand vous en avez besoin, mais vous devez connaître la situation dans son ensemble pour savoir qu’il ya quelque chose qui vaut la peine d’être examiné dans la région.
Donal Fellows
7

J'interviewe et participe au recrutement de nombreuses jeunes filles fraîchement sorties du collège. Je n'ai encore engagé personne en fonction des compétences qu'ils ont acquises dans n'importe quel programme. La raison en est simple: aucun programme CS (ni aucun autre programme) que j'ai rencontré n'enseigne des compétences concrètes en matière de programmation ou de développement de logiciels de niveau professionnel ou commercial . Etre capable de créer des modèles et des solutions d'équations différentielles complexes et d'écrire des algorithmes de tri optimisés à des fins spécifiques peut avoir une valeur académique et / ou scientifique, mais cela n'a aucune incidence sur le développement logiciel général.

Qu'est-ce que je cherche alors? Eh bien, je m'attends à ce qu'un diplômé d'université ait perfectionné l'art d'apprendre. Après tout, c’est ce qu’un bon collège devrait enseigner à ses étudiants. Comment analyser et décomposer les problèmes généraux en composants logiques, discrets, pouvant être résolus de manière prévisible. Une approche méthodique pour trouver, évaluer, organiser et appliquer des connaissances et des informations en vue d’une solution.

De plus, je recherche des personnes qui comprennent qu'un groupe de personnes travaillant ensemble et communiquant valent beaucoup plus que la somme de ses individus. Cela exige de la maturité et de l'humilité, ainsi que la capacité de donner et de demander de l'aide.

Donc, pour en revenir à la portée de votre question: bien qu’un diplôme de niveau CS puisse améliorer vos chances d’obtenir cette première interview de l’université, je trouve que cela n’a que peu de répercussions sur votre réussite ou votre compétence en tant que développeur. J'ai toujours suivi la philosophie "engager pour l'attitude, s'entraîner pour acquérir des compétences" et cela a porté ses fruits.

Mon conseil: continuez votre baccalauréat en mathématiques si cela vous intéresse. Toute formation scientifique vous servira bien, alors choisissez celle qui vous plaît le plus car c’est celle dans laquelle vous excellez le plus. Ensuite, concentrez-vous sur l’apprentissage des choses importantes: comment apprendre, comment analyser et aborder la solution du problème une manière structurée, comment interagir et coopérer avec d'autres personnes, comment assumer un leadership et assumer la responsabilité de la prestation de vos livreurs et de vos coéquipiers. Le reste ne concerne que la technologie et le codage, les outils du métier. Ceux-ci, vous pouvez et apprendrez par vous-même. Choisissez et étudiez certaines connaissances générales, telles que les modèles de conception populaires et les paradigmes architecturaux. Commencez à écrire des programmes pour pratiquer. Choisissez un langage et une base technologique relativement à jour, mais ne commettez pas l'erreur de le penser. C'est le dernier que vous apprendrez. Les outils et les langues changent en permanence, le développement de logiciels est donc un processus d'apprentissage permanent.

bouillie
la source
Serait-il juste de dire que, de votre point de vue, il n’ya que peu de choses dans un diplôme de niveau CS qui soient en soi utiles pour devenir un programmeur performant? Actuellement, j’aime mieux votre réponse, vous avez certainement abordé beaucoup de choses que j’essaie de comprendre et de comprendre. Pourriez-vous ajouter un contexte supplémentaire au domaine dans lequel vous recrutez au sein de CS? J'imagine que les recruteurs qui embauchent de nouveaux diplômés pour travailler sur des systèmes d'exploitation peuvent avoir des perspectives différentes de celles que vous avez (mais je pourrais me tromper totalement à ce sujet). Appréciez le temps que vous avez pris, c'est super utile
Paul Hazen
Je travaille pour une société de conseil en informatique qui recrute beaucoup dans l'expérience 0-1 ans. Je ne peux pas vous répondre avec confiance en ce qui concerne les ateliers de développement de systèmes d’exploitation (combien y en a-t-il?), Mais je suppose que la même chose est valable, s’ils sont intelligents. Très peu de diplômés maîtriseront suffisamment leur matière pour être compétitifs sur ce seul terrain. Vous embauchez donc pour son attitude, son potentiel et sa capacité à apprendre.
Pap
Intéressant. Je vous ai donné un "+1", et j'aime ce que vous avez à dire plus que quiconque, mais vous répondez plus précisément à la question "Comment puis-je entrer avec succès dans le domaine du développement logiciel" Des informations précieuses pour être certain , mais mon intérêt est de comprendre les attributs d’un programmeur performant , pas ceux d’un programmeur souhaitable (oui, les programmeurs performants sont également souhaitables, mais cela ne va pas toujours dans l’inverse).
Paul Hazen
Je n'engage pas de personnes pour lesquelles je ne réussis pas déjà ou qui ont le potentiel et la capacité de réussir. Donc, pour moi, "souhaitable" et "réussi" sont la même chose. Si quelqu'un recrute sur d'autres critères, il a tort ou mal de repérer les talents. De toute façon, probablement pas un bon endroit pour travailler. Cependant, en tant qu’employeur, la clé est de savoir comment exploiter le potentiel de votre personnel et le convertir en succès réel. C'est un mélange de formation, de mentorat et de coaching et, si vous n'en avez pas, peu importe le talent des personnes talentueuses que vous recrutez.
Pap
7

Voici ma question essentielle: comment déterminer de manière objective les domaines d’études, les connaissances générales et les autres compétences que j’aurais acquises grâce à un diplôme en informatique et dont je n’aurais peut-être pas besoin à présent?

Réponse 1

Si vous apprenez quelque chose de nouveau de votre étude. Ensuite, vous pouvez objectivement dire que vous avez acquis cela grâce à un diplôme en informatique.

A1. Le pourquoi

Un degré de CS est conceptuellement sur l'apprentissage. Si l'on revient d'un diplôme de niveau CS sans différence nette, alors son objectif principal n'est pas atteint. Les examens et les cours sont la mesure "officielle" de ce qui a été appris. Cependant, la compréhension individuelle (ai-je appris quelque chose de nouveau?) Devrait être une meilleure mesure objective.

A1. L'expérience

J'ai tous deux été dans le monde universitaire et travaille maintenant de manière professionnelle. J'ai choisi un Master en informatique parce que je voulais approfondir ma compréhension et que j'avais une passion pour l'apprentissage.

Mon univers s'est élargi suite à l'obtention d'une maîtrise en informatique. Mon monde a également grandi de travailler professionnellement.

Comment puis-je trier ces compétences par ordre d'importance?

Réponse 2

L'importance est relative quant à savoir qui pose la question et pour quelle situation. Si c'est pour votre croissance personnelle , alors c'est tout ce qui compte. Si c'est pour l'industrie, alors des choses comme les algorithmes et les bonnes pratiques de POO / logiciel standard sont importantes.

A2. Le pourquoi

La "portée" d'importance dépend fortement du "contexte". Sans contexte, les mérites des compétences sont difficiles à trier.

A2. L'expérience

J'ai trouvé que les compétences obtenues de "université" vs "sur le terrain" sont différentes. Les "compétences" à l'université sont davantage une "théorie", de l'industrie à une "pratique" plus grande. Pour cette raison, cette différence signifie que les compétences sont en effet classées différemment en termes d'importance.

Quel est le meilleur moyen (au cours des deux prochaines années) de compléter mes études pour atteindre ces attributs de manière à égaler, voire dépasser, le niveau d'un étudiant de premier cycle en sciences issu d'une université de premier plan?

Réponse 3

Poussez-vous au-delà du point de rupture et lorsque vous vous casserez, continuez à vous casser à nouveau.

Qu'est ce que je veux dire?

Si vous arrivez à un point où vous ne comprenez pas, alors vous vous êtes brisé. Continuez à apprendre jusqu'à ce que vous compreniez. Ensuite, poussez plus loin jusqu'à trouver quelque chose que vous ne comprenez pas (à l'infini) .

A3. Le pourquoi

Si vous apprenez seulement et restez dans vos limites, vous ne serez que "ok". Vous ne voulez pas être juste "ok". Vous voulez être le "meilleur" que vous puissiez être. Vous ne pouvez pas atteindre votre potentiel réel si vous ne poussez PAS CONSTANTMENT au-delà de vos limites.

A3. L'expérience

Je vais toujours être un étudiant à vie, je ne vais pas énumérer mes compétences actuelles, si vous êtes curieux, vous pouvez simplement voir mon profil.

La seule chose que je dirai, c'est que. Je ne suis jamais satisfait de mes connaissances actuelles. Je veux voler plus haut, voir plus loin et aller plus loin.

Nuit noire
la source
De bonnes remarques à coup sûr, cela résonne avec moi. Consultez la mise à jour si vous vous demandez pourquoi je n'empêche pas de marquer une réponse comme "correcte" pour l'instant.
Paul Hazen
Et de belles mises à jour. Gardez la foi, je n'oublierai pas de marquer une réponse comme telle le moment venu.
Paul Hazen
1
Pourriez-vous s'il vous plaît nettoyer votre réponse? Vous avez deux en-têtes de section répétés, avec un contenu différent mais similaire sous chacun.
Paul Hazen
Bonjour Paul, je ne sais pas comment vous voudriez que je le nettoie. Je suppose que cela semble un peu déroutant. Chaque sous-titre, il se rapportait à chaque question, c'est-à-dire que chaque "question" a un "Pourquoi" et une "Expérience" pour soutenir la réponse telle que vous l'avez demandée dans votre mise à jour. Je suis plus qu'heureux de faire des changements en termes de clarté.
Darknight
Ohhh ... c'était ce qui me déroutait le plus, pouvez-vous incrémenter les titres ou utiliser du texte ** gras ** pour marquer les sous-titres? Je pense que cela contribuerait grandement à améliorer la clarté.
Paul Hazen
4

Comment puis-je déterminer de manière objective quels domaines d'études, connaissances générales et autres compétences j'aurais pu acquérir grâce à un diplôme en informatique qui me fait défaut ou non?

Il suffit de regarder les exigences du diplôme, puis de rechercher le programme de chaque classe.

Comment puis-je trier ces compétences par ordre d'importance?

Vous ne pouvez pas vraiment le faire vous-même sans le recul. Je dirais que la chose la plus importante qui manque aux programmeurs autodidactes est l'analyse et la conception d'algorithmes. Le reste peut être pris à la pièce.

Quel est le meilleur moyen (au cours des deux prochaines années) de compléter mes études pour atteindre ces attributs de manière à égaler, voire dépasser, le niveau d'un étudiant de premier cycle en sciences issu d'une université de premier plan?

Même si vous n'êtes pas admis au programme, vous pouvez souvent prendre des cours au choix d'autres départements. L'une de mes classes préférées était une classe de projet en génie aérospatial où j'ai travaillé sur l'électronique et les micrologiciels pour un petit satellite.

Vous pouvez également acheter le livre de texte que votre classe désirée utilise. Je l'ai fait pendant quelques cours que je ne pouvais pas intégrer dans mon emploi du temps. Une autre option est le didacticiel ouvert MIT .

Karl Bielefeldt
la source
Un tel utilisateur chevronné, surpris que vous n'ayez pas pris le temps de lire les réponses postées par d'autres utilisateurs, votre réponse est presque identique à celle qui existe déjà. Veillez à examiner les réponses préexistantes ou, si vous pensez que votre réponse est différente, aidez-moi à clarifier cela.
Paul Hazen le
Je n'ai vu personne d'autre recommander de prendre des cours de CS pour des cours au choix, ce que beaucoup de gens ne réalisent pas qu'il est permis. La quasi-duplication sur le reste est le résultat d'une grande question multipartie :-)
Karl Bielefeldt le
Je m'excuse, vous avez raison. Personne d'autre n'a suggéré que les cours de CS soient au choix. Bien que ce soit un bon conseil, et certainement pas faux , certaines des autres réponses ont été plus approfondies et ont répondu aux trois questions dans un meilleur contexte avec le reste de ma question. Pour ne nier aucun des conseils que vous donnez (je vous donne un +1), il vous sera certainement pris à cœur, sincèrement, merci beaucoup, et encore désolé de mon erreur.
Paul Hazen
3

Pourquoi pensez-vous qu'un diplôme de CS est si important pour être un programmeur réussi ?

Ce dont vous avez besoin pour réussir est un programmeur:

  • Passion pour la programmation
  • Une soif sans fin de connaissances sur les nouvelles technologies
  • Entrez dans l'industrie quelque part

Habituellement, le diplôme CS vous permettra d'entrer dans l'industrie, mais si vous n'avez pas la passion et la soif de connaissances, vous en souffrirez et vous ne serez jamais un bon programmeur.

On dirait que vous êtes déjà entré dans l'industrie et que vous avez à la fois la passion et la soif de savoir.

Ce que vous devez savoir, c'est continuer à rechercher, à apprendre et à acquérir de l'expérience. L'industrie saura vous apprécier sans diplôme.

Un exemple de quelqu'un avec qui je travaille

L'un des développeurs de logiciels travaillant dans mon équipe a un diplôme en droit ... après quelques années, elle a compris qu'elle n'aimait pas du tout le droit et qu'elle voulait être programmeuse. elle ne pouvait pas obtenir de travail en tant que programmeur (pas d'expérience, pas de diplôme), alors elle a suivi un cours d'informatique de 6 mois, puis elle a eu un travail et elle est un excellent développeur depuis.

Mithir
la source
Même s’il s’agit d’un excellent contenu, j’ai le sentiment qu’il n’est pas assez clair en ce qui concerne la réponse à ma question (quelque chose qui pourrait très bien être de ma faute si elle est mal formulée). Je ne suis pas convaincu que le fait d'avoir un diplôme en informatique en fait un programmeur performant. Ma question est plus « qui des matières enseignées dans un degré CS faire tendance à contribuer à la réussite d'un programmeur, et comment puis-je déterminer objectivement comment je mesure dans ces sujets, et comment faire Isupplement / Enrichir ma passion actuelle, la faim pour la connaissance et l'expérience de l'industrie avec de tels sujets? " Votre réponse n'est certainement pas fausse.
Paul Hazen le
2

IMHO, il n'y a pas de tâches de programmation (ni de vente, ni de tâches système, etc.), il n'y a que des tâches de résolution de problèmes. Nous embauchons et payons des employés pour résoudre des problèmes, écrire du code n’est qu’une partie de la résolution du problème. Oui, même les ventes sont une forme de résolution de problèmes. Ainsi, un diplôme en mathématiques prouve que vous pouvez résoudre des problèmes ainsi qu’un diplôme en informatique.

D'après votre message, il est clair que vous obtenez beaucoup d'expérience / de stages. Génial! ne vous inquiétez pas pour obtenir un emploi après l'obtention de votre diplôme.

Pour tenter de répondre à vos questions:

Des classes? choisissez des cours théoriques de CS plutôt que des cours de rédaction de code. Trouvez des cours non CS / math, par exemple. philosophie, il vous aidera à vous démarquer de la foule

des priorités? apprendre de nouvelles choses (pas seulement des cours faciles que vous connaissez déjà à moitié)

deux prochaines années? parler aux gens, apprendre, établir des relations, rechercher des activités extérieures. (Passe-temps / sports / passe-temps en dehors du travail / des études est un indice pour voir à quel point un candidat est motivé.)

Derniers conseils: Diplômé dès que vous le pouvez. Construire un réseau de contacts. Et le seul travail sécurisé est la création de votre propre travail. Cherchez des idées / opportunités pour créer votre propre entreprise. Bonne chance.

jqa
la source
C'est génial, merci pour votre réponse. Je donne un «+1», mais je ne peux pas la marquer comme réponse, mais d’autres réponses ont bien expliqué le pourquoi , de même que les moyens identifiés pour déterminer objectivement les objectifs d’apprentissage. Rien de tout cela n’annule votre réponse, je prends à cœur ce que vous dites et c’est vraiment utile, alors merci encore une fois.
Paul Hazen
@PaulHazen - si vous voulez savoir "pourquoi?" puis choisissez un cours de philosophie :-) Mais sérieusement, j’ai fait un diplôme théorique de 4 ans en CS, où il n’existait pas de cours de C, car «c’est quelque chose que vous pouvez vous enseigner». En plus des défis, c'était un groupe de personnes formidables et des idées rafraîchissantes. Et votre question montre clairement que vous avez les compétences en écriture requises pour n’importe quel cours non mathématique / CS.
Jqa
1

Tout d’abord, laissez-moi vous dire que je suis très heureux que vous ayez posé cette question car c’est une question que je me suis posée au fil des ans.

Je suppose que je pourrais me considérer un peu comme un succès dans ce domaine, jusqu'à présent. J'ai une certaine expérience universitaire et j'aimerais finir mes études collégiales en informatique, mais je n'ai pas encore mérité un diplôme universitaire en ce moment de ma vie. J'ai toutefois eu beaucoup de succès en génie logiciel malgré cet inconvénient (10 ans). Je dois être honnête avec vous, cependant, ce n'était pas nécessairement une chose facile à faire (bien sûr, je parierais que tout ce qui vaut la peine d'être fait n'est le plus souvent PAS le plus facile). Je vais aussi dire que ce n'est toujours pas la chose la plus facile. Il existe de nombreuses entreprises désireuses de donner une chance au bon candidat, mais je suis entré en contact avec d'autres personnes qui s'opposeront à l'absence de "sceau d'approbation" de cette formation. cependant,

Cela a commencé en .net dans une très grande entreprise. En tant que petit non-programmeur (à l'époque, en tant que représentant du support technique), j'ai tout appris sur les langages et les technologies utilisés dans l'entreprise pour laquelle je travaillais. De plus, et c’est probablement la chose la plus importante, j’ai mis en réseau. J'ai envoyé un email à chaque personne que je pouvais trouver dans le répertoire qui avait un ingénieur logiciel dans leur titre. Étais-je ennuyeux? Probablement. J'ai toujours été courtois et respectueux de moi-même avec un désir d'apprendre. Je planifiais les déjeuners ou tout simplement les trouvais à la cafétéria et m'asseyais pour essayer d'avoir une conversation. Parfois, c'était gênant ou je me faisais avoir, mais au final, ça a eu les résultats escomptés. J'ai pu obtenir des informations d'identification ponctuelles dans certaines bases de données internes et après un certain temps, j'ai acquis les informations d'identification requises pour développer des logiciels sur leur plate-forme propriétaire. Peu de temps après, je me suis retrouvé dans une position au sein de l'entreprise pour apporter des compétences en développement d'outils internes à l'équipe d'analyse sur laquelle j'avais travaillé à l'époque. À partir de là, je me suis toujours efforcé d’être le type le plus intelligent de la pièce de la manière la plus simple possible. J'étais désireux et je me suis assuré que tout le monde le savait. J'ai toujours essayé de fournir une solution dans la mesure du possible et j'ai constaté que si vous faites suffisamment d'efforts, il y a très peu de problèmes qu'il est impossible de résoudre (en dehors de la théorie quantique, peut-être). Je me suis retrouvé dans une position au sein de l'entreprise pour apporter quelques compétences en développement d'outils internes à l'équipe d'analyse sur laquelle j'ai travaillé à l'époque. À partir de là, je me suis toujours efforcé d’être le type le plus intelligent de la pièce de la manière la plus simple possible. J'étais désireux et je me suis assuré que tout le monde le savait. J'ai toujours essayé de fournir une solution dans la mesure du possible et j'ai constaté que si vous faites suffisamment d'efforts, il y a très peu de problèmes qu'il est impossible de résoudre (en dehors de la théorie quantique, peut-être). Je me suis retrouvé dans une position au sein de l'entreprise pour apporter quelques compétences en développement d'outils internes à l'équipe d'analyse sur laquelle j'ai travaillé à l'époque. À partir de là, je me suis toujours efforcé d’être le type le plus intelligent de la pièce de la manière la plus simple possible. J'étais désireux et je me suis assuré que tout le monde le savait. J'ai toujours essayé de fournir une solution dans la mesure du possible et j'ai constaté que si vous faites suffisamment d'efforts, il y a très peu de problèmes qu'il est impossible de résoudre (en dehors de la théorie quantique, peut-être).

Pour conclure ce qui pourrait être une longue histoire (et si vous êtes dans le nord-ouest du Pacifique, j'aimerais bien discuter autour d'une bière), j'ai eu ma "grosse pause" dans une toute petite startup qui était prête à me donner une chance. . Ils ont échangé mon manque d'expérience contre un salaire légèrement inférieur, et je me suis mis au travail. Je suis ensuite passé d'un petit magasin de développement à un autre au cours des prochaines années, gagnant des amitiés et des compétences tout au long du chemin, pour finalement devenir le développeur et directeur principal d'une petite société d'ingénierie.

Si je ne l’ai pas suffisamment fait savoir, c’est que vous devez créer un réseau. Faites-vous des amis, prenez quelques bières et riez et trouvez des personnes qui travaillent dans le domaine dans lequel vous souhaitez travailler (de préférence dans la pile de technologies de votre choix). Assurez-vous que les gens sachent que vous êtes prêt à faire tout ce qui est nécessaire et désireux d'accomplir votre travail, aussi monumental soit-il. Vous devez fondamentalement "surmonter" votre manque d'éducation formelle. Sautez et amusez-vous avec. Cette industrie est la meilleure sur la terre, à mon humble avis. J'ai noué des amitiés et des contacts durables qui m'ont aidé d'un endroit à l'autre et je continuerai à faire de même pour eux chaque fois que l'occasion se présentera.

Paul Shoemaker
la source
1
Je me sens vraiment mal que je ne peux pas marquer cela comme la réponse. Comme tant d'autres réponses, rien de ce que vous dites ne me semble erroné , mais vous vous concentrez entièrement sur la manière de faire avancer ma carrière alors que l'essentiel de ma question est de savoir comment réussir en tant que programmeur. Bien qu'un programmeur réussi implique une bonne carrière, je préfère me concentrer sur l'aspect "programmeur réussi" et laisser la partie carrière après réflexion (importante et très intentionnelle). Je vous donne cependant un "+1" pour des informations utiles qui répondent en partie à ma question.
Paul Hazen
Oh, et en parlant de réseautage, j'aimerais en savoir plus sur votre histoire! On dirait que nous partageons beaucoup du même chemin / objectifs. N'hésitez pas à choisir la méthode de contact qui vous convient le mieux à paulhazen.net/about , et nous prendrons cette bière.
Paul Hazen
1

Premièrement, laissez-moi LOL à la stipulation "concise mais approfondie" vers la fin de votre grand opus. Aux affaires:

Comment puis-je déterminer de manière objective quels domaines d'études, connaissances générales et autres compétences j'aurais pu acquérir grâce à un diplôme en informatique qui me fait défaut ou non?

Comme d’autres l’ont mentionné, vous pouvez commencer par le catalogue de cours . Mais je vous encourage à sortir des limites de cette liste. En fait, c'est bien que vous vous spécialisiez en mathématiques. De nombreux ingénieurs avec lesquels j'ai travaillé ne savent pas comment effectuer une intégration simple et n'ont jamais exploré en dehors des cours traditionnels de mathématiques discrètes de CS.

Cette réponse semble assez rare en termes de détails. Je n'ai pas de diplôme en informatique et je ne me suis pas retrouvé dans les domaines qui me manquaient. Je souhaite cependant que je consacre plus de temps aux autres choses qui m'intéressent. Histoire, linguistique et anglais, par exemple.

Comment puis-je trier ces compétences par ordre d'importance?

Apprenez ce que vous aimez

Qu'est ce qui est important pour toi? Qu'est-ce qui est important pour les employeurs? Mon heuristique personnelle a toujours été d'apprendre ce qui me semble le plus intéressant: vous devez aimer ce que vous faites. sinon, vous vous épuiserez. Le logiciel est un domaine tentaculaire de l' effort qu'il semble toujours être un emploi disponible pour un développeur compétent qui se passionne pour une de ces compétences.

Apprendre à apprendre et se pousser

Je suppose que cela me conduit à deux méta-compétences que je placerais au-dessus des autres: apprendre voracement et travailler dur. Ceux-ci peuvent sembler clichés et douloureusement évidents, mais la combinaison est rare. Je suis un peu partout en termes de compétences «nécessaires» - HTML / JavaScript frontal aux extensions de langage allant du développement mobile à la vision par ordinateur, à l'administration des systèmes et vice-versa, dans plus de 7 langues. La seule véritable compétence de base dans tout ce qui a été fait est de prendre l'habitude de vaincre ma propre ignorance.

J'aime vraiment la philosophie de Jack White sur les guitares et la musique (allez-y, regardez-la), et je pense que cela s'applique parfaitement au monde de la programmation. Mettez les choses un peu plus loin de la portée. Pousse toi. Cela semblera facile lorsque tout ce que quelqu'un voudra que vous fassiez soit votre travail.

Quel est le meilleur moyen (au cours des deux prochaines années) de compléter mes études pour atteindre ces attributs de manière à égaler, voire dépasser, le niveau d'un étudiant de premier cycle en sciences issu d'une université de premier plan?

  1. Classes CS non majeures

    Comme vous, le département CS de UW m'a rejeté ... bien que je pense que je les ai laissé faire une troisième fois avant de reprendre conscience. Je me suis spécialisé en informatique et en mathématiques appliquées. Mais j'ai quand même pris la totalité de la piste CS non majeure. Ce sont les CBS 373, 410, 413, 415 et 417. Alors, bien sûr, je crois que vous devriez d'abord suivre votre passion. Les miens me conduisent à ces cours. Et je pense que vous obtenez une formation de base assez complète avec eux, bien que cela puisse être un peu clair sur le côté théorique des choses.

    Maintenant, voici la bonne chose: avec l'informatique, la plupart d'entre eux comptaient pour mes cours obligatoires. Dans le département de mathématiques, vous devrez peut-être obtenir une approbation explicite, ce qui est loin d'être le cas pour le 417 CSE

    Appelez une requête DARS (probablement un lien UWNetID uniquement) et voyez où en sont les choses. J'avais l'habitude de faire cela pour plusieurs majors ad nauseum .

  2. Classes AMATH

    Dans le même ordre d'idées, le département de mathématiques appliquées dispose de cours dans lesquels des cours facultatifs pourraient être élaborés. Vous pourriez même être mineur dans AMATH comme le vôtre.

    Pourquoi est-ce que je mentionne ça? L'informatique numérique - par exemple AMATH 301/352 - est un énorme mystère pour la plupart des programmeurs. Si vous n’obtenez rien d’autre, vous pourrez écrire des articles de blog intéressants . Mais je soutiendrais que connaître les problèmes liés aux types numériques d'une langue et savoir comment les mesurer et les améliorer est très important.

  3. Construire quelque chose!

    La chose la plus importante que vous puissiez faire est de construire quelque chose de nouveau. Prenez une idée du début à la fin. Ne laissez pas cela être quelque chose de facile qui se trouve dans votre zone de confort.

    Les cours de programmation les plus fructueux que j'ai suivis comportaient toujours un important volet de programmation pratique. Pour un ingénieur, la théorie est extrêmement importante, tant qu'elle peut être transformée en quelque chose de réel. Allez donc trouver un papier CS qui sonne bien et essayez de le mettre en œuvre. Sérieusement.

  4. Obtenir un emploi

    Vous avez déjà indiqué que vous avez effectué un stage chez Amazon. C'est génial. Expérience de travail réelle est vraiment la clé! Il y a beaucoup de personnes avec des diplômes de CS qui ne peuvent pas programmer leur sortie d'un sac en papier humide. Avoir une bonne expérience de travail vaut bien plus qu'un diplôme.

fuite
la source
CETTE. C'est très bien. En fait, j'estime que cette réponse est plus que valable. La réponse indiquée était juste un peu plus valide ... * soupir * si difficile à juger avec autant de bonnes réponses :( J'aimerais pouvoir aider votre représentant plus. Mais puisque je vous connais dans la vie réelle (mais surtout par 'ai déjà discuté haha), je vais devoir t'acheter une bière ou du whisky comme prix de consolation
Paul Hazen
-2

Il y a plus que quelques histoires de personnes qui deviennent millionnaires avant d'obtenir leur diplôme universitaire, peut-être que celui que j'entends le plus souvent est Bill Gates. Les personnes ayant des capacités de niche ont tendance à faire mieux sans diplôme que le cookie portant la mention CS.

Trouvez quelque chose qui intéresse très peu de gens, généralement ennuyeux, fastidieux ou difficile à apprendre, et apprenez-le bien, devenez-en obsédé. Certains domaines dont j'ai entendu parler sont les logiciels dorsaux Unix (pas Linux, bien que Linux ne soit pas loin derrière la demande), Flash (je ne connais pas suffisamment Flash pour me rappeler exactement ce que c'était, mais je connais un type qui a déménagé. le sachant vite et il a dit qu’il y avait TOUJOURS un marché pour cela, principalement parce que les gens disent que c’est en train de mourir et ne l’apprendront pas). Vous devrez peut-être prendre quelques cours pour commencer, mais si vous connaissez votre matériel et que vous avez un portefeuille impressionnant, il y a des entreprises qui auront besoin de vous!

BillyNair
la source
1
-1 pour ne pas répondre à ma question. Vous ne vous trompez pas, mais vous semblez avoir sauté ma section "Ce que je ne cherche pas" et n'avoir abordé aucune des choses que je cherchais.
Paul Hazen