Brauche ich einen anderen Weg um besser im programmieren zu werden?

4 Antworten

Hey ich studiere Computer Science und arbeite nebenbei als Software Dev.

Ich war zu Beginn meines Studiums eine Absolute Niete im Coden (Sogar HTML war mir zur Beginn zu Kompliziert) mit der Zeit bin ich fitter geworden und arbeite heute hauptsächlich mit Java (& Frameworks).

Jedenfalls was mir geholfen hat war, ich hatte Open Source Projects entdeckt, das sind Projekte wo Programmierer zusammen kommen und gemeinsam an Projekten arbeiten. Es gibt haufenweise Internetseiten, Dc server etc. deshalb kann ich jetzt nicht eine nennen. Das gute daran war, was mir geholfen hat ist das man dadurch den Kontakt zu anderen Programmierern bekommen hat, die viel weiter sind als man selbst und dadurch das man gemeinsam Arbeitet bzw. Hobbymäßig Projekte macht, wurde alles besser erklärt und so hab ich zb. Java gelernt. Ich hab durch die Projects damals freunde kennengelernt die schon länger in der IT sind und mir dann immer mehr erklärt haben bzw. sich meine Projekte angeschaut haben und mir gezeigt haben, wo der Code unsauber war oder unnötig etc.

Woher ich das weiß:eigene Erfahrung

Ist das dein Karriereziel, weil Du da Bock drauf hast, oder weil Du dir davon hohe Gehälter und einen sicheren Job versprichst?

Und teste ruhig andere Sprachen aus, Du musst ja nicht ewig dabei bleiben. Und blöd vorkommen musst Du dir dabei auch nicht, am Ende gewinnst Du min. Erfahrung und am Ende ist Erfahrung das wichtigste.

Du kannst dir auch C# anschauen, von da kann man gut C/C++ ansprechen, so kannst Du eine komplexere Oberfläche für die Hardware entwickeln (die Hardware-Ansteuerung ist dann in C/C++), ohne dir regelmäßig ein Bein ausreißen zu müssen ^^

Und such dir allgemein komplexere Projekte. Daten anzeigen alleine ist langweilig, wie wäre es, wenn Du die Daten auch automatisiert auswertest/analysierst? Und überlege dir auch, was nötig wäre, wenn Du das Gerät verkaufen würdest, ein potentieller Kunde möchte ggf. noch mehr machen, z.B. ein/aus schalten, eine Handy-App/Website zur Überwachung, Pusch-Benachrichtigungen, Automatisierungen, etc.

Abgesehen davon bezweifle ich (gefährliches Halbwissen, hab nie im Embedded Bereich gearbeitet), dass Du in dem Bereich sonderlich komplexe Software umsetzen musst, die über die direkte Hardware-Ansteuerung hinaus gehen. Für sowas (z.B. Client-Anwendung) haben die Firmen vermutlich nochmal extra Leute, die sich darauf spezialisiert haben und dann auch mit anderen Sprachen und Technologien arbeiten.

Aber so oder so kannst Du solche Erfahrungen (Problemlösung) nicht erzwingen, das dauert. Wenn Du ein neues Projekt auf der grünen Wiese startest und am Ende der einzige Nutzer bist, dann wirst Du nur wenige tatsächliche Probleme haben, die es zu lösen gibt. Wenn Du aber in einem Team oder an lange lebenden Projekten mit größem Kundenstamm arbeitest, hast Du ständig irgendwas neues, was es zu lösen gibt, das liegt einfach in der Natur der Sache. Um etwas vergleichbares zu erreichen könntest Du ja auch an Open Source Projekten mitarbeiten.

aber was ich wirklich lernen will ist eben große Sachen in kleine Teilprobleme gliedern und diese strukturiert abzuarbeiten

Ich weiß nicht, was Du unter "groß" verstehst, aber wirklich große Projekte habe ich bisher nur bei der Arbeit gehabt. Das sind Projekte, daran arbeiten mehrere Leute mehrere Jahre (und unsere Projekte sind noch vergleichsweise klein), solche Projekte wirst Du aber nicht Mal eben so Zuhause aufziehen können.

In der such ich ständig nach Projekten, fange sie an, beende sie nicht

Warum beendest Du sie nicht? Beende sie und überlege danach, was Du verbessern kannst und so kommst Du vom Hölzchen auf's Stöckchen.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Probier mal leetcode, kurz und knackige Probleme, die die Problemlösefähigkeit steigern.

Sprachen kannst du da frei wählen.

Ansonsten kannst du wirklich in andere Sprachwelten vielleicht mal steigen. Oder du entwickelst Protokolle, bzw schreibst diese.

Nimmst einfach 2 Microcontroller die miteinander reden sollen.

Ein Projekt was ich empfehlen kann, wäre einen Drehgeber via interrupts zu lesen um hohe Geschwindigkeiten zu erkennen

Woher ich das weiß:Studium / Ausbildung – Aktives Studium: Informatik Technischer Systeme

Akazami 
Beitragsersteller
 26.10.2024, 21:47

Das Problem beim Leetcode ist aber auch wieder: Super kleine Aufgaben die halt teils sehr komplex werden. Soll nicht heißen ich scheue komplizierte Aufgaben.

Wenn ich mir aber ein großes Software Projekt vorstelle komme ich sehr schnell ins schleudern einfach, weil ich noch nie große Programme geplant habe.

Ich bekomme meist die Sachen schon zum laufen, aber was ich wirklich lernen will ist eben große Sachen in kleine Teilprobleme gliedern und diese strukturiert abzuarbeiten.

Leetcode übernimmt diesen Part für mich, da es ein Teilproblem ist. Das große ganze wird dadurch aber nicht leichter.

Wenn du verstehst was ich meine ^^

Kleine Protkolle habe ich schon selber geschrieben (simpel über UART z.B.).
Auch habe ich Erfahrung mit SPI/I2C. ADC's und PWM Erstellung, Timer Configuration, da habe ich auch ein Basic Wissen und kann damit einigermaßen nach Recherche umgehen.

Aber mich überfordert einfach immer große Programme (wenn ich andere anschaue) überhaupt zu verstehen, weil meine Programme teils auch immer nur vielleicht 100-300 Zeilen Code waren.

TheStalker64  26.10.2024, 22:47
@Akazami

Bei leetcode kannst du die Schwierigkeit auch auswählen. Du musst aber dennoch das Problem in kleine Häppchen zerkleinern um das ordentlich zu lösen.

Hatte heute bspw. Eins, wo man pow(x,n) entwickeln sollte. Da gab's auch Zeitanforderungen, also der naive Ansatz ging nicht, da das zu lange dauert. Da müsste man dann nachdenken wie zerkleinere ich den Code.

Aber vielleicht ist's bei dir eher das Gefühl von großen Projekten, da durchzustehen und dies auch zu entwickeln, oder?

Da bleibt nur üben üben üben. Nimm dir Projekte und mach diese aufjedenfall zuende. Guck danach dir den Code an und überleg dir was daran schlecht ist und schreib es um. Rede dabei von Architekturiellen Änderungen, nicht statt I++ ++I zu Nehmen.

Embedded ist auch ein sehr spezielles Feld. Heutzutage schreibt man Recht selten low Level code. Oftmals schon noch drüber.

Wenn dich das alles aber sehr interessiert, studier mal technische Informatik, da hast den Druck (zumindest an einer Hochschule) auch projekte fertig zu machen.

Wir mussten innerhalb eines Semesters 2 Förderbandanlagen zu 4. Von Grund auf Entwickeln.

Akazami 
Beitragsersteller
 26.10.2024, 22:58
@TheStalker64

Aber zum Projekte Thema kommt ja meine initial Frage: Wie kann ich das von der gleichzeitigen Platinen Entwicklung entkoppeln? ^^

c braucht man ja für Microcontroller.

Aktuell studiere ich Elektrotechnik und schreibe nächstes Semester meine bachelorarbeit. Die Hintergründe der Elektronik verstehe ich dadurch sehr gut. Die Software Strukturen fallen mir da schon schwerer.

Und große Projekte zu finden, die eben nicht eine große Entwicklung der Hardware beinhaltet, das finde ich eben schwer.

TheStalker64  26.10.2024, 23:11
@Akazami

Dann hätte ich ein einfaches Projekt:

Kauf dir einen digitalen LED Strip und Steuer diesen an mit verschiedenen Mustern usw. Da musst du sehr viel drüber nachdenken wie du das strukturierst.

Am besten auch ohne vordefinierte HAL, sondern du baust dir deine eigene kleine HAL.

Das liest sich so, als ob Du Dir Übungsaufgaben suchst. Reale Projekte ergeben sich doch aus dem, was die Kunden bestellen. Oder, wenn es Eigenforschung zwischen den Kundenprojekten ist, weiß man doch, wo es bei den Kundenprojekten hapert, was man dringend entwickeln sollte um in Zukunft seine Arbeit zu machen.

Zur Sprache: Ich hab als Ingenieurwissenschaftler, der aus Messungen empirische mathematische Modellierungen erzeugen musste, um damit etwas zu berechnen, bis zur Rente mit Erfolg und großer Freude in C gearbeitet. Man muss nur eben die richtigen Structs entwerfen, Pointer auf ausführbaren Code, im Sinne der Objektorientierten Programmierung, brauchen die nicht. So schlecht und altmodisch ist doch C gar nicht. Mein Nachfolger hat zwar angefangen alles in Python umzuschreiben, aber der Vorteil von Python scheint wohl eher zu sein, dass man so immens viele Algorithmen für alles mögliche öffentlich verfügbar hat.


Akazami 
Beitragsersteller
 26.10.2024, 22:11

Du hast recht, dass reale Projekte sich daraus ergeben was der Kunde bestellt. Aber aktuell studiere ich noch und möchte meine Zeit nutzen um eben Erfahrung aufzubauen.

Am ende möchte ich aber nicht Platinen designen, weswegen dieser Part von eigenen Projekten mir meist den Spaß raubt oder eben zu oben genannten Problemen führt.

Und was ich übern möchte ist eben das von dir genannte: "die richtigen Structs entwerfen, Pointer auf ausführbaren Code" etc.

Mein gedanke mit Python oder javascript ist nicht, weil ich c nicht mag. Im gegenteil, ich mag es sehr gerne. Es ist eben eher, weil man leichter größere Software Projekte machen kann die vielleicht nicht nur auf einer Konsole basieren und da auch ein wenig die Motivation hoch halten.

Das fehlt mir aktuell und da weiß ich nicht wie ich weiter machen soll..

hamberlona  26.10.2024, 22:30
@Akazami

Wenn ich in Deiner Situation wär, dann würde ich einmal versuchen, mit MLP (multi-layer perceptron) Lottozahlen vorherzusagen. Wir wissen beide, dass man das nicht kann, aber einen Algorithmus zu entwickeln, der es versucht, wird Dir helfen, KI noch besser zu verstehen.

Oder denk Dir eine Aufgabenstellung an Aktienkursen aus. Ich hatte mal privat monatelang etwas laufen, das zweimal wöchentlich aus vielen Quellen den aktuellen Stand zigtausender historischer Aktienkurse herunterlud, allein das war eine Herausforderung, bei manchen musste ich mit einem xdotool-Skript unter Linux manuelle Benutzug eines Webinterface vortäuschen.

Oder entwickel ein universelles Regbressionsanalyse-Tool. In einer Tabelle sei eine Spalte Funktion bestimmter anderer, als Linearkombination nichtlinearer Funktionen mit positiven und negativen Exponenten. Output ist eine empirische Formel mit den genauen Koeffizienten. Anwendungsbeispiel: Wie hängt in mobile.de für eine bestimmte Kategorie Gebrauchtwagen der Preis ungefähr linear vom Alter und vom km-Stand ab?

Akazami 
Beitragsersteller
 26.10.2024, 23:22
@hamberlona

Aber ist so etwas nicht dann schon super umständlich das mit c realisieren zu wollen?