Hey NativeNetwork Coders!
Nachdem ich hier jetzt schon einige Gespräche zu Webentwicklung und solchen die es lernen wollen geführt habe, mal ein kleiner Tipp und ein paar Meinungen.
Info: Dieser Post spiegelt ausschließlich meine eigene Meinung und meine Erfahrungen in der großen weiten Welt von Entwicklung und Industrie wieder.
Wieso dieser Post?
Also, PHP... So ziemlich jedes Projekt das hier in Richtung Web auftaucht wird in PHP entwickelt. Seit Jahren setzt das Internet auf diese durchaus mächtige Sprache und die umfangreichen Fähigkeiten von PHP, doch sein wir mal ehrlich...
Wir leben im Jahr 2017, wieso sollte man immer noch auf eine derart alte und zum Teil nicht zeitgemäße Technologie setzen. Ich finde es traurig zu sehen, wie junge Entwickler die hier Webentwicklung lernen wollen ihre Zeit damit verschwenden PHP zu lernen, nur weil sie davon irgendwo mehr gehört haben oder weil es mehr Videos dazu gibt (O.o). Gerade neue Leute in dem Bereich haben den Vorteil sich aussuchen zu können was sie lernen, dann doch lieber gleich etwas richtiges, neues und modernes.
Doch wie komme ich zu dieser Meinung?
Erst mal zu mir... Ich war sehr lange einfach nur Softwareentwickler und dazu zählte für mich Web einfach nicht. Ich habe Sprachen wie C, C++, Java, ASM und mehr gelernt, da wirkte Webentwicklung für mich immer irgendwie doof... Das ist nun aber auch schon sehr lange her und auch ich durfte dann doch irgendwann den Sprung ins moderne Zeitalter machen.
Mittlerweile sind wahrscheinlich mehr als 90% von dem was ich baue Web oder für das Web (Backend etc.). Doch auch wenn ich mir PHP anfangs angesehen habe, so war mein erster Eindruck: "Was ist denn das für ein Chaos".
Ich bin grundsätzlich jemand der sehr leicht neues lernt, doch das muss auch einen Sinn ergeben und Fakt war, PHP ist alt, unlogisch, hat keine Philosophie und macht es zu einfach Fehler und Lücken zu verursachen. Daher meine Meinung, dass PHP langsam aber sicher aussterben wird.
Also musste eine Alternative her!
Die Suche nach Neuem.
Ich begeistere mich sehr für das Suchen, Testen und Benutzen von neuen Technologien. Als jemand der sich sehr früh mit Microservices, Cloud und anderen neuen Dingen beschäftigt hat musste meine Web Technologie auch diese verschiedenen Gedanken und Ideen teilen, da fiel der erste Blick auf JavaScript im allgemeinen.
JavaScript selbst ist auch nicht ideal, doch es wurde zu einer der aufstrebenden Sprachen, also musste es getestet werden. Anfangs war ich mit JS sehr unzufrieden und hatte nicht wirklich Spass daran, doch für das was ich machen wollte hat es gereicht.
Das Tolle an einer Sprache wie JS ist, sie wird laufend aktualisiert. Dank den neuen Richtlinien wurde sogar JS zu einer echt guten Sprache und irgendwann kam dann der Durchbruch: TypeScript!
TypeScript ist im Grunde eine typensichere Version von JS und generiert beim Build auch genau das. Es ist einfach aber mächtig, vielfältig und vor allem für Projekte die etwas höhere Anforderungen an den Code stellen (Qualität etc.) hervorragend.
Zurück zum Entwickeln
Um nun wieder auf den eigentlichen Punkt zurück zu kommen ist die Frage wo man nun anfängt.
Bei PHP ist die Wahl für viele sehr klar. Es gibt eine Hand voll großer Frameworks die nichtsahnenden Anfängern (aber auch Profis) sehr viel Honig ums Maul schmieren um von sich zu überzeugen. Ohne ein Framework eine App mit PHP zu bauen ist leider einfach dämlich, es tut mir leid aber das ist so. Ich selbst bin meist kein Fan von Frameworks, doch es gibt immer eine zu treffende Abwägung. Bei PHP ist zwar beides nur bedingt gut, doch Frameworks schaffen eine Basis um Grundlagen zu überspringen. Ein Einzelner kann sich nicht immer so Gedanken zu Sicherheit, Verlässlichkeit etc. machen wie es eine große Community tut.
Doch auch diese großen Frameworks in PHP sind im Grunde nur das Ergebnis einer schlechten Sprache, daher nun zu den Alternativen.
Für moderne Webentwicklung gibt es zwei Optionen die ich als meine Favoriten sehe. Diese sind zum einen React aus dem Hause Facebook und das neue Angular aus dem Hause Google.
Ich habe aktuell in verschieden Fällen beides in Bearbeitung (Privat und Beruf) doch meine eigene Wahl ist definitiv Angular.
Dank TypeScript und den hervorragenden Änderungen seit AngularJS (Angular 1) ist es ein solides, angenehmes und aus Code Sicht wunderschönes Framework.
Eine gut gemachte Angular App funktioniert nicht nur, sie sieht toll aus und das sowohl vor als auch hinter den Kulissen.
Es ist sehr einfach stateless zu arbeiten und im Grunde ist der Web Part komplett vom Backend getrennt.
Seit ein paar Monaten betreibe ich aktives Prototyping in Angular und raus kommt dabei eine schöne App mit Testdaten. Am Ende muss diese nur noch in ein paar kleinen Schritten an eine API meiner Wahl angebunden werden und alles funktioniert.
Doch PHP Entwickler staunen, wie soll meine App dann funktionieren? Das tut sie doch! Die Vermischung von Frontend und Backend ist einfach eine Krankheit schlechter Architektur. Mit Angular oder React baut ihr das Frontend, dieses ist einfach nur eine bessere Website die euer nginx ausspuckt. Die eigentliche Arbeit macht das Backend eurer Wahl. Ob Golang, C++, Java, etc... Ihr stellt eine API und das Frontend ruft diese auf.
Schluss mit Anwendungen die selbst auf Datenbanken o.Ä. zugreift, wir leben in der Zeit der Microservices und API's!
Wer heute noch eine App baut die wie in PHP eigene Anbindungen an Datenquellen hat ist definitiv aus der Zeit. Die vielen Gründe für API's und Komponenten Trennung kann ich hier gar nicht alle aufzählen.
Abschluss - TL;DR
Nun um doch mal zum Ende zu kommen, ein kurzes TL;DR...
Ich lege es jedem ans Herz der neues lernen möchte, sich mit Angular oder React zu beschäftigen. Lasst die Finger von PHP und beginnt etwas zu lernen das auch zu dem passt, was sich aktuell in der Landschaft des Internets abbildet.
An die alten Hasen, ich weis Entwickler tendieren dazu an ihrer Technologie zu hängen und ich bin/war da nicht anders. Ihr mögt schon tolle Sachen mit PHP gebaut haben, doch wer nichts neues lernt kommt auch nie vorwärts. Es gibt so viel da draußen das man lernen und testen kann, am Ende hilft es euch nur.
Wenn ihr Entwicklung lernt weil ihr das in Zukunft studieren oder in dem Bereich arbeiten wollt, dann erst recht Finger weg von PHP. Ich kenne bei uns hier aktuell kein IT Unternehmen das noch aktiv PHP Entwickler sucht. Von PHP Kenntnissen im Bewerbungsgespräch ist kaum noch jemand beeindruckt, vor allem die Großen wollen im Strom bleiben und dazu gehören eben auch neue Technologien.
Ich hoffe irgendjemandem mit diesem Post geholfen zu haben. Wahrscheinlich ist er für die meisten zu lang oder redet zu schlecht von der Sprache die sie doch so gerne nutzen. Neues zu lernen ist Arbeit, doch es kann auch unglaublich viel Spass machen.
Wer einfach mal mit Angular los legen möchte, hier ein hervorragendes Projekt das schon alles bietet um sofort zu starten und die Anwendung von Angular 2 zu lernen: https://github.com/mgechev/angular-seed
Ach ja und wie immer bei Angular, hat Google als erstes auch mal ein Material Modul gebaut: https://material.angular.io
Viel Spass und danke fürs Zuhören,
Finch