Unterschied Hobby-Coding und Professionelle Softwareentwicklung

Hallo Leute,

mich würde mal interessieren, was eurer Meinung nach die größten Unterschiede zwischen der Arbeit von einem Hobby-Programmierer und die des Professionellen Softwareentwicklers sind. :slight_smile:

Viele Grüße :wink:

Die einen verdienen Geld, die anderen nicht.

Für diese Diskussion reicht vermutlich der Speicherplatz auf diesem Server nicht aus!

Ich zitiere mal:

Professionalität = Bewusstheit + Prinzipien

Quelle: http://www.clean-code-developer.de/

Softwareprojekte die als Hobby betrieben werden können durchaus professionell entwickelt sein. Es kommt in erster Linie auf die Einstellung des Entwicklers an.

Hobby-Programmierer bringen sich alles selbst bei, finden immer neue Ideen und bringen dadurch die meisten „Projekte/Ideen“ nicht zu Ende. Sitzt fast den ganzen Tag vor dem Rechner um seine Ideen im Kopf umzusitzen und fragt dauernd Mr. Google wie es denn machbar ist.

Ein Profi sonnt sich vor seinen 3 Monitoren, entwickeln 2-3 Stunden und macht den Rest der Arbeitszeit Kaffee- oder Raucherpause weil er seine Aufgaben erledigt hat. Zuhause angekommen klappt dieser nicht mals den Laptop auf, weil er ohnehin den ganzen Tag vor dem Rechner sitzt.

Und dann gibt es noch die Hobby-zum-Profi, das könnte so ein Mischmasch sein :smiley:

vielleicht auch
http://forum.byte-welt.net/threads/10165-Gibt-es-Entwickler-die-nicht-testen
(Thread ‘Gibt es Entwickler, die nicht testen?’)

Der Profi:

muss Bugs fixen

muss völlig unsinnige Anforderungen und Änderungen umsetzen

muss oft mit furchteinflössenden “Der-Vorgänger-hats-gemacht”-Codemonster kämpfen

muss den Auftraggebern in langwierigen Verhandlungen entlocken, was überhaupt gemacht werden soll

ist froh, wenn er überhaupt mal ein paar Stunden in Ruhe Code schreiben darf

Das was deetee schreibt ist finde ich die Grundlage für Professionalität. Du musst einfach bestimmte Dinge verinnerlichen. Ein Bewusstsein für den Code ist ganz wichtig. Man muss dann halt auch irgendwann mal sagen können: Nein, das mach ich so nicht, weil das eigentlich schlecht ist. Auch wenn es schell geht (quick+dirty).

Leider ist das was Bleiglanz schreibt absolut zutreffend. Meine bisherige Woche sieht ganz genau so aus.

Außerdem besteht für mich noch ein Unterschied zwischen Programmieren/Coding und Softwareentwicklung. Softwareentwicklung umfasst nach meinem Verständnis eben nicht nur die “Skills” den Code schreiben zu können, sondern auch bestimmte Patterns und Datenstrukturen zu kennen und zu verwenden. Als Softwareentwickler sollte man eben in der Lage sein eine Lösung unter verschiedenen Aspekten möglichst gut lösen zu können, man sollte nicht so an geringes Wissen gebunden sein.

Ein großer Unterschied ist die Organisationsstruktur.

Im Professionellen Umfeld arbeitet man häufig im Team. Das sorgt dann auch für eine gewisse Arbeitsteilung und Speziallisierung.

Das ist vergleichbar mit der Automobilindustrie und jemandem der sich in der Garage einen Hot-Rod zusammenbaut.

Beim Bastler kann was absolut cooles rauskommen oder der größte Mist der dem TüV nur so die Zehennägel hochrollen läßt. Andererseits kannst du ja mal den Versuch starten und dein Auto von einem Fließbandarbeiter bei BMW reparieren lassen.

Jemand der sowas als Hobby betreibt, der muss nahezu alles können. Wodurch die Qualität im Detail leiden kann. (Siehe. Schwarz-Grüner Filechooser)

Durch das Arbeiten im Team wird die Arbeit oft auch besser strukturiert, da die Einzelteile ein Ganzes ergeben müssen (Komponentenorientierung, Austauschbarkeit etc. pp). Wenn man etwas alleine macht, dann kann man oft hingehen und irgendwas einfach so ranflanschen, was sich dann später meist rächt.

komisch - muss ich irgendwie als Einzelkämpfer auch immer :lol:

Sowas wie, scheiße was hab ich da mir vor zwei Monaten gedacht.

Ein Hobbyprogrammierer kann die Schuld für Bugs nicht auf seine Kollegen schieben.

Mir ist die Frage eigentlich wieder mal zu ungenau. Geht es um die Arbeitsziele, Arbeitsweise, Arbeitsbedingungen, Arbeitsergebnisse…? Und was heißt „professionell“? Eigentlich ist man ja in dem Moment „professioneller Softwareentwickler“, wenn man für’s Coden Geld bekommt - egal, welchen Dreck man da zusammenstümpert. Bei genauerer Betrachtung versteht man darunter aber bestimmte methodische Aspekte (und bei der Definition „Professionalität = Bewusstheit + Prinzipien“ ist mit keinem Wort erwähnt, dass man sich nicht auch der Tatsache bewußt sein kann, dass man bestimmte Prinzipien nicht berücksichtigt :wink: ). Tatsächlich würde ich die einiges von dem, was ich bei meinen Hobby-Projekten mache, eher als „professionell“ bezeichnen, als das, was ich auf der Arbeit mache (was aber noch nicht viel heißen mag, die Latte liegt nicht sehr hoch). Auch in bezug auf die angedeuteten potentiellen negativen Aspekte von „lone wolf projects“ (hacks und cludges, fehlende Struktur) muss ich sagen, dass die Freiheit, irgendwas, was man „schlecht“ findet, einfach zu refactoren, ohne sich Gedanken darüber machen zu müssen, ob man deswegen irgendwelche Features nicht mehr bis zu irgendeiner Deadline fertig bekommt, oder ob ein Kollege das, was man da macht, nun toll findet oder nicht, auch seine Vorteile hat. Ich würde sogar so weit gehen, zu sagen, dass nicht selten das „professionelle Umfeld“ (also Deadlines, Organisationsstrukturen, unklare oder schlicht falsche Zielsetzungen oder Methoden, Labermeetings ohne konkrete Ergebnisse…) den Programmiererweltschmerz verursacht, der daraus besteht, dass man sich vorstellt, wie toll man bestimmte Sachen machen könnte, wenn man genug Zeit dafür hätte und einfach mal loslegen könnte. Unabhängig davon verschwimmen die Grenzen aber IMHO immer mehr. Wenn Firmen Open Source Software erstellen, oder einzelne Privatpersonen ihre Apps irgendwo verticken, sind „Hobby-Coding“ und „Professionelle Softwareentwicklung“ nicht mehr einfach („klassisch“) definierbar.

Professionalität = Bewusstheit + Prinzipien

Aber ganz allgemein stimmt das so auch wieder nicht :slight_smile:
Professionalität = sein Lebensunterhalt damit verdienen !

Das eine schliesst aber das andere ned aus, und ich denke die erstere Definition triffts eher was der TE im Sinne hatte :slight_smile:

Und zum Thema …
Ich hab paar Jahre in ner Abteilung von ner Firma gearbeitet, da war Softwareentwicklung das Hauptgeschaeft (100 + Programmierer).
Ich hab paar Jahre in ner Abteilung von ner anderen Firma gearbeitet, da war ich für die Softwareentwicklung zustaendig, aber die Abteilung (3 Programmierer) selber hatte ganz andere Ziele als Software zu entwickeln …

Einige Dinge bleiben gleich, bzw ähnlich, andere DInge sind sowas von verschieden … allein vom Managment her.
Nach der ersten definition von Professionalität war die erste Abteilung wesentlich professioneller als die andere (Prozesse Managment …)
die 2. war aber um Längen agiler, was Änderungen, User-Bedürfnisse etc … betrifft.

Also selbst da kommst drauf an …
Die Punkte von Bleiglanz passen aber überall :smiley:

Ciao …

Sehe das (auch) so:
Der eine bekommt Geld dafuer, der andere nicht.

Wenn der Profi pfuscht liegts am Manager/Kunden/Firma/Vertrag, der Hobbiest pfuscht nie sondern hat mehr oder minder pragmatische Loesungen mit denen er selber meist zufrieden ist.

[QUOTE=Bleiglanz]Der Profi:

muss Bugs fixen

muss völlig unsinnige Anforderungen und Änderungen umsetzen

muss oft mit furchteinflössenden „Der-Vorgänger-hats-gemacht“-Codemonster kämpfen

muss den Auftraggebern in langwierigen Verhandlungen entlocken, was überhaupt gemacht werden soll

ist froh, wenn er überhaupt mal ein paar Stunden in Ruhe Code schreiben darf[/QUOTE]

Laut deinen Aussagen also zusammengefasst:

Ein Profi arbeitet für andere :smiley:
Denn:

[ul]
[li]Ein Hobbyrogrammierer stellt sich die Anforderungen selber[/li][li]Hat keine „vorgänger sachen“ denn er macht alles selber (meistens)[/li][li]muss keinem was entlocken, siehe punkt1[/li][li]kann code schreiben wie viel und wann und wie er will[/li][/ul]

:wink: