Wie viel kann ein Programmierer alleine machen? [geschlossen]

13

Wie viel kann ein Programmierer mit Softwareprodukten, für deren Entwicklung ganze Teams von Menschen benötigt werden, selbst erreichen? Mit anderen Worten, kann eine einzelne Person Photoshop, MS-Wörter usw. schreiben? Und wenn sie es nicht könnten, wäre Webentwicklung ein Bereich, in dem ein Programmierer viel tun könnte?

fender1901
quelle
2
Ich bin nicht sicher, was hier gefragt wird. Wenn Sie das Mojo haben, eine Software zu entwickeln, können Sie dies auf jeden Fall selbst tun - im Web oder nicht. Es kann einige Zeit dauern, nachdem Facebook nicht an einem Tag von MZ entwickelt wurde.
CoolBeans
Werfen Sie einen Blick auf blitwise.com für die Arbeit mit einzelnen Entwicklern .
Michael K
Die Produktivität der Coder ist sehr unterschiedlich. Einige Codierer codieren 10x schneller als andere ...
Denis de Bernardy
2
Wenn es sich um ein einzelnes Entwicklergebäude, Photoshop und MS Word handeln würde, wären sie ungefähr 1/100 so groß. Ich halte das nicht für eine schlechte Sache.
JeffO
1
Es hängt davon ab, ob. :-)
Richard

Antworten:

14

Fangen Sie klein an

Linux ist derzeit viel umfangreicher als seine ersten Iterationen, aber das Wichtigste ist, dass es genügend Inhalte enthält, um an Bodenhaftung zu gewinnen.

Nur wenn es sich lohnt

Ich habe die persönliche Regel, dass es sich lohnt, große Dinge zu tun, wenn sie sich grundlegend von den anderen unterscheiden. Ansonsten tauchst du in einen roten Ozean .

Gut zu beginnen, aber nicht immer nachhaltig

Wenn Ihre Software gut genug ist, sollten Sie es ernst meinen. Nehmen wir zum Beispiel Markus "Notch" Persson, den Erfinder von Minecraft. Im IIRC startete er das Spiel alleine und als das Spiel an Fahrt gewann, suchte er nach Mitarbeitern und gründete sogar eine Firma.

Große Projekte lohnen sich nicht nur, um etwas zu erreichen, sondern sie entfalten ihr Potenzial durch die Zusammenarbeit von Entwicklern und nicht durch ein einziges Genie, das mich zum nächsten Punkt führt.

Ein Mythos

Schauen Sie sich The Myth of the Genius Programmer an , ein Vortrag von Ben Collins-Sussman und Brian Fitzpatrick auf der Google I / O 2009. Sie sollten dort alle falschen Erwartungen haben. Der wichtigste Punkt, den ich hier ansprechen möchte, ist, dass manchmal ein einzelner Entwickler den Kredit für die ganze Sache bekommt, während mehr Leute dahinter waren.

Es ist definitiv möglich

Ein anderes Beispiel neben Linus Torvalds ist John Carmack. Er portierte Wolfenstein in nur vier Tagen, als EA ein volles Team für zwei Monate veranschlagt hatte.

Es ist nicht die Menge an Code, sondern das architektonische und technische Wissen, mit dem Sie mit weniger Code große Dinge erreichen können, als Sie erwarten würden.

Angesichts der Fähigkeiten und Kenntnisse (überdurchschnittlich gut) können Sie viel Arbeit als wenig empfinden.

dukeofgaming
quelle
7
+1 IMO, Linus hat nichts gegen Carmack. Sein Zeug ist das Zeug der Legende.
Steven Evers
1
Wem gehört die Legende? Linus oder John. Ich habe deinen Slang nicht zurückbekommen
Chani
1
@RYUZAKI: Ich denke, @SnOrfus 'Kommentar ist eine ganze Frage für den englischen Stackexchange.
Spoike
1
@RYUZAKI - John hat das Zeug der Legende, in SnOrfus Kommentar.
Ocodo
1
Hat Carmack das volle Teamgehalt von 2 Monaten für seine 4-tägige Arbeit erhalten, oder hat er nur auf den Rücken geklopft?
Drew
5

Aufgrund der Art der Arbeit, die ich mache, habe ich selbst ein paar ziemlich große Anwendungen entwickelt. Also ja, es ist machbar. Ich könnte stundenlang weitermachen, habe aber jetzt nicht viel Zeit. Hier sind einige Vor- und Nachteile aus persönlicher Erfahrung.

Vorteile:

  • Sie haben die volle Kontrolle und es gibt kein Team, mit dem Sie kämpfen können, sodass Sie mit dem weitermachen können, was Sie für das Beste halten. Keine Zeitverschwendung in endlosen Diskussionen über einen winzigen kleinen Aspekt im Code.
  • Sie haben die gesamte Architektur im Kopf, wissen buchstäblich alles darüber, die Kundenbetreuung ist ein Kinderspiel, da Sie alle Antworten selbst kennen
  • Sie lernen viel über alle Aspekte der Programmierung. Low-Level, Mid-Level, High-Level, Benutzeroberfläche, ...

Nachteile:

  • Es gibt kein Team, mit dem man kämpfen kann. Manchmal trifft man schlechte Entscheidungen, ohne dass es jemand sagt
  • Es ist leicht, sich darin zu verlieren und nicht mehr das große Ganze zu sehen. Und es gibt niemanden, der Ihnen helfen kann. (außer SO / SA und dergleichen:])
  • Sie verbringen viel Zeit mit dem Kundensupport, den Sie lieber für die Programmierung verwenden möchten
stijn
quelle
3

Mit etwas Engagement und Geschick kann eine einzelne Person definitiv viel erreichen. Es ist jedoch nicht einfach, nur ein guter Programmierer zu sein, ist nicht genug. Für ein erfolgreiches Projekt müssen Sie häufig über Anwendungsfälle, Benutzeroberflächendesign, Dokumentation, Support und vieles mehr nachdenken. Sobald die Dinge ins Rollen kommen und die Anzahl der Benutzer wächst, wird es zunehmend unrealistisch - an diesem Punkt kommen entweder mehr Menschen in das Projekt (durch Beteiligung der Community, Einstellung von Mitarbeitern oder auf andere Weise) oder das Projekt stirbt.

Wladimir Palant
quelle
1

Dies hängt von der Software ab, die er zu entwickeln versucht, von der zeitlichen Beschränkung und von den Fähigkeiten. Wenn er eine einfache MIS-Anwendung entwickelt, ist es sehr wahrscheinlich, dass er dies in kurzer Zeit tun kann. Der Versuch, eine Software zu entwickeln, die so kompliziert wie Photoshop, MS Word, Blender, Flash usw. ist, ist möglich, aber es dauert lange und sie verfügt über die grundlegendsten Funktionen und die Funktionen sind einfach.

Tom
quelle
1

Es hängt alles von Können, Zeitaufwand und der Bereitschaft ab, dies zu tun. Je mehr Wissen Sie haben, desto weniger Zeit wird es brauchen, um etwas zu erreichen. Sie erhalten eine äußerst genaue Kenntnis der Codebasis als einziger Entwickler, was auch den Prozess des Herausfindens / Refactorings / Debuggens beschleunigen kann.

Ich habe persönlich an einer Desktop-zu-Server-Übertragungsanwendung gearbeitet. Ich habe die Serveranwendung und die Desktopanwendung codiert und alles selbst getestet. Ich habe sogar das Installationsprogramm für die Anwendung geschrieben. Ich habe eine Möglichkeit gefunden, Drag & Drop auf Taskleistensymbole in Windows zuzulassen und sogar eine neue Java-Bibliothek von Grund auf neu zu schreiben. Ich habe das im Laufe eines Jahres gemacht und es befindet sich noch in der Entwicklung und Erprobung.

Dieses gesamte Projekt war eine einzige Tortur. Jeden Tag nach der Schule habe ich sowohl am Projekt als auch am Wochenende gearbeitet. Ist es so umfangreich wie MS Word, Photoshop usw.? Nee. Das Projekt ist immer noch groß und wächst stetig, und es ist möglich, viel zu erreichen.


quelle
Sehen Sie, das habe ich mich gefragt ... es kann länger dauern, aber da Sie wissen, was der gesamte Code tut, ist es wahrscheinlich einfacher, Fehler zu beheben. Und eine tolle Lernerfahrung.
Fender1901
@ fender1901 Nun, das Programmieren sollte immer eine Lernerfahrung sein, an dem Tag, an dem Sie entweder alles wissen oder eine herausforderndere Aufgabe finden müssen.
1

In meiner Freizeit arbeite ich selbst an einem solchen Projekt (es ist eine Webanwendung, keine Desktopanwendung, aber die Prinzipien sind dieselben). Folgendes habe ich bisher gefunden:

1) Das Rad nicht neu erfinden . Verwenden Sie vorhandene Bibliotheken / Frameworks, anstatt alles von Grund auf neu zu machen. Eine Einschränkung hier: Achten Sie darauf, dass Sie die Lizenzen beachten, da diese für Ihre gewünschte Distribution / Veröffentlichung / welches Modell auch immer gelten. Für einige Copyleft- Lizenzen ist es erforderlich, dass Sie Ihre "abgeleiteten Werke" als Open-Source-Version verwenden. Einige Lizenzen erlauben nur die nichtkommerzielle Nutzung. Behalten Sie die Bibliotheken / Frameworks im Auge, die Sie verwenden, damit Sie in Ihrem "Credits" -Bildschirm / Bereich / was auch immer eine entsprechende Zuordnung vornehmen können

2) Arbeiten Sie iterativ . Dies knüpft an das an, was dukeofgaming mit "Start Small" gesagt hat . Es ist viel wahrscheinlicher, dass Sie bei einem Projekt bleiben, wenn Sie Ergebnisse sehen können. Bis Sie sehen, dass etwas funktioniert, ist jede Entwicklung, die Sie durchführen, das Äquivalent zum Malen im Dunkeln.

3) Haben Sie keine Angst, frühzeitig um Feedback / Hilfe zu bitten . Die Chancen stehen gut, dass du nicht in allem gut bist. Wenn Sie in der unteren Ebene der Codierung großartig sind, sind Sie wahrscheinlich am UI scheiße. Das Umgekehrte gilt auch. Es tut nie weh, sich von denen beraten zu lassen, die in einem bestimmten Bereich besser sind als Sie. Viele Leute werden dies vermeiden, weil sie besorgt sind, dass jemand ihre Idee stiehlt. Mach dir darüber keine Sorgen - wenn jemand versucht, dich zu kopieren, bedeutet dies, dass du auf etwas Wertvolles stehst. Ideen sind billig, Umsetzung ist der Schlüssel. Apple hat den MP3-Player nicht erfunden, Microsoft hat das Betriebssystem nicht erfunden, Facebook hat das soziale Netzwerk nicht erfunden und Google hat die Suchmaschine nicht erfunden. Was sie taten, war, es für Benutzer zwingend zu machen (und nicht zu saugen).

Daniel Kitchener
quelle