Autor-Archiv HickyGreen

VonHickyGreen

Das hat mich zum programmieren gebracht…

Es brauch gründe um etwas zu tun, mein Grund war einfach aber auch irgendwie vielschichtig

Ich spiele seit meiner Jugend Spiele an technischen Geräten, sei es Gameboy, Playstation, Super Nintendo, Nintendo 64 oder Sega. Ich mag Spiele die mich fordern nachzudenken aber auch Spiele die einen dazu bringen mal Ziele zu verfolgen. Ich will es nicht zu leicht haben aber natürlich auch kreativ abgeholt werden.

Es ist mir oft passiert das ich stundenlang in ein Spiel versunken bin, es gab auch auch mal Phasen, da gab es für mich keine schönen Spiele oder anders gesagt ich hab sie einfach nicht gefunden oder die Möglichkeit gehabt interessante Spiele zu Spielen.

Ja meine Eltern haben versucht vieles möglich zu machen, obwohl es finanziell nie einfach war, ich hab einige Konsolen gehabt über die Jahre aber immer relativ ausgewählte Spiele dafür. Ich habe einen Gameboy gehabt, sogar recht früh aber einen PC hatte ich erst 1999 im Haushalt und das war nicht meiner, ich konnte nicht einfach am PC sitzen und zocken wie es beim Gameboy der Fall war.

Ich hab das Glück das mein Vater auch gerne mal am PC spielen wollte und so kam ich ab und an, auch mit PC-Spiele in Berührung, gerade Strategie und Organisation von Dingen war meistens das was mein Vater kaufte, das war dann auch das wo mit ich aufwuchs.

Ich war 2009 dann an dem Punkt das ich Wirtschaftsinformatik studiert habe, nach dem ich gehadert habe in meinen gelernten Beruf zurück zukehren. Ein Grund für die Wirtschaftsinformatik war damals das ich mich für die Gamesbranche interessiert habe. Ich wollte verstehen wie das alles Zusammenhängt und auch das Programmieren hat mich fasziniert aber ich empfand das Studium als Schwer, da es meinen Schwerpunkt der Begeisterung nicht ganz traf und dazu auch gefüllt war mit Inhalt der mich bis heute nicht positiv über das Studium denken lässt.

Ich lernte im Studium die Sprache C kennen, einen wirklichen Grund hat man nie genannt, nur das man als Bindeglied zwischen Wirtschaft und Informatik verstehen sollte was die Informatik da so macht. Das hätte man aber mit jeder anderen Sprache genauso zeigen können. Viele Sprachen basieren auf C oder haben sie als Vorbild oder als abschreckendes Beispiel aber sofern man nicht wirklich extrem Hardware nah programmiert ist C eine Möglichkeit(besser find ich da aber C++) um mit Atombomben auf Spatzen zu schießen. Das und andere merkwürdige Entscheidungen der Fachhochschule hat viele von uns damals das Studium extrem erschwert und das leider ohne Grund. Ich arbeite nun schon einige Jahre und interessiere mich für viele Felder aber ein wirklicher C-Programmierer ist mir nur einmal über den Weg gelaufen und der hat die Sprache für seine privaten Hobbys benutzt.

Ich brach das Studium dann leider wegen einiger Gründe am Anfang des dritten Semesters ab, ein Grund war auch die C Problematik. Es irritiert mich bis heute das man eine Branche die seit Jahrzehnter nach Arbeitnehmern bettelt so praxisfern ausbildet.

Ich studierte dann Betriebswirtschaft, war aber nie ganz weg aus der Informatik und beschäftigte mich phasenweise immer wieder mit der Programmierung, auch mit Themen die höherrangig gesehen werden sollten. Ich bin bis heute der Meinung das programmieren sehr wichtig ist aber gerade mit dem auf schwappen der AI/KI-Welle zeigt sich, das es sehr wichtig ist zu verstehen warum etwas gemacht wird und die Softwareentwicklung ehr im Vordergrund rücken muss und nicht die reine Fähigkeit code lesen zu können. Es ist schön das jemand versteht, das es eine Schleife ist die dort angewendet wird aber warum man diese dort wählt ist viel wichtiger.

Ich habe schon einige Firmen gesprochen, mein Grund für die Informatik ist das entwickeln von eigenen Spielen, das heißt nicht das ich anderen Branchen im Informatikumfeld nichts abgewinnen kann, viele Personaler drehen mit den Augen wenn sie das als Grund hören aber was will ich Lügen, ich bin nicht wegen WordPress und PHP an der Informatik interessiert, sondern weil ich Dinge erschaffen möchte.

Ich bin kein Entwickler geworden weil es mir so unfassbar Spaß macht im Support zu arbeiten oder Internetseiten stumpf immer wieder mit den simpelsten Mechaniken runter zu tippen. Ich mach das auch mal und bin gerne bereit solche Aufträge entgegenzunehmen aber das sind nicht die Aufträge die mich in die Informatik getrieben haben.

Ich entwickle seit 2020 Spiele für mich und meine Familie, immer mal wieder kleine Spiele. Meine Kinder finden Sie toll, ich merke wie ich jedes mal mit Begeisterung dabei bin wenn ich darüber nachdenke oder mitten dabei bin.

Ich will mich daher nebenberuflich selbstständig machen um meine eigenen kleinen Spiele zu entwickeln, nicht im Vollerwerb, gerne aber auch mit Leuten die Bock haben. Ich sehe nicht das ich den nächsten großen Hit programmiere und Millionen verdiene, es wäre schon cool wenn ich kostendeckend arbeiten könnte neben meinem Haupterwerb. Ich will endlich das machen was mich in diese Branche gebracht hat und vielleicht eine Inspiration für Leute sein die jetzt gerade die Faszination an Computerspiele für die verschiedensten Plattformen entwickeln, vielleicht sogar meine eigenen Kinder.

VonHickyGreen

Die C-Festplatte Tragödie

Ich habe jetzt die dritte SSD in drei Monaten drin und ich hab es satt, ich will jetzt das es aufhört ….

Ich sitze jetzt hier, ca. 3 Monate nach dem ersten Wechsel meiner C-Festplatte, einer SSD mit 512GB von einem Hersteller, dessen Vertrauen eigentlich bei mir recht hoch im Kurs stand, und bin mit dem Nerven ein wenig am Ende. Ich bestellte nach dem ersten defekt zwei SSD um mir den Tausch der C-Festplatte anzutun und dem damit resultierenden Dilemma Windows 10 neu aufzusetzen und alle benötigten Inhalte wieder zu installieren und mich im besten Fall an alle Daten zu erinnern, die ich für jegliche Software nutze (Emailadressen, Passwörter, Sicherheitsfragen, Keys).

Ich musste feststellen, die Qualität dieses Anbieters hat anscheinend in den letzten Jahren stark nachgelassen oder ich hab extremes Pech gehabt. Die erste Festplatte hielt 2 Jahre und war halt teilweise auch mal tagelang in Betrieb, deshalb dachte ich, es ist ein guter Preisleistungsschnitt wenn die zwei neuen Festplatten mir die nächsten 4 Jahre den PC eine Grundlage bieten, für die C-Festplatte.

Die erste der beiden Festplatte macht jedoch schon nach knapp 4-5 Wochen erste Probleme, plötzlich musste die C-Festplatte überprüft werden, nach weiteren 2 Wochen wurde sie dann so extrem fehlerhaft, das Software immer wieder beschädigt wurde, sodass ich den PC nochmal neu aufsetzen musste.

Es gingen grandiose 2 Wochen ins Land als plötzlich keine Bilder mehr geöffnet werden konnten, weil eine DLL-Datei nicht gefunden wurde oder der zweite Bildschirm nicht mehr funktionierte, weil der Grafiktreiber fehlerhaft war, das konnte ich kurzfristig beheben in dem ich den aktuellen Treiber auf dem Desktop liegen hatte und bei bedarf neu installierte.

Das war der Punkt an dem ich mich entschloss, die zweite SSD als C-Festplatte zu benutzen und konnte dann nach einem kurzes Hardwarewechsel ein drittes mal das System neu aufsetzen.

Jetzt ratet mal was 2 Wochen später wieder anfing! Ja genau, die neue Festplatte hat einfach das installierte Windows-System nicht gefunden, ich konnte Windows ein viertes mal neu aufsetzen!

Es kam dann wie es kommen musste, vor 5 Tagen, fingen ähnliche Probleme an wie vor ein paar Wochen, ich konnte keine Bilder und PDF-Dateien mehr öffnen, das macht sich natürlich sehr gut, wenn man sein Lernmaterial auf Bilder sowie auf PDF-Dateien hat.

Es kam dann am Sonntag (10.12.23) so, das beim anschalten des PCs kein Desktop mehr zu finden war, für einen faulen Speichergenie wie mich, der gefühlt 50 % auf dem Desktop zu liegen hat, ist das natürlich der Wurstkäse(Worst Case) sodass ich mich entschloss auf einen anderen Hersteller zuzugehen um das System mit einer neuen SSD zu beglücken um es im Anschluss ein fünftes mal neu mit Windows aufzusetzen.

Ich bin jetzt an einen Punkt wo es mir wirklich reicht, das System wird so wie es ist, bei mir auf Dauer keinen Platz mehr haben. Ich habe mir ein neues System zusammen gestellt, da die CPU sowieso nicht zukunftssicher ist(zb kein Windows 11 Update möglich) und ich mit dem derzeitigen System auch bestimmte Software nicht nutzen kann.

Ich werde euch natürlich auf dem laufenden halten und eine Review über mein neues System machen.

VonHickyGreen

OSI Modell von ISO

Ohje … dieses Modell, es begleitet mich seit Monaten und es fühlt sich an wie ein Dschungel von theoretischem Wissen.

Es gibt auf dem ersten Blick eigentlich nicht so viel über das Open Systems Interconnection(kurz: OSI)-Modell zu erzählen, doch ist dieses Modell für Netzwerkprotokolle als Schichtenarchitektur schon extrem wichtig und es hängt Rattenschwanzartig mit so vielen komplexen Themen zusammen die in der Ausbildung zum Fachinformatiker wichtig sind, das ich doch schon sehr tief abtauchen kann.

1. Bitübertragungsschicht

Diese Ebene wird auch Physical Layer im englischen genannt, wodurch sich zusammen mit dem deutschen Namen schon erahnen lässt, für was diese Schicht zuständig ist.

Sie ist zuständig für die physische Übertragung von der kleinsten Einheit im Modell, den Bits. Es werden hier Kabel benutzt oder auch Bits über Wireless Lan also über Antenne übertragen.

Dieser Layer kommt mit dem Ethernet Protokoll aber auch mit dem RS-232 und dem IEEE802.11 Protokoll in Berührung.

2. Sicherungsschicht

Die Sicherungsschicht ist auch als Data-Link-Layer im englischen bekannt und beide Begriffe sowohl der deutsche als auch der englische, ergänzen sich zur Erklärung ganz gut.

Auf dieser Ebene wird geklärt wie der vollständige Datenpaket, in dieser Ebene „Frame“ genannt, vollständig und fehlerfrei beim korrekten Empfänger ankommen um dies zu gewährleisten werden dem Frame physikalische Adressen mitgegeben. Die Schicht ist in zwei Unterschichten geteilt, einmal die MAC-Schicht und einmal die LLC Schicht.

Brigde und Switche arbeiten als Hardwaregeräte in dieser Schicht, sowie auch Wireless Access Points.

Protokolle wie CSMA/CD aber auch ARP arbeiten in Schicht zwei.

2a – MAC-Schicht

Diese Schicht, auch Media Access Control(MAC)-Schicht genannt, vergibt eine Hardware-Adresse(MAC-adresse), durch das Protokoll IEEE802.1 und das völlig nebensächlich von der Übertragungsform Wlan(IEEE802.11) Ethernet (IEEE802.3) oder Bluetooth (IEEE 802.15).

Jede MAC-Adresse ist vom Hersteller konfiguriert und lässt sich vom Anwender nicht ändern In jedem Frame (Datenpaket) befinden sich die MAC-Adressen von Sender (Quelle) und Empfänger (Ziel).

Wenn der Frame am (vermeintlichen) Ziel angekommen ist, vergleicht die Empfangseinheit der empfangenden Station die MAC-Zieladresse mit der eigenen MAC-Adresse.

2b – LLC-Schicht

Die Logical-Link-Control-Schicht arbeitet eng mit der MAC-Schicht zusammen, sie ist hauptsächlich für die Steuerung und Verwaltung der Datenübertragung zwischen verschiedenen Netzwerkgeräten verantwortlich.

3. Vermittlungsschicht

In der dritten Schicht hilft uns die englische Übersetzung wieder weiter, weil Sie uns mit „Network-layer“ zusätzliche Anhaltspunkte auf den Tätigkeitsbereich gibt.

Es wird auf dieser Schicht möglich gemacht das Daten über Netzwerkgrenzen zum korrekten Empfänger kommen, das heißt ab der Schicht drei können Daten dein Heimnetzwerk verlassen und mit anderen kommunizieren.

Wenn man von den übermittelten Daten spricht, spricht man in dieser Schicht von Paketen, diese enthalten neben den Daten aus der Schicht ein und zwei auch noch logische Adressen.

Waren es in der zweiten Schicht nicht noch physische Adressen? Ja genau aber zu diesen gesellen sich jetzt die logischen Adressen, diese werden durch das IP-Protokoll erzeugt und sind dir bestimmt schon bekannt unter dem Namen „IP-Adressen“.

IP-Adressen

IP-Adressen sind die Adressen die das logische Ziel ausweisen, davon gibt es eine „alte“ Version, das ist die IPv4, da diese aber mit Ihren knapp 4 Milliarden Stück nicht ausreichend sind gibt es eine neue Version die seit einigen Jahren nach und nach ausgerollt wird, die IPv6.

4. Transportschicht

Jetzt haben für ja schon eine ganz schön große Menge Daten bis hier hin angesammelt, diese vierte Schicht sorgt jetzt dafür das diese große Menge an Daten vollständig und wenn nötig in korrekter Reihenfolge beim richtigen Bereich(Dienst) des angesprochen Systems(Empfängers) ankommt und das ganze durch Ports von Ende-zu-Ende-verschlüsselt ist.

Ports

Ports sind je nach dem was du ansprechen möchtest, die Tür zum entsprechenden Dienst. Port 80 spricht Http an, auch wenn http erst in Layer 5,6 und 7 zu finden ist (SPOILER😅), ohne dem du das hier gar nicht lesen könntest, wobei ich meinen Blog auf https laufen lasse, das wäre der Port 443 und selbst wenn du versuchst meine Seite über Http zu öffnen wird es immer eine Umleitung auf das Https Protokoll geben, weil es einfach sicherer ist. Es gibt aber viele wichtige Ports die man sich merken sollte gerade einige die unter den Well-Known-Ports(die ersten 1024) befinden.

TCP vs. UDP

Diese Schicht teilt sich jetzt wie Schicht 2 in zwei Bereiche, einmal in den Bereich TCP und dann in den Bereich UDP, sofern man von den versendeten Datenmengen innerhalb von TCP spricht, spricht man von Segmenten. Wenn man von Datenmengen innerhalb der UDP-Schicht spricht, dann spricht man von Datagrammen.

Meiner Kenntnis nach benutzt man UDP wenn man schnell Daten von A nach B verschicken muss und es dabei „nicht ganz so wichtig“ ist ob mal ein paar Datagramme unvollständig oder nicht in der richtigen Reihenfolge ankommen, z.b. beim Telefonieren über VoIP oder beim Streamen von Datenpaketen(Datagrammen).

In den anderen Fällen weicht man ehr auf das TCP-Protokoll aus und leitet dadurch die Datenmengen(Segmente) vollständig und in korrekter Reihenfolge zum richtigen Dienst des Empfängers.

5. Sitzungsschicht

Die fünfte Schicht, auch Sessionlayer genannt, ist nicht die Sitzung die du kennst wenn du eine Internetseite für eine Zeit lang besuchst. Diese Sitzungsschicht regelt die dauerhafte Kommunikation von Netzwerkteilnehmern aus unterschiedlichen Anfragen und Antworten zb Wenn der Warenkorb die Daten enthält die du vorher im Shop ausgewählt hast, mit der Anzahl und der Größe. Die Schicht ist für mich persönlich die abstrakteste Schicht und am schwierigsten zu visualisieren.

Es wird, neben den Protokollen die auch die Schicht 7 betreffen, das Protokoll RPC hier auf der Schicht ausgeführt, dass das Client-Server-Modell integriert und Aufgaben von Programmen erledigt, die in Clients und Server unterteilt werden.

6. Darstellungsschicht

Der Presentationlayer sorgt dafür das die Daten eine Syntax bekommen oder ein Encoding erhalten, sofern eines benötigt wird oder eine Verschlüsselung der Daten stattfindet oder auch diese komprimiert werden, sollte dies nötig sein. Ja, seit der Schicht 5, heißen die Datenmengen im übrigen einfach nur noch Daten, das bleibt auch bei Schicht 7 der Fall.

ASN.1 ist auf dieser Schicht zusammen mit den Protokollen von Schicht 7(die auch teilweise auf Schicht 6 und 5 wirken) genauso wie die Hardware die auf diese Schicht arbeitet.

ASN.1

Angenommen, wir haben ein Netzwerkprotokoll für den Austausch von Benutzerinformationen zwischen einem Server und einem Client. Die Informationen könnten den Benutzernamen, die E-Mail-Adresse und das Geburtsdatum eines Benutzers enthalten. Diese Informationen müssen in einer standardisierten Weise übertragen werden, unabhängig von den spezifischen Datenformaten auf Server- und Clientseite.

Hier kommt ASN.1 ins Spiel. Mit ASN.1 können wir die Struktur dieser Informationen definieren:

UserInformation ::= SEQUENCE {
username UTF8String,
email IA5String,
birthdate GeneralizedTime
}

In diesem Beispiel wird festgelegt welche Benutzerinformationen zu welche Datentyp passen vom Protokoll ASN.1

7. Anwendungsschicht

Der Applikationlayer hat nun alle Daten der unteren Schichten und sorgt dafür das die Semantik der Daten hinzukommt, also ist 39104 eine Postleitzahl oder eine Telefonnummer oder der Umfang in Millimeter von meinem rechten Bein und ob diese Daten anwendungsspezifische Daten und Befehle ein und ausgegeben werden.

Die wichtigsten Protokolle die ich hier nennen kann sind HTTP, FTP, SMTP, POP3-Protokolle. Die Hardware die hier aber auch in der Schicht 5 und 6 genutzt wird sind Gateway(dein Router), Loadbalancer, Proxy und Firewall.

VonHickyGreen

Lernen ist …

Ich habe bald Zwischenprüfung! Wahnsinn, Ich habe bald die AP1 als Fachinformatiker für Anwendungsentwicklung und ich lerne und lerne und lerne …

Ich habe vor ein paar Tagen den Brief von der IHK erhalten. Die Anmeldung zur Zwischenprüfung Abschlussprüfung Teil 1 (AP1), wie es ja jetzt seit 2020 heißt, hat geklappt.

Der „klangvolle“ Name: Einrichten eines IT-gestützten Arbeitsplatzes 🤮

Jetzt zählt die Note dieser Prüfung zum Abschluss dazu, mit respektierlichen 20%, obwohl dieser noch ein Jahr in der Zukunft liegt. Ich find es irgendwie gut aber irgendwie auch nicht. Jetzt liegt nicht mehr der ganze Druck auf den jetzt benannten Teil 2, der aus :

  • Planen eines Softwareproduktes,
  • Entwicklung und Umsetzung von Algorithmen,
  • und dem so geliebten Wirtschafts- und Sozialkunde-Teil besteht.

Dafür kann dich ein schlechter Tag in der AP1 eine sehr gute Gesamtnote kosten, dafür kann man mit der AP1 auch ne Note retten wenn die AP2 ein wenig nach unten geht, diese beiden Szenarien gingen vor 2020 nicht.

Ich fragte meinen Dozenten: Warum muss ich bestimmte Dinge Wissen, die ich im realen Alltag niemals benutzen werde, teilweise die Informationen Jahre hinter der Realität liegen oder so fern von der Praxis sind das man es nur für wenige Eventualitäten bräuchte, wenn überhaupt

„Das sollte Jeder beherrschen der Informatiker werden will!“ – rief er

Mein Dozent

Ich verstehe das Wissen nie verkehrt ist aber ist es irgendwann „nur“ noch effektiv Theorie zu lernen aber nicht mehr effizient, manchmal ist man mit dem praktischen Methoden einfach schneller oder besser als mit dem vor Monaten oder Jahren (vielleicht nicht mehr ganz so aktuellen) erlernten Wissen eines Themas – auch die Kenntnisse der Person die dir das beibringt müssen nicht aktuell sein.

Ich mache mir kein Druck Profi in alles zu werden, dafür sind die Berufsfelder auch einfach zu groß geworden, du kannst vielleicht verstehen was das OSI-Modell aussagt, so schnell wird sich das nicht ändern aber es gibt halt Sachen da kannst du als Anwendungsentwickler Wissen konsumieren und soviel Theorie wälzen bist du keine Lust mehr hast, es wird dir in der Praxis wenig bis nichts helfen oder es hätte dir etwas geholfen wenn du vor 10 Jahren praktische Erfahrung damit gemacht hättest.

Programmieren lernst du nur wenn du es auch tust, Konzepte verstehst du nur wenn du sie auch anwendest.

Ja einiges an Theorie ist da wichtig, in der Informatik manchmal mehr als beim Schreiner oder Maler und auch die logischen Konzepte dahinter müssen erlernt und verstanden werden aber irgendwann, reicht die tiefe eines Themas aus um gut mit den gewonnen Informationen produktiv zu sein, manchmal ist es früher, mancher später der Fall.

Worauf will ich denn eigentlich hinaus?

Ich muss gerade in den letzten Wochen mit Blick auf die AP1 sehr viel Theorie lernen, vieles davon ist interessant, einiges werde ich wahrscheinlich nach meiner Ausbildung nie wieder oder in völlig anderer Form machen, einiges ist privater Interessanter als beruflich.

Ist es notwendig einen IT-gestützten Arbeitsplatz als Anwendungsentwickler selbst von der Hardware aus aufsetzen zu können. Software installieren und richtig einzurichten ist je nach Arbeitsplatz sehr aufwendig, selbst das Windows aufsetzen sehe ich in meinem Bereich, meinetwegen auch die Treiber für eventuelle Peripheriegeräte aber auch wenn ich es kann, empfinde ich es als unnötig zu prüfen ob sich ein Anwendungsentwickler mit dem Stromverbrauch von der Grafikkarte auseinander gesetzt hat oder ob das Motherboard die passenden Anschlüsse für ein benötigtes Peripheriegerät bietet oder wie der Stecker RS485 aussieht. Ich werde Anwendungsentwickler, kein Fisi, kein Systemelektroniker und schon gar kein Kaufmann der Wissen muss, wieviel der Strom kostet den der Rechner in den nächsten 6 Monaten frisst.

Es gibt gründe warum ich kein Systemintegrator, kein IT-Systemelektroniker, kein Kaufmann für IT-Systemmanagement als Ausbildungsberuf genommen habe, 70% von dem Aufgabenfeld anderer Berufe zu prüfen halte ich für völlig nebensächlich um ein guter Anwendungsentwickler zu werden.

Es gibt doch nicht ohne Grund diese Spezialisierung in dem Berufszweig Fachinformatiker!

Lernen ist … richtig und wichtig, alles muss irgendwie erlernt werden aber es ist nicht immer richtig die Dinge zu lernen weil es Prüfungsrelevant ist, man sollte sie Lernen wenn man weiß das man sie brauch, vielleicht manchmal auch während man sie brauch.

Es wird niemanden gelingen ein Fachmann in allen belangen der Informatik zu werden, genauso wie es in anderen Berufen ebenfalls Fachleute in wirklich großartigen Nischen gibt, die natürlich eine gewisse Art an Grundwissen beherrschen der essentiell ist um überhaupt gut in dem Gebiet arbeiten zu können, sollte man sich auch in der Informatik nicht in dem Glauben verlieren, alles jemals Wissen zu können, wenn man nur lernt.

Ein Freund und Arbeitskollege hat heute die Ausbildung niedergelegt(gelernter Kaufmann, der auch IT technisch glaubhaft fest im Sattel sitzt), da die praktische Erfahrung in keinem Verhältnis zu den geschulten Unterricht und zu den geprüften Themen passen, ein Pensum das unnötig hoch ist, weil Themen besprochen werden müssen obwohl die Arbeitswelt ganz andere Voraussetzung setzt.

Ich möchte nochmal deutlich betonen es geht mir hier nicht darum das ich keine Lust habe zu lernen, ganz im Gegenteil, genauso wenig möchte ich sagen das bestimmte Themen nicht wichtig sind, auch das ist nicht korrekt. Es gibt berufliche Schwerpunkte, die in der Praxis zu relevant sind. Bestimmte Thematiken machen keinen Sinn geprüft zu werden, weil es den Beruf einfach nicht respektabel wieder spiegelt.

Wie sollen Personen aus dem privaten Umfeld verstehen das ich nicht der „Typ der was am PC macht“ bin, wenn es selbst das berufliche Feld egal ist ob du irgend „ein Typ mit PC-Kenntnisse“ bist!

– Kleiner Beitrag der vielleicht widerspiegelt wie stressig das zur Zeit ist!

VonHickyGreen

Wo geht es lang?

Du stehst morgens auf, wissend die Arbeit wartet auf dich… du hast keine Lust … nächste Tag, nächste Woche, nächster Monat… das Gefühl bleibt! Du hast keine Ahnung, irgendwie fühlt es sich nicht mehr richtig an, jeder Grund die Arbeit mit Motivation auszuüben verfliegt aber warum?

Die einen reden von „Burnout“, wobei es das ganz und gar nicht ist, die anderen von „die schnauze voll“, der nächste sagt „das Spiel ist durchgespielt“. Es ist oft nicht der Betrieb schuld daran, es sind auch nicht die Kollegen die einen Nerven. Es ist die Tätigkeit die man macht, die sich nicht mehr nützlich und zufriedenstellend anfühlt.

Wenn der Beruf nur ein Hamsterrad

ohne Funktion und Nutzen ist!

So ging es mir, ich wusste nicht wohin mit sich, irgendwie fühlt es nicht nicht richtig an, weiter zu machen. Irgendwie hatte ich das Gefühl andere würden das besser machen, mit mehr Eifer dabei sein und die anderen können sich noch neu erfinden in dem was sie tun.

Ich stand still, geriet ins Zweifeln, hadert mit jeder Veränderung aber auch mit dem Ist-Zustand, ich wollte das so nicht mehr, aber was genau wollte ich denn?

Das Hamsterrad demontieren?!

Hier kommt meine Familie ins Spiel, ich bin Vater und Ehemann. Ich bin ein Facharbeiter für eine bestimmte Tätigkeit aber ist diese Tätigkeit noch mit meinem privat Leben vereinbar?Ist diese Tätigkeit das was ich JETZT noch Jahrzehnte machen möchte, ist diese Tätigkeit verbunden mit persönlichen Zielen(Weiterbildung, Aufstiegschancen eca)? Ist diese Tätigkeit ausreichend um sein Leben damit zu finanzieren. Macht diese Tätigkeit mich glücklich? Ist diese Tätigkeit nicht besser aufgehoben bei jemanden der die Fragen mit Ja beantworten kann?

Ich konnte viele dieser Fragen nicht mehr klar und deutlich beantworten, dabei rutschte mir im Gedanke schon oftmals ein Nein bei einigen Fragen über meine Stirn und ich glaube das ist das Zeichen um es auch mal laut auszusprechen.

Ich war nicht mehr glücklich damit!

Ich verließ die Strukturen die ich mir erarbeitet hatte und versuchte einen Plan zu finden, ein Ziel zu finden ein Weg zu finden … ich arbeitete in verschiedenen Branchen, die aber doch alle eines gemeinsam hatten, das es mir keinen Spaß machte. Ich wusste lange nur was ich nicht wollte aber nicht was ich wirklich wollte, doch wie krieg ich raus was ich will?

Informatik

Ich habe in den 20 Jahren schon so einiges ausprobiert, der eine ist vielleicht erschrocken wie unbeständig das klingt aber ich kann mit Sicherheit jetzt sagen was ich nicht will aber das ist eine andere Geschichte.

Ich bin jedoch dadurch immer wieder wieder an den selben Punkt rausgekommen, wenn ich kann beschäftige ich mich mit technischen Begebenheiten, völlig egal was es ist solange es technisch Interessant klingt bin ich dabei aber wo liegt da jetzt der zusammenhängende Grund?

Informatik! – Es ist die Informatik die mich begeistert, auf die ich zurückgreife wenn ich Langeweile habe. Das Thema über das ich reden kann und vor allem auch will, stunden lang, das was mich beschäftigt wenn ich nicht Vater und Ehemann bin!

Es gibt so viele Bereiche, so viele Gründe warum Informatik einfach nicht langweilig für mich wird!

Diese Gründe sind so verschieden wie sie eigentlich nur sein können, wenn man für eine Sache brennt um es auch beruflich ausüben zu wollen!

  • Logik
  • Verständnis
  • Vielseitigkeit
  • Kontrolle
  • breit aufgestellt
  • tief aufgestellt
  • zukunftssicher
  • informativ
  • gut bezahlt
  • gebraucht werden
  • Wissen anwenden
  • Wissen erweitern können
  • anderen helfen
  • Verstanden werden
  • nicht Verstanden werden (Ja, auch das ist cool)
  • Anwendbarkeit auf vielen anderen Gebieten
  • problemlösungsorientiert
  • Möglichkeiten
  • und vieles mehr
  • verschiedene Wege an das Ziel zu kommen

Ich habe mich daher vor Jahren entschieden im Bereich der Informatik zu arbeiten, einer der ersten beruflichen Schritte war der Versuch Informatik zu studieren, schwer wenn man wenig Ahnung hat und finanziell nicht unbesorgt ist. Es hat mich daher in die Ausbildung zum Informatiker getrieben, finanziell erstmal abgesichert beruflich fundiert Kenntnisse aufbauen.

Ausbildung ?

Ja, ich wollte eine Ausbildung die mich zum Fachinformatiker ausbildet aber wer stellt jemanden ein der Bock hat aber vielleicht nicht die idealsten Alterswerte und Abiturnoten mitbringt, in einer Stadt die technisch gesehen 20 Jahre hinterher hingt? Ich setze auf Praxis, diese zubekommen ist allerdings gar nicht so einfach, gerade weil es so viele Möglichkeiten und Wege gibt, hat man das Gefühl sich oft zu verrennen, wenn einem niemand zur Seite steht der einen „sicheren“ Weg gibt!

Ich entschied mich dann eine Weiterbildung zu machen, offiziell ist das eine Umschulung aber man vergisst ja nicht was man vorher gemacht hat, sondern man verbindet seine Erfahrungen mit dem neuen Wissen und bildet sich weiter, deshalb spreche und schreibe ich meistens ganz unbedarft von einer Weiterbildung zum Fachinformatiker für Anwendungsentwicklung!

Hier steh ich nun!

Jetzt ein Jahr nach Beginn der verkürzten 2 jährigen(eigentlich sind es drei Jahre) Ausbildung und Jahren an Erfahrungen in der Informatik steh ich nun hier, wenige Wochen vor der ersten Prüfung und versuche mir soviel Wissen wie es mir möglich ist sinnvoll anzueignen um meine Umschulung Weiterbildung so gut es eben geht abzuschließen!

Die Zeit ist sehr, sehr schnell am fliegen auch wenn vieles nicht so läuft wie ich es mir vorstelle, weiß ich das Ziel ist das richtige!

VonHickyGreen

Anforderungen erheben

Wie fängt man denn jetzt nun an eine Software zu planen?

kurzes Vorwort:

Ich muss sagen, ich habe mir die letzten Tage mehrfach an das Thema versucht und ich glaube eine kompetente Erklärung die alles abdeckt ist in einem überschaubaren Beitrag kaum möglich. Ich denke niemand will hier einen Beitrag sehen mit 40.000 Wörter…

Das wird sich durch alle Themen ziehen, je nach dem wie tief man in einzelne Thematiken abdriften will, können wir hier ganze Bücher schreiben, einerseits kenne ich mich dann doch nicht so gut aus andererseits ist das nur ein Hobby und mir fehlt dazu dann doch etwas die Zeit.

Im Endeffekt möchte ich eine kleine Sammlung der wichtigsten Methoden, Begriffe und Standards aufarbeiten, die man dann für Fragen oder zur Lösung dieser heranziehen kann.

ANFORDERUNGEN FESTLEGEN

Der allseits anerkannte erste Schritt eine Software zu planen ist es die Anforderungen an die Software festzulegen.

Dazu muss man aber erstmal Wissen was Anforderungen einer Software sind, um diese festzulegen zu können.

Das heißt im Grunde welche Person ist von dem Projekt betroffen oder beteiligt (Stakeholder) und was erwartet dieser Stakeholder (eine Fähigkeit oder Eigenschaft, die ein System haben soll) von meiner Software.

Das ganze macht man mit einer Anforderungsanalyse:

Je nach Organisation geht man da etwas anders an die Sache ran bzw. von einem anderen Blickwinkel heran, jedoch gibt es 3 Schritte die in allen Varianten irgendwie vertreten sind.

  1. Ermittlung, Analyse
  2. Strukturierung und Abstimmung
  3. Prüfung und Bewertung

Ermittlung und Analyse

Nichts geht über…“ sagt man schnell mal aber Nichts geht über das Wissen welche Anforderungen wirklich gebraucht werden, ja wirklich! Du willst nicht Tage vielleicht sogar Wochen mit Dingen verbringen, für die dich keiner bezahlt, nicht in der Softwareentwicklung aber auch in keinem anderen Beruf, damit das nicht vorkommt ermittelt und analysiert man welche Anforderungen ein Projekt hat.

Alle Anforderungen des Kunden müssen so genau wie möglich beschrieben sein, es darf keine mit gemeinten Annahmen des Kunden über das zu entwickelnde System geben. Will der Kunde das das wirklich oder glaube ich nur zu Wissen das er es will, diese beiden Zustände können manchmal gewaltig von einander abweichen.

Anforderungen müssen eindeutig definiert sein das hilft extrem Missverständnisse zwischen Entwickler und Auftraggeber zu vermeiden. Will der Entwickler diesen Knopf dort in grün oder will er alle Knöpfe in grün.

Die Anforderungen sollten in einer Sprache und in einem Sprachniveau verständlich formuliert sein womit sich alle Seiten auskennen, soweit Fachsprache benutzt werden muss, sollte diese so genau wie möglich erklärt sein(Jeder ist ein Fachmann aber in seinem eigenem Gebiet, das sollte man berücksichtigen), eine verständlich und übersichtlich geschriebene Dokumentation der Anforderung die an alle beteiligten Seiten ausgegeben wird, kann im Zweifel viel Nachsprache und Probleme verhindern.

Jede Anforderung muss eindeutig identifizierbar sein, über eine Kennung oder oder ID sodass man im Nachgang immer ein identifizierbare Anforderung bekommt

Anforderungen sollten mit Abnahmekriterien(erreichbaren Ziel) verknüpft sein sodass man diesen in der Abnahme auch problemlos nachvollziehen kann, ob diese Anforderung erfüllt ist, dies ist der Weg um eine Anforderung vorwärts verfolgbar macht.

Wenn man eine Rückwärtsverfolgung möglich machen will, sollte jede implementierte Funktion einer Software kontrollierbar sein, aufgrund welcher Anforderungen sie erstellt wird, des weiteren sollten alle implementierten Funktionen widerspruchsfrei zu anderen Funktionen sein um die Anforderung konsistent zu halten.

Strukturierung und Abstimmung

Wenn du die Anforderungen erfasst hast, stellst du bei der ein oder anderen Anforderung schnell fest das sie im ersten Moment machbarer, realistischer, notwendiger sind als andere, deshalb beginnt nach der Erfassung der nächste logische Schritt, die Strukturierung und die Klassifizierung!

Anforderungen werden dadurch schnell übersichtlicher, das wiederum das Verständnis der Zusammenhänge zwischen den Anforderungen erhöht, jetzt kannst du als nach folgenden Gründen sortieren:

  • gibt es Anforderungen die abhängig von andere Anforderungen sind
  • gehören Anforderungen fachlich-logisch zusammen
  • Welche Anforderungen gehören zu welcher Benutzerrollen

Weitere Strukturierungsmöglichkeiten sind :

  • funktionale und nicht funktionale Anforderungen von einander abgrenzen oder
  • fachliche sowie technische Anforderungen (fachlich motiviert)
  • rein technische Anforderungen (technisch motiviert)
Tabelle Abgrenzung nicht funktionale von funktionalen Anforderungen

Die so strukturierten Anforderungen werden zwischen Kunde(oder einem Vertreter des Kunden) und des Entwicklers(oder einen Vertreter des Entwicklers) weiter verfeinert in dem durch einen iterativen Prozess sich dem besten Ergebnis angenähert wird!

Prüfung und Bewertung

Wenn die Strukturierung erfolgte oder sogar schon zum Teil während diese noch läuft, erfolgt die wichtige Qualitätssicherung der Anforderungen nach entsprechende Merkmale:

  • korrekt: Die Anforderungen müssen widerspruchsfrei sein
  • machbar: Die Anforderung muss realistisch sein
  • notwendig: Die Anforderungen müssen vom Kunden(Auftraggeber) gewollt sein
  • priorisiert: Es muss eine der Vorrang(Reihenfolge) von Anforderungen geklärt sein
  • nutzbar, nützlich: Die Realisierung muss ein produktives System im Auge behalten

Das Ergebnis dieser Informationen dient als Basis zum Beispiel für das Pflichtenheft auch wenn dieses gar nicht mehr so häufig anzutreffen ist, durch den starken Wachstum der letzten Jahre von agilen Projektentwicklungen, das wir unter anderem Scrum oder andere agile Methoden zu verdanken haben!

Es benötigt aber grundsätzlich in jeder Methode, sei wie agil oder auch nicht eine gute Aufnahme der Anforderungen

VonHickyGreen

Die Motivation Programmieren zulernen!

Programmieren lernen ist nicht leicht, das steht fest. Es geht nicht nebenbei, es geht auch nicht eben mal so – jedenfalls bei mir – es geht nicht -gut- ohne bestimmte Sachen zu verstehen, die einfach essentiell sind.

Die Sprache ist eigentlich egal, der Grund ist wichtig. Es bringt rein gar nichts programmieren zu lernen weil du es interessant findest, es brauch praktische Gründe warum du programmieren lernen willst.

Es ist dieses eine Problem das dich seit Tagen oder sogar schon Wochen bis Monate (immer mal wieder) beschäftigt, das dich zum lernen einer Programmiersprache veranlasst :

  • Das Spiel das du schon immer selbst mal machen wolltest,
  • Die eine App die du dir schon immer gerne mal auf deinem Handy gewünscht hast
  • die neue Software die deinen Büroalltag erleichtert,
  • die vorhandene Software die einfach nicht so funktioniert wie du es willst oder
  • Software die gut ist aber wo Funktionen fehlen die du gerne hättest,
  • eine abgespeckte Version einer bereits vorhanden Software,
  • Die Software die du gerne hättest die aber viel zu teuer ist für dich,
  • die Menge an Daten die du ver.- oder bearbeiten musst,
  • die Zeit die dir verloren geht, weil du bestimmte Sachen immer und immer wieder machst,
  • die Internetseite für deinen Clan, deine Firma, dein Hobby,
  • deine Begrenztheit technische Möglichkeiten zu nutzen
  • Hardware nutzbar zu machen zB RaspberryPI
  • und vieles mehr

Es ist vor allem nicht unwichtig zu Wissen warum man programmieren lernen will um die „richtige“ Sprache für sein Ziel zu wählen. Es macht aus meiner Sicht keinen Sinn mit einer Sprachen anzufangen, die du nicht benötigst.

Ja es gibt auch Gründe eine Sprache nach der Schwierigkeit oder nach Hardwarenähe oder nach anderen Kriterien zu lernen, jedoch spielt das für den Einstieg in die Programmierung nur eine untergeordnete Rolle, es ist in erster Linie eine bedeutende Rolle der Motivation beizumessen und wenn du HTML und CSS lernst(HTML und CSS sind keine Programmiersprachen) und danach JS, hast du einen guten Einstieg in die Webentwicklung.

Wenn du gerne programmieren lernen möchtest weil du das nächste Super Mario entwickeln willst, wird dich der Motivation irgendwann verlassen bevor du an deinem Ziel „angekommen“ bist.

Nehmen wir mal an du möchtest ein Spiel programmieren lernen, dann kannst du faktisch fast jede Sprache nehmen, möchtest du aber einen 2D Spiel entwickeln, so ein schönes Casual Super Mario inspiriertes Spiel, wo du Gegner auf dem Kopf springst und vielleicht mal nen paar Items sammelst, fällt C++ und vielleicht sogar schon C# für dich raus, da es wesentlich einfacher ist dein Ziel mit einer Godotlösung oder etwas von „Game Maker’s Tooklit“ anzugehen, neben dem Umgang von Godot zu lernen, bieten sich vor allem GDScript* (die Hausmarke von Godot) aber auch Python* als Sprache an, da Python3.x sehr sehr nah an GDScript liegt.

Kenner werden jetzt sagen, das man auch in Godot mit C++ und C# programmieren kann. Ja, das geht auch aber das ist wiederum der einfachste Weg wenn du schon C++ oder C# kannst und aus Gründen jetzt ein Spiel entwickeln willst. Wenn ich C++ kann, bleib ich auch lieber bei der Unreal Engine oder als C# Entwickler greife ich ehr auf Unity zurück aber Godot möchte auch hier eine Alternative anbieten, da C# oder C++ nicht eben mal GDS oder Python lernen, nur wegen Godot. Zu diesen Engines(Unreal Engine 5.x oder Unity) samt Sprache würde ich z.b. ehr raten wenn dein Wunsch ist ein gutes stabiles 3D Game zu bauen, jedoch gehören noch einige Faktoren und auch der eigne Geschmack zu Auswahl zwischen diesen Engines als das ich hier groß weiter auf das Beispiel eingehen kann ohne zu komplex zu werden.

Du verstehst hoffentlich worauf ich hinaus will, um so genauer dein Ziel ist, um so genauer kannst du dir die passende Sprache zu deinem „Problem“ raus suchen und die Motivation das wirklich durchzuziehen ist ein ganz anderes Level, du kannst und wirst im laufe der Jahre einige Sprachen lernen, sofern du das Konzept einmal verstanden hast, es ist als nicht wichtig mit welcher Sprache du anfängst sondern „Warum“ du anfangen willst.

*Die enthaltenen Links, führen euch zu keinerlei bezahlter Werbung oder ähnliches, sondern zu Google oder entsprechende Quellen die ich selbst genutzt habe zum lernen.

VonHickyGreen

Hier bin ich!

Der Anfang ist getan!

Ich sitze jetzt hier seit 3 Jahren und versuche immer wieder Anlauf um Anlauf etwas hinzubekommen das mich zufrieden auf das blicken lässt was ich veröffentlichen möchte, diesmal bekomme ich das hin und bau hier einen Blog den ich auch anderen zeigen kann! Die Themen haben sich fast gehalten, es sind jedoch Sachen in den letzten Jahren passiert die einige Themen verdrängt haben oder in der Priorität verschoben haben aber das das Leben ein Weg ist der sich auch verändern kann ist auch so ein Punkt den ich hier behandeln werde.

… anders machen ist nicht immer richtig

Ich wollte alles anders machen und viele besser als andere und das 100% genau so wie ich mir das „vorstelle“, dabei hab ich gar nicht das Vermögen es so hinzubekommen wie ich es mir „vorstelle“.

Es ist auch nicht richtig nur weil es anders ist und wer sagt denn das es von Anfang an perfekt sein muss, das ist mein utopischer Gedanke alles 100% richtig hinbekommen zu müssen.

Themen des Blogs

Ich hab mir lange einen Kopf gemacht was ich wie sagen möchten, welche Themen wichtig sind und hab dabei gemerkt, das ich mich gar nicht so krass beschränken muss. Wenn es ein Thema gibt das mich interessiert ist es die Technik, sei es aus Sicht eines Nutzers oder eines angehenden Softwareentwicklers. Der Punkt Familie, Vater ist mir auch sehr wichtig, jedoch möchte ich hier nicht über meine Kinder ranten(oh Gott diese Anglizismen), weil’s auch einfach nichts zu meckern gibt, sondern über die Sicht als Vater schreiben, die bestimmten Thematiken mit sich bringen.

Es ist mir aber auch wichtig über Dinge und Geschehnisse schreiben zu können die in der Welt beziehungsweise in meinen Blasen passieren, ich sehe hier auch Themen über Mental Health oder mal ein politisches Thema, jedoch wird das hier kein politischer Blog aber eines kann ich vorweg schon mal sagen #NoAFD.

Ich liebe meinen Garten und habe auch technische Hobbies die ich gerne mehr oder ausführlicher wieder machen würde und das natürlich auch dokumentieren oder mit Meinungen veröffentlichen, hier zählen zum Bleistift 3D Drucken, Simson Mopeds aufbauen(restaurieren aber auch Alltagstauglich machen) und reparieren dazu.

YouTube, Twitch und was da noch so alles drunter zählt ist ebenfalls ein Hobby, nicht nur das Streamen und das Aufnehmen von Content sondern auch die Technik und Software und das miteinander was so dazugehört.

„Ich hoffe da ist was bei“

Ich hoffe doch das ich da ein paar Themen treffe die dir zusagen, ansonsten ist der Blog im stetigen Wandel und wer weiß welches Thema hier besprochen und ganz hobbymäßig analysiert wird, vielleicht ist es ja etwas was erst in Zukunft hier Platz finden, deshalb immer schön wieder mal rein schauen und Themen checken, das wäre mir ganz lieb!