Was muss ein guter Programmierer können?



  • Jover schrieb:

    Eigentlich hätte ich mehr auf konkretere Antworten gehofft.
    z.B.: welche programmiersprachen (außer C++, Java), ...

    Ich denke wenn man schonmal irgendeine etwas mächtigere programmiersprache gelernt hat (java, c++, ADA) wird man schnell in eine andere einsteigen können... (wies mit lisp oder Haskell weis ich net da hab ich "noch" kein erfahrung)



  • gute englisch kentnisse
    gutes mathematisches verständnis
    gutes logisches denkvermögen
    ausdauer

    Ich würde noch eine hohe Frustrationstoleranz hinzufügen... Im allgemeinen, was man sowieso könne sollte: sich möglichst schnell in neue Themangebiete einarbeiten zu können. Im allgemeinen läuft es heutzutage in (gaerade kleineneren) Firmen so, das man sich das meist selbst beibringen muß, da oft kein Geld (== Zeit) für Schulungen da ist.



  • Ich finde die ausdauer ist eine der wichtigsten Eigenschaften eine Programmieres.

    Zu oft bin ich an einem einfach problem herumgesessen, und hab es erst nach langwierigem analyseren gelöst.
    (ich bin zwar kein guter programmierer aber ich glaub das es machmal guten programmieren auch so gehen kann)



  • Gen.d.Pz.Tr.Seb schrieb:

    Ich finde die ausdauer ist eine der wichtigsten Eigenschaften eine Programmieres.

    nicht ausreichend. kenne ausdauernde leute, die nix hinkriegen. würde eher sagen, es ist wie liebigs gesetz des minimums beim pflanzenwachstum. jener faktor, der am geringsten verfügbar ist, begrenz das wachstum.



  • Ich denke, es ist von Vorteil verschiedene Paradigmen der Programmierung zu beherschen. So kann man sich relativ schnell in neue Sprachen einarbeiten. Wenn du beispielsweise OOP in Java wirklich beherscht ist der Schritt zu einer anderen objektorientierten Sprache relativ einfach, weil du keine grundsätzlich neuen Denkweisen lernen mußt.



  • Kaffee kochen 🙄

    Das mit den benötigten guten mathematischen Kentnissen zweifel ich mal an... die hab ich beim programmieren noch nie gebraucht.
    Ausser 3-Satz war da nix, obwohl das natürlich auch wieder davon abhängt WAS man macht...



  • gut fehler-suchen sollte man können (also debuggen)



  • dreaddy schrieb:

    Kaffee kochen 🙄
    Das mit den benötigten guten mathematischen Kentnissen zweifel ich mal an... die hab ich beim programmieren noch nie gebraucht.
    Ausser 3-Satz war da nix, obwohl das natürlich auch wieder davon abhängt WAS man macht...

    sagt ein blinder: ich halte es unsinnig, sehen zu können. ich habs noch nie gebraucht.
    klar kommste ohne mathe durchs programmieren. aber das ist doch kein beweis dafür, daß andere auch drauf verzichten könnten, ohne großen ärger zu haben.



  • dreaddy schrieb:

    Kaffee kochen 🙄

    Das mit den benötigten guten mathematischen Kentnissen zweifel ich mal an... die hab ich beim programmieren noch nie gebraucht.
    Ausser 3-Satz war da nix, obwohl das natürlich auch wieder davon abhängt WAS man macht...

    Okay, dann schreib mal eine Funktion mit einem Parameter n, die die Zahlen von 1 bis n aufaddiert und zurückgibt.
    Danach schreibste noch eine Funktion, die zwei Polynome (Koeffizienten sind gegeben) miteinander multipliziert.

    Es genügt auch, wenn Du den Aufwand im O-Kalkül angibst.
    Mit etwas Mathe kriegt man da wesentlich bessere Ergebnisse.

    Aber da fällt mir gerade was ein: Ein Programmierer sollte gut abschätzen können. Da kann man nämlich schon vor dem implementieren sagen, ob das Teil nachher performant genug ist oder nicht. In letzterem Fall kann man sich die Implementierung sparen.



  • hm... in 99% aller Fälle ist es egal ob die Funktion in 0.0001 oder in 0.000001 Sekunden durchläuft.
    Oft würd ich sogar den simpleren Weg bevorzugen damit man nicht noch 10 Zeilen Kommentare dazuschreiben muss damit auch jeder begreift was man da wieder gebaut hat.
    Und für das 1% schau ich mal ins www oder benutzt eine vorgegebene Funktion.

    Ich finde man sollte ein wenig praxisbezogen sein... ist ja toll wenn die Hello World Funktion vom Nachbarn 10 Milliarden mal in einer Sekunde durchläuft wärend meine nur ein zehntel schafft aber...



  • dreaddy schrieb:

    hm... in 99% aller Fälle ist es egal ob die Funktion in 0.0001 oder in 0.000001 Sekunden durchläuft.
    Oft würd ich sogar den simpleren Weg bevorzugen damit man nicht noch 10 Zeilen Kommentare dazuschreiben muss damit auch jeder begreift was man da wieder gebaut hat.
    Und für das 1% schau ich mal ins www oder benutzt eine vorgegebene Funktion.

    Ich finde man sollte ein wenig praxisbezogen sein... ist ja toll wenn die Hello World Funktion vom Nachbarn 10 Milliarden mal in einer Sekunde durchläuft wärend meine nur ein zehntel schafft aber...

    Okay, dann schreib mal eine Funktion mit einem Parameter n, die die Zahlen von 1 bis n aufaddiert und zurückgibt. Und zwar so ganz praxisbezogen, wie du das immer machst.



  • Ein guter Programmierer sollte programmieren können.



  • volkard schrieb:

    Okay, dann schreib mal eine Funktion mit einem Parameter n, die die Zahlen von 1 bis n aufaddiert und zurückgibt. Und zwar so ganz praxisbezogen, wie du das immer machst.

    Das mach ich mal:

    public static int addFirstNNumbers(int n)
    {
       return (n * (n+1)) >> 1;
    }
    

    🙂



  • @dreaddy

    Prinzipiell stimmt das schon, ABER man sollte in der Lage sein sich in mathematische Vorgänge einzudenken oder zumindest in der Lage sein aus der Vorgabe eines mathematischen Sachverhalts einen halbwegs brauchbaren Algo abzuleiten und auf den benötigten Sachverhalt anzupassen.
    Ich bin selbst ein mathematischer Tiefflieger, aber reale Sachverhalte lassen sich ohne fundamentales mathematisches Verständnis nunmal nicht in jedem Fall umsetzen.



  • Anonymous schrieb:

    Ein guter Programmierer sollte programmieren können.

    Ja, aber das sollte auch ein schlechter Programmierer können. Der gute Programmierer sollte zusätzlich, wie schon gesagt, Fähigkeiten wie ein gutes logisches Denkvermögen haben.



  • [quote="Gregor"]

    volkard schrieb:

    public static int addFirstNNumbers(int n)
    {
       return (n * (n+1)) >> 1;
    }
    

    🙂

    sogar mit ein wenig obfuscation. wie nett.
    ok, diese lösung hat ein wenig mathe verlangt und ging über dreisatz hinaus. ist doch leichter zu lesen als die schleife. und schneller getippt auch. und schneller in der ausführung allemal. und das alles, weil man ein wenig in mathe aufgepaßt hat. ist das nicht toll?



  • Mir fehlt hier was. Nämlich die Antwort auf die Frage:
    Was ist ein guter Programmierer?
    Ist man gut, wenn man effizienten Code schreibt? Oder ist es wichtiger, dass der Code gut pflegbar ist und von anderen schnell verstanden wird? (Eine Kombination wäre natürlich optimal.)
    Ist jemand ein guter Programmierer, wenn er sich auf das Programmieren beschränkt? Oder ist jemand besser, der sich auch intensiv mit den Problemen beschäftigt, die sein Programm lösen soll.
    Ist es wichtiger andere Programmierer in Erstaunen zu versetzen, oder Programme zu schreiben, mit welchen die Anwender gut zurechtkommen?

    IMHO ist eine Beurteilung der Qualität eines Programmierers nur möglich, wenn man die Zielsetzung seiner Arbeit kennt.



  • Gregor schrieb:

    public static int addFirstNNumbers(int n)
    

    Gibt es in Java mittlerweile schon eine brauchbare Möglichkeit 'unsigned' zu sagen?



  • Lustig.
    dreaddy ist offensichtlich nicht gut in Mathe. Dennoch möchte er natürlich ein "guter Programmierer" sein und kann somit nicht zugeben, dass gute Mathematik-Kenntnisse wichtig sind dafür 😃
    Wie einfach doch die menschliche Psyche manchmal zu durchschauen ist... 🙂



  • @Kauz01

    Da muß ich uneingeschränkt zustimmen. Optimal wäre sicher beides, da es sich auch nicht unbedingt ausschließt. Die meisten "guten" Entwickler sind so Algorithmenverliebt, das sie mit der Zeit eine gewisse Abneigung gegen GUI - Programmierungen entwickeln. Der Anwender ist aber nach meiner Erfahrung eher bereit ein paar Sekunden länger zu warten, als sich mit einer unverständlichen GUI anzufreunden.
    Das Leben könnte so schön sein, wenn wir nicht Anwendungen für die ganzen DAUs da draußen, sondern nur für ITler schreiben müßten. Aus Sicht einer Firma ist sicher der Programmierer der Beste, der die wenigsten Kosten verursacht und das heißt geringe Entwicklungszeit, gute Wartbarkeit und das Eingehen auf Kundenwünsche (Kenntnis der Zielgruppe).


Anmelden zum Antworten