Wie arbeiten Programmierer an einem Projekt zusammen?

81

Ich habe immer alleine programmiert, ich bin noch ein Student, also habe ich nie mit jemand anderem programmiert, ich habe noch nie ein Versionskontrollsystem verwendet.

Ich arbeite gerade an einem Projekt, das Kenntnisse darüber erfordert, wie Programmierer an einer Software in einem Unternehmen zusammenarbeiten.

Wie ist die Software kompiliert? Ist es aus dem Versionskontrollsystem? Ist es von einzelnen Programmierern? Ist es periodisch? Ist es, wenn sich jemand entscheidet zu bauen oder so? Gibt es Tests, die durchgeführt werden, um sicherzustellen, dass es "funktioniert"?

Alles wird reichen.

Leo Jweda
quelle
24
Ich habe das "nicht programmierbezogene" Tag entfernt, weil die Art und Weise, wie Leute als Team programmieren, definitiv programmierungsbezogen ist.
Brendan Long
@Brendan Long: Danke für den Retag.
Leo Jweda

Antworten:

60

Tatsächlich gibt es bei diesen Prozessen so viele Variationen wie bei vielen Unternehmen. Das heißt: Jedes Unternehmen hat ein bisschen andere Konventionen als andere, aber es gibt einige gängige Best Practices, die in der Regel an den meisten Orten angewendet werden.

Best Practices, die immer nützlich sind

  • Der gesamte Quellcode des Projekts und alles, was zum Erstellen erforderlich ist, unterliegt der Versionskontrolle (auch als Quellcodeverwaltung bezeichnet). Jeder sollte in der Lage sein, das gesamte Projekt mit einem Klick zu erstellen.
    Darüber hinaus sollten unnötige Dateien (Objektdateien oder kompilierte Binärdateien) nicht zum Repository hinzugefügt werden, da sie recht einfach wiederhergestellt werden können und nur Speicherplatz im Repo verschwenden würden.
  • Jeder Entwickler sollte einige Male pro Tag die Versionskontrolle aktualisieren und festlegen . Meistens, wenn sie die Aufgabe beendet haben, an der sie arbeiten, und sie genug getestet haben, damit sie wissen, dass sie keine trivialen Fehler enthält.
  • Nochmals: Jeder sollte in der Lage sein, das Projekt mit einem einzigen Klick zu erstellen. Dies ist wichtig und erleichtert das Testen für alle. Ein großer Vorteil, wenn auch Nicht-Programmierer (z. B. der Chef) dazu in der Lage sind. (Sie fühlen sich in der Lage zu sehen, woran das Team genau arbeitet.)
  • Jeder Entwickler sollte die neue Funktion oder Fehlerbehebung, die er hinzufügt, testen , bevor er diese in das Repository überträgt.
  • Richten Sie einen Server ein, der sich regelmäßig (in festgelegten Intervallen) aus dem Repository aktualisiert und versucht, alles im gesamten Projekt zu erstellen . Wenn dies fehlschlägt, werden E-Mails zusammen mit den neuesten Festschreibungen an die Versionskontrolle an das Team gesendet (seitdem wurde keine Festschreibung erstellt), um das Problem zu beheben.
    Diese Vorgehensweise wird als kontinuierliche Integration bezeichnet, und die Builds werden auch als nächtliche Builds bezeichnet .
    (Dies bedeutet nicht, dass Entwickler den Code nicht auf ihren eigenen Computern erstellen und testen sollten. Wie oben erwähnt, sollten sie dies tun.)
  • Natürlich sollte jeder mit dem grundlegenden Design / der Architektur des Projekts vertraut sein. Wenn also etwas benötigt wird, müssen verschiedene Mitglieder des Teams das Rad nicht neu erfinden. Das Schreiben von wiederverwendbarem Code ist eine gute Sache.
  • Zwischen den Teammitgliedern ist eine Art Kommunikation erforderlich. Jeder sollte sich zumindest ein wenig darüber im Klaren sein, was die anderen tun. Je mehr desto besser. Aus diesem Grund ist das tägliche Aufstehen in SCRUM-Teams nützlich.
  • Unit-Tests sind eine sehr gute Methode, mit der die grundlegenden Funktionen Ihres Codes automatisch getestet werden.
  • Eine Fehlerverfolgungssoftware (manchmal auch als Zeiterfassungssoftware bezeichnet ) ist ein sehr gutes Mittel, um zu verfolgen, welche Fehler vorhanden sind und welche Aufgaben die verschiedenen Teammitglieder haben. Es eignet sich auch gut zum Testen: Die Alpha / Beta-Tester Ihres Projekts können auf diese Weise mit dem Entwicklungsteam kommunizieren.

Diese einfachen Dinge stellen sicher, dass das Projekt nicht außer Kontrolle gerät und jeder an derselben Version des Codes arbeitet. Der Continuos-Integrationsprozess hilft, wenn etwas furchtbar schlecht läuft.

Es verhindert auch, dass Benutzer Dinge festschreiben, die nicht im Haupt-Repository erstellt wurden.
Wenn Sie eine neue Funktion einbinden möchten, deren Implementierung Tage dauern würde und die andere Personen daran hindern würde, das Projekt zu erstellen (und zu testen), verwenden Sie die Verzweigungsfunktion Ihrer Versionskontrolle.

Wenn dies nicht ausreicht, können Sie es auch für automatisierte Tests einrichten, sofern dies mit dem betreffenden Projekt möglich ist.

Noch ein paar Gedanken

Die obige Liste kann auf den ersten Blick sehr schwer sein. Ich empfehle, dass Sie es nach Bedarf befolgen : Beginnen Sie mit einer Versionskontrolle und einem Bug-Tracker und richten Sie später den Continuous Integration Server ein, falls Sie ihn benötigen. (Wenn es sich um ein großes Projekt handelt, werden Sie es sehr bald brauchen.) Schreiben Sie Unit-Tests für die wichtigsten Teile. Wenn es nicht genug ist, schreiben Sie mehr davon.

Einige nützliche Links:
Kontinuierliche Integration , Tägliche Builds sind Ihre Freunde , Versionskontrolle , Unit-Tests

Beispiele:

Für die Versionskontrolle verwende ich heutzutage Git für meine persönlichen Projekte. Subversion ist ebenfalls beliebt, und beispielsweise ist VisualSVN recht einfach einzurichten, wenn Sie einen Windows-Server verwenden. Für Kunden funktioniert TortoiseSVN am besten für viele Menschen. Hier ist ein Vergleich zwischen Git und SVN.

Für Bug-Tracking-Software sind Jira und Bugzilla sehr beliebt. Wir haben Mantis auch an einem früheren Arbeitsplatz verwendet.

Für Software zur kontinuierlichen Integration gibt es Teamcity für eine (auch CruiseControl und sein .NET-Gegenstück sind bemerkenswert).

Antwort auf Ihre Frage "Wer entscheidet über das Hauptdesign des Projekts?"

Das wäre natürlich der Hauptentwickler.
In Unternehmen ist der Hauptentwickler die Person, die mit den Finanz- / Marketingmitarbeitern des Projekts spricht und die Arcithecture entsprechend der finanziellen Leistungsfähigkeit des Unternehmens, den geplanten Merkmalen, den Anforderungen der Benutzer und der verfügbaren Zeit festlegt.

Es ist eine komplexe Aufgabe, an der normalerweise mehr als eine Person beteiligt ist. Manchmal werden Mitglieder des Teams auch gebeten, sich an der Gestaltung des gesamten Projekts oder bestimmter Teile zu beteiligen oder ein Brainstorming durchzuführen.

Venemo
quelle
4
Sie sollten Git über Subversion in Betracht ziehen. Subversion ist besser als CVS und Git ist weitaus besser als Subversion. Subversion hat auch einige Macken, obwohl sie leicht zu erlernen sind. Besonders in Form von Plugins. Obwohl TortoiseSVN süß ist (wenn Sie auf Windows-Systemen arbeiten).
Shyam
5
@Shyam - Eigentlich habe ich von Git gehört. Es hat seine Vorteile, aber ich würde nicht "weitaus überlegener" sagen. Besonders wenn man bedenkt, dass es noch keinen anständigen Windows-Client gibt. Trotzdem ist es eher eine persönliche Präferenz, deshalb habe ich es meiner Antwort hinzugefügt.
Venemo
@Venemo: Macht das das Programmieren nicht langweilig? Sie sind nicht in der Lage, Ihren Code sofort zu testen und müssen auf den Build warten und dann kaum oder gar keine Auswirkungen auf das sehen, was Sie geschrieben haben? Wer entscheidet auch über das Hauptdesign des Projekts? (Sprache, Funktionen, Bibliotheken, Frameworks, Architektur usw.)
Leo Jweda
2
@Laith J: 1. Arbeit im Allgemeinen ist langweilig 2. Geduld ist eine Tugend. 3. Egal wer das Projekt entwirft, der Kunde entscheidet. Egal wie innovativ, fantastisch oder fabelhaft Ihre Idee ist. Ergebnisse. Arbeite, um am Leben zu sein, sei nicht am Leben, um zu arbeiten.
Shyam
1
@Shyam - Ich persönlich weiß nichts über Git und ich beurteile keine Dinge, über die ich wenig weiß. Keine Notwendigkeit, dies in Flammen zu verwandeln. Die Unterschiede werden hier gut erklärt: stackoverflow.com/questions/871/… und ich werde nicht zu Git wechseln, bis diese einfache und alltägliche Sache so schwer zu erreichen ist: stackoverflow.com/questions/2733873/… . Ich mag auch den Ansatz von SVN besser und es ist viel einfacher zu lernen. Und ich mag einfach.
Venemo
13

Ich bin auch ein Student, der kürzlich einen Software-Engineering-Kurs abgeschlossen hat, bei dem das gesamte Semester aus einem riesigen Gruppenprojekt bestand. Lassen Sie mich zunächst sagen, wir hätten mit 3 Leuten das machen können, was 12 von uns das ganze Semester gebraucht haben. Mit Menschen zu arbeiten ist eine schwierige Sache. Kommunikation ist der Schlüssel.

Verwenden Sie auf jeden Fall ein Repository. Jede Person kann remote auf den gesamten Code zugreifen und alles hinzufügen / löschen / ändern. Das Beste an Subversion ist jedoch, dass Sie, wenn jemand den Code bricht, zu einer früheren Version zurückkehren und beurteilen können, was von dort aus schief gelaufen ist. Kommunikation ist immer noch der Schlüssel, wissen Sie, was Ihre Teamkollegen tun, damit es keine Konflikte gibt. Setzen Sie sich auch nicht auf Ihren Code, sondern legen Sie schnell und aussagekräftig fest, dass das Repository am effektivsten ist.

** Ich würde auch einen Bug-Tracker wie Redmine empfehlen. Sie können Konten für alle einrichten und Personenaufgaben mit unterschiedlichen Prioritäten zuweisen sowie nachverfolgen, ob sich Personen um bestimmte Probleme gekümmert haben oder ob weitere aufgetreten sind.

Und wie bereits gesagt, werden Unit-Tests sehr hilfreich sein. Viel Glück! Hoffe das hat geholfen :-)

Elaina R.
quelle
Es sieht so aus, als hätten Sie eine wirklich wertvolle Lektion in dem Gruppenprojekt gelernt, das Sie an Ihrem College so gut gemacht haben. Die Arbeit mit Menschen ist schwierig, aber Sie werden viel Zeit damit verbringen. Und es kann sich auch lohnen.
High Performance Mark
+1 für den Bug-Tracker - der von uns verwendete (kennt andere nicht) ermöglicht es uns, Notizen hinzuzufügen, und wir können den gesamten Verlauf des Fehlers verfolgen und uns viel besser an Dinge erinnern, wenn 3 Monate nach der Behebung etwas auftaucht
Rox
Als ich an der Uni war, konnte jedes einzelne Projekt, an dem eine Gruppe beteiligt war, aufgrund von Gruppendynamik, Kommunikation oder schwachen Verbindungen nicht umgesetzt werden. Der Vorteil, wenn Sie für ein Unternehmen arbeiten, ist, dass völlig inkompetente oder unmotivierte Kollegen (normalerweise) nicht so lange herumhängen.
Benjol
@ Benjol - Konnte nicht mehr zustimmen! Vielen Dank für das Feedback an alle :-)
Elaina R
8

Die großen Dinge sind:

  • Ein Plan - Wenn die Leute nicht wissen, wohin sie gehen, werden sie nirgendwo hingehen. Der Start eines Projekts erfordert daher ein paar Leute (oft die Graubärte des Projekts), um sich zusammenzuschließen und einen Plan auszuarbeiten. Der Plan muss nicht sehr detailliert sein, ist aber dennoch erforderlich.
  • Versionskontrollsystem - Ohne dieses System arbeiten Sie nicht zusammen. Sie brauchen auch die feste Verpflichtung, dass Dinge, die nicht begangen werden, nicht zählen. "Oh, es ist in einem meiner Sandkästen" ist nur eine lahme Ausrede.
  • Issue-Tracker - Sie können diese Dinge nicht über E-Mail-Ordner verfolgen. Sollte auf jeden Fall datenbankgestützt sein.
  • Benachrichtigungssystem - Die Benutzer müssen wissen, wann sich die von ihnen verwalteten Codes oder Kommentare zu Fehlern, für die sie verantwortlich sind, äußern. E-Mail kann dafür funktionieren, ebenso wie IRC (vorausgesetzt, jeder verwendet es natürlich).
  • Build-System - Es spielt keine Rolle, wie dies geschieht, solange Sie mit einer Aktion einen vollständigen Build des aktuellen Status der Dinge erhalten, sowohl Ihrer Entwicklungs-Sandbox als auch des Haupt-Repositorys. Die beste Option hierfür hängt davon ab, welche Sprache (n) Sie verwenden.
  • Testsuite - Eine Testsuite hilft Menschen, dumme Fehler zu vermeiden. Es muss so einfach auszuführen sein wie der Build (ein Teil des Builds zu sein ist gut ). Beachten Sie, dass Tests nur ein grober Ersatz für Korrektheit sind, aber viel besser als nichts.

Schließlich brauchen Sie die Bereitschaft, zusammenzuarbeiten, um den Plan zu erfüllen. Das ist allzu oft der schwierige Teil.

Donal Fellows
quelle
Aufgeschlüsselte Anforderungen können ebenso hilfreich sein wie ein kontinuierliches Integrationssystem, aber sie sind wirklich Aspekte der anderen aufgeführten Dinge.
Donal Fellows
7

Im Allgemeinen wird empfohlen, Build-Artefakte nicht im Repository zu überprüfen. Das Repository enthält den Quellbaum, die Build-Konfiguration usw. - alles, was von einem Menschen geschrieben wurde. Softwareentwickler checken eine Kopie ihres Codes in ihr lokales Dateisystem aus und erstellen ihn lokal.

Es wird auch empfohlen, Unit-Tests durchzuführen, die im Rahmen des Erstellungsprozesses ausgeführt werden. Auf diese Weise erkennt ein Entwickler sofort, ob seine Änderungen einen der Komponententests ungültig gemacht haben, und hat die Möglichkeit, diese zu beheben, bevor er seine Änderungen eincheckt.

Vielleicht möchten Sie die Dokumentation für ein Versionskontrollsystem (eines von Subversion, CVS, Git usw.) und für ein Build-System (zum Beispiel in Java gibt es Ant und Maven) lesen.

danben
quelle
Wie können Entwickler großer Projekte den Testbuild ausführen, wenn sich die Build-Ergebnisse nicht im Repository befinden? Ich bin mir nicht sicher, ob dies nur meine Mentalität ist, weil ich immer alleine gearbeitet habe, aber ich überprüfe immer, ob die Dinge "funktionieren", wenn ich mein Programm starte.
Leo Jweda
Testbuilds (und durch den Buildprozess erzeugte Daten) werden entweder in einem Installationsprogramm oder als Flatfile-System auf einer Netzwerkfreigabe gebündelt, sodass sie einfach kopiert werden können. Dies ist nützlich, wenn Sie dedizierte Tester haben, damit diese Feedback zu Fehlerkorrekturen usw. geben können
graham.reeds
7

wie Programmierer in einem Unternehmen an einer Software zusammenarbeiten

Entwickler arbeiten niemals als Team. Teams saugen. Dilbert ist nicht lustig, weil er eine komische Figur wie Goofy ist. Er ist lustig, weil er real ist und die Leute die Situationen erkennen, in denen er sich befindet.

Comic

Andomar
quelle
3

Es gibt keinen Standard für die Dinge, nach denen Sie fragen. Vielmehr gibt es Konventionen, die stark von der Größe und Reife der Organisation abhängen. Wenn Sie in einer kleinen Organisation arbeiten, sagen einige Programmierer, werden die Dinge wahrscheinlich etwas informell sein, wenn die einzelnen Entwickler Codierungen, Builds und Tests durchführen.

In größeren Organisationen gibt es möglicherweise einen dedizierten Build-Ingenieur und -Prozess. Diese Art von Organisation führt normalerweise regelmäßig einen formellen Build durch, beispielsweise einmal am Tag, wobei der eingecheckte Quellcode verwendet wird. Der Prozess umfasst normalerweise auch BVT (Build Validation Tests) und möglicherweise einige Regressionstests. Entwickler checken den Code aus dem Repository aus, arbeiten lokal an ihrem eigenen Teil und checken ihn dann ein.

In den größten Organisationen wie Microsoft oder Google verfügen sie über eine vollständig dedizierte Gruppe und ein vollständiges Labor, das mehr oder weniger kontinuierlich aufbaut und die Ergebnisse jedes Laufs zur Verfügung stellt. Diese Organisationen verfügen über sehr formale Prozesse und Verfahren, die festlegen, was wann eingecheckt wird, wie die Codeüberprüfungsprozesse aussehen usw.

jfawcett
quelle
Wie testen Entwickler in MS und Google dann ihren Code? Seien wir ehrlich, egal was wir tun, wenn wir unseren Code nicht kompilieren und ausführen, können wir nie sicher sein, dass er funktioniert.
Leo Jweda
Wie oben hängt es von dem Team ab, in dem Sie sind. Die größten Teams wie Windows verfügen über eine große und komplizierte Zweigstellenstruktur, die das lokale Testen einzelner Fixes erleichtert, wobei Integrationsprobleme frühzeitig erkannt werden, wenn die Änderung in den Zweigstellen nach WinMain verschoben wird. Das müssen Sie tun, wenn etwa 5.000 Entwickler und SDETs an dem Produkt arbeiten. Übrigens programmieren SDETs bei MS tatsächlich viel. Ihr Testcode wird neben dem Produktcode eingecheckt und muss ähnliche Codierungs- und Qualitätsstandards erfüllen.
Jfawcett
3

Es gibt kein Kochbuch für die Arbeit mit der Softwareentwicklung, aber im Allgemeinen sollte das Versionskontrollsystem das Herzstück Ihres Build-Systems sein, selbst wenn Sie in einem Projekt arbeiten, in dem Sie der einzige Entwickler sind. Selbst in diesem Fall ist es sehr willkommen, Versionen zurücksetzen und das Versionsprotokoll lesen zu können, um Fehler zu beheben. Dies ist nicht die einzige Funktion eines Versionskontrollsystems, sondern allein die Installation, Konfiguration und Wartung eines Versionskontrollsystems.

Der Build kann entweder von jedem Entwickler beim Hinzufügen von neuem Code oder regelmäßig von einem "Build-Server" durchgeführt werden. Der letzte Ansatz erfordert mehr Setup, hilft jedoch dabei, Buildfehler früher herauszufinden.

gclello
quelle
2

Die kurze Antwort - "Es kommt darauf an".

Derzeit arbeite ich selbst an einem Projekt, also bin ich derjenige, der VCS erstellt / verwendet. Ich kenne andere Orte, an denen Teams per Schauer- E-Mail gemeinsam an dem Projekt arbeiten . Oder große (+5) Teams, die VCS verwenden.

In diesem Sinne empfehle ich dringend, zumindest einige VCS zu lernen, und Joel Spolsky hat ein großartiges Einführungs- Tutorial für Mercurial. Bazaar (meine persönliche Wahl) ist ähnlich, und dann ist Git in Bezug auf Ähnlichkeit der nächstgelegene, aber wahrscheinlich beliebter als beide (zumindest Geldautomaten). Danach haben Sie SVN, die im Vergleich ziemlich schwach ist.

Eigentlich spricht Joel über die meisten Ihrer Fragen - ich würde empfehlen, die 10 Jahre Archive zu lesen, die er hat - es sind alles sehr nützliche Informationen, und das meiste davon ist relevant für Ihre aktuelle und nahe zukünftige Situation.

Wayne Werner
quelle
SVN ist wahrscheinlich am nützlichsten zu lernen, da die meisten Leute diese neuen verteilten VCSs nicht verwenden (zumindest in einem Unternehmen).
Brendan Long
1
Fast jedes Versionskontrollsystem ist besser als keines. Ausnahmen sind VSS, RCS und SCCS; Niemand sollte diese heutzutage benutzen. (Wenn nur niemand sie tatsächlich benutzt hätte, aber das ist eine andere Geschichte.)
Donal Fellows
@Brendan Long: In den Unternehmen, in denen ich in den letzten Jahren gearbeitet habe, haben die Leute "diese neuen verteilten VCSs" (in meinem Fall speziell Git) verwendet.
PTBNL
@Donal Felllows: RCS ist das einzige VCS auf Ihrer Liste, das ich verwendet habe, aber ich denke, es wäre besser als nichts. Ich stimme Ihrem breiteren Punkt zu, dass es besser wäre, zu einem neueren zu wechseln.
PTBNL
@PTBNL: Die Migration von RCS zu CVS ist sehr einfach. Die Hauptsache, von der Sie wegkommen müssen, ist, dass das Repository von jemandem gesperrt wird, der in den Urlaub gefahren ist! Ich habe keinen Zweifel daran, dass es bessere Versionskontrollsysteme als CVS gibt, aber es kann definitiv in der Praxis funktionieren.
Donal Fellows
1

Die richtige Programmierung ist eine tiefe Sache, die stark von der Erfahrung profitiert. Paarprogrammierung ist wie das Ausführen mehrerer Prozessoren des Bewusstseins ... einer kann etwas übersehen, das der andere sieht, und solange sie kommunizieren, kann dies zu großen Fortschritten führen.

Hardryv
quelle
5
Das hat nichts mit der Frage zu tun.
Danben
1
Ich bin anderer Meinung - meiner Meinung nach ist die Paarprogrammierung die interessanteste und oft sogar produktivste Ausgabe von "Programmierern, die an einem Projekt zusammenarbeiten" ... was im Wesentlichen die Frage war. Zugegeben, ein Mikrokosmos davon, aber in der Tat mein Lieblingskosmos.
Hardryv
1

Zuallererst arbeiten Teams mithilfe von Repositorys (dies kann eine professionelle Versionskontrolle sein oder nur eine Reihe von Verzeichnissen, die als "live" betrachtet werden, jedoch ist ein Revisionskontrollsystem de facto der Standard). Wie das Projekt verwaltet wird, hängt auch davon ab, wie Sie arbeiten (Wasserfall, Agilität usw.). Wenn Sie in Iterationen arbeiten, erstellen Sie Komponenten / Plugins / Module / Bibliotheken, die eigenständig sind, und führen Unit-Tests durch, bis sie als abgeschlossen abgemeldet sind. Als Team arbeiten Sie in einem Team, was bedeutet, dass Sie nicht überall gleichzeitig am gesamten Projekt arbeiten. Stattdessen erhalten Sie eine Aufgabe, die Sie in einem Bereich des Projekts ausführen müssen. In einigen Fällen müssen Sie Code reparieren, der nicht Ihnen gehört, der jedoch normalerweise auftritt, wenn ein seltsames Verhalten auftritt. Grundsätzlich testen Sie die Teile, die Sie entwickeln.

Lassen Sie mich dies für Sie erläutern. Sie befinden sich in einem Team von Bauarbeitern. Der Architekt kommt mit einem Plan für ein Gebäude, der Vorarbeiter prüft, was zu bauen ist, und stellt dann die Bauherren ein. Der Maurer macht die Wände, prüft sie auf Festigkeit und klebt sie schön fest. Der Elektriker führt die gesamte Verkabelung im Gebäude durch, damit Strom fließen kann. Jeder Mann hat seinen eigenen Job. Manchmal möchte der Elektriker vielleicht mit dem Maurer besprechen, ob bestimmte Wände geschnitzt werden können, aber immer in Verbindung mit dem Vorarbeiter.

Ich hoffe das ist eine Hilfe für dich!

Shyam
quelle
0

In der Regel enthält das Quellcodeverwaltungssystem den Quellcode und verfügt normalerweise nicht über die Binärdateien. Wenn Sie es erstellen und ausführen möchten, überprüfen Sie den Code und erstellen Sie ihn auf Ihrem lokalen Computer.

Einige Orte führen nächtliche Builds durch, um sicherzustellen, dass alles funktioniert. Möglicherweise gibt es sogar einige automatisierte Tests, die serverseitig ausgeführt werden. Wenn der Build oder etwas anderes fehlschlägt, wird automatisch jemand benachrichtigt.

Donald Miner
quelle
0

Eine gute Einführung in eine Methode zur Verwendung der Quellcodeverwaltung ist Eric Sinks Quellcodeverwaltungs-HOWTO http://www.ericsink.com/scm/source_control.html

In seinen Beispielen verwendet er SourceGear Vault, seit er es geschrieben hat, aber die Methoden können auf andere Versionskontrollsysteme angewendet werden.

ManiacZX
quelle
0

Dies ist wieder ein guter Grund, warum man sich mit Open Source-Projekten befassen sollte.

Die Hauptentwickler, die in großen OpenSource-Projekten (wie Chromium, Mozilla Firefox, MySQL, Popular Gnu Software) arbeiten, sind Profis. Sie haben viel Erfahrung und diese Projekte haben sich im Laufe der Jahre mit Ideen von Hunderten solcher Fachleute entwickelt.

Alles, was andere in ihren Antworten erwähnt haben (Plan, Versionskontrollsystem, Issue-Tracker, Benachrichtigungssystem, Build-System, Testsuite), finden Sie in diesen OpenSource-Projekten.

Wenn Sie wirklich praktische Erfahrungen sammeln möchten, empfehle ich Ihnen dringend, einige beliebte und große OpenSource-Projekte durchzugehen und dann die Quelle aus einem beliebigen Projekt (mithilfe der Versionskontrolle) abzurufen und selbst zu erstellen.

PS: Ich bin auch Student und die Teilnahme an OpenSource-Projekten ist das Beste, was ich jemals in meinem Leben getan habe. Vertrau mir! Sie werden auch das gleiche fühlen.

Krallen
quelle
Erwähnen Sie OpenSource - das ist eine seltsame Art, es zu schreiben -, wenn sie Quelldateien mit Datenbankverbindungsinformationen einchecken, und wie schützen sie diese Informationen vor Personen, die möglicherweise etwas durcheinander bringen möchten?
Leo Jweda