Nächste Schritte, oder: Wie mache ich meinen Code nicht schrottig?

Looniversity

Lt. Commander
Registriert
Jan. 2020
Beiträge
1.672
Für meinen Job erstelle ich viel code, vor allem in R und Stata, wenn es sein muss auch Python oder VBA. Die Grundlagen ("wie lerne ich Programmieren?") habe ich mehr oder weniger hinter mir und ich komme so zurecht.

Das Problem ist, dass ich zwar genug weiß um gefährlich zu sein, aber gar keinen Informatik-Hintergrund habe, und das fällt mir regelmäßig auf die Füße - sobald meine Projekte wachsen werden sie eine Katastrophe. Ihr könnt euch sicherlich vorstellen wie das ausschaut.

Womit muss ich mich beschäftigen um zu lernen, wie ich meinen Kram vernünftig plane und aufbaue? Ich habe hier ein Buch für Algorithmen und Datenstrukturen, aber das ist (obwohl auch wichtig) nicht ganz was mir fehlt - für meine Zwecke wird das meiste davon schon in Software abstrahiert. In den Stickies habe ich das hier gefunden. Ist das die richtige Richtung?
 
Design Pattern und Coding Styleguides würde ich sagen.
 
  • Gefällt mir
Reaktionen: Looniversity, Nebuk und madmax2010
madmax2010 schrieb:
Schau mal in richting software design patterns.

Welchen Editor / welche versionsverwaltung nutzt du?
Bislang habe ich noch nichts darüber gehört, dass es für VBA etwas wie eine Versionsverwaltung existiert. Das einzige was man da machen kann, ist Dokumentversionierung wo abhängig von dem ob Word, Excel oder Access mit Makros erweitert wird, man den jeweiligen Dokumentenstand sichert. Zumindest verfahre ich so bei VBA Entwicklung.

Für die Anderen Sprachen kann man sich ein Git einrichten denke ich.
 
G-Red schrieb:
Bislang habe ich noch nichts darüber gehört, dass es für VBA etwas wie eine Versionsverwaltung existiert.
Versionsverwaltungen wie Git sind völlig unabhängig von der Programmiersprache.
 
pseudopseudonym schrieb:
Versionsverwaltungen wie Git sind völlig unabhängig von der Programmiersprache.
Das ist richtig, ich habe aber eher auf die Möglichkeiten des Codereviews gezielt, sodass man konkret Änderungen nachvollziehen kann, die in einer bestimmten Funktion stattgefunden haben.
Man kann zwar das ganze manuell machen, aber das ist ein Brainfuck seinesgleichen :-D

Ansonsten ja, man kann ach Dokumente in Git sichern.
 
  • Gefällt mir
Reaktionen: Looniversity
madmax2010 schrieb:
software design patterns
Das dürfte es sein, dankeschön!

madmax2010 schrieb:
Welchen Editor / welche versionsverwaltung nutzt du?
VSCode und Rstudio als Editor, und (privat) Git für Versionsverwaltung (auf der Arbeit nur Github.com... aber das ist deren Entscheidung, nicht meine - wir sind alle keine Informatiker).

madmax2010 schrieb:
in beiden Faellen kannst du einen linter einrichten, der dich daran erinnerst sauber zu arbeiten.
Den R-Linter (lintR) nutze ich schon, und in der Regel hat der auch nicht mehr so viel zu meckern, ich versuche da möglichst dem Style Guide zu folgen. Das Problem ist weniger, dass der Code an sich "hässlich aussähe", sondern vielmehr, dass der Aufbau der Skripte/Programme suboptimal ist. Als Analogie ein sprachlich gutes Buch mit nicht nachvollziehbarer Handlung. :D

Oder als anderes Beispiel: Objektorientiert arbeiten ist schön und gut, aber wie ziehe ich das auf? Soll der Zug drive() haben, oder soll der Zugführer drive(train) haben, oder steht der Zug nur in der Gegend rum und die Bundesbahn trägt() den Bahnhof vorbei? 🤔

G-Red schrieb:
Bislang habe ich noch nichts darüber gehört, dass es für VBA etwas wie eine Versionsverwaltung existiert.
----
Für die Anderen Sprachen kann man sich ein Git einrichten denke ich.
Um VBA mache ich in aller Regel einen großen Bogen, aber wenn es sein muss kommt das Projekt als txt in Git - das soll hier aber nicht weiter stören. Etwas off topic: Ich hab mal eine proprietäre Versionsverwaltung gesehen, die "richtig" mit Excel-Workbooks arbeitet und sie nicht nur als blob behandelt. Das ist auf jeden Fall etwas, das Excel dringend nativ haben sollte und schmerzlich fehlt... Glücklicherweise ist das für mich nicht das größte Problem, Excel spielt nur eine kleine Rolle für mich.
Ergänzung ()

G-Red schrieb:
Man kann zwar das ganze manuell machen, aber das ist ein Brainfuck seinesgleichen :-D
Jemand sagte Brainfuck? 🤣
 
  • Gefällt mir
Reaktionen: madmax2010
  • Gefällt mir
Reaktionen: Looniversity
G-Red schrieb:
Gibt es einen Speziellen Grund für?
Nein, außer, dass auf der Arbeit das meiste in Stata und privat (Uni) das meiste in R vorliegt und ich mich mit den beiden ohnehin viel beschäftige, aber für VBA selten eine Notwendigkeit besteht. Wenn wir Excel-Daten reinbekommen importieren wir die in Stata (oder R) damit alles homogen ist. Subjektiv scheint mir VBA schwieriger als R, aber das ist wahrscheinlich nur eine Präferenz oder Übungssache.

Und man kann bayesian IV-GMM und die Solver bestimmt auch selbst in VBA (oder Brainfuck) implementieren... man kann es aber auch der Stata Corp. oder den Autoren von R-packages die wissen wie man das richtig macht überlassen. :D
 
Looniversity schrieb:
wir sind alle keine Informatiker
In welchem Kontext bewegt sich die Firma denn? Ich frage aus einem ganz bestimmten Grund. In meiner Firma - wir machen Retrofits im industriellen Bereich, also "um-neu-bauten" von Produktionsmaschinen inkl. SPS und Visualisierung - und für Software/Visu gibt es 2 Leute. Insgesamt saßen in der Historie auf diesen beiden Stühlen 6 Leute und ich bin der einzige Informatiker+Softwareentwickler. Das fällt mir jeden Tag wieder auf die Füße, weil meine Vorgänger maximal die Syntax beherrscht haben, aber wirklich keinen Plan von Software Design hatten. Immer wieder entdecke ich Passagen im Code, bei denen ich beinahe vom Glauben abfalle, so einen Murks haben die da zusammenprogrammiert - gekonnt um die Möglichkeiten der Entwicklungsumgebung herum das Rad mindestens 4x neu erfunden..

Mein Favorit: 4 ineinander verschaltelte While-Schleifen um den gesamten Quellcode, von denen nach eingehender Analyse die äußeren beiden EXAKT 1x durchlaufen werden und die 3. jedes Mal, wenn die Passwortabfrage bei "Beenden" kommt, in die nächste Iteration geht, also gefühlt max 3 Iterationen hat. An den Overhead, den der Compiler da baut, möchte ich gar nicht denken...


Ich möchte deiner Firma daher ans Herz legen, euren programmierenden Mitarbeitern wenigstens ein paar Fortbildungskurse anzubieten, Basis- und erweiterte Kurse. Nur letzteres birgt nämlich die Gefahr, dass einem Basics durch die Lappen gehen, weil man meinte man könne ja schon alles ;)
 
Sorry :( Wir sind irgendwo zwischen Forschung und akademischem Bereich, ich fürchte, dass der TV-L da keinen Raum für richtige Schulungen hat. Es wäre aber dringend notwendig, auch für mich. Solche Monstrositäten sind genau das, was ich vermeiden will. Oft ist mir sogar bewusst, dass ich gerade vermutlich groben Unfug schreibe oder von den Kollegen ganz starken Tobak übernommen habe, ich kann es bloß nicht besser :/ Daher dieser Thread.
 
  • Gefällt mir
Reaktionen: SR388
Das ist halt die fehlende Erfahrung, das ist völlig normal.
Ein guter Stadt-Autofahrer wird niemals einen Rennen gegen einen Profi gewinnen, eben weil ihm die Praxis fehlt auch wenn beide das selbe Auto fahren können.

Man muss Fehler machen um daraus zu lernen, daran zu wachsen und es beim nächsten Mal besser machen. In einer Firma mit guten Devs geht das recht schnell, die zerpflücken die PR und zeigen einem wie es besser geht. Hat man keinen Ansprechpartner, wird es schwer.

Die richtige Architektur ist das A und O bei einer Software.
Wenn diese falsch oder gar nicht vorhanden ist, dann kann der Code so schön und lesbar sein wie es will, die Software wird eines Tages unwartbar. Daher beschäftige dich mit Software Architektur... wie muss eine Software aufgebaut sein... guter Ansatz ist hier Clean Architecture.

Jeder Dev sollte nach SOLID arbeiten.
https://en.wikipedia.org/wiki/SOLID
 
  • Gefällt mir
Reaktionen: KitKat::new(), Looniversity und madmax2010
[ChAoZ] schrieb:
Hat man keinen Ansprechpartner, wird es schwer
Das stelle ich auch regelmäßig fest. Ab und zu sehe ich eine Lösung für etwas, das ich auch hätte umsetzen können, aber bewundere die viel clevere und einfachere Implementierung. Das hilft mir ungemein, mit solchen Techniken in Zukunft selbst besser zu arbeiten und auch andere Aufgaben eleganter als bisher zu lösen.

Dummerweise sind wir alle in der gleichen Situation, und stolpern eher zufällig über solche Dinge als dass wir regelmäßig Feedback im Sinne von "das hier funktioniert, aber so kannst du das Ergebnis viel besser erzielen" bekommen könnten.


BeBur schrieb:
Du suchst "Clean Code" von Bob Martin.
und
[ChAoZ] schrieb:
Daher beschäftige dich mit Software Architektur... wie muss eine Software aufgebaut sein... guter Ansatz ist hier Clean Architecture.

Jeder Dev sollte nach SOLID arbeiten.
https://en.wikipedia.org/wiki/SOLID
Vielen Dank euch beiden auch für diese Hinweise. Jetzt habe ich für den Anfang eine gute lange Leseliste abzuarbeiten. :)
 
Weil du mangelnde Cleverness deines Codes bedauerst: cleverer Code ist nur dann gut, wenn er auch wartbar ist. Strebe bitte immer nach bestmöglicher Wartbarkeit! Das ist in 95% der Fälle viel wichtiger als Performance oder clevere Tricks. Mit "Clean Code" gehst du einen großen Schritt in diese Richtung. :)
 
  • Gefällt mir
Reaktionen: BeBur
Was auch ungemein hilft guten Code zu schreiben sind UnitTests. Schlechter Code ist nicht nur unwartbar, er ist schlicht untestbar.

Ich bin gerade selbst im neuen Unternehmen und stelle fest dass der Architekt hier im Team, alles ist, nur kein Architekt. UnitTests schreiben ist Hölle weil alle Abhängigkeiten direkt im Code angesprochen werden... da wird mitten im Controller oder Middleware die DB abgefragt... wie soll man das bitte testen?

Also wird der Code refactored. DB Client bekommt ein Repository und dieses wird nun überall verwendet. Und schon sind die Tests easy.... und der Code wiederverwendbar. WinWin.
 
  • Gefällt mir
Reaktionen: madmax2010
Das ist schon richtig, der sinnvolle Ansatz das ganze zu lernen ist jedenfalls, Clean Code durchzuarbeiten, da wird ausführlich darauf eingegangen.
 
Vielleicht sind ja die Vorträge von „Oncle Bob“ (Clean Code) was für dich. Er spricht einiges an, was hilfreich ist und unterhaltsam ist er noch obendrauf.

Edit: Sorry hatte den Post #13 von @BeBur übersehen.
 
Zuletzt bearbeitet:
Zurück
Oben