Ein Kollege von mir hatte den Eindruck, dass unsere Softwareabteilung sehr weit fortgeschritten war, da wir sowohl einen Build-Server mit kontinuierlicher Integration als auch Versionskontrollsoftware verwendeten. Dies passte nicht zu meiner Sichtweise, da ich nur eine Firma kenne, die seriöse Software herstellte und auch keine hatte. Meine Erfahrung ist jedoch auf eine Handvoll Unternehmen beschränkt.
Kennt jemand eine echte Firma (größer als 3 Programmierer) , die im Softwaregeschäft tätig ist und diese Tools nicht verwendet? Wenn es eine solche Firma gibt, gibt es einen guten Grund, warum sie das nicht tut?
version-control
continuous-integration
Daramarak
quelle
quelle
Antworten:
Ich bin mir nicht sicher, ob Sie es ernst meinen, aber MySpace ist in dieser Hinsicht ziemlich arm: Siehe http://highscalability.com/blog/2011/3/25/did-the-microsoft-stack-kill- myspace.html .
quelle
Sie wären überrascht zu sehen, was die Realität mit dem gesunden Menschenverstand anstellen kann ;-)
Ich denke, es gibt immer noch einige Unternehmen, die kein Versionskontrollsystem verwenden. Interessanterweise in all den Fällen, die ich bisher gesehen habe, ist es nicht, weil sie bereitwillig gegen die Verwendung solcher Systeme sind, sondern weil sie nicht wissen, dass so etwas wie SVN existiert! Was mich betrifft: Ich stimme Ihnen voll und ganz zu und kann mir keine Situation vorstellen, in der ich keine Versionskontrolle verwenden möchte. Zur Hölle, ich schiebe sogar meine eigenen persönlichen Dateien (Word-Dokumente usw.) auf meinem Heim-PC in ein GIT-Repository.
Im Falle eines kontinuierlichen Integrationssystems ist es etwas üblicher, sie nicht im täglichen Betrieb einzusetzen. Manchmal auch, weil die Leute nicht wissen, dass es ein solches System gibt, aber ich habe auch Fälle gesehen, in denen die - sehr fragwürdige - Entschuldigung für das Nichtgebrauchen darin besteht, dass "wir nicht komplex genug sind" oder "es ohne kontinuierliche Integration sehr gut funktioniert, Warum also eine andere Technologie hinzufügen? " Das ist natürlich keine realistische Einschätzung - aber um die ursprüngliche Frage zu beantworten: Es ist gar nicht so ungewöhnlich.
quelle
Nahezu jedes Unternehmen in meiner Branche (Banken) verwendet derzeit die Versionskontrolle. Es ist jedoch durchaus möglich, Software ohne Versionskontrolle erfolgreich zu entwickeln. Vor 20-30 Jahren. genau das haben wir getan.
Ich würde sagen, dass viele Banken, vielleicht sogar die Mehrheit, keinen Build-Server mit kontinuierlicher Integration verwenden. Wenn Sie bereits erfolgreich Software ohne kontinuierliche Integration bereitstellen, ist es absolut sinnvoll, diesen Weg fortzusetzen.
quelle
Nur um einen Gegenpunkt zur Antwort von @ RoadWarrior zu setzen:
Ich arbeite für eine Bank. Ich habe die letzten 3 Jahre damit verbracht, die Versionskontrolle zu implementieren und habe es nun geschafft, sie auf ungefähr 20% unserer Codebasis zu bringen (was ziemlich groß ist, wir haben ungefähr 20 Entwickler und haben unsere Systeme für> 16 Jahre entwickelt).
Durch meine Kontakte in der Branche (Bankwesen) kenne ich eine Menge anderer Finanzinstitute, die nicht über das verfügen, was eine vernünftige Person als Versionskontrolle bezeichnen würde.
Ja, unsere Branche (Softwareentwicklung) ist viel trauriger, als die meisten zugeben möchten.
quelle
Versionskontrolle: In meinem ersten Job vor 25 Jahren gab es kein Versionskontrollsystem als solches, aber dies war RSX11 auf PDP-11s. Es gab jedoch ein sehr hohes Maß an Qualitätskontrolle mit formellen Überprüfungen von Design und Code (dies war in der Nuklearindustrie der Fall).
Seitdem hat jeder Job Versionskontrollsysteme verwendet, einschließlich SCCS, PVCS, Clearcase, CVS und Perforce.
Meiner Erfahrung nach ist die Verwendung der Versionskontrolle in der ernsthaften Softwareentwicklung ziemlich universell.
Kontinuierliche Integration: Dies ist ein größeres Problem, insbesondere an Orten, an denen viel Legacy-Code vorhanden ist, der wahrscheinlich nicht einmal die Möglichkeit zum automatisierten Testen bietet. Es ist eine sehr große Investition, vorhandenen Code in eine CI-Umgebung zu verschieben, und obwohl es sich wahrscheinlich am Ende auszahlt, ist es schwierig, das Management dazu zu bringen, eine solche Investition ohne kurzfristigen Gewinn zu tätigen.
Ich habe an einem Ort (einer großen Bank) gearbeitet, an dem CI für einige Projekte eingerichtet war, und wir haben eine Art CI-System für unser Projekt implementiert, was die Dinge viel einfacher gemacht hat, aber ungefähr 6 Monate in Anspruch genommen hat.
quelle
Ich würde mir vorstellen, dass MOST-Unternehmen diese Dinge nicht verwenden, weil sie die Vorteile nicht verstehen und ihre Entwickler entweder nicht lernen wollen oder Angst haben, den Topf zu rühren, indem sie Dinge anders machen, als sie es bisher getan haben vorher gemacht.
quelle
Obwohl ich jetzt Angestellter bin, war ich als Datenbankberater selbständig. Während dieser vielen, vielen Jahre war ich in 800 bis 1000 Unternehmen tätig, von Tante-Emma-Unternehmen bis hin zu Fortune-100-Unternehmen.
Ich habe relativ wenige Orte gesehen, die eine kontinuierliche Integration durchgeführt haben, kann mich aber nicht erinnern, jemals ein Unternehmen gesehen zu haben, das keine Versionskontrolle verwendet hat. In einigen Fällen gab es kein zentrales Repository für versionsgesteuerten Code. Einzelne Programmierer verwendeten die Versionskontrolle entweder auf ihren eigenen Computern oder behielten den versionskontrollierten Code irgendwo unterhalb ihres Ausgangsverzeichnisses auf dem Server.
Ich glaube nicht, dass eine dieser Firmen im Softwaregeschäft tätig war, aber ihre Programmierer waren es mit Sicherheit.
quelle
Nein, ich hasse es, es zu sagen, aber das ist wahr. Bei den letzten beiden Arbeiten (einer Abteilung einer Bank und einer Finanzgesellschaft) war ich derjenige, der das Versionskontrollsystem implementiert hat. Eine Reihe von Orten (insbesondere Nicht-Software-Shops) verstehen nicht, warum dies für eine langfristige Entwicklung wirklich notwendig ist. Das Team beginnt normalerweise mit ein oder zwei Personen und wächst dann, wenn auch schmerzhaft. Mit einer oder zwei Personen kommt man (nicht gut) ohne aus, weil man fast ständig miteinander kommunizieren kann.
Continuous Build ist ein ganz anderer Fall. Wenn ich raten müsste, würde ich wetten, dass fast 90% der Orte, an denen die Entwicklung durchgeführt wird, keine CI-Lösung haben. Ich gehe zu Konferenzen und die meisten Leute sind erstaunt, dass es eine andere Organisation als MS oder Google gibt. Was ich herausgefunden habe, ist, dass das Management nicht den geringen Geldbetrag ausgeben möchte, um es zum Laufen zu bringen, obwohl es viel Zeit sparen kann.
Die größten Gründe, die ich dafür gefunden habe, sind:
Die Führungskräfte sind in der gleichen Organisation durch die Reihen aufgestiegen. Sie haben es nie benutzt und brauchten es nicht. Warum sollten sie es jetzt ändern? Einige, die ich gefunden habe, haben nur Angst vor Veränderungen. Etwas Neues ist beängstigend, und es würde verhindern, dass sie ihren alten Compiler abstauben und unseren jüngeren in Notzeiten helfen. Zu anderen Zeiten (und häufiger) verfügen sie über immer knappe Budgets und müssen entscheiden, wo sie Geld ausgeben. Für uns ist die Implementierung ein offensichtlicher Bedarf, aber das liegt daran, dass wir sie bereits verwendet haben. Wir kennen die Vorteile, sie nicht.
Manager sind keine IT-Mitarbeiter, und alles, was sie hier tun, ist, dass Sie Geld für etwas ausgeben möchten, das zuvor nicht benötigt wurde.
Die meisten Argumente, die ich von Leuten gehört habe, drehen sich um Best Practices usw. und diese sind wahr, aber was die meisten Entwickler nicht verstehen, ist, dass Sie in diesem Szenario eine finanzielle Situation angeben müssen. Mit dieser Menge Geld, die Sie ausgeben werden, sparen wir X Zeit und Sie benötigen Zahlen, um sie zu sichern. Dies ist nicht immer wahr, aber es war meine Erfahrung in der Vergangenheit.
quelle
Ich würde sagen, dass viele Leute die Quellcodeverwaltung nicht verwenden, weil sie möglicherweise selbstständig codieren und es gewohnt sind, die Codebasis regelmäßig auf einem zentralen Server oder einer USB-Festplatte zu sichern. Ich habe mich vor ungefähr einem Jahr gezwungen, SVN zu verwenden, weil ich wusste, dass es auf lange Sicht vorteilhaft sein würde. Es hat eine Weile gedauert, bis ich mich daran gewöhnt habe, aber jetzt habe ich Tonnen von Code-Verlauf, auf die ich mich ständig beziehen kann. Ich wünschte jetzt, ich hätte es vor vier Jahren implementiert, als ich anfing.
Kontinuierliche Integration? Verwenden Sie es nur, wenn Sie es brauchen. Für mich gibt es nur zwei Softwareingenieure, daher würden wir von einer kontinuierlichen Integration nicht profitieren, da wir selbst an unserer eigenen Software arbeiten.
quelle
Ha, Sie denken, Sie sind fortgeschritten, weil Sie SCM und ein CI-System haben? Lassen Sie mich Ihnen sagen, dass es eine Amateurstunde ist, wenn es darauf ankommt.
Viele Unternehmen tun das erforderliche Minimum, denn das ist alles, was es wirklich braucht . Wenn es funktioniert und Sie ohne großen Aufwand gute reproduzierbare Veröffentlichungen erhalten, muss nichts behoben werden. Das Letzte, was Sie unter solchen Umständen tun möchten, ist, das Problem zu beheben, insbesondere, wenn es darum geht, Administratorressourcen für die Einrichtung und Verwaltung Ihrer neuen Server und Build-Systeme zu entziehen.
Einige Unternehmen benötigen jedoch etwas strengere Systeme, die nicht nur die Erstellung, sondern auch die Anforderungen bis hin zur Bereitstellung über Testpläne und Testergebnisse steuern Vom Teamleiter festgelegte Arbeitspaketverwaltung. Das ist echtes Konfigurationsmanagement, und seien Sie verdammt froh, dass Sie nicht in einer solchen Umgebung arbeiten müssen!
Ich habe in ein paar Unternehmen gearbeitet und mir fallen keine ein, die keine Form von SCM hatten. Einige von ihnen waren umfassender als andere, aber alle hatten ein System, das für sie gut funktionierte, sogar für diejenigen, die VSS verwendeten.
quelle
Selbst mit zwei Programmierern, wenn Sie an komplexen Anwendungen und einer Liste von Aufgaben arbeiten, kann es schwierig sein, die Änderungen nicht gegenseitig zu beeinflussen.
Sogar unsere alte Release-Management-Software zeigte die Änderungen nebeneinander und erlaubte es, sie in beide Richtungen anzuwenden. Änderungen wären ohne sie bei mehr als einer Gelegenheit verpasst worden.
Ich sehe eine Reihe von Vorteilen, die CI bietet, aber ich kann mir nicht vorstellen, warum ein Unternehmen keine Software zur Versionskontrolle einsetzt.
quelle
Der letzte Job, bei dem ich ohne Versionskontrolle gearbeitet habe, war 2006 (ich bin ein Webentwickler, FWIW). Das Unternehmen hatte nur ungefähr 2 oder 3 Entwickler, bevor ich eingestellt wurde, aber ich war der erste von ungefähr 10 Entwicklern, die in nur wenigen Monaten eingestellt wurden. Eines der ersten Dinge, die ich bei meiner Einstellung tat, war die Einführung der Versionskontrolle (CVS, weil ich zu der Zeit nicht wusste, wie schlecht das funktioniert!), Aber viele der Entwickler, die nach meiner Einstellung eingestellt wurden, konnten es nicht zum Laufen bringen Umgebungen, also nicht verwendet. Oh, habe ich erwähnt, dass nicht einmal lokale Instanzen der Anwendung ausgeführt wurden? Sie haben Code auf dem Server gehackt. Und natürlich keine automatisierten Tests. Ich zucke zusammen, wenn ich daran zurückdenke.
Davor habe ich einige AS / 400-Programmierarbeiten ohne Versionskontrolle durchgeführt. Ich weiß nicht, ob für diese Umgebung überhaupt ein anständiges VCS verfügbar war.
Jetzt benutze ich Git für alle meine Ein-Mann-Projekte, und meine letzten Jobs haben es auch verwendet.
CI ist eine andere Sache. Es ist großartig, und ich unterstütze es, aber es ist weniger wichtig als die Versionskontrolle, zumindest für kleinere Projekte in interpretierten Sprachen. Die meisten meiner letzten Jobs hatten jedoch CI-Server. Dies bedeutet unter anderem, dass niemand vergessen kann, die vollständige Testsuite vor der Bereitstellung auszuführen.
quelle
Ich habe auf jeden Fall hier und da ein paar getroffen, aber hauptsächlich kleine Unternehmen. Das Problem, das ich häufiger sehe, sind Unternehmen, die tatsächlich über SCM verfügen, jedoch viele Projekte für zu klein oder unwichtig halten, um darin nachverfolgt zu werden.
quelle