Zu perfektionistisch zum Programmieren?
-
Ich habe oft das (zugegeben subjektive) Gefühl das besonders Anfänger sich unheimlich viele Gedanken über "Schönheit" des Codes machen und darin auch irre viel Zeitaufwand investieren wogegen Profies einfach die Lösung nehmen die für die Aufgabe passt, sie implementieren und dann weiterziehen zum nächsten Problem...
Anfänger machen sich meistens viele Gedanken über premature Optimization.
-
Jester schrieb:
Und was sagt uns das? In welchen der Bereiche würdest Du Dich wie einordnen?
Ist Logik nur den Mathematikern vorbehalten oder darf man als Programmierer nicht gesunden Menschenverstand walten lassen? Logik spiegelt sich vor allem in Programmen als auch beim Programmieren wieder. Ich wuerde mich als Programmierer bezeichnen.
-
Dann verstehe ich Deine Aussage nicht.
Es wurde Informatik/Mathematik vorgeschlagen, aber darauf hingewiesen, dass beide zunächst mal nicht viel mit Programmieren zu tun haben. Darauf konterst Du mit "Ich programmiere taeglich mit Scheme und mittlerweile mit Haskell. Hat ganz und gar nicht mit Programmieren zu tun ... ". Und jetzt kommt raus, dass Du Dich weder in den Bereich Mathematik noch in den Bereich Informatik einordnest, sondern einfach ein Programmierer sein willst. Das ist ja vollkommen in Ordnung, aber wo ist dann der Bezug zu der Aussage über Mathematik und Informatik? Mir scheint das fehlt ein Satzanfang wie "Ich bin Informatiker und..." oder "Ich bin im Bereich angewandte Mathematik tätig und..." um einen sinnvollen Bezug herzustellen. Nach nichts anderem habe ich gefragt, Du mußt Dich also auch nicht angegriffen fühlen. Ich will Dir bestimmt nicht verbieten, Deinen gesunden Menschenverstand walten zu lassen.
-
dann wäre Mathematik u./o. theoretische Informatik für dich geeignet. Mit Programmieren hat dies aber natürlich wenig zu tun.
Die Aussage, dass Mathematik u./o. theoretische Informatik nichts mit Programmieren zu tun hat, halte ich fuer falsch. Lisp oder Scheme haben das Lambdakalkuel als Vorbild, auch Haskell als modernes Lisp arbeitet intern mit diesem. Mit ihnen wird in auch (zu wenig) in der Industrie gearbeitet. Und das Lambdakalkuel ist wohl was ziemlich theoretisches in der Informatik. Andere Konzepte sind z.B. in Prolog realisiert. Mit Anwortmengenprogrammierung werden Hubschrauber gesteuert oder Triebwerkskonfigurationen ueberprueft. Wer solll denn diese Programme schreiben?
PS: Ich bin Informatiker. Nein, ich steuere keine Hubschrauber etc.
-
Nunja, dass Programmiersprachen und anderen Informatikanwendungen Dinge aus der theoretischen Informatik zugrunde liegen finde ich wenig überraschend. Das ist (hoffentlich) in so ziemlich allen Bereichen, die sich mit Informationsverarbeitung befassen so. Programmierung setzt also immer auf die theoretischen Grundlagen auf.
Aber ob die Theorie wirklich immer so viel mit Programmierung zu tun hat? Immerhin war man in den 30er-Jahren, als das Lambda-Kalkül eingeführt wurde noch weit von Programmierung und Computern entfernt. Sicherlich kann man als Informatiker sehr programmierlastig arbeiten, im Bereich theoretische Informatik sehe ich das aber eher nicht.
-
Aber ob die Theorie wirklich immer so viel mit Programmierung zu tun hat?
In diesem Fall schon. Waehrend damals lambda-Ausdruecke mit Bleistift und Papier z.B. als Uebung aufgeschrieben wurden, so schreibe ich aehnliche Ausdruecke nun in meinen Texteditor und fuehre sie aus.
-
Mit dem kleinen aber feinen Unterschied, dass Du die Dinger aufschreibst um sie auszuführen und damit irgendein Ziel zu erreichen, während die Leute damals sie aufgeschrieben haben um theoretische Eigenschaften des Kalküls zu untersuchen. Es ist ja nicht so, dass die damals tolle Programme geschrieben haben und sich nur geärgert haben, dass noch kein Rechner dafür da ist. Die Zielsetzung und die Verwendung ist also völlig unterschiedlich. Für Dich ist es ein Werkzeug um Computer zu benutzen, für die Leute damals war es ein Werkzeug um theoretische Begriffe zu analysieren.
-
@knivil/Jester: Ihr habt Euch da in einer unnützen Diskussion verrannt, die dem Fragesteller Abituri überhaupt nichts mehr nützt!
Programmieren ist ein Ziel, alles weitere sind Werkzeuge. Nicht für alles braucht man Informatik oder Mathematik!
@Abituri: Wenn Du lange genug dabei bleibst, lernst Du allein, wie "perfektionistisch" Du sein musst. Alles weitere lernst Du auch, wenn Du es brauchst!
-
Wir sind ja schon auf Seite 4, da passiert das schon mal ...
-
berniebutt schrieb:
@knivil/Jester: Ihr habt Euch da in einer unnützen Diskussion verrannt, die dem Fragesteller Abituri überhaupt nichts mehr nützt!
Ich finde die Diskussion weder unnütz, noch habe ich mich verrannt, Herr Lehrer.
Programmieren ist ein Ziel, alles weitere sind Werkzeuge. Nicht für alles braucht man Informatik oder Mathematik!
Ich finde ich es fragwürdig "Programmieren" als Ziel zu formulieren. Zumindest wer sich beruflich mit Programmierung beschäftigt hat meist andere Ziele als "Hauptsache ich programmiere". Unsere Diskussion drehte sich übrigens mitnichten um die Frage, ob man Informatik oder Mathematik für alles braucht.
-
@Jester: Bin kein Lehrer! Habe viele Jahre mit IT mein gutes Geld verdient. Programmieren gehörte natürlich dazu. Also habe ich die Frage von Abituri voll verstanden. Mir schien, ihr wart da schon etwas daneben geraten. daddeldu
-
Hallo
Jetzt ist Lehrer wohl schon ein Schimpfwort...
chrische
-
chrische5 schrieb:
Jetzt ist Lehrer wohl schon ein Schimpfwort...
Ja.
-
Hallo
Schade. Warum eigentlich?
chrische
-
Abhängig vom Kontext kann Lehrer, genau wie zum Beispiel Held, Informatiker, Genie, Vertreter, Metzger (besonders für Chirurgen) auch ein Schimpfwort sein.
Hier habe ich den Begriff aber nicht so verwendet, ich fand es nur gut, dass jemand der richtig Ahnung hat uns mal gesagt hat wo es langgeht. Da ich das in dieser Form und mit solch massiver Kompetenz bisher nur bei Lehrern erlebt habe, bin ich einfach mal davon ausgegangen, dass er wohl auch dazugehören muß. So täuscht man sich und es gibt auch außerhalb der Schule brilliante Leute.
-
Jester schrieb:
brilliante Leute.
Brillante Leute...
-
hab das jetzt nicht alles gelesen, aber wenn dich das mit dem Perfektionismus bei der Arbeit/ dem Programmieren stört, ist es wohl besser mit einem Arzt/Psychologen/Psychiater drueber zu reden...
-
`Meine Erfahrung ist folgende:
-
Setze Dir kleine Milestones bzw. teile Dein Projekt in kleine Milestones auf.
-
Bearbeite immer nur einen Milestone zur Zeit. Sieh zu, dass der Milestone funktioniert. Alles was nicht zum Milestone gehört, muss auch nicht funktionieren.
-
Wenn es keine neuen Anforderungen gibt und der Code läuft, höre auf daran "herumzudoktoren"
-
Wenn es neue Anforderungen gibt, dann ändere nur den Teil des Codes, der geändert werden muss, um die neue Anforderung zu erfüllen.
Ansonsten wird man nie fertig bzw. verrennt sich komplett und stellt hinterher fest, dass man massig Zeit verschwendet hat.
Man muss auch mal mit nicht ganz perfektem Code leben können. Wenn er stabil läuft, dann ist das auch ok. (UnitTests sind da sehr hilfreich).
Das setzt natürlich _vorraus, dass man grundsätzlich programmieren kann bzw. die verwendete Programmiersprache beherrscht.
Man redet auch von agiler Programmierung, wenn man in kleinen Milestones bzw. Zyklen programmiert. Ein Zyklus bzw. Milestone muss immer beendet werden, bevor man das Design überhaupt ändert.
Dieses Vorgehen schützt Dich selbst vor "übergeneralisierter" Programmierung, was letzendlich ein anderes Wort für "Waste Of Time" ist.
(Rechtschreibfehler sind egal (Korrekturlesen ist auch eine Form von Zeitverschwendung, wenn nicht unbedingt nötig)). ;-)`
-
-
Abituri schrieb:
Hallo alle zusammen,
die Frage klingt vielleicht etwas komisch, aber ich habe bemerkt, dass ich mich beim Programmieren immer an Kleinigkeiten verharke und Stunden, oder sogar tagelang daran herumwerke bis es mir gefällt. Oftmals schmeiße ich es dann doch wieder über den Haufen und schreibe es zum hundersten mal neu. Für mich muss immer alles definiert sein und sogar für meine Notation habe ich alles ausgearbeitet und Wehe irgendwo ist ein Tab mehr als es soll. Es ist jetzt schon so schlimm geworden, dss ich kaum irgendetwas beim programmieren auf die Reihe bekomme, sondern im Grunde nur noch alles formatiere und designe. Dies hat mir in der Schule, besonders in Mathematik und Physik geholfen, weil da ja fast alles definiert ist. Bis jetzt hatte ich vor Informatik zu studieren, aber jetzt kommen mir Zweifel. Ich weiß natürlich, dass programmieren nur ein kleiner Teil der Informatik ist, aber oftmals kommt man dann doch in diese Sparte. Es gibt natürlich noch andere Fächer wie Wirtschaftsinformatik, aber dort ist der Informatik Anteil dann doch recht klein. Was ich mich nun Frage ist, ob einer einen Beruf kennt wo dieser "Definitionszwang" nützlich sein könnte. Rückblickend fällt mir auf, dass ich ihn schon lange habe, aber wirkliche Probleme hat er kir noch nie gebracht. Ich kann ganz normal mit anderen Leuten usw. Feiern gehen und bin kein Sozialnerd. Spontan ist mir Anwalt in den Sinn gekommen, weil da ist ja so gesehen wirklich alles definiert. Am interessantesten finde ich allerdings die naturwissenschaftlichen Fächer und da ich weiß, dass sich hier Leute aller Richtungen tummeln frage ich einfach mal nach.
Mit freundlichen Grüßen
Also erstmal Respekt zu deiner Selbsterkenntnis.
Die Softwareentwicklung besteht im Berufsleben leider oft auch daraus, in endlicher Zeit mit einem gegebenen Problem fertig zu werden und Software soweit zu vollenden, daß sie das tut was sie soll.
Mit deinem Perfektionsdrang wirst du also das Problem haben nie fertig zu werden, damit steigen die Kosten für deinen Arbeitgeber und du treibst die Firma in den Ruin, es sei denn der Arbeitgeber ersetzt dich rechtzeitig.
Du hast also 2 Möglichkeiten.
1. Du lernst dir diesen Perfektionsismus schnellstmöglich ab, also Tabs % Leerzeilen zählen wäre ein no go.
oder
2. du machst besser etwas anderes.Ich selbst würde dir hier ein Physikstudium empfehlen, da es hier wirklich auf Perfektion ankommt und in der Grundlagenforschung findest du auch sicher einen Platz, in dem du dir mit deinem Perfektionismus auch Zeit lassen kannst.
Deine Programmierkenntnisse kannst du dabei nebenebei auch noch einbringen,
da man so etwas dort hin und wieder durchaus mal gebrauchen kann.
-
in endlicher Zeit mit einem gegebenen Problem fertig zu werden
Was vermutlich erklärt, warum soviel Software so schlecht ist
Ich glaube, dass guter Code, richtig funktionierender Code, wartbarer Code,
dass das immer auch schöner Code ist.
Von daher denke ich, ein bisschen mehr Perfektion unter den Programmieren könnte
nicht schaden