1. #1

    Registriert seit
    20.01.2012
    Beiträge
    112
    Thanked 81 Times in 56 Posts

    Standard Weg zum App & Web-Developer

    Hallo Freunde,

    ich melde mich nach sehr langer Zeit wieder zurück, eventuell kennt man sich ja noch. Ich hätte ein paar allgemeine Fragen zum Thema App & Web Development. Eine kurze Geschichte dazu:

    Als kleiner Knuddels-Fanboy hab ich damals im Kindesalter angefangen Webseiten und Grafiken zu erstellen, somit hatte ich schon Kenntnisse bzgl. Html, Css und Php, soviel wie man sich mit 11-14 Jahren aneignen konnte bis einen das Leben eines Erwachsenen einholt. So hat sich mein Weg über die Lehre des KFZ-Technikers bis zur Endtstation Key-Account Manager im Vertrieb für Unterhaltungselektronik. Burn-Out und Corona haben mir dann leider einen sehr gut bezahlten Job gekostet. Leider hat sich Gesundheitlich bei mir auch einiges verändert und ich erwäge daher eine Berufliche veränderung in den Bereich Web und App-Development.

    In meinen inaktiven Jahren hat sich sehr viel getan, JS hat sich sehr gewandelt und wird immer wichtiger. Ich konnte mir in den letzten zwei Monaten HTML5 und Sass aufbauend auf meinen Kenntnissen aneignen. Auch mit Php komm ich noch recht gut zurecht, ich verstehe die Funktionsweise und die Syntax fällt mir auch nicht schwer, jedoch erwische ich mich noch sehr viel beim Googlen. MySQL ist für mich nurmehr selten eine Hürde. Ich habe zusätzlich noch einen Server bei mir zuhause aufgesetzt und habe mich auch hier schon sehr viel mit Netzwerktechnik beschäftigt.

    Mein Ziel ist es mich als App & Web-Developer mal nebenbei Selbstständig zu machen, und ich möchte klein bis mittleren Unternehmen dabei helfen Ihre Webpräsenz, Ihren Online-Shop etc. zu erstellen. Auch möchte ich Tracking-Apps die den Arbeitsalltag erleichtern erstellen. Ich habe auch schon die ersten Aufträge, tw. sogar sehr zufrieden abgeschlossen.

    Zu meinen Fragen:

    Mein nächster Schritt ist es Javascript zu lernen um mit NodeJS mein Backend zu bilden. Nun sieht man sehr viele CDN's die Teilweise schon das machen, was ich benötige - Assembling viel mir bis jetzt nie schwer. Verwenden diese professionelle Programmierer auch? Wieviel wird wirklich noch "From Scratch" programmiert (war damals ja noch Ehrensache.... ).
    Auch würde ich gerne wissen, welche Libary ich für Web-Apps am besten lernen sollte. Vue.JS, React, Angular?
    Ist es Sinnvoll auch bei div. Blogs oder CMS Frameworks zu verwenden? Wenn Ja, Welche? Ich arbeite sehr gerne ohne Grenzen, und nehm da auch gerne den schwierigeren Weg. Habt ihr Tipps für mich, wie es nun weitergehen soll?
    Macht Full-Stack überhaupt Sinn? Dazu sei gesagt dass ich ADHS habe und daher recht schnell lerne, vorallem weil ich mich am PC sehr gut konzentrieren kann, was mir in anderen Lebensbereichen um einiges schwieriger fällt.

    Ich denke mir werden sicher noch einige Fragen einfallen, aber fürs erste wars das mal von mir.

    Vielen Dank für eure Aufmerksamkeit,

    Lg


    Contact
    X-Fire: initializeaut
    Steam: ini2k4
    Raptr: initializeaut

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard

    Hi, nachdem sich bisher noch keiner getraut hat, sage ich aus meiner Erfahrung in dem Bereich mal was dazu:

    JS/NodeJs
    JavaScript hat an Relevanz und Stabilität gewonnen, auf beiden Seiten. Es ist weit weniger Katastrophal als noch vor ein paar Jahren. Bei NodeJS bin ich zwiegespalten. Der Ansatz, die selbe Sprache für Frontend + Backend zu verwneden, ist natürlich interessant. Kennt man bisher nur aus größeren Frameworks wie ASP.NET oder Vadin. Wobei das am Ende viel neue Komplexität gebracht und flexibilität einschränkte weil man effektiv versucht hat einen Wrapper um dem Client zu bauen sodass sich alles serverseitig steuern lässt. Mein größter Kritikpunkt an NodeJS ist die Mentalität bzw. das Niveau, auf dem dort viele arbeiten. Um konkreter zu werden was ich damit meine, mal nur zwei Beispiele:

    1) Es gibt ein Paket node-sass, wie der Name vermuten lässt enthält es den SASS Präprozessor um daraus CSS zu erzeugen. Das wird bzw wurde eine ganze Zeit lang von vielen anderen Paketen referenziert, die das z.B. in Gulp integrieren. Während der Installation werden allerlei wilde Sachen gemacht, unter anderem Binaries aus dem Internet geladen und ein C++ Projekt gebaut. WTF? Wozu habe ich dann ein Paket, wenn das nur die Binaries lokal baut, wie auf einem Entwickler-PC? Natürlich verursacht das entsprechende Probleme, weil die Abhängigkeiten auch wieder Abhängigkeiten mitbringen, wie z.B. Visual C++ Redistributable. Eine Zeit lang haben die ein komplettes Visual Studio (!!!) verlangt, damit der sein Zeugs bauen kann. Besonders super ist das natürlich auf Unternehmenssystemen.

    2) Schon mit ein paar NodeJS Paketen schafft man sich ungewollt eine Abhängigkeitshölle in mehreren Ebenen: Dein Paket ist von Paket X abhängig, das braucht Y, was wiederum Z referenziert usw. Lustig wirds dann wenn eine Abhängigkeit in einer hinteren Ebene Sicherheitslücken aufweist und das Paket welches diese Abhängigkeit referenziert nicht (zeitnah) updated oder gar nicht. Durch dieses Chaos hat man nicht selten ein Paket 10-Fach auf der Platte, weil du mehrere Abhängigkeiten über diverse Ebenen hast, die das in verschiedenen alten Versionen referenzieren.

    Gerade sicherheitstechnisch ist das ganze nicht nur aus den 2 Gründen ein Albtraum. Meiner Erfahrung nach wird das nicht nur von vielen Paketerstellern vernachlässigt, sondern anschließend auch auf der anderen Seite. Wer prüft schon regelmäßig seine Abängigkeiten, die ruck zuck tausende Pakete umfassen? Schließlich funktioniert alles, Updates machen Sachen kaputt und man hat wichtigeres zutun... Dabei sollte man grade bei so was kritisch sein, schließlich holt man sich fremden Code nicht nur aufs System, sondern in ein komplettes Projekt.

    Das ist natürlich schamlos verallgemeinert, es gibt sicher auch gute NodeJS Entwickler. Aber meiner Erfahrung nach ist Niveau bei Node insgesamt deutlich geringer als z.B. im .NET Umfeld. Liegt meiner Meinung nach auch daran, dass C# generell durchdachter ist als (selbst heutiges) JS. Ein Paradebeispiel ist das NPM-paket is-equal. Kein Scheiss, dafür bauen die ein Paket um in hunderten Zeilen Code zu prüfen, ob zwei Variablen gleich sind. Und es wäre nicht NodeJS, wenn das Paket nicht 19 Abhängigkeiten (in erster Ebene!) mitbringen würde. Teils Schwestermodule: is-callable, is-regex, is-string. Selbst gute Entwickler sind da in der Versuchung, mit solchem Kram ihre Projekte aufzublähen und sich (Sicherheits) Probleme reinzuziehen. Das könnte man natürlich weiter vertiefen. Insgesamt ist das kein Ökosystem, auf dem ich unbedingt bauen würde, wenn es nicht zwingend sein muss. Außer natürlich man interessiert sich nicht wirklich für diese Themen und falls einem das um die Ohren fliegt ist "Äh das war ein böser Hackerangriff, da können wir nix für !!111einself" eine valide Ausrede. Dann zieht man sich entspannt Gigabyteweise npm Pakete in seine Projekte und lebt in einer heilen Welt. Vor allem wenn man Agil ist, dann wirft manch einer das Projekt auch einfach mal weg wenn sich zu viele Abhängigkeiten beißen und baut neu.

    Zitat Zitat von Initialize Beitrag anzeigen
    Nun sieht man sehr viele CDN's die Teilweise schon das machen, was ich benötige - Assembling viel mir bis jetzt nie schwer.
    NPM-Pakete meinst du? Assembling ist ein zweischneidies Schwert, wie ich oben schon teils angedeutet habe. Es gibt mittlerweile einige, die sich nur darauf fokusiert haben: Fertige Komponenten zusammenkleistern, die im Ergebnis dann was ähnliches leisten als gewünscht ist. Sobald das dann nicht mehr reicht, heißt es "Das unterstützt die Komponente leider nicht, da kann ich aber nichts dafür". Wer nur das macht, ist für mich kein Programmierer, sondern eher Baukastenbediener. Genau wie jemand, der Fertiggerichte im Restaurant aufwärmt und serviert, kein richtiger Koch ist. So jemand wird auch Schwierigkeiten bekommen, der Gast z.B. Bratkartoffeln ohne Zwiebeln wünscht, aber seine rationalisierte Fertigmischung Zwiebeln enthält.

    Am Schluss ist das Thema oft auch eine Frage der Ansprüche. Du kannst in der Entwicklung viel murksen und damit durchkommen, so wie die CDU/CSU mit Korruption und Vetternwirtschaft. Eventuell fällt einem selbst das auch nicht mal auf die Füße, weil man die Schuld abwälzen kann oder noch viel besser: Das Projekt gar nicht mehr betreut, wenn es knallt. Am Schluss zählt für den Kunde ja primär was er sieht. Wie technisch sauber das ist (oder eben nicht), merken viele bestenfalls, wenn das spürbare Konsequenzen hat wie z.B. schlechte Performance weil zig Bibliotheken geladen werden.

    Zitat Zitat von Initialize Beitrag anzeigen
    Wieviel wird wirklich noch "From Scratch" programmiert (war damals ja noch Ehrensache.... :D)
    Schwer zu pauschalisieren. Tendenziell hast du im Web-Bereich oft ein Framework als Basis, gerade im UI-Bereich so was wie Bootstrap & co. Wenigstens was minimalistisches macht grundsätzlich auch Sinn und kann bei z.B. der Layoutgestaltung helfen. Zumal man dort gerade bei größeren OS-Projekten auch eine ganz andere Testabdeckung hat, als wie wenn ein einzelner Entwckler von 0 auf anfängt. Wenn man aber zig Frameworks und Bibliotheken zusammen würfelt, kommt man nicht nur in die Abhängigkeitshölle - sondern es gibt auch Performance-Probleme. Je nachdem was man reinbaut sind mehrere MB schnell erreicht.

    Und wir reden hier ja auch von einem sehr breiten Feld. Für Webseiten wird auch gerne mal ein CMS wie Wordpress genommen, fertiges Theme, eventuell bisschen anpassen und fertig. Kann man machen, nur wenn das Theme schon überladen ist, hat man da ggf. auch ein Monster geschaffen. Inklusive Sicherheitslücken. Die entstehen bei Wordpress ja meist nicht mal durch den Kern. Sondern weil die Leute riesige Themes mit zig Plugins installieren. Die Codequalität hat in dem Bereich auch immer eine Von-Bis Spanne.

    An Wordpress lässt sich vieles dran schrauben. Schon alleine mit fertigen Erweiterungen kann man Funktionen hinzufügen, die sonst eigenständige Systeme benötigen wie z.B. ein Forum oder Webshop. Aber auch hier würde ich kritisch hinterfragen, ob das wirklich eine gute Idee ist, alles mit allem zu verknüpfen. Einige sind damit schon auf die Schnautze gefallen. Irgendein Corona-System hat über selbst programmierte Wordpress-Erweiterungen persönliche Daten von Kontaktpersonen oder was das war in WP gespeichert. Ist schon paar Monate her, müsste ich raussuchen wie das genau lief. Der Punkt war jedenfalls, dass die ihre Logik "einfach" in WP integriert haben, aber ohne WP hinreichend zu verstehen. Das resultat war: Die Daten ließen sich über die öffentliche WP-API abrufen.

    Ich persönlich würde das anders herum angehen und gerade wenn besonders sensible Daten im Spiel sind so was immer trennen, bestenfalls definierte Schnittstellen zwischen den Systemen falls man das überhaupt braucht. In dem Fall wäre das wohl technisch gar nicht nötig gewesen sondern man hat den einfacheren Weg genommen, weil da gleich automatisch das Design von der Homepage drin ist, sodass man da nicht zwei Systeme pflegen muss. In einiger Hinsicht ist das leider eine Entscheidung zwischen Einfachheit/Komfort und technisch sauberer/sicherer Umsetzung.
    Zitat Zitat von Initialize Beitrag anzeigen
    Auch würde ich gerne wissen, welche Libary ich für Web-Apps am besten lernen sollte. Vue.JS, React, Angular?
    Auch das ist eine Frage, die man nicht allgemeingültig beantworten kann. Hinsichtlich von dem was ich oben geschrieben habe, hätte Vue.js bei mir durch seinen minimalistischen Ansatz Pluspunkte. Mit Angular bläht man vor allem kleinere Anwendungen deutlich auf. Andererseits muss man sich in Vue mit Vanilla JS herumschlagen. Ist wie gesagt nicht mehr ganz so schlimm wie früher, aber Angular ist mit TypeScript da doch deutlich typsicherer. Ich sehe das als Maßstab für Stabilität und Fehlervermeidung. Gerade in der JS Community wirst du aber genug Leute finden die sagen, das macht alles nur komplizierter. Klar ist das nicht falsch, aber trotzdem schaffe ich mir damit Fehlerquellen, die nicht sein müssen. Ähnliche Diskussionen haben wir bei PHP auch, wo man mittlerweile ebenfalls zunehmend typsicher werden will (zumindest optional).

    Und am Ende sollte man sich - wie bei jeder (neueren) Technologie - die Frage stellen, ob sie Sinn macht. Es gibt durchaus auch heute Anwendungsfälle für klassische Multipage-Anwendungen. Mit SPAs bekommst du teils sogar noch in manchen Bereichen bzw. Konstellationen Probleme, etwa SEO. Für ein Adminpanel dagegen spielt so was keine Rolle, da ist (zumindest bei Neuentwicklungen) über eine SPA nachzudenken.
    Zitat Zitat von Initialize Beitrag anzeigen
    Ist es Sinnvoll auch bei div. Blogs oder CMS Frameworks zu verwenden? Wenn Ja, Welche?
    Wenn du Inhalte bereitstellen willst die dort hinein passen: Klar. Außer zu Übungszwecken sehe ich wenig Sinn darin, eine Blogsoftware zu entwickeln. Außer die Anforderungen sind so speziell, dass man ein fertiges System zu sehr verbiegen müsste. Sehr verbreitet und flexibel ist WordPress. Lässt sich mit PHP-Plugins auch weitreichend anpassen, sodass sich vieles damit machen lässt. Am Ende gibt es aber auch da genug Alternativen. Von Typo3 (wo du mit TypeScript noch mal einen Wrapper zwischen dir und dem CMS-Code hast) bis hin zu diversen abgespeckten Systemen wie Miniblog oder statische Ansätze. Letzteres ist v.a. dann interessant, wenn die Inhalte sich nicht dynamisch ändern (also keine Userlogins o.Ä).

    Zitat Zitat von Initialize Beitrag anzeigen
    Ich arbeite sehr gerne ohne Grenzen, und nehm da auch gerne den schwierigeren Weg. Habt ihr Tipps für mich, wie es nun weitergehen soll?
    Der "schwierige Weg" wäre selbst schreiben, da sind deine Fähigkeiten die einzige Grenze. Wie gesagt, wenn du lernen willst oder sehr spezielle Anforderungen hast, ist das eine gute Idee. Aber einfach nur ein CMS programmieren damit eines programmiert ist, macht wenig Sinn. Daher wäre die Frage, was genau du erreichen willst bzw. wo der Fokus sein soll. Gerade der Bereich Webentwicklung ist umfangreich und vielseitig: Jemandem auf Basis eines CMS und fertiger Designs/Plugins eine Homepage zusammen zu klicken, ist noch mal was anderes als komplette Webanwendungen zu entwickeln. Vor allem wenn du es alleine machst, da kommt Konzeption, Technologiewahl, Deployment, Tests und je nach Kundenkreis mehr oder weniger auch noch das Hosting dazu. Wenn du Apps im Sinne von Handy-Apps meinst, noch mal ein Extra Thema. Bei Unternehmen (v.a. den Mittelständischen) gibt es auch bereits eine IT-Infrastruktur. Heißt wenn du für die was entwickelst, bist du wahrscheinlich mit Themen wie AD-Integration, SSO und ähnlichem beschäftigt. Und je nachdem was die so nutzen geben die (zumindest bei selbst gehosteten Anwendungen) auch die Zielplatform vor. Wenn die z.B. auf Kubernetes deployen möchten (was grade für neue Anwendungen zunehmend interessant wird), bist du ruck zuck im Bereich der Containerisierung mit Technologien wie Docker, Helm usw. Das sind natürlich nur Beispiele, abhängig was du für wen entwickelst brauchst du entweder alles oder nichts davon. Aber das würde ich auch auf dem Schirm haben, weil man da etwas Umdenken muss im Vergleich zur privaten Zielperson, die eine Anwendung auf ihrem PC, Laptop oder Mobilgerät nutzt.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 09.01.2017, 17:31
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.