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?
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:
- Demandez à la communauté de développement (ce post)
- Poursuivre le mentorat avec des développeurs chevronnés qui partagent avec moi un cheminement de carrière similaire
- Définir les objectifs "d'apprentissage" à court et à long terme et les programmes suivants décrivant les sujets d'étude
- 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.
Réponses:
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?
Sur vos questions
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. :
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 )
É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.
la source
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.
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.
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!]
la source
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.
la source
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.
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.
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.
la source
Il suffit de regarder les exigences du diplôme, puis de rechercher le programme de chaque classe.
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.
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 .
la source
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:
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.
la source
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.
la source
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.
la source
Premièrement, laissez-moi LOL à la stipulation "concise mais approfondie" vers la fin de votre grand opus. Aux affaires:
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.
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.
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 .
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.
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.
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.
la source
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!
la source