Devenir involontairement programmeur: comment bien faire? [fermé]

21

Mon expérience est en génie électrique, DSP pour être plus précis. La société pour laquelle je travaille actuellement réalise de nombreux projets divers, principalement pour la construction de matériel analogique. Étant un peu plus proche des ordinateurs que tout le monde ici, je suis souvent celui qui écrit du code pour les appareils intégrés (avec lesquels je suis parfaitement d'accord) et Windows ou Linux OS. C'est ce dernier qui est pour moi un territoire étranger.

Je peux coder et je connais quelques langages (C / C ++, Java, certains VB.NET), mais je ne les ai utilisés que pour des simulations d'algorithmes dans le traitement du signal et de l'image, des réseaux de neurones et d'autres applications similaires. Pour moi, la programmation a été un outil de calcul plus que toute autre chose. Cependant, je reçois de plus en plus de projets où je dois écrire un logiciel à part entière et je ne sais pas vraiment comment le faire, parce que je n'ai jamais eu à le faire, et je n'ai jamais été assez intéressé. J'ai moi-même vu pas mal d'ingénieurs qui se sont convertis en codeurs dans une certaine mesure en raison des exigences du travail, et la plupart d'entre eux n'étaient pas si bons dans ce qu'ils faisaient. Je suis sûr que beaucoup de gens ont rencontré la même chose.

Si je devais apprendre à écrire un logiciel approprié avec une bonne interface utilisateur, une bonne architecture interne, etc., comment faire? Nous n'avons personne au travail qui pourrait me dire ce qui est bon et ce qui ne l'est pas. Étant donné que je peux écrire du code dans le sens le plus brut du mot, qu'est-ce qu'il y a d'autre à savoir sur l'écriture d'un bon logiciel et comment y arriver par moi-même?

Phonon
la source
Si vous nous avez donné la langue que vous utilisez, nous pourrons peut-être vous donner des réponses plus approfondies. Là encore, cela annulerait le point d'une réponse générique.
Sardathrion
2
Sans formation formelle ou expérience de travail directe avec un mentor, faire les choses de la bonne façon ™ ne sera pas réaliste. Tu es en train d'apprendre. Il y a une raison pour laquelle l'informatique et l'ingénierie se détachent du génie électrique. Une entreprise sensée embauchera des ingénieurs logiciels pour écrire des interfaces d'application, des pilotes d'application et même des micrologiciels, car ils veulent de la qualité et veulent qu'elle soit bien faite et qu'elle soit maintenable. J'expliquerais à votre patron que ce que vous faites dépasse un peu votre domaine d'expertise et que ces tâches devraient être confiées à un ingénieur logiciel.
maple_shaft
4
... Je veux aussi ajouter que je ne pense pas que votre situation soit aussi "involontaire" que vous le dites dans le titre. Vous avez dit vous-même que vos pairs ne savent même pas comment utiliser un ordinateur, mais vous devez également être involontairement ingénieur logiciel? Cela ne semble guère juste. Je salue votre capacité à écrire des logiciels praticables et votre désir d'apprendre et de faire les choses de la bonne manière, mais il n'y a aucune honte à admettre à votre patron et à vous-même que certaines choses ne sont pas dans vos capacités. S'ils sont sérieux au sujet de vous placer dans ce rôle, demandez-leur de dépenser pour la formation pour vous.
maple_shaft
@maple_shaft Je suis d'accord avec la plupart des choses que vous dites; cependant, je n'ai jamais dit que mes pairs ne savent pas comment utiliser un ordinateur. Aucun d'entre eux n'est un ingénieur logiciel qui pourrait me servir de canapé, mais ils sont tous très compétents en informatique. Je n'ai aucun problème à devoir faire le codage, j'aime apprendre de nouvelles choses et je n'ai pas vraiment de problème à le faire.
Phonon
6
@Phonon Super, c'est une bonne attitude, mais assurez-vous que votre entreprise vous achète des livres, des cours de formation et vous donne le temps d'apprendre si elle veut que vous jouiez ce rôle. C'est tout ce que je dis. Tant d'entreprises tenteront de vous tromper en vous convaincant qu'il est de votre responsabilité d'acheter ces choses par vous-même.
maple_shaft

Réponses:

11

Il y a quelques livres qui vous aideront beaucoup. Je suggère d'avoir toujours à côté de vous Code Complete . C'est une référence inestimable. Dans une entreprise précédente où je travaillais, c'était aussi le livre que nous avions remis à tous les programmeurs juniors après leur embauche.

Le programmeur pragmatique est également une ressource très utile et il est assez court, mais je vous suggère de le lire après Code Complete.

Ces livres vous permettront de démarrer, puis de coder, de coder, de coder et de coder plus ... mais sachez quand vous arrêter, votre logiciel ne sera jamais parfait.

Trasplazio Garzuglio
la source
6

Mon entreprise fait ça tout le temps ... et ça me rend fou.

"Je suis développeur de logiciels, comment devenir un EE?"

Eh bien, je pense que la réponse est assez évidente. Cela prend beaucoup de temps et de travail acharné. Et bien sûr, le bon matériel d'apprentissage. La formation d'ingénieur aide, dans mon université, les écoles de CS et d'ingénierie étaient dans le même bâtiment avec beaucoup de chevauchements. Les algorithmes et les bases mathématiques sont là.

Une erreur que je vois la plupart des nouveaux arrivants est de mordre bien plus qu'ils ne peuvent mâcher. Matériel d'apprentissage sur l'interface utilisateur, les architectures, le code de qualité ... c'est beaucoup de terrain . Quelque chose qui prend des années vraiment et qui est souvent réalisé par des équipes de différents experts dans les éditeurs de logiciels.

Cela ne veut pas dire que vous ne pouvez pas être assez décent par vous-même, si vous mettez du temps. Reconnaissez simplement l'ampleur du matériel afin de ne pas vous submerger et de A. Quitter ou B. Construire une dette technique majeure dans vos applications en prenant des raccourcis majeurs dans votre processus d'apprentissage.

À cause de tout cela, il n'y a pas de "fourre-tout" devenu un développeur génial avec ce livre. Je vous recommande de commencer par prendre un livre bien noté sur votre langue la plus utilisée et de participer également à la communauté Stack, en particulier pour les révisions de code.

Essayez Amazon.com, ils ont de bonnes critiques de livres.

P.Brian.Mackey
la source
3

Livres : L'essentiel est de lire de (bons) livres sur la langue de votre choix. Une fois que vous savez que votre langue de choix, vous pouvez obtenir « plus efficace X » ou « Y meilleures pratiques » et ainsi de suite. Je trouve que les livres de cuisine sont très bons pour combler les lacunes que vous pourriez avoir. Donc, je suppose que c'est au moins trois livres que vous devez obtenir. Une chose: faites des exercices et codez des kata pour améliorer votre compréhension de la langue. Bien sûr, vous avez besoin d'un bon modèle xUnit .

Les algorithmes sont particulièrement importants et vous devriez choisir un livre qui les détaille - encore une fois, dans la langue de votre choix. Les modèles de conception et les anti-modèles valent la peine d'être connus dans toutes les langues.

Conclusion: cela prend du temps. Ne vous précipitez pas.

Sardathrion - Rétablir Monica
la source
+1, mais sachez toujours qu'il n'y a qu'une seule règle sans exception: toutes les règles ont des exceptions.
Jan Hudec
@JanHudec: Laquelle (s) avez-vous en tête ici?
Sardathrion
3

Vous êtes nul dans le codage. Oui.

Mais - cela ne signifie pas que vous ne pouvez pas fournir de logiciel, cela rend les gens heureux;)

Être humble. Écrivez la logique «métier» dont vous avez besoin. Utilisez le code de la bibliothèque pour tout le reste. N'essayez pas d'écrire des algorithmes fondamentaux (comme le tri de tableaux ), n'utilisez pas de "trucs fantaisistes", respectez certaines conventions de code draconiennes .

Utilisez un bon IDE. Ceci est essentiel, car il vous aidera à formater votre code et à suivre les fautes de frappe / erreurs simples.

Lisez des livres comme " Code Complete " et " Pragmatic Programmer ", essayez de vous forcer et d'apprendre la POO (c'est simple, et cela vous aidera à garder votre code plus maintenable).

Utilisez SVN , engagez souvent, - ainsi vous pourrez annuler vos modifications (quand vous ruinerez quelque chose).

Trouvez quelqu'un, qui est un vrai programmeur , avec une formation académique, si possible. Ainsi, vous pourrez parler avec lui pour partager vos problèmes de débutant et obtenir des réponses éclairantes.

Et, bien sûr, la chose la plus importante est de continuer à coder, à coder, à coder .


ps: si vous êtes capable d'écrire du code C ++ qui fonctionne et que vous écrivez des réseaux de neurones (!) - alors votre cerveau est bien adapté à la programmation;) Bonne chance!

c69
la source
2

Il y a de bonnes réponses ici.

Un grand tour en votre faveur est le simple fait que vous voulez savoir.

Une grande partie du génie logiciel (que vous devez prendre avec un scepticisme sain, bien sûr) concerne la façon de le faire d'une manière que vous ne regretterez pas plus tard. Un exemple est l'utilisation d'un système de contrôle de version de code source. Une autre consiste à diviser le code en fichiers, il est donc plus facile de travailler au coup par coup. Un autre est d'être un bâton sur l' ordre - les conventions de formatage et de dénomination du code. Les conventions exactes importent moins que d'être cohérentes à ce sujet.

De cette façon, lorsque vous reviendrez au code dans un an ou plus, vous ne penserez pas "Qui a fait ce gâchis?" Vous pourrez trouver des choses et les changer sans trop de risque de casse. **

Une bonne façon de commencer est de trouver divers exemples de programmes et de les étudier. Ensuite, vous pouvez les adapter à vos besoins.

** L'un de mes plus gros maux de tête est d'essayer de travailler avec du code écrit par des gens qui ne pensaient pas que le formatage ou la dénomination importait.

Mike Dunlavey
la source
1

Bien qu'il y ait beaucoup, beaucoup de bonnes ressources sur la façon de faire et de ne pas faire les choses, en fin de compte, la chose la plus importante est de voir beaucoup de code et de travailler avec lui et de voir combien il est facile ou compliqué de maintenir par vous-même.

Une bonne façon d'apprendre est d'avoir quelqu'un d'expérience pour faire la conception initiale et de revoir votre code et de vous montrer des techniques utiles comme vous les avez utilisées. Donc, si par hasard vous parvenez à persuader vos patrons d'embaucher au moins un ingénieur logiciel ayant de l'expérience dans la direction de (petits) projets logiciels et la conception de logiciels pour diriger les projets, je pense que ce serait la meilleure option.

Si vous ne pouvez trouver personne pour vous mettre au lit, il y a de nos jours un fort mouvement open-source. Peut-être que vous utilisez des outils open source dans votre travail, alors essayez de corriger les bogues ou d'ajouter des fonctionnalités simples que vous avez utilisées et discutez de la façon de faire ces choses avec la communauté respective. C'est un exercice d'apprentissage pratique et peu pratique pour apprendre à appliquer les règles générales que vous trouverez dans les livres sur les problèmes pratiques réels.

Jan Hudec
la source
0

Une chose que je recommanderais vraiment pour apprendre des problèmes de codage et d'architecture de qualité serait les enseignements de "Oncle Bob" (Robert Martin). Il a quelques vidéos à 1 $ qui sont joliment petites, si peut-être trop fantaisistes, ainsi que de bons livres.

Domenic
la source