Peut-on obtenir une base de programmation solide sans aller au collège / université? [fermé]

28

Tout d'abord, j'ai déjà cherché sur le site et lu tous les sujets précédents "autodidacte vs collège". La majorité des réponses défendaient que le choix du collège était le meilleur choix, pour deux raisons principales:

  1. Aller au collège vous donne le papier, qui est essentiel pour décrocher des emplois, surtout en période économique difficile.

  2. Aller au collège vous donne une base de programmation solide, vous enseignant les principes qui seront essentiels quel que soit la langue / le chemin que vous suivrez.

Voici ma question: je ne m'inquiète pas du tout pour la raison 1, car j'ai déjà ma propre entreprise (je crée des sites Web / je fais du marketing d'affiliation) et une situation financière stable, donc je suis sûr que je n'aurai pas besoin de regarder autour de moi pour un travail.

Je m'inquiète cependant pour la raison 2. Autrement dit, je veux m'assurer d'avoir une base de programmation aussi solide que n'importe qui d'autre, et je me demande si cela est possible avec l'auto-apprentissage.

Supposons que je prenne mon temps pour étudier les bases, comme les mathématiques discrètes, la conception d'algorithmes, la logique de programmation, l'architecture informatique, l'assemblage, la programmation C, les bases de données et les structures de données - principalement en utilisant des livres, des ressources en ligne et beaucoup de codage. Disons que je passe 1-2 ans à couvrir ces bases.

Pensez-vous que ma fondation serait solide ou manquerait encore par rapport à quelqu'un qui est allé à l'université?

Daniel
la source
2
Il y a probablement au moins une personne sur cette planète qui le peut. Soit dit en passant, la raison 1 compte toujours. Lorsque toutes choses sont égales par ailleurs, «ils» préfèrent généralement une personne ayant une éducation plus formelle.
Job
1
Je peux vous dire une chose, vous ne découvrirez pas ce que signifie solide dans une université.
Peter Turner
Le fait est qu'il faut dix ans pour apprendre la programmation, et passer certaines de ces années à apprendre dans une université peut aider.
Basile Starynkevitch

Réponses:

17

Absolument. Oui c'est possible. Comment puis-je savoir? Parce que je l'ai fait!

C'est difficile. Ne vous faites aucune illusion à ce sujet. Sans tuteur où aller lorsque les choses ne fonctionnent pas, vous devez résoudre vous-même les problèmes. Il y a beaucoup à apprendre et si vous n'êtes pas motivé ou si vous n'êtes pas suffisamment dévoué, vous ne pourrez pas le faire. Pour moi, j'ai du mal à être motivé par quoi que ce soit, mais j'aime tellement apprendre et programmer que je n'ai pas à me battre.

Quelques conseils:

  • Apprendre en faisant! Vous voulez savoir comment fonctionnent les arbres binaires? Faire un.
  • Faites en apprenant. Fixez-vous des projets ambitieux où vous devrez apprendre de nouvelles choses pour les réaliser. Attention: Si vous vous fixez des projets trop difficiles, il est facile de se décourager, mais si vous vous fixez des projets trop faciles, vous n'apprendrez pas grand-chose. Vous cherchez une zone de beurre.
  • Commencez par C. Les langages de haut niveau vous rendent paresseux. Je n'aurais jamais appris le C si j'avais d'abord appris le python.
  • Wikipédia devrait être votre premier point de contact pour tous les concepts que vous devez apprendre.
  • Peu importe si vous ne terminez jamais un seul projet (après tout, ce qui est terminé). Il est beaucoup plus important d'apprendre de nouvelles choses. Cela ne veut pas dire que vous ne devriez jamais essayer de terminer un projet. Cela peut être un énorme stimulant de motivation de voir quelque chose que vous avez fait fonctionner. Il est facile de se laisser distancer, ne vous inquiétez pas si vous le faites.

Comment savez-vous que vous avez terminé? Eh bien, la raison pour laquelle vous entreprenez un diplôme est pour que vous deveniez compétent en programmation. Lorsque vous êtes sûr de pouvoir écrire n'importe quel logiciel avec un temps raisonnable, vous êtes programmeur, mais cela ne signifie pas que vous devez arrêter d'apprendre.

Soit dit en passant, je souffre maintenant du premier point. Être loin de toute entreprise de développement de logiciels n'aide pas non plus.

dan_waterworth
la source
Pareil ici. J'ai obtenu un diplôme pour le journal. Je n'ai pas trop appris, surtout tout ce que je savais déjà. J'ai appris que je détestais vraiment java plus que je ne le pensais au départ (j'ai dû l'utiliser pour mon projet final) et j'ai eu un grand professeur qui nous a appris de son expérience personnelle où j'ai appris beaucoup de choses.
Echo dit Réintégrer Monica le
@Echo, cela en valait-il la peine?
dan_waterworth
@Dan_waterworth, j'aime le penser.
Echo dit Réintégrer Monica le
Je pense qu'il est beaucoup plus logique de commencer avec un langage de programmation de haut niveau, en particulier avec Python. Bien sûr, cela dépend des types de tâches que vous souhaitez entreprendre une fois que vous avez terminé l'apprentissage des bases: si vous voulez faire de la programmation de systèmes hardcore, optez pour la route C, si vous voulez développer des applications pour les utilisateurs finaux, ne ' ne vous embêtez pas avec C et optez pour quelque chose comme Python.
Zsolt Török
en désaccord avec la partie C. vous voulez rester à un niveau d'abstraction élevé. vous pouvez affirmer que C vous rend paresseux, apprenez le code machine! si vous n'avez pas besoin de performances C, c'est bien de rester avec python.
segfault
12

Je pense que la désignation la plus importante du Collège / Université est de vous apprendre à apprendre des choses par vous-même. Peu importe, que ce soit la programmation, la physique, la chimie, les mathématiques, etc. L'université m'a appris à apprendre sans l'aide de personne.

Sorantis
la source
1
Eh bien, j'ai déjà un diplôme en économie internationale, donc cette partie est couverte.
Daniel
1
J'ai un ami qui a un diplôme dans certains <nom>, et il est un programmeur Flash / PHP réussi. Je suppose que tout dépend de vous. Par exemple, j'ai un diplôme en physique, mais je suis développeur de logiciels. Il y a deux ans, j'ai décidé d'obtenir un Master en CS, juste parce que je le voulais, pas parce que j'en avais besoin.
Sorantis
5
Mes études collégiales m'ont appris à acquérir un nouveau langage informatique en 1-2 jours à partir de tutoriels en ligne. Si vous pouvez déjà le faire, vous aurez appris une grande leçon.
apoorv020
1
Oui, mais vous devez être un autodidacte engagé.
dietbuddha
3
Certaines personnes n'ont pas besoin d'apprendre à apprendre de manière autonome.
dan_waterworth
6

Certaines personnes prospèrent dans des environnements académiques et ont même besoin qu'elles apprennent (généralement comme une forme de motivation). D'autres (comme moi) ne le font pas et peuvent même les trouver rebutants.

J'ai eu une longue carrière dans le logiciel sans avoir obtenu de diplôme. Vers la fin de cette carrière, j'étais dans un rôle d'architecte et l'architecte principal de mon projet a dit que ma connaissance des logiciels et de l'informatique (les deux ne sont pas la même chose!) Équivalait facilement à une maîtrise de l'Université de Waterloo (une des meilleures écoles CS du Canada).

Il y a bien sûr certaines lacunes dans mon bassin de connaissances. Mes compétences en mathématiques sont suffisantes pour suivre ce que j'apprends aujourd'hui. Je déteste les mathématiques pures et je ne peux généralement pas être obligé de me tenir au courant des dernières nouveautés. Cela a parfois mis un frein à ma compréhension des choses (comme, par exemple, Haskell) jusqu'à ce que mes compétences en mathématiques atteignent un niveau suffisant pour comprendre les concepts. Mais le fait demeure que l'information est disponible sans que je sois près d'un CS universitaire ou d'un département de mathématiques. Tout ce que je peux vraiment dire, c'est que parfois ma séquence d'apprentissage est sous-optimale - je dois parfois revenir en arrière et remplir du matériel de base avant de poursuivre ce que je fais.

JUSTE MON AVIS correct
la source
4

Je pense que votre fondation sera solide, à condition que vous ayez la discipline nécessaire pour vous asseoir et vous enseigner toutes ces choses et travailler à travers les exemples. J'ai un diplôme, mais c'est en génie, pas en informatique. J'ai travaillé avec de nombreux excellents programmeurs professionnels qui ont appris tout ce qu'ils doivent savoir. L'autoformation est quelque chose dont vous aurez besoin de toute façon pour être un bon programmeur, car il y a toujours une nouvelle technologie qui n'apparaît pas à l'école.

Marcie
la source
3

Comme pour la plupart des choses dans la vie, ma réponse est solide, cela dépend de la personne . Je crois fermement que vous n'avez pas besoin d'un baccalauréat pour être programmeur; cependant, d'après mon expérience, le collège a tendance à exposer les gens à des problèmes et à des idées qu'ils ne peuvent pas rencontrer par eux-mêmes grâce à une étude indépendante.

De nos jours, une personne motivée peut aller en ligne, et grâce à des sources telles que MIT Open Courseware , mettre en place un cours d'étude indépendante qui leur donnera une assez large étendue de connaissances et c'est cette étendue de connaissances que je ressens est ce qui fait un bon développeur. Cependant, une personne qui n'est pas aussi motivée pourrait trouver qu'elle est capable d'obtenir en apprenant une seule langue et peut être en mesure de se contenter de sa carrière.

Comme je l'ai dit précédemment, je pense que c'est l'étendue des connaissances qui fait un bon développeur car cela signifie qu'ils ont été exposés à plus de problèmes et ont développé leurs compétences en résolution de problèmes. Vous n'avez pas besoin d'aller à l'école pour obtenir cette étendue de connaissances, mais l'école vous aide certainement à cet égard, car un bon programme d'études vous obligera à développer une étendue de connaissances.

rjzii
la source
2

En tant que programmeur, je trouve que je joue constamment avec des API et des langages non liés au travail (Ruby on Rails, Python, Node.js, etc.). Je le fais plus par intérêt que pour le travail. J'ai 2 diplômes associés mais même après 10 ans de programmation en Java / JEE je trouve que la théorie d'un diplôme BS me manque vraiment (Big O, Algorithmes, Descrete Math, etc).

Je prends des cours du soir à temps partiel pour obtenir mon BS en informatique, mais il n'y a pas beaucoup de théorie CS offerte dans ce programme. J'obtiens mon diplôme principalement pour avoir le "papier" car c'est plus business que technique mais c'est ma seule option pour les cours du soir.

Découvrez MIT Open Coursware . C'est gratuit et c'est une excellente ressource pour combler les lacunes de la théorie CS / Math.

Heath Lilley
la source
2

Je crois que c'est une erreur de penser que le collège / l'université vous donnera par définition une bonne base de programmation. Ils vous apprendront beaucoup de théorie et beaucoup de façons différentes de penser à un problème. C'est bien beau, mais transformer cette théorie en pratique est un ensemble de compétences différent.

Le seul moyen efficace d'enseigner la bonne application de la théorie est le mentorat et la pratique. En bref, vous devez essayer d'appliquer la théorie du mieux que vous le pouvez et vous fier à quelqu'un qui a plus d'expérience pour vous formuler des critiques constructives ou vous orienter dans la bonne direction. Votre mentor ne fera pas votre travail pour vous, mais vous aidera à mieux faire votre travail.

Je ne serais pas le développeur que je suis aujourd'hui sans l'aide de bons mentors au début de ma carrière. Travailler sur des projets open source est un bon moyen de trouver des mentors qui seront prêts à passer du temps à marteler les détails. Du moins, ce fut mon expérience. J'ai également eu un mentor dans mon premier travail de programmation qui m'a aidé à comprendre comment concevoir des applications facilement étendues.

Y a-t-il donc des avantages pour le collège / l'université? Oui. Cependant, ils ne sont pas équipés pour vous aider à transformer la théorie en pratique, sauf si vous la prenez sur vous. Si vous commencez à essayer d'appliquer ce que vous apprenez à l'université, vous pouvez commencer à poser les bons types de questions qui vous aideront à vraiment comprendre la théorie à un niveau plus pratique. Si vous attendez d'être au travail, vous venez de retarder cet important processus d'apprentissage.

Berin Loritsch
la source
Se mettre d'accord. Presque toute la programmation commerciale que j'ai faite s'apparente à travailler dans un métier comme un charpentier. Je pense qu'un apprenti / compagnon / programme de maîtrise serait plus utile qu'une université pour apprendre à programmer.
cfeduke
2

Les gens ont tendance à surestimer l'importance des fondements théoriques, des mathématiques et des connaissances algorithmiques de l'OMI. Les raisons pour lesquelles les programmeurs poussent et interviewent ces choses sont qu'ils sont eux-mêmes des "mordus" des mathématiques.

Maintenant, il y a bien sûr une programmation où il est utile de savoir ce qu'est une "machine d'état", ou comment utiliser une recherche "Booyer-Moore". Il y a même des problèmes où il peut être utile de connaître de vraies mathématiques, comme si vous travaillez avec des calculs financiers ou des simulations physiques.

Cependant, le fait est que 90% de la programmation n'est généralement pas de ceux-ci, peu d'entre nous font du développement algorithmique hardcore. La plupart des choses que vous devez apprendre peuvent être apprises au fur et à mesure. Pas besoin de construire un immense édifice de fondation mais plutôt garder une curiosité constante pour résoudre différents problèmes.

Je suis moi-même 100% autodidacte et je n'ai jamais eu de problème pour apprendre les algorithmes. J'ai fait du travail sur les systèmes financiers et même cela était faisable sans aucune connaissance théorique approfondie.

Être bon en programmation ne concerne pas les fondations, il s'agit d'élargir continuellement votre boîte à outils et l'apprentissage que vous obtenez est tellement plus utile lorsque vous pouvez le placer dans le contexte d'un problème qui a vraiment besoin d'être résolu plutôt que de pure recherche théorique.

Vous n'avez pas besoin de tout savoir en détail, c'est pour cela que Google, StackOverflow et Wikipedia sont là :) Vous avez cependant besoin de connaître l' existence de différents outils et méthodes pour réaliser qu'ils sont utilisables et applicables à votre situation. Vous devez également acquérir l'expérience de savoir quel outil est le mieux à appliquer. Les fondations sont généralement gâtées pour les débutants car ils n'ont aucune expérience de la raison pour laquelle un outil particulier serait utile. Si vous avez beaucoup d'expérience, certaines choses vont simplement "cliquer" en place.

Certaines choses que je recommanderais cependant:

  • Si ce n'est pas le cas, commencez à vous familiariser avec les modèles de conception, c'est l'outil le plus pratique et universel de votre boîte à outils.

  • Lisez quelques aperçus généraux des différents algorithmes si vous êtes curieux, juste pour savoir ce qu'il y a quand vous en aurez besoin

  • En savoir plus sur la parallélisation et le multithreading (et sur certains programmes fonctionnels). Être capable de prendre en charge plusieurs cœurs est important aujourd'hui et va bientôt disparaître, c'est donc une connaissance cruciale.

  • Faites des projets de loisir stimulants et expérimentaux qui poussent vos compétences vers l'avant et vous forcent à apprendre des choses en contexte.

konrad
la source
Votre estimation d'environ 90% de la programmation n'ayant pas un contenu théorique solide est probablement juste. Malheureusement, la plupart des programmeurs tomberont périodiquement sur les 10% restants, donc c'est nécessaire.
Orbling
2

Une chose que le collège vous aidera avec laquelle vous pourriez avoir du mal à vous débrouiller seul est la capacité de lire et de comprendre les articles de recherche universitaire, en particulier les mathématiques. Cependant, même cela peut être réalisé par vous-même, mais il est utile que des instructeurs et des pairs vous guident dans le processus d'apprentissage pour obtenir les connaissances plus rapidement et plus facilement.

En tant que programmeur général de systèmes d'information, vous ne lirez probablement pas les articles de recherche pour bien faire. Les systèmes d'information d'aujourd'hui sont assez simples et la plupart des algorithmes intenses tels que la recherche, le tri et l'indexation sont effectués par les systèmes de base de données. Tant que vous comprenez les concepts, vous ne devriez avoir aucune difficulté.

Si vous décidez de vous impliquer dans des domaines de programmation plus difficiles tels que le développement de micro-systèmes d'exploitation, le développement de compilateurs, l'intelligence artificielle, etc., avoir la capacité de lire et de comprendre des documents de recherche peut être essentiel pour mettre en œuvre des systèmes rapidement et efficacement.

En ce qui concerne la possibilité d'appliquer les connaissances, c'est très individualiste. Les personnes qui vont au collège peuvent ne pas être en mesure d'appliquer les principes aussi bien que ceux qui ne vont pas au collège. Il y a un vieux dicton qui dit: «peu importe ce qui entre mais ce qui sort».

Pour résumer, les connaissances que vous obtenez en allant au collège peuvent vous aider à mieux comprendre et communiquer avec le monde universitaire. Cependant, la connaissance peut être obtenue sans aller au collège. Avoir un diplôme permet de persuader plus facilement les autres que vous savez ce que vous faites et pouvez comprendre les articles de recherche universitaire.

k rey
la source
2

Je ne pense pas que beaucoup de gens obtiendront une aussi bonne "fondation" grâce à l'autoformation qu'ils le feraient en allant à l'université, du moins pas dans le même laps de temps. Deux ans à lire des livres au hasard et à jouer avec des problèmes de jouets pendant votre temps libre ne vous mèneront pas au même niveau que deux ans d'études ciblées avec un programme organisé. Cela vous suffira-t-il pour vous en sortir? Très probablement. Mais si vous voulez vraiment "une aussi bonne fondation que quiconque", cela prendra plus de deux ans.

Pour ne pas vous décourager, ce ne serait certainement pas une perte de temps. Je ne suis tout simplement pas très confiant que beaucoup de gens peuvent réunir l'équivalent de deux années de collège en deux ans tout en gérant leur propre entreprise et en ayant une sorte de vie personnelle / familiale.

TMN
la source
J'ai fait. En fait, la majeure partie de mon étude a duré nettement moins de 2 ans (environ 6 mois), mais je fais régulièrement des semaines de 60 à 70 heures.
dan_waterworth
D'accord avec TMN. En général, votre éducation formelle n'a aucune idée de l'endroit où vous vous retrouverez, elle a une certaine quantité de LARGEUR (c'est-à-dire qu'elle a tendance à couvrir beaucoup de territoire). Mon exemple sur un post précédent: Je n'ai jamais pensé utiliser la construction de compilateur dans le cadre de mon cours. Il s'avère que, plus de 20 ans plus tard, ce fut l'un des cours les plus importants que j'ai jamais fait. Maintenant, le problème est, pour ceux qui n'ont pas cette connaissance à l'arrière de la tête - vous ne savez pas ce que vous ne savez pas. Et ce niveau d'ignorance vous rend moins efficace, à long terme.
quick_now
1

Je me développe professionnellement depuis une décennie sans diplôme. Lorsque j'interviewe des personnes, je m'intéresse à leur capacité à résoudre des problèmes et à coder. Cela dit, il y a des entreprises / rôles auxquels je ne suis pas éligible uniquement parce qu'ils insistent sur un diplôme. Certains consultants ont cette politique car ils peuvent vous vendre plus pour les clients.

ian
la source
Il s'agit principalement d'un problème où l'embauche se fait par l'intermédiaire d'un service des ressources humaines (RH). La meilleure façon d'y faire face est de construire un réseau social d'entreprise de responsables informatiques qui vous connaissent ou au moins vous, et essayons de contourner le processus de «filtrage» RH. En d'autres termes, les personnes sans diplôme ont tendance à être mieux à même de commercialiser leurs compétences et leurs services plutôt que de postuler à des postes annoncés. La plupart des responsables informatiques compétents embaucheront sur la base d'un historique solide et de la réputation (c'est-à-dire la recommandation d'une personne en qui ils ont confiance). Ne vous attendez pas à obtenir un emploi au gouvernement. C'est rare de nos jours
mctylr
1

Si vous jouez au jeu des nombres, ceux qui ont un diplôme obtiennent de meilleurs emplois et paient.

Tous ceux qui ont obtenu le diplôme n'ont pas appris / se sont souvenus de quoi que ce soit.

La plupart des gens ne prendraient pas le temps d'apprendre une grande partie de la théorie / des antécédents / des bases comme ils le feraient s'ils allaient à l'université. Peut-être que vos parents vous soutiendraient pendant 4 ans d'auto-apprentissage; tout le monde doit trouver un emploi.

L'inconvénient serait que si vous aviez un diplôme CS et échouiez à un certain niveau, vous pourriez être considéré comme ayant une faible puissance. Avouons-le, si vous ne l'avez pas obtenu en 4 ans d'alimentation à la cuillère, vous ne le découvrirez pas sur le côté tout en maintenant un emploi à temps plein. Exceptions bien sûr.

JeffO
la source
1

Si vous voulez vraiment gagner votre vie dans le domaine du développement logiciel sans diplôme, je vous suggère de contacter votre université locale. Obtenez d'eux une liste des cours qui seraient nécessaires si vous obteniez un diplôme. La grande majorité des universités auront cette information disponible sur demande, ainsi qu'un synopsis / programme / liste de livres pour chacun des cours. Descendez cette liste. Recherchez les livres en question. Voir quels sujets ils couvrent. Si vous voyez quelque chose de couvert que vous ne comprenez pas, achetez / consultez le livre et apprenez-le. À la fin de ce processus, vous devriez au moins savoir ce que vous savez et ce que vous ne savez pas, et être assez compétitif avec votre diplômé universitaire moyen (qui peut avoir dormi / triché dans certains de ces cours de toute façon).

GWLlosa
la source
1

Supposons que je prenne mon temps pour étudier les bases, comme les mathématiques discrètes, la conception d'algorithmes, la logique de programmation, l'architecture informatique, l'assemblage, la programmation C, les bases de données et les structures de données - principalement en utilisant des livres, des ressources en ligne et beaucoup de codage. Disons que je passe 1-2 ans à couvrir ces bases.

Oui et non. Certaines choses sont brutalement difficiles à saisir sans professeur. Habituellement, c'est le truc le plus mathématique.

Je crois - et je crois toujours après avoir aidé à commencer les majors CS en tant qu'AT - que toute personne sans retard mental peut apprendre à coder au niveau PHP / Java / C #. Ce n'est pas, fondamentalement, difficile.

D'ailleurs, l'assemblage et les autres domaines technologiques que vous mentionnez ne le sont pas non plus. Ce sont des détails d'implémentation qui sont bons à savoir.

Les structures de données, les algorithmes, la conception numérique, l'architecture informatique et l'algèbre de base de données sont assez difficiles, si l'apprentissage est approfondi.

Paul Nathan
la source
0

Je ne doute pas qu'une personne motivée et dévouée puisse obtenir une base solide, mais si vous choisissez de ne pas obtenir un diplôme, vous manquerez de nombreux aspects qui amélioreront votre développement. L'une de ces choses et peut-être la plus importante est l'exposition à des personnes partageant les mêmes idées avec lesquelles vous pouvez échanger des idées et des concepts. Il est également très agréable de pouvoir écouter les expériences d'instructeurs qui ont une sagesse précieuse à transmettre et peuvent parfois redresser des concepts mal compris dans une phrase ou deux. Il est agréable de pouvoir clarifier les concepts au moment de l'exposition initiale plutôt que de laisser les mauvaises idées couler et de les trier plus tard.

Dave B.
la source