Glauben Sie, dass es eine Lücke zwischen Informatikforschung und Software-Engineering-Problemen gibt? Müssen sich Softwareentwickler beispielsweise jemals Gedanken über "Factoring und Graphisomorphismus" oder komplexe Informatikprobleme machen, wenn sie ... beispielsweise eine Warenkorb-Website erstellen müssen? Wahrscheinlich nicht.
Und wenn es eine Trennung zwischen der Informatik und den Ingenieuren gibt, die Anwendungen erstellen? Ist das die Art und Weise, wie Technik und Wissenschaft existieren sollten? Werden Ingenieure jahrelange Forschungsarbeiten durchgehen, um ein bestimmtes Problem zu lösen, das sie haben?
Edit-1: Nach dem Nachdenken hat die allgemeine Wissenschaft wahrscheinlich das gleiche Problem. Ich bin sicher, es gibt Top-Chemiker in Unternehmen wie McDonald's und Taco Bell, die die Aufgabe haben, einen besseren und einfacher herzustellenden Burger herzustellen.
quelle
Antworten:
In den meisten Positionen in der Softwareentwicklung treten grundlegende Informatikprobleme aus einem von zwei Gründen selten auf:
Der Grund, warum so viele Softwareentwickler Informationssysteme bauen, die aus theoretischer Sicht trivial sind, liegt einfach darin, dass sie benötigt werden. Die Art und Weise, wie unsere Welt derzeit automatisiert ist, liegt wahrscheinlich bei weniger als 0,01% dessen, was erreicht werden könnte. In den kommenden Jahrzehnten werden wir wahrscheinlich hauptsächlich Informationssysteme und Schnittstellen bauen. Sobald wir diese haben, werden einige grundlegende Probleme auftauchen.
Diese Probleme bestehen derzeit beispielsweise in Bezug auf Skalierbarkeit, Threading usw., sind jedoch nur ein äußerst kleiner Teil von allem, was getan werden muss. Der Grund, warum Unternehmen immer wieder relativ triviale Informationssysteme aufbauen, ist, dass (1) die Menschen sie brauchen und (2) es viel einfacher (und lukrativer) ist, als grundlegende Probleme zu lösen.
quelle
Ich habe die Erfahrung gemacht, dass die kommerzielle / praktische Softwareentwicklung um mehr als 5 bis 30 Jahre hinter der akademischen Forschung zurückbleibt. Einer der schnellsten Zeitrahmen von einer bahnbrechenden wissenschaftlichen Arbeit bis zu einem kommerziellen Versandprodukt war SQL. Das Papier wurde 1969 veröffentlicht, IBM und andere haben viel Zeit und Mühe darauf verwendet, tragfähige Produkte herzustellen, und das erste wirklich kommerziell tragfähige Produkt war Relational Software - das Unternehmen, das jetzt Oracle heißt.
Funktionale Sprachen wurden in den 1960er Jahren von Forschern entwickelt. Wie viele sind heute gebräuchlich? Etwas. Sie werden heutzutage viel häufiger genutzt als außerhalb der mit Efeu bedeckten Wände der Universitäten. Dafür dauerte es drei Jahrzehnte.
Ja. Das mache ich die ganze Zeit. Als ich bei einem Unternehmen arbeitete, das Netzwerke für Speicherbereiche herstellte, wurden viele der Produkte, die ausgeliefert wurden, in Forschungsberichten beschrieben, die 5-6 Jahre zuvor veröffentlicht wurden.
Ein weiteres Beispiel betraf ein Problem namens "Patientenabgleich". Menschen sind gut darin, Dinge wie
Chem. Dept.
oder zu betrachtenDepartment of Chemistry
und solche Dinge zu bestimmen sind identisch. Die meisten Algorithmen haben eine schreckliche Zeit damit, solche Dinge zu bestimmen. Ich arbeitete in einer Firma, die sich mit elektronischen Medikamentenrezepten, Laborberichten und Versicherungsansprüchen befasste. Es wäre hilfreich gewesen, (anonym) Langzeitdaten über die Wirksamkeit und Wirksamkeit von Behandlungen für Patienten haben zu können. So etwas hätte von der Fähigkeit abhängen müssen, die Nähe von Strings zu bestimmen. In den neunziger Jahren verschwanden die meisten Forscher in diesem Bereich im Humangenomprojekt, und der größte Teil ihrer Arbeit verschwand aus dem Internet (mit NDAs und geistigem Eigentum verschwindet alles, was diese Leute erfunden haben, aus dem Internet, wenn sie für die Privatindustrie arbeiten). Nach 911 wurden übereinstimmende Namen zu einem Problem der "nationalen Sicherheit" (es gibt ungefähr 25 Möglichkeiten, Mohammed auf Englisch zu buchstabieren). und ungefähr ein Dutzend Arten, Osama zu buchstabieren) und viele der übrigen verschwanden ebenfalls. Also einsDer Erfinder / das Unternehmen hatte ein Produkt, mit dem Sie Personen und Beziehungen zuordnen konnten, das als " nicht offensichtlicher Beziehungsanalysator " bezeichnet wurde und schließlich in einem Add-On für DB2 verschwand. Sie müssen viel in Papiere graben. Vielleicht nicht, wenn Sie Einkaufswagen herstellen, aber dies ist in anderen Projekten durchaus üblich.These: Adaptive Erkennung von ungefähr doppelten Datenbankeinträgen und der Ansatz der Datenbankintegration zur Informationserkennung .
Bibliothek, die einige der Funktionen in der Arbeit implementiert .
quelle
Akademische Informatiker sind sehr gut in folgenden Bereichen:
All dies sind nützliche Dinge für das Software-Engineering. In der Tat wäre es unabdingbar, mindestens einen Informatiker in einem Software-Engineering-Team zu haben.
Die Art und Weise, wie Informatik unterrichtet wird, und die ABET- Akkreditierungsregeln verschärfen das Problem (wenn es als Problem bezeichnet werden kann). Die Informatiker haben nicht viel Wissen über die folgenden Schlüsselbereiche der Softwareentwicklung.
Ich kann weiter und weiter machen, aber ich denke, ich habe meinen Standpunkt klargestellt.
Software Engineering ist heute eine eigene Disziplin, die sich an die Informatik anlehnt, aber heute die Technologie und das menschliche Leben vorantreibt. Sie brauchen wirklich das Gehirn eines Ingenieurs, um sich darin auszuzeichnen. Nicht alle Informatiker sind dafür geeignet, großartige Software-Ingenieure zu sein. Natürlich wird auch das Gegenteil nicht der Fall sein.
quelle
Ich würde tatsächlich argumentieren, dass Sie zum Erstellen einer guten Warenkorb-Website unbedingt schwierige Algorithmen verwenden müssen.
Angenommen, Sie möchten das Benutzerverhalten basierend auf früheren Einkäufen vorhersagen. Das wird viel mehr kosten als
a+b=c
effektiv zu tun. Wie wäre es mit Kaufgewohnheiten, die auf einer Reihe verschiedener Faktoren wie Alter, Geschlecht, geografischer Lage usw. beruhen?In meiner eigenen Arbeit werden täglich komplexe Algorithmen für Rendering, KI usw. verwendet.
Kurz gesagt, wenn Sie an eine bestimmte Funktion denken (z. B. nur an einen Einkaufswagen), denken Sie höchstwahrscheinlich an schlechte Implementierungen. Denken Sie an Google- oder Amazon-Implementierungen, und ich bin sicher, Sie werden sehen, wo es nützlich (oder erforderlich) wäre, komplexe Algorithmen zu kennen oder zumindest mit ihnen vertraut zu sein.
quelle
Softwareentwickler zur Problemlösung haben eine enorme Überschneidung mit der Informatikforschung sowie der mathematischen und statistischen Forschung.
Das Entwerfen einer Website ist kein Software-Engineering, selbst wenn Sie einen Warenkorbcode integrieren. Es entwirft.
Sogar 'Codierung' ist nicht unbedingt Software-Engineering - ich kenne viele Codierer, die sich nicht als Ingenieure betrachten würden. Code kann so einfach sein wie das Bearbeiten von Zeichenfolgen oder das Schreiben von Excel-Formeln.
Natürlich überschneiden sich nicht alle Softwareentwicklungen mit der wissenschaftlichen Forschung (es gibt viele andere Aufgaben im Job), aber ich habe viele veröffentlichte Artikel gelesen, um den optimalen Algorithmus oder die optimale Herangehensweise an Probleme zu bestimmen. Diese Probleme können nur einmal im Jahr auftreten (den Rest der Zeit schreibe ich eine UI-Validierung oder was auch immer), aber das ist die Natur meiner Arbeitsumgebung.
quelle
Nein.
Falsch. Sie verwenden Werkzeuge, die davon abhängen, dass dies richtig gemacht wird.
In der Tat sind alle Ihre Freund-zu-Freund-Beziehungen in Facebook ein großes Problem der Graphentheorie. Sehr komplex. Sehr groß. Sehr theoretisch.
Ja. Einige Leute erstellen Anwendungen, die eindeutig nicht qualifiziert sind. Ich habe viele wirklich schlampige Sachen gesehen, die von bezahlten "Profis" gebaut wurden und die etwas anderes hätten tun sollen, nützlicher für ihre Zeit.
"Sollte" ist bedeutungslos. Es ist so wie es ist vorhanden.
Ja. Häufig. Deshalb abonniere ich die ACM Digital Library. http://portal.acm.org/ Es ist wichtig, um Probleme anzugehen, die nicht trivial sind.
quelle