Quelle est ingénieur logiciel pas un ingénieur logiciel ?

2013-11-26  |  News

Le titre de « Software engineer » devrait être parmi les plus maltraités dans le monde de l'entreprise de haute technologie. Il est également l'un des plus populaires.

Et pourquoi pas ? Il sonne beaucoup mieux que « Programmeur » et semble beaucoup mieux sur la carte. Malheureusement, il est souvent inexacte. Ingénierie est, après tout, l'application de principes solides techniques pour développer des systèmes robustes, efficaces et élégants. J'ai constaté qu'un grand beaucoup d'ingénieurs logiciels peut développer des programmes de travail, mais faire la conception technique très peu ou pas.

Cela semble difficile ? Peut-être, mais aussi je l'ai trouvé difficile de nier. J'ai trouvé très peu d'ingénieurs logiciel, par exemple, ce style propre, nets et lisible - un élément essentiel de la conception élégante, logiciel de codage. J'ai également trouvé une prépondérance des fonctions énigmatique écrites, les abstractions de logiciel maladroite et code spaghetti bizarre. À mon grand désarroi, j'ai découvert que même parmi les diplômés en informatique, beaucoup réduisent la POO pour simple usage de données privées, des fonctions publiques et des instances d'objet. C'est assez pour briser le cœur d'un enseignant.

Maintenant, ne pas j'irai jusqu'à dire que la majorité des développeurs écrire du code spaghetti. Ce ne serait pas équitable. Cependant, je pense que les programmeurs relativement peu ont une profonde gratitude pour la maîtrise du développement de logiciels. Je ne veux pas dire qu'ils sont ignorants de ces choses ; De rien. Au contraire, c'est le plus souvent négligé des aspects du génie code élégant de conception.

Je crois que cela se produit parce que les outils de programmation modernes ont fait corrects code design semble être une nuisance. Dans les premières années de l'informatique, gens ont été forcés d'écrire leurs conceptions de logiciels, alors que beaucoup de détails jusqu'à ce qu'une fois ils se sont assis à l'ordinateur. Aujourd'hui, avec nos systèmes de débogage interactif et compilateurs rapides, programmeurs souvent plus commode de simplement s'asseoir et commencer à coder, avec seulement un minimum de conception de logiciels. Oui, je comprends que c'est parfois plus efficace - lorsque la tâche de programmation est très répandue, par exemple. Toutefois, lorsque ce développement de logiciels de conception-as-you-go devienne pratique courante, puis vous avez les ingrédients d'un chaos.

En partie, ce problème est également enraciné dans la nature malléable des programmes d'ordinateur. N'importe quel ingénieur civil doit concevoir un pont pour gifler ensemble poutres jusqu'à ce qu'il a quelque chose qui fonctionne ; Après tout, si le pont s'effondre, il pourrait prendre des mois à le reconstruire. De même, n'importe quel architecte sensible souhaite construire une maison sans plans et plans d'étage. Cependant, il est commun aux développeurs de développer des logiciels avec fonctions mal et seulement la testigosdudosos des conceptions. Après tout, si le logiciel ne fonctionne pas, peut toujours trouver le bug et Difficulté it... au moins en théorie. Dans la pratique, ces insectes sont souvent difficiles à détecter et corriger les peut exiger une vaste intervention chirurgicale. Les conséquences d'un logiciel mal conçu peuvent devenir catastrophiques.

Pour cette raison, je crois que les entreprises High-Tech besoin de lui donner le respect qu'il mérite le génie logiciel. Ils ont besoin développer une véritable culture de la conception logicielle systématique, plutôt que de simplement se contenter de « ce qui fonctionne ». Une entreprise qui est tournée vers l'avenir devrait payer correct dévouement aux principes de la maintenance du logiciel, la documentation et une conception élégante et robuste. Vous devez aussi instauration d'une culture de l'ingénierie du logiciel vrai parmi leurs employés. Si vous peut-être fonctionner à court terme, mais est une recette pour un désastre à long terme.

« Back