TL;DR. Um in ein viel behandeltes Gebiet einzusteigen, brauchst du kein fundiertes Wissen, du musst dich nur heranwagen und die richtigen* Fragen stellen.
* „Richtige“ Fragen sind jene, die dir dabei helfen, das Problem und dessen Lösung besser zu verstehen.
Solltest du ein Programmierer sein, der damit sogar seinen Lebensunterhalt verdient, gehörst du entweder zur Fraktion, die total in Rage fährt, weil ich deine Profession auf eine stupide Simplifizierung runtergebrochen habe, du siehst was dahinter steht und stimmst mir zu oder dir ist es einfach gleichgültig. Egal, was es ist. Ich kann dich beruhigen. Natürlich ist Programmieren nicht nur googeln. Wenn man vollumfänglich Applikationen plant und umsetzt erfordert das ein gewisses Maß an Kreativität, Struktur und insbesondere bei komplexen Sachverhalten eine ausgebaute Problemlösefähigkeit. Darauf möchte ich aber nicht hinaus. Im Zuge der Selbstoptimierung und Optimierung aller Lebensbereiche kommt man nicht um ein wenig Code herum. Zum Glück haben sehr viele kluge Menschen, die die Schnauze voll hatten von komplizierten, schwer zu erlernenden Sprachen, Programmiersprachen entwickelt, die Kompromisse eingehen. Sie sind einfacher zu lesen, dafür in manchen Bereichen weniger performant oder im Gesamtkontext weniger mächtig oder flexibel. Für konservative Programmierer sind derartige Kompromisse bestimmt ein Graus, für dich und mich bedeutet das, dass wir uns dem Thema auf einer anderen Ebene nähern können, nämlich Programmiersprachen rein als Werkzeug zu verwenden um Fragestellungen aus deinem und meinem Fachbereich schneller, präziser und standardisierter beantworten zu können, auch wenn dieser Fachbereich nativ nichts mit Programmierung zu tun hat.
Um euch kurz zu veranschaulichen, wie sich die Lesbarkeit in zwei Programmiersprachen unterscheiden kann, hier zwei Beispiele eines „Hello World“ Programms, welches man meistens standardmäßig als aller erstes in neuen Sprachen testet. Beide Programme geben ein „Hello World“ in die Konsole aus.
C++
#include <iostream>
int main() {
std::cout << "Hello World" << std::endl;
return 0;
}
Python
print("Hello world")
Du kannst dir auf Wikipedia fast alle Programmiersprachen und ihren „Hello World“-Programmcode ansehen. Besonders unterhaltsam, aber wenig nützlich sind in dem Bereich auch esoterische Programmiersprachen wie zum Beispiel die Sprachen Chef und Whitespace. Wenn du einfach nur ein paar deiner Probleme, Exceltätigkeiten automatisieren oder Bots schreiben möchtest, ist Python meiner Meinung nach einer der unkompliziertesten Sprachen für Einsteiger. Du installierst es, am besten als Paket wie es von Anaconda oder Google angeboten wird und kannst direkt loslegen. Auch um Machine Learning Algorithmen und Modelle zu verwenden, ist Python einer der besten Programmiersprachen. Hier liegt die Betonung auf „Verwenden“, denn wenn du effiziente Algorithmen implementieren möchtest, bringt dich Python in seiner natürlichen Form nicht weit. In den meisten Sprachen, sind viele Algorithmen und Methoden bereits von anderen Leuten implementiert und in Bibliotheken zusammengefasst. In diesen Bibliotheken kannst du sozusagen die benötigten Routinen ausleihen, manchmal auch gegen eine Lizenzgebühr. Der merklich fehlende Leistungsverlust beim Verwenden von Algorithmen, Methoden, Routinen, insbesondere im Machine Learning Bereich liegt daran, dass diese in Low-Level Sprachen wie zum Beispiel C, C++ implementiert wurden und lediglich eine Schnittstelle zu Python hergestellt wurde. Die Schnittstelle übersetzt somit nur Befehle, um es einfach zu formulieren.
Aber woher kommt nun die Aussage meines Titels? Sie kommt daher, das viele Menschen, seien es Studenten, Forscher, Programmierer, oder wie ich es bin Unternehmensberater andauernd auf Probleme beim Programmieren stoßen. Diese Probleme werden dann in eine Fragestellung formuliert und in der Gemeinschaft gelöst. Dieser zusammenhängende Block von Frage und Antwort ist meistens offen einsehbar und es haben sich im letzten Jahrzehnt entsprechende Plattformen herauskristallisiert, die auch auf Google einen hohen PageRank besitzen und daher weit oben in den Suchergebnissen auftauchen. Das setzt allerdings voraus, das du verstehst wie man ein Problem am besten googelt. Um dir eine Idee zu geben, gebe ich dir eine Skizze von meinem Ablauf, welcher nicht festgelegt ist, sondern sich mit der Zeit entwickelt hat.
- Nachdem ich etwas implementiert habe, stoße ich auf ein Problem, welches ich nicht verstehe.
- Ich versuche es so gut wie möglich einzugrenzen und typische Fehler aus meiner Erfahrung auszuschließen. Dazu gehört insbesondere herauszufinden ob die Fehlermeldung, die ich sehe eine falsche Fährt ist oder tatsächlich dem zugrundeliegenden Fehler beschreibt.
- Ich versuche die Fehlermeldung zu verstehen, notfalls google ich sie um mir die Definition dieser Fehlermeldung und gängige Ursachen nachzuschlagen.
- Ich kopiere mir die eingegrenzte Fehlermeldung raus, entferne dynamische Inhalte wie zum Beispiel Benutzerpfade, füge sie in das Suchfeld bei Google ein, schreibe gegebenenfalls die Programmiersprache dahinter und starte die Suche.
- Ich schaue mir die ersten Stack Overflow oder entsprechend für andere Sprachen wie LaTeX, deren Stack Exchange Seite an und prüfe ob die gestellte Frage meiner Situation entspricht. Falls ja, schaue ich mir die erste, zweite und akzeptierte Lösung an, lese etwaige Kommentare und versuche mein Problem damit zu lösen. Nicht vergessen, dem Autor der Lösung zu danken und in eurem Code entsprechende Urheberinformationen abzulegen, insbesondere wenn ihr die Lösung 1:1 kopiert. Die Inhalte sind letztendlich (Stand: 03.01.2020) unter der Creative Commons Lizenz lizenziert.
- Falls 5. noch nichts gelöst hat, schaue ich meistens ob es ein bekannter Bug ist. Dafür gehe ich auf das GitHub Repository des betroffenen Pakets und suche vergleichbare Fehlermeldungen. Das passiert überwiegend auch über eine schnelle Google-Suche, der ich „site:github.com“ anfüge. Hier achte ich, als jemand der zwischen Windows, Linux und WSL wechselt, stets darauf, ob es ein OS-spezifisches Problem sein könnte
- Falls 1.-6. nicht innerhalb von zirka 15 Minuten zur Lösung beitragen, frage ich meine Kollegen, die sich in einem ähnlichen Umfeld bewegen.
- Falls alle Stricke reißen und ich etwas finde, dass noch niemand bemerkt oder gemeldet hat, erstelle ich einen entsprechenden Post in dem passenden Forum.
Insbesondere, wenn du Anfänger bist, kann ich dir fast sicher sagen, dass die Probleme, die du haben wirst, bereits in aller Couleur von dutzenden Personen angesprochen und gelöst wurden. Daher das Fazit: Insbesondere für den Einstieg ist das Programmieren lediglich effektives googeln. Nach und nach sammelst du Erfahrungswerte, baust ein besseres Verständnis auf und lernst Hintergründe von Problemen kennen, die dir dabei helfen, in Zukunft besser zu sein.
Hast du dich mal an das Programmieren gewagt oder das Interesse dafür entwickelt? Wenn ja, siehst du das ähnlich oder was ist deine Routine? Lass es mich doch Wissen und schreibe einen Kommentar!
Lied des Tages
Lieblingsstelle
Ich weiß der Anfang Anzufangen ist hart
Denn manchmal kommt man nicht an Start
Beziehungsweise einfach nicht in fahrt
Aber wenn nicht jetzt wann denn dann
Beweg dein Arsch
SDP – Der Anfang anzufangen
Pingback: Google hat dein Leben bereichert! – alex.all
Pingback: Ein bisschen Programmieren? – alex.all