Zum Inhalt springen

C# selbstständig lernen - Projektideen, wichtige Themen


Unstoppable

Empfohlene Beiträge

Hallo Community,

als erstes würde ich gerne erwähnen, dass es keine Frage über Erwerb der Basiskenntnisse ist. Es geht eher darum, was man macht, wenn man die Basics schon kann. Wie man z.B. eine "foreach" Schleife oder Formular programmieren lernt ist mir schon klar, dafür gibt es Tutorials, Webseiten wie Code Academy etc. 

Mit C# habe ich bis jetzt nur eine Windows Forms Application programmiert und bin nun auf der Suche nach was ich als Nächstes aufnehmen könnte. Mein Ziel ist es nach ~2 Jahren in den Arbeitsmarkt eintreten zu können und einen durchschnittlichen Gehalt wert zu sein.  

Welche Themen sind für einen C# Entwickler absolut wichtig um sich ein .NET Entwickler überhaupt nennen zu können? Welche Beispielprojekte könnte man übernehmen, um die Themen sich selbst beizubringen? In welcher Reihenfolge würdet ihr empfehlen die Themen zu lernen, oder ist es nicht wichtig?

Danke im Voraus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Quote

Mein Ziel ist es nach ~2 Jahren in den Arbeitsmarkt eintreten zu können und einen durchschnittlichen Gehalt wert zu sein. 

Hier könntest du evlt noch ein paar mehr Infos dazu schreiben, ist geplant dir in diesem Zeitraum nebenberuflich C# beizubringen mit diesem Ziel?

 

Zur restlichen Frage kann ich dir nur empfehlen, dass du dir einfach ein eigenes Projekt ausdenkst, dass dich interessiert und versuchst das umzusetzen. Bei mir sind die meisten (privaten) Tools dadurch entstanden, dass ich mir gedacht hatte, dass ich jetzt gerade ein Tool gebrauchen könnte, dass diese und jene Aufgabe erfüllt. Dieses Tool kannst du dann natürlich immer erweitern. 

Evtl solltest du dir einen Bereich aussuchen, der dich besonders interessiert, also z.B. Web-Entwicklung oder doch lieber Mobile oder eben ganz klassisch mit WinForms. 

Wenn das Tool einen gewissen Umfang erreicht hat, kannst du natürlich anfangen alles zu optimieren. Am besten dabei immer selbstkritisch sein und zu schauen, welches Stück Quellcode zwar funktioniert, dir aber vielleicht nicht ganz so gut gefällt und dann zu versuchen denn Quellcode hübscher und evlt schneller zu machen.

Hier kannst du dann anfangen dich mit der Architektur der Tools zu beschäftigen, wenn du dich ein bisschen in Softwarearchitektur und DesignPattern beschäftigt hast, kannst du versuchen das ein deinem Tool zu übernehmen. So kommst du dann eigentlich automatisch immer weiter, indem du einfach immer versuchst dein Tool weiter zu optimieren.

Unabhängig davon, ob du versucht die Performance zu verbessern oder dein Tool einfach Modular aufbaust oder wie auch immer.

 

Beruflich (Businessanwendungen usw) wirst du in sehr vielen fällen mit Datenbanken in Berührung kommen, von daher wäre es natürlich gut, wenn du durch dein Tool bereits Erfahrung damit hättest.

Wenn du dich für Web-Entwicklung interessiert währe hier z.B. ein eigenes CMS eine beliebte Idee (auch wenn es davon schon tausend gibt) oder dir fällt einfach aus deinem privaten Umfeld ein Problem auf, bei dem du dir denkst, dass müsste man eigentlich über eine Software besser lösen können (geht mir zumindest öfter so).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde versuchen, mich auf technischen Blogs, Zeitschriften, User Groups und Co. rumzutreiben.

Erste Anlaufstellen wären heise.de, Fachzeitschriften wie Windows Developer bzw. Dot Net Pro, gewöhnliche Fachliteratur in Buchform (findest Du in jeder größeren Buchhandlung) und User Groups vor Ort. Zu letztgenannten findest Du häufig bei Xing Informationen, was in Deiner Nähe verfügbar ist. Bei all diesen Dingen bekommst Du einigermaßen mit, was gerade trendy ist und Schlagwörter an die Hand, mit welchen Du Dich via Internet, Blogs, Microsoft Virtual Academy, YouTube und Co. weiterbilden kannst.

Was die eigentliche Programmierung angeht, ist meine Erfahrung, dass nur die letztliche Arbeit wirklich hilft. Ganz plumpes entwickeln. Ohne Praxis verpufft ein Großteil der Theorie sehr schnell. Wenn Du kein Unternehmen hast, in welchem Du Dich einbringen kannst, würde ich wahlweise versuchen, Dir selbst Programme für Zuhause zu überlegen (Klassiker wie Haushaltsbücher gehen immer), oder ob Du Open Source Projekte findest, wo Du mitwirken kannst. Über genannte User Groups schauen, ob man dort Anschluss an Unternehmen erhält. Im Zweifel kannst Du auch bei Handwerkern, Vereinen und/oder Verwandtschaft vor Ort fragen, ob die nicht Hilfe gebrauchen könnten. Meistens sind die IT-Mäßig nich so dicke aufgestellt, haben einfache Problemstellungen und wenig Druck, falls was mal nicht klappen sollte.

Zuhause für sich entwickeln ist meiner Erfahrung nach nur bedingt sinnvoll, gerade am Anfang. Da Du selbst gar nicht wissen kannst, worauf es ankommt, wo Fallstricke liegen und Du Dir im Zweifel auch mal Fehler aneignen kannst. Ohne Mentor kann das schnell in die Hose gehen, auch wenn gleich es natürlich besser is als nix. Ist wie bei einem Musik-Instrument. Ohne Anleitung ist das eine Wundertüte, wo von grottenschlecht-trotz-jahrelanger-Erfahrung bis hin zu Echter-Könner-In-Kurzer-Zeit alles dabei sein kann. Diese Streuung kann man mit einem Mentor bzw. Umfeld reduzieren.

Bearbeitet von Errraddicator
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Unstoppable:

Welche Themen sind für einen C# Entwickler absolut wichtig um sich ein .NET Entwickler überhaupt nennen zu können? Welche Beispielprojekte könnte man übernehmen, um die Themen sich selbst beizubringen? In welcher Reihenfolge würdet ihr empfehlen die Themen zu lernen, oder ist es nicht wichtig?

Um Dinge zu lernen, geht es viel weniger um tolle Projekte, sondern um Techniken zu lernen:

  • O/R-Mapper (Entity Framework, NHibernate)
  • IoC/DI container (z.B. StructureMap, AutoFac)
  • Logging (z.B. SeriLog, NLog)
  • Message Queues (z.B. RabbitMQ)
  • Unittests
  • Microservices 
  • Web-APIs
  • OData
  • Linq

Oder du optimierst dein Programmierstil. Lerne Clean Code und TDD (Test-driven Development) und verinnerliche die SOLID-Prinzipien.

Selbst wenn du eine WinForms-Anwendung gebaut hast, könntest du mit Sicherheit diese noch weiter optimieren. z.B. kannst du versuchen, diese mit dem MVP-Pattern (Model-View-Presenter) umzubauen oder du verwendest das Event-Aggregator-Pattern um die Kommunikation zwischen den einzelnen Forms zu realisieren. Eigentlich gibt es immer was zu optimieren und kann dabei neue und nützliche Dinge lernen.

Ich finde, man muss diese Techniken nicht alle bis zur Perfektion verinnerlicht haben. Ich finde, man sollte aber mal davon gehört und ggf. auch ein mal ausprobiert haben. Die Vertiefung einzelner Techniken kommt hinterher, wenn man ein Projekt gefunden hat, was man umsetzen möchte.

Bearbeitet von Whiz-zarD
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 17 Minuten schrieb Kleinrechner:

Hier könntest du evlt noch ein paar mehr Infos dazu schreiben, ist geplant dir in diesem Zeitraum nebenberuflich C# beizubringen mit diesem Ziel?

Nein, ich würde C# im Vollzeit lernen. 

Danke für einen guten Tipp wegen der Fachrichtung. Es fällt mir leider schwer, eine Fachrichtung zu wählen, da ich keine Bekannte in dem IT Bereich kenne, die mir über Pros und Cons erzählen könnten. Wie sieht das Berufsleben in den genannten Fachrichtungen eigentlich aus? Z.B. Was für Firmen Stellen in der jeweilige Fachrichtung ein (große, kleine)? Wie sind die Perspektiven? Wo gibt es am meisten und am wenigsten Konkurrenz? Wo sind Gehälter  am höhsten und am niedrigsten? Wo gibt es viel Teamwork und wo arbeitet man individuell? In welcher Fachrichtung macht man in der Regel viel Home Office und in welcher nicht? Wo ist es einfacher sich selbstständig zu machen? Wo gibt es mehr Life-Work-Balance und wo arbeitet man viele Stunden? Wo gibt es nicht nur nationale, sondern auch internationale Karrieremöglichkeiten? usw.     

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bezieht sich deine Frage mit der Fachrichtung auf diese Aussage?

Quote

Evtl solltest du dir einen Bereich aussuchen, der dich besonders interessiert, also z.B. Web-Entwicklung oder doch lieber Mobile oder eben ganz klassisch mit WinForms. 

Oder meinst du die Branche mit Fachrichtung, also Finanzen, Security, Medizin usw?

Unabhängig davon worauf sich die Fachrichtung bezieht würde ich sagen, nimm einfach die, die dich am meisten interessiert, niemand von uns kann in die Zukunft schauen und mit Gewissheit sagen, was in 5 Jahren aktuell sein wird.

Viele deiner Fragen werden wohl von Firma zu Firma unterschiedlich sein, unabhängig davon, auf welche Fachrichtung die dich orientierst.

 

Wie gesagt, nimm einfach das, was dich am meisten interessiert, was die Zukunft bringt kann eh niemand sagen, aber wenn du mit Fachrichtung die Technologie meinst, dann wird in den nächsten Jahren Web-Entwicklung wohl eher nicht sterben, wobei diese zu einem immer größeren Teil aus JavaScript besteht (und du wolltest ja C# lernen), Mobile wird sicher auch eine immer größere Rolle spielen, wobei hier fraglich ist, wie groß da die Rolle von Microsoft und C# in Zukunft ist. Wie Desktop-Anwendungen (unabhängig davon ob WinForm oder WPF) in Zukunft verwendet werden, ist wohl fraglich. Ich denke, mit einer Mischung aus Web und Mobile wirst du wohl für die Zukunft recht gut aufgestellt sein, aber eben auch viel mit JavaScript, CSS und HTML zu tun haben. Aber das ist alles nur meine persönliche Meinung und rein spekulativ.

Aber solange du noch ganz am Anfang steht ist es sowieso relativ egal, für welche Technologie du dich entscheidest, das wichtigste ist, dass du Interesse und Spaß daran hast und Fortschritte siehst. 

Es wird dir nicht bringen, wenn du dich durch ein Thema quälst, dass dich gar nicht wirklich interessiert, nur weil aktuell die Karrierechancen dafür ganz gut aussehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 10 Stunden schrieb Kleinrechner:

Wie gesagt, nimm einfach das, was dich am meisten interessiert, was die Zukunft bringt kann eh niemand sagen, aber wenn du mit Fachrichtung die Technologie meinst, dann wird in den nächsten Jahren Web-Entwicklung wohl eher nicht sterben, wobei diese zu einem immer größeren Teil aus JavaScript besteht (und du wolltest ja C# lernen), Mobile wird sicher auch eine immer größere Rolle spielen, wobei hier fraglich ist, wie groß da die Rolle von Microsoft und C# in Zukunft ist. Wie Desktop-Anwendungen (unabhängig davon ob WinForm oder WPF) in Zukunft verwendet werden, ist wohl fraglich. Ich denke, mit einer Mischung aus Web und Mobile wirst du wohl für die Zukunft recht gut aufgestellt sein, aber eben auch viel mit JavaScript, CSS und HTML zu tun haben. Aber das ist alles nur meine persönliche Meinung und rein spekulativ.

Web-Technologie und C# schließen sich nicht aus. 
Eine moderne Web-Applikation besteht aus Microservices und wie die Microservices entwickelt wurden, ist dem Browser schnuppe. Das kann jetzt C#, F#, Java, Python, C, C++, Go, Fortran, R oder was auch immer sein. Die Web-Applikation kommuniziert mit dem Server über eine Web-API und holt sich dort die Daten ab. Das HTML-Gerüst wird dann im Browser mittels JavaScript-Frameworks wie z.B. AngularJS oder React clientseitig gerendert. Daher trennt man zwischen Frontend- und Backend-Entwickler. Frontend-Entwickler machen den clientseitigen JavaScript-Kram, während der Backend-Entwickler sich auf dem Server austobt. AngularJS benutzt als Sprache auch TypeScript, was Ähnlichkeiten mit C# aufweist und auch von Microsoft ist.

Gerade Microservices bieten die Möglichkeit, sehr flexibel mit der Programmiersprache zu sein. Ist es besser, eine Aufgabe mit F# zu entwickeln, dann nimmt man halt F#. Für eine andere Aufgabe ist C# vielleicht besser. Man legt sich hier also nicht auf eine Sprache fest, sondern man wählt die geeignete Sprache. Das selbe gilt auch für die Datenhaltung. Bei sog. Monolithen ist es oft der Fall, dass man sich für eine relationale Datenbank entscheidet aber vielleicht ist so eine Datenbank für bestimmte Aufgaben nicht flexibel genug. Für bestimmte Microservices nimmt man dann vielleicht eine NoSQL-Datenbank oder vielleicht sogar einen ganzen Hadoop-Cluster, während andere wiederum weiterhin mit einer relationalen Datenbank arbeiten.

Was Mobile angeht, sollte man sich nicht fragen, wo dort C# steht, denn C# hat seinen Platz eher im Backend, sondern die Frage, ob es noch Sinn macht, native Apps zu entwickeln? Bei Spielen macht es vielleicht noch Sinn aber bei Apps, die auch als Web-Applikation laufen können? Inzwischen können auch Browser auf die Sensoren zugreifen und auswerten. Der Bedarf an nativen Apps sinkt also meiner Meinung nach. Abgesehen davon gibt es auch noch im Frontend-Bereich Xamarin, womit man Android-, und iOS-Apps nativ mit C# entwickeln kann. Für die iOS-Kompilierung ist aber ein Mac von nöten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im Prinzip untermausert du meine Aussage nur. Das sich C# und WebEntwicklung nicht ausschließen bestreitet niemand. Der Punkt ist, dass dieser Thread ja unter der Prämisse eröffnet wurde, dass der Thread-Ersteller gerne C# lernen möchte.

Wie du ja völlig korrekt erklärst, reicht es aber eben nicht für eine moderne WebSite C# zu können, man muss zusätzlich noch HTML, CSS, JavaScript, diverse JavaScript-Frameworks beherrschen und um zu verstehen, was das alles macht auch noch einiges von DesignPattern, Softwarearchitektur verstanden haben. Das alles, um am Ende dann in C# "nur" den Backend-Service zu realisieren. Das könnte evlt etwas abschreckend wirken, wenn man nur die Grundlagen von C# beherrscht und eigentlich nur C# lernen möchte, das ist schon ziemlich viel Zeug, wenn man keine oder nur sehr wenig Vorkenntnisse hat. 

Um den Thread-Ersteller nicht zu sehr zu verunsichern und abzuschrecken, möchte ich hier nochmal erwähnen, dass man eine WebSite auch ganz normal mit C# und ASP.Net erstellen kann, alles weitere kann man sich dann im Lauf der Zeit nach und nach erarbeiten, ist alles erlernbar, auch wenn das jetzt evlt alles etwas kompliziert klingt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für den Beginn würde ich nicht dazu raten, sich an moderne Web-Entwicklung zu wagen. Wie von Euch korrekt dargelegt wurde, braucht es für moderne Web-Entwicklung zahlreiche Sprachen, Frameworks, Patterns und Co. Das kann zu Beginn eigentlich nur überfordern und ist meiner Meinung nach wenig zielführend.

Ich würde mit klassischen Konsolen- und dann mit Desktop-Anwendungen anfangen. Erst reines C# für die Konsole, dann was mit WPF für die GUI z.B. Vorteil wäre neben der steigenden Komplexität, dass WPF / XAML Ähnlichkeiten mit HTML / XML / Web-Entwicklung aufweist und man so auch langsam an das Thema heran geführt wird. Nach einem halben Jahr und einigen C#/WPF Projekten kann man dann auf Web-Entwicklung wechseln, wenn die Basics sitzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...