Atteindre l'état de programmation intermédiaire [fermé]

32

Je suis un ingénieur logiciel qui a eu des postes de programmation en VBA (bien que je n'ose pas considérer cette `` vraie '' expérience, car c'était un essai et une erreur!), Perl avec CGI, C # et ASP.NET. Les deux derniers sont post-licence, avec mon entrée dans le «monde réel». Je suis diplômé de 2 ans et j'ai 5 ans d'expérience (au total) dans les langues que j'ai mentionnées. Cependant, en ce qui concerne mon CV, je ne peux que mettre 2 ans pour C # et moins d'un an pour ASP.NET.

Je sens que je connais le C #, mais je dois encore passer du temps à dire «Que fait cette méthode?», Alors que certains des ingénieurs de niveau supérieur peuvent immédiatement dire: «Oh, la méthode X fait cela, sans jamais avoir examiné cela. avant. " Je sais donc empiriquement qu'il y a un gouffre, mais je ne sais pas exactement comment le combler. J'ai commencé à programmer dans Project Euler et j'ai acheté un livre sur les modèles de conception, mais j'ai toujours l'impression de passer chaque jour à marcher sur l'eau, au lieu d'avancer.

Cela ne veut pas dire que je n'ai pas l'impression d'avoir progressé, cela signifie simplement que dans la mesure où je viens chaque jour, je vois toujours le sommet de la montagne au loin.

Ma question est la suivante: comment avez-vous surmonté ce plateau? Combien de temps cela vous a-t-il pris? Quelles méthodes pouvez-vous suggérer pour m'aider à cet égard?

J'ai lu Code Complete , The Mythical Man Month et CLR via C #, 2e édition - ma question est: que dois-je faire maintenant?


Edit : Je viens de trouver cette question sur les projets d'un programmeur de niveau intermédiaire. Je pense que cela ajoute à la discussion (même si cela ne remplace pas ma question). En tant que tel, je l'ajoute à la question en tant que "Pour plus d'informations".

George Stocker
la source
2
J'ai joué avec Project Euler récemment, et il ne couvre qu'une gamme assez limitée de techniques. C'est très bien d'optimiser une fonction par mémoisation ou programmation dynamique, mais cela ne vous aidera pas à écrire une interface graphique ou des applications Web. Les problèmes difficiles sont conçus pour être des mathématiques dures, pas un codage dur.
Bon amusement, pour tout cela: je n'ai rien contre, il n'est tout simplement pas conçu pour vous aider à apprendre une langue au-delà des types de données de base, des structures et peut-être quelques techniques d'optimisation si comme moi vous préférez obtenir vos solutions 0,1 s si possible.
@Gortok, je suis d'accord qu'il y a beaucoup de choses spécifiques que vous pouvez faire pour améliorer vos compétences, mais cela dépend certainement du type de programmation que vous faites. Les développeurs Windows ont besoin de compétences différentes de celles des programmeurs d'appareils embarqués, par exemple. Je pense que la question posée est en fait trop large pour obtenir une bonne réponse.
Nathan Fellman
1
Je programme depuis l'âge de 2 ans. J'ai échoué à devenir le meilleur programmeur du monde, et maintenant je déteste ma vie. Je souhaite que mon objectif soit à la place d'être la meilleure star du porno.
Vous n'avez pas l'impression d'avancer parce que votre intuition vous indique un écart entre la pratique académique et la pratique des affaires (dans le monde réel). Et votre intuition est correcte. La pratique académique est tout au sujet de petits problèmes et exercices autonomes. Les entreprises corrigent un bug ou ajoutent une fonctionnalité / page Web, etc. à un géant (généralement). La pratique académique est récursive. Les affaires sont la lisibilité et la maintenabilité. La pratique académique est la connaissance des mathématiques et de l'informatique. Les affaires sont autant les compétences humaines et l'analyse des exigences que le codage. Aurait mis cela comme réponse mais le Q est fermé.
Brad Thomas

Réponses:

41

Toutes nos félicitations!

D'après votre description, vous êtes un développeur intermédiaire.

Cette phase durera environ 3-8 ans, selon votre volonté d'apprendre au-delà du problème du moment

Pour accélérer le processus, lisez, surfez, bloguez, allez aux réunions de groupes d'utilisateurs, trouvez un mentor, faites des recherches indépendantes, codez des projets parallèles et ensevelissez-vous dans les nouvelles technologies. Cela peut raser un an ou deux de temps.

Ou vous pourriez avoir une vie en dehors de la programmation ;-)

Sérieusement, restez à jour et introspectif, mais désactivez de temps en temps la chose #% $ @

Addendum: lorsque vous sortez, pensez à porter un pantalon.

Steven A. Lowe
la source
17
et méfiez-vous de citer Tolkien, c'est un hobbit difficile à casser
Steven A. Lowe
1
Bien joué M. Lowe, bien joué.
kemiller2002
1
Sérieusement, ayez une vie en dehors de la programmation. Un: il y a plus dans la vie que le code. Deux: on peut apprendre beaucoup d'autres disciplines.
kemiller2002
1
+1 - Bien joué. Rien ne remplace la pratique (ou un bon sens de l'humour).
15

L'une des meilleures façons de gravir la montagne est d'écrire quelque chose pour vous parce que vous le souhaitez. Les meilleurs programmeurs ont de merveilleuses réponses à la question «quel est le programme le plus intéressant que vous ayez écrit pendant votre temps libre». Si vous n'écrivez aucun code pendant votre temps libre, vous n'aimez pas assez votre métier pour vous améliorer.

Norman Ramsey
la source
8
Je n'aime pas cette théorie, les gens ont des emplois à temps plein et ensuite d'autres responsabilités. Il n'est pas responsable de présumer que ceux qui n'ont pas de projets parallèles n'aiment pas assez la programmation ou sont de mauvais programmeurs. Comme l'indique la réponse acceptée, Ayez une vie en dehors de la programmation.
10
Je ne suis pas d'accord --- les meilleurs programmeurs sont comme les meilleurs écrivains: ils ne peuvent littéralement pas s'empêcher de faire ce qu'ils font le mieux.
Norman Ramsey
2
Ils ne peuvent peut-être pas s’arrêter, mais la vie le peut, et pour certains.
Shannon Severance
@ShannonSeverance, Pour beaucoup, ce sera le cas, pas seulement pour certains.
Pacerier
9

Vous devez passer par le stade larvaire.

Bien que je programme maintenant en VB.NET sous Windows, je suis passé par une étape larvaire sous Linux x86 avec l'assemblage comme langue principale.

Pendant un certain temps, vous devez vous consacrer au métier jusqu'à ce que vous le maîtrisiez. Ce que l'on appelle les instincts d'un programmeur maître sont des comportements vraiment appris. C'est une culture partagée. Les programmeurs doivent penser les uns aux autres et aimer la machine.

Les moutons deviennent comme des moutons et des moutons comme des moutons, mais ni l'un ni l'autre ne sont très longs dans le monde. Avec [arbres et] Ents, c'est plus rapide et plus proche, et ils marchent ensemble à travers les âges. - Tolkien

Connaissez et comprenez. Les plus grandes compétences ne sont pas celles liées à une langue spécifique, mais peuvent être appliquées à presque toutes les langues. Connaître les concepts, les rechercher dans les problèmes et les langues, être prêt à inventer de nouvelles choses si nécessaire.

C'est le chemin vers la grandeur.

Josué
la source
2
Cela implique-t-il d'une manière ou d'une autre des guépards? L'image dans ma tête représente des guépards.
2
lol "Ce n'est pas facile d'être ringard!"
gnovice
Stade larvaire ou stade Laravel? ;)
Brad Thomas
9

Je programme depuis que j'ai 8 ans ... j'aurai 33 ans la veille de Noël. Je vois toujours la montagne au loin. Peu importe le chemin parcouru, il y a toujours plus à apprendre.

Mettez les paradigmes à votre portée et découvrez comment le langage que vous codez actuellement met en œuvre ces paradigmes. La programmation est une expérience de vie qui a toujours plus à apprendre. C'est ça la joie, peu importe votre compétence, il y en a toujours plus.

Une façon que je trouve d'apprendre de nouvelles choses que je n'apprendrais pas normalement est de passer du temps ici et sur d'autres forums de programmation comme Bytes et Experts Exchange où les gens posent des questions. Si vous pouvez répondre à la question, allez-y, si vous ne le pouvez pas, essayez de comprendre comment accomplir la tâche vous-même, non seulement le PO appréciera vos efforts et votre aide, mais vous apprendrez aussi quelque chose de nouveau.

Je trouve que j'apprends plus en aidant d'autres personnes à trouver des réponses à des choses que je ne connais pas encore que je ne le ferais en programmant simplement mes trucs quotidiens que je fais jour après jour.

BenAlabaster
la source
9

Le statut de programmation intermédiaire implique que vous sortez de la mentalité de "type plus rapide" de singe de code et que vous souhaitez construire de vrais systèmes en tant que carrière. Il s'agit d'un changement professionnel majeur et, franchement, il ne s'agit pas vraiment de compétences techniques. Travailler au niveau intermédiaire (aka "développeur") nécessite un ensemble de compétences relationnelles très avancé.

Voici quelques symptômes auxquels vous pourriez penser:

  1. Vous lancez-vous dans l'édition de guerres en ligne? Si c'est le cas, vous montrez peut-être que vous aimez discuter des détails à l'intérieur de votre zone de confort plus que vous ne voulez essayer de comprendre le point de vue de l'autre personne.
  2. Pensez-vous que les langues sont des choses vraiment différentes? C # et Java apportent tous deux leurs propres plates-formes et ressources, mais les deux sont des modèles efficaces de calculabilité. Pouvez-vous apprendre une nouvelle langue et une plate-forme assez rapidement pour être payé pour travailler?
  3. Pensez-vous toujours que les tâches logicielles sont de la frappe? Si on vous confie une tâche au travail, pourquoi? À quoi va servir ce code? De quel système fera-t-il partie? Ces informations peuvent changer radicalement la solution que vous proposez.
  4. Avez - vous quitté le savoir-it-all phase de votre vie derrière? Écoutez-vous le reste de l'équipe ou essayez-vous simplement de penser à la prochaine chose à dire?
  5. Avez-vous réalisé que «tirer une nuit blanche» pour produire une solution de dernière minute de buggy n'est plus impressionnant? Après les huit premières heures, vous pouvez facilement imaginer que le reste du temps n'a été utilisé que pour taper des bogues.

Le meilleur résumé que je puisse trouver est que le programmeur intermédiaire (ou "développeur") a appris à être plus productif en huit heures de travail afin qu'il puisse rentrer à la maison et avoir une vie en dehors du travail.

Points bonus attribués si vous parvenez à trouver un conjoint et à vous reproduire ....

Bob Cross
la source
8

Ce que vous faites maintenant est génial, mais si vous voulez accélérer considérablement vos progrès, vous pouvez faire deux choses supplémentaires:

1) "Enseigner" - Un moyen simple de le faire est de créer un blog et d'essayer de contribuer quelque chose d'utile sur une base régulière (hebdomadaire peut-être). Visez des choses que vous avez récemment apprises ou que vous ne connaissez pas encore . Cela signifie que vous vous forcerez à rechercher, à comprendre et à redévelopper.

BTW, vous pouvez très facilement vous inscrire à un compte SingingEels auquel vous obtenez un blog gratuit sur une communauté de développement existante.

2) Écrivez beaucoup de mini-programmes - Par cela, je veux dire environ 1 par semaine. Vous pouvez l'utiliser en conjonction avec ce qui précède ... ou tout simplement pour le plaisir. Ce que j'ai fait en tant que jeune développeur, c'était juste de choisir au hasard (je ne plaisante pas) un espace de noms dans le framework .NET. En cela, choisissez une classe que vous n'avez jamais vue / utilisée auparavant et créez un petit programme qui l'utilise.

Timothy Khouri
la source
8

Essayez de

Lire PLUS de livres Prenez ces gros titres d'Amazon et lisez-les. Par exemple, l'auteur de Code Complete avait écrit un excellent livre sur l'ingénierie logicielle - Développement rapide de logiciels, achetez-en un et lisez-le.

Apprendre un langage de programmation différent Un langage de script comme python / ruby ​​mérite d'être étudié. Ou peut-être un langage de programmation fonctionnel :) Cela peut changer votre esprit de programmation. Vous savez peut-être que certains des modèles GOF ne sont pas nécessaires pour ce type de langues.

Rejoignez une communauté Les gens peuvent échanger leurs idées en écoutant les autres et en faisant des présentations.

éventreur
la source
4

Trouvez des programmeurs intelligents et apprenez d'eux. Imitez-les. Remarquez les choses qu'ils font différemment de vous.

Votre entreprise effectue-t-elle des révisions de code? C'est l'une des meilleures façons d'apprendre. Vous pourriez être étonné des suggestions des programmeurs les plus avancés et des choses auxquelles ils pensent lors du codage.

David Norman
la source
3

que diriez-vous de vous impliquer dans un autre projet open source en cours, afin qu'au moins votre travail en vaille la peine pour quelqu'un et que vous puissiez apprendre et interagir avec d'autres développeurs plus avancés qui travaillent dans le monde réel.

de sorte qu'au moins vous n'êtes pas limité dans ce que vous voulez apprendre ou dans quel type de projet que vous voulez faire. et c'est déjà un outil gratuit que vous utilisez, vous pouvez être fier d'avoir réellement contribué à l'améliorer.

et ça se voit bien avec votre CV aussi. :)

Donc, si cela vous laisse encore du temps libre, pourquoi ne pas garder un blog documentant votre apprentissage, vos expériences et ce qui ne l'est pas. qui sait, vous pourriez être le prochain joel sur le logiciel ou le codage de l'horreur: p

melaos
la source
-1

Pour exceller en tant que développeur C #, lisez les deux suivants. Notez que l' accent de ces livres est plus sur le langage (C #) que sur le framework (.NET).

  1. Essential C # : le lien est pour la dernière édition. En fait, j'ai lu le précédent (C # 4.0) mais je suppose que le plus récent sera le mieux. Ce livre contient également quelques éléments de base, mais soyez patient, lisez cette couverture de livre à couverture.
  2. C # en profondeur : le lien est à nouveau pour la dernière édition qui sera publiée dans 10-15 jours. Je n'ai fait qu'effleurer le livre, mais mes collègues qui l'ont lu ont beaucoup d'estime pour cela.

Vous avez déjà lu CLR via C # , sinon c'est probablement la troisième suggestion de quiconque pour les développeurs C #.

Celles-ci devraient également faire de vous un meilleur développeur: les directives de conception du cadre et l'utilisation efficace du code hérité .

Asim Ghaffar
la source
soin d'expliquer pourquoi a voté contre?
Asim Ghaffar