Facebook
Twitter
Google+
Kommentare
25

Kann man anhand eines Frameworks programmieren lernen?

Dienstage sind gefühlt irgendwie immer länger als andere Tage. Trotzdem bekommt ihr auch heute/gestern wieder einen Artikel zu lesen. Wäre ja noch schöner, wenn mich ein Dienstag besiegt. Das Thema worüber wir jetzt reden wollen ist mal wieder recht subjektiv zu diskutieren, aber was wäre dieser Blog, wenn ihr nicht eure Meinung kundtun würdet und wir danach ein rundes Gesamtbild bekommen.

Ich weiß nicht, wer und wann es war, aber vor kurzem gab es einen Kommentar hier im Blog, in dem jemand geschrieben hat, er habe Programmieren anhand des Zend Frameworks gelernt. Da schoss mir natürlich sofort in den Kopf „kann man das überhaupt?„. Ich meine ein Framework wie das Zend Framework nimmt einem schon viel Arbeit ab. Das ist sicher. Es lenkt das Projekt auch (meistens) in eine saubere MVC-basierende Architektur. Das war es doch aber schon, oder? Ich lerne das MVC Pattern kennen und weiß wie ich Klassen zu nutzen habe.

Falls ich Businesslogik zu implementieren habe, kann mir ein Framework nicht helfen. Wie ich Algorithmen zu formulieren habe, wird mir auch nicht beigebracht. Das Zend Framework ist wahrscheinlich eines der saubersten Stücke PHP-Code, die ich so kenne, aber um das zu „genießen“ muss man programmieren können. Denke ich.

Um programmieren zu lernen, würde ich bei den Grundlagen anfangen. Natürlich kann man das Zend Framework auch in den Anfängen benutzen, da spricht sicher nicht gegen, um es aber richtig einsetzen zu können, muss man die Grundlagen der OOP (oder dem Programmierparadigma, das man erlernen will) beherrschen. Auch ja, so nebenbei, beim Programmierenlernen hilft ein Informatikstudium auf keinen Fall.

So was will der Mann an der Tastatur euch eigentlich sagen? Falls ihr gerade dabei seid euch das Programmieren beizubringen, dann nicht anhand eines Frameworks. Das erste Buch, dass ich euch kaufen solltet, sollte also kein Zend oder Symfony im Namen tragen. Auch wenn euch damit schnelle Ergebnisse versprochen werden, sobald ihr eigene komplexere Anforderungen habt, werdet ihr eure Probleme ohne die Grundlagen nicht mehr lösen können.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

25 Comments

  1. Ich glaube es gibt nicht so viele Leute, die sich das Programmieren einfach so selbst beibringen nur aus Spass an der Freude. Die meisten werden konkrete Anforderungen also Projekte oder eigene Ideen haben, die sie live bringen wollen. In diesen Fällen ist das Einsteigen mit einem Framework sicher nicht zu verachten.
    Sie würden ja vermutlich (hoffentlich) eh mit der Zeit lernen, was OOP ist und wie saubere Programmierung aussehen kann. Wenn sie auf ihrem Weg dahin bereits von Struktur und Paradigmen und starken Konzepten begleitet worden sind, ist das sicher nicht die schlechteste Situation.
    Allerdings _nur_ von einem Framework zu lernen ist auch nicht der richtige Weg. _Mit_ einem Framework klingt für mich aber nicht unrealistisch.

    Nebenbei für die daheimgebliebenen:
    http://test.ical.ly/2010/02/17/symfony-live-2010-tag-2/

    😀

    Reply
  2. Nein geht nicht.
    Vorallem würde ich ich nicht behaupten „das Zend Framework ist wahrscheinlich eines der saubersten Stücke PHP-Code“ […]

    Reply
  3. Nein, man kann aber anhand eines Frameworks die eigene Programmerfähigkeiten verbessern, wenn man sich auch mal das ein oder andere Codestück anschaut. Dies gilt aber selbstredend nicht für alle Frameworks.

    Reply
  4. Nun ja – programmieren haben wir an der Uni mit Papier und Bleistift gelernt. Wenn man ehrlich ist geht es eben doch um mehr als die Beherrschung einer Sprache.

    Reply
  5. „Um programmieren zu lernen, würde ich bei den Grundlagen anfangen.“, weil du zu viel Erfahrung hast 😉

    Aber soll der „Neue“ jetzt PHP, C oder Assembler lernen? Warum entstand der Ruby Hype?

    Ich denke Spaß und schnelle Erfolge sind für einen erfolgreichen Start wichtiger als das Informatikstudium. Der Entwickler 3.0 codet vllt dein neues Handy App ohne zu wissen das es Arbeitsspeicher braucht.

    Reply
  6. Da stimme ich voll und ganz zu.
    Ich habe sogar das Gefühl, dass ein Universitäres Studium eher kontraproduktiv ist, wenn man ordentlich Programmieren lernen will. Man bekommt da doch mittlerweile auch nur einen riesigen Haufen Theorie eingeimpft und darf dann 2-3 mal für ne Übung oder ein Praktikum etwas Programmieren. Man lernt dort ja auch nicht sich selbstständig eine Lösung zu erarbeiten,da man sich immer nur an Vorgaben entlang hangelt…
    meine bescheidene Meinung

    Reply
  7. Das Zend-Framework ist kein sauberes Stück PHP-Code. So aufgeblasen wie das ist, ist das vielleicht eine gute Basis um Java zu lernen, da Java genauso aufgeblasen ist. 😉
    Für guten PHP-Code ist das definitiv keine Basis.

    Reply
  8. Auf Stack Overflow wird diese Frage dauernd gestellt und tatsächlich kontrovers diskutiert. Neulinge mit PHP wollen meistens Frameworks wie Kohana, CakePHP oder Code Igniter als Antwort hören. Zumindest die letzten beiden glänzen nicht unbedingt durch ihre saubere Codebasis (Kohana habe ich mir noch nie angesehen). Grundsätzlich glaube ich nicht, dass ein Framework für einen Anfänger etwas bringt. Ohne das Basiswissen, dass einem im PHP Manual in den ersten Kapiteln beigebracht wird, hat das keinen Sinn. Die Design Patterns in den Frameworks sind konkrete Implementationen. Im Zweifelsfall lerne ich da überhaupt nichts über das Pattern, sondern nur, wie es in Framework XY funktioniert.

    Reply
  9. Ich muss Jens auch zustimmen. Die Grundlagen sind zwar wichtig aber werden in der Regel erst später erlernt. Anfangen tut man doch, weil es Spass macht irgendwas zu machen, nicht gut vielleicht, Hauptsache machen.
    Zu meiner Zeit war da die Amiga Demo Szene und heute sind es Facebook und iPhone Apps.
    Kaum ein Mensch wird „Blut lecken“ wenn er sich die Grundlagen beibringt. Die weiss man erst zu schätzen, wenn man längst mittendrin ist.

    Reply
  10. Ich würde schon sagen das man durch „Anwendung“ eines Frameworks, in einem bestimmten Projekt, an PHP-Programmierungswissen dazu lernen kann (hmpf dopppelt gemoppelt?).

    Selber habe ich sehr viel rohes prozeduales PHP fabriziert und nur gaaanz langsam bin ich an Templates Engines vorbeigeschlittert.

    Irgendwie konnte ich am Ende doch noch nicht so richtig programmieren, jedenfalls empfand ich das so.

    Als ich dann aber vom Zend Framework gehört hatte (durch Typo3, man mag es kaum glauben), war alles anders. Ich hab angefangen durch Fehler und Unwissenheit OOP zu lernen (abgesehen von design patterns durchprobieren und testanwendungen).

    Wenn wir ehrlich sind, kann man im Internet ja alles „lernen/finden“. Und so hab ich mich durch die Welt gefragt und an einem eigenen Projekt rumprobiert, bis ich jetzt da bin, wo ich halt bin.

    Früher war an noch nichts zu denken, kein SVN, kein OOP, keine View-Trennung. Das alles hat erst der ZF-Gedanke vorgebracht.

    Und jetzt soll bitte noch einmal jemand sagen, durch das ZF kann man keine Programmierung lernen. Es ist allerdings auch eine Sache wie man das Wort „Programmierung“ ausfomuliert.

    Meint man mit Programmierung die Kenntnis der Sprache, oder eher wie man Projekte mit einer Sprache umsetzt? Bei zweiteres würdes ich die oben genannte Frage mit „JA“ beantworten.

    Allerdings, ohne probieren und fragen anderer, lernt man am ZF nicht wirklich selbstständig die direkte PHP-Programmierung.

    Reply
  11. Ich weiß ja nicht was ihr so für Erfahrungen gesammelt habt 😉 Ich hab mal ein Projekt gestartet mit 2 ziemlich unerfahrenen Programmierern mit PHP5. Wir hatten kein Framework als Basis benutzt und es war totales Chaos, da einfach viele Grundlagen nicht da waren. Nach recht kurzer Zeit sind beide abgesprungen, weil sie die Entwicklung nicht verstanden hatten und somit die Lust verloren hatten.

    Ich denke, das beste was man machen kann, wäre zuerst mal mindestens eine Website komplett ohne Framework zu programmieren, sich dann mal Bücher zu kaufen, die PHP & OOP behandeln. Ich bin sehr gut mit „PHP objektorientiert“ gestartet, um einen schnellen EInstieg zu bekommen und um leichter verstehen zu können, wie der Unterschied zu C++ und C# denn aussieht 😉 Und heute arbeite ich als PHP Entwickler, scheint sich also wohl gelohnt zu haben 🙂

    Reply
  12. Ich programmiere jetzt seit ca. 10 Jahren eifrig mit PHP. Dabei habe ich auch das ein oder andere Ding mit Symfony oder Zend umgesetzt. Ich muss zugeben, dass ich bisher mit meinem Wissen alles mögliche umgesetzt bekommen habe. Dennoch bin ich mit Frameworks einfach nur schlecht. Richtig schlecht.

    Ich habe damals PHP gut gefunden, weil jeder Befehl das machte, was ich von ihm erwartet habe. Irgendwie total simpel. Bei Frameworks ist mir oft – eigentlich fast immer – nicht klar, woher $this oder ähnliches gerade kommen und wie ich damit umgehen muss.

    Das liegt aber auch daran, dass ich mich gerade bei der Programmierung eher als Handwerker sehe. Es muss irgendwie laufen und relativ stabil sein. Natürlich habe ich immer noch das Ziel, irgendwann mal wirklich was auf ZFF oder Symfony umzusetzen aber dafür müsste ich meinen inneren Schweinehund überwinden und mich drauf einlassen. Und dann beginnt der eigentliche Lernprozess.

    Reply
  13. Hallo,

    ich würde nicht behaupten, dass man mit einem Framework besser oder schlechter programmieren lernt. Unser Professor hatte damals einen netten Artikel auf seiner Homepage verlinkt: „Learning programming in ten years.“ als Antwort auf „Java|PHP|… in 21 days.“

    Programmieren lernt man durch Erfahrung. (Kent Beck hat seiner Tochter wohl von Anfang an test-getriebene Entwicklung beigebracht.) Wichtig ist, dass man sich

    – anfangs mit der Syntax einer Sprache vertraut macht (ein paar Tage)
    – die Sprach-Bibliotheken kennen lernt (ein paar Monate)
    – die Feinheiten der Sprache erkennt (ein paar Jahre)

    Neben der Programmiersprache gibt es noch viele andere wichtige Themen zu beachten:

    – Design-Patterns
    – Refactoring
    – effizientes Testen
    – agile Software-Entwicklung
    – Konzepte in anderen Programmiersprachen
    – mindestens Grundlagen von Linux/Unix
    – wie arbeitet eine Datenbank intern
    – etwas Algorithmentheorie
    – …

    Auch hier ist eine Mischung aus Lesen, Austausch mit anderen und Erfahrung unabdingbar.

    Mit Framework kann man in die richtige Richtung gelenkt werden und vom Wissen anderer profitieren. Man kann aber auch so am Framework vorbei programmieren, dass alles nur noch schlimmer wird. Hilfreich ist es sicher, sich viel Dokumentation und v.a. auch fremden Code anzusehen und sich mit anderen Entwicklern auszutauschen.

    Schöne Grüße

    Thomas

    P.S.: Das Zend Framework würde ich ganz sicher nicht als sauberen Code bezeichnen…

    Reply
  14. Ich finde auch, man sollte erst mit dem Basics der Sprache anfangen. Allerdings nur, wenn man vorher noch keine andere Sprache gut beherrscht. Man sollte halt einfach unterscheiden können, was gehört zum Framework, was zur Sprache. Wenn man das nicht kann, sollte man sich erst einmal die Sprache aneignen.

    Zu dem Punkt, das lernt man nicht an der Uni muss ich allerdings sagen, das stimmt so nicht ganz. Fakt ist, dass man im Prinzip weder in Vorlesung noch Übungen Praxiserfahrungen in der Richtung sammeln kann, wenn man immer nach dem Prinzip geht: „Ich mach nur das, was ich machen muss.“ Das Studium an sich ist aber vom Grundprinzip etwas anders. Es werden genügend qualitativ hochwertige Literaturhinweise gegeben, bei denen man sein Wissen selbstständig vertiefen kann und eigentlich auch sollte. Das Problem daran ist nur, dass in Prüfungen das darüber hinaus erlangte Wissen nicht geprüft wird und nach eigener Erfahrung des Bachelor-/Mastersystems auch nicht mehr wirklich die Zeit dafür bleibt, sich mit allen interessanten Themen auseinanderzusetzen oder mehr Uniinterne (oder auch externe) Projekte zu machen, wo man die Praxis anwenden kann. Allerdings lernst du an der Uni eine grundlegende Basis, auf der man auch in weiter Zukunft aufbauen kann, wenn neue Technologien die Welt entdecken. Des weiteren gibt es auch Vorlesungen zu Softwaretechnik/-engineering wo man gutes OO-Design lernt.

    Reply
  15. Ich habe bezüglich der Sauberkeit der Implementierung des ZF schon gegensätzliche Aussagen gehört 😉 Die ezComponents sollen übrigens sehr gut sein.

    Reply
  16. Letztendlich ist PHP doch auch nur ein Framework, nur eben eine Ebene tiefer als die PHP-Frameworks wie Zend FW, … .

    Zugegeben, ein paar Unterschiede gibt es schon noch, das Framework benutzt ja lediglich die Syntax der zugrundeliegenden Programmiersprache und fordert (meist) keine eigene Syntax.

    Warum also sollte man die Programmiersprache nicht durch das Framework lernen? Die Frage ist eher, lernt man dann PHP oder lernt man so Zend Framework (inkl. Denkweise)?

    Klappen wird es auf jeden Fall, aber im Gegensatz zu PHP wird man beim Lernen durch das Zend Framework nicht darum herumkommen, auch die zugrundeliegende Sprache wenigstens ansatzweise zu lernen.

    Reply
  17. Ob Zend oder Symfony das richtige Framewrk ist, ist letztendlich nicht das Thema diesen Artikels, viel mehr ob man direkt mit einen Framework anfangen sollte oder nicht. Ich würde sagen dass es immer ein Vorteil ist sich gut mit den gängigen nativen Funktionen von PHP aus zu kennen. Dies lernt man nicht eben so mit nachlesen, sondern mit Projektarbeiten. Hier lernt man erst mit vielen Problemen und Kinderkrankheiten von Programmiersprachen, Systemen und Browsern umzugehen. Weiterhin habe ich oft die Erfahrung gemacht, dass es Leute gibt die sehr gut mit Frameworks umgehen können, zumindest beim implementieren von Businesslogik, jedoch nicht wissen wie sie ein einfaches Formular auf einer Homepage ohne Framework, sicher erstellen und dessen Daten von XSS Attacken sichern können. Fazit: Vor oder während den beginn mit dem Arbeiten mittels eines Frameworks, würde ich schauen zwei bis drei umfangreiche Projekte ohne Framework alleine oder am besten in Team zu meistern, den damit bekommt man eine bessere Vorstellung was genau in bestimmten Methoden des Frameworks passiert, und kann diese neu schreiben, refactoren wenn sie man nicht richtig funktionieren oder eben leichter erweitern wenn sie funktionieren.

    Reply
  18. Die grundsätzliche Frage die man sich ja stellen muss: Wie definiert man Programmieren? Nur irgendetwas zum Laufen zu bekommen oder etwas sauber, elegant, schnell und sicher umzusetzen?

    Grundsätzlich denke ich, dass man ohne Frameworks anfangen sollte zu programmieren. Wenn man dann genug gemacht hat, wird man die Notwendigkeit und Vorteile von Frameworks zwangsläufig erkennen. Gleich mit Frameworks anzufangen halte ich für nicht so sinnvoll, da ja viel „magisches“ im Hintergrund passiert. Und gerade wenn dies nicht so will wie man möchte, kann man nichts ändern, weil einem das Wissen fehlt und man ist schnell frustriert. Wenn ich etwas konstruieren möchte fange ich ja auch nicht mit der Sydney Harbour Bridge an.

    Mich würde auch mal interessieren wieso das ZF kein gutes Stück Code sein soll. Sicherlich ist nicht alles bei weitem perfekt aber wieso die harsche Kritik? Zu viel OOP? Zu wenig Konsistenz? Over-engineered?

    Reply
  19. Ich glaube, die Antwort auf die Frage „Kann man mit Frameworks PHP lernen“ kann weder eindeutig ja, noch eindeutig nein – geschweigedenn Jein sein.

    Wovon ich persönlich absolut nichts halte: nichtssagende Fachbegriffe (ala „Refactoring“, „Design pattern“ usw), Studium und derlei gesocks. Alles unnötig. Für mich persönlich ist das Maß aller Dinge: Learning by doing. Mich interessieren keine Fachbegriffsjonglierereien, mit denen die sogenannten (oder selbsternannten) Vollprofis um sich schlagen, ihren Code aber nicht im Griff haben und von jemandem, der das ganze nicht „professionell“ erlernt hat, ausgelacht wird. z.B. von mir. Was ich schon an Scripten gesehen habe, die von solchen Leuten stammen, sorry, da hab ich in meinen 5, 6 Jahren selbsterlernter Erfahrungen mehr auf die Beine gestellt und besser gecodet, als solche, die dies „studiert“ (und dabei noch unmengen an Geld investiert) haben.

    Und darum kann man auch nicht festlegen, welche Art der Lernmethode die perfekte ist. Studium? Buch lesen? Frameworks verstehen?

    Für MICH persönlich war es eine gute Sache, sich erstmal auf eine eigene Website zu konzentrieren. Erstmal die grobe Basis kennenlernen (HTML, CSS). Denn ohne dieses Wissen nutzt auch PHP nicht wirklich viel.

    Dann habe ich mir ein CMS angeschaut, erst oberflächlich, und dann gezwungernermaßen auch tiefergreifend, da PHP Fusion nunmal nicht auf ein reines HTML-Templatesystem (ala smarty (abgesehn von schleifen etc), sondern ein PHP-Templatesystem basiert. Der Rest war einfach read, write, try, fail, learn, fight.

    Ich denke, dass für jeden Anfänger (aber auch Fortgeschrittenen oder gar „Profi“) JEDES PHP-Script einen Blick wert ist, egal ob Framework, CMS, Gästebuchscript. Denn keines gleicht dem andren, von jedem kann man das ein oder andre (schlechte) Beispiel lernen.

    Wenn es aber um die Frage geht, ob man als „Anfänger“ (zu denen ich mich trotz meiner Erfahrungen zähle) PHP anhand eines Frameworks nachvollziehen/verstehen kann, dann gibt es ein gänzlich klares eindeutiges nein.

    Reply
  20. @Patrick:
    Studium != Programmieren lernen
    Viele sind wohl immernoch der Meinung ein Studium in Informatik ist auch dazu da, um programmieren zu lernen. Ist es aber nicht. Das macht man grade mal am Anfang des Studiums in vielleicht 2 Vorlesung und dann wird vorausgesetzt, dass du dich in der Richtung selbst weiterbildest. Der weitere Teil ist eben großteils Theorie, wie man es machen soll, mit einem ganz kleinen bisschen Vertiefung in der Praxis, beispielsweise in Übungen oder uni-internen Praktikas. Aber auch hier gilt es wieder… Selbstständigkeit. Jetzt kann man sich natürlich fragen… wieso dann ein Studium?
    Ganz einfach, um das große ganze Verstehen zu lernen, einen Blick über den Tellerand hinaus zu bekommen, …
    Und noch als ein Beispiel eine Gegenfrage: Muss ein Architekt perfekte Häuser mit den eigenen Händen bauen können? Oder: Würdest du dich auch nur im entferntesten an lebenskritische Software oder welche herantrauen, die eine hohe Risikobewertung in Bezug auf Geldverlust hat, ohne die formalen Modelle verstehen und anwenden zu können? Um ein simples CMS oder nen Blog zu programmieren braucht man nicht studieren und ist auch nicht Sinn und Zweck dessen. Dafür gibt es auch noch den Lehrberuf zum Fachinformatiker, wenn man es auf dem Papier stehen haben will, oder eben man bringt es sich nur so bei.

    Nur weil es leider viele Studenten gibt, die sich genauso wie in der Schule durchmogeln konnten, ohne überhaupt was zu können/zu verstehen, heißt das noch lange nicht, dass das auf die Allgemeinheit zutrifft.

    Reply
  21. Ich würde einem Starter nie empfehlen mit einem Framework als Grundlage sein Handwerk zu erlernen. Da hier einfach die Gefahr besteht, dass er durch das Framework wichtiges elementares Grundwissen nicht erlernt. Da könnten nun natürlich einige meinen „Das braucht er auch gar nicht – macht doch das Framework für ihn.“ Aber würdet ihr jemanden in euer Team aufnehmen, der nicht versteht wie SQL-Injections entstehen, wie man eine SQL Abfrage formuliert oder wie das HTTP grob funktioniert (…)?
    Ich nicht und daher würde ich Anfängern empfehlen beim Hello World zu starten und danach mit den Standard PHP Mitteln vorlieb zu nehmen, das Framework drängt sich dann automatisch auf.

    Die „Studium != Programmieren“ Diskussion ist echt spannend. Ich selbst habe meinen Fachinformatiker gemacht und bereite mich derzeit auf ein Studium vor. Auch während der Fachausbildung lernt man nicht wie ein Weltmeister zu programmieren, es ist wohl nicht unbedingt mehr als die angesprochen „2 Vorlesungen“.
    Jeder der wirklich etwas lernen will, wird sich nie nur mit dem Studium oder der Ausbildung alleine zufrieden geben und das ist meiner Meinung nach der entscheidende Punkt.

    Ich habe Studenten gesehen die durchaus programmieren konnten, das gleiche gilt für Facharbeiter und ebenso viele, die lieber bei UML hätten bleiben sollen ;o)

    Reply
  22. Pingback: .: Steven-Klar :.
  23. Naja, dass das Studium nicht automatisch jeden zu nem guten Coder macht, ist doch klar – also die besten Coder, die ich kenne (Demoscene, Opensource) sind Geeks, also Leute die über kein normales Leben verfügen und schon mit 12 eigene Kompressionsalgorithmen gebastelt haben.

    Ich habe die Ausbildung zum staatl. geprüften techn. Assistenten für Informatik auch nur gemacht, um schriftlich beweisen zu können, dass ich zumindest weiß, wie „Hallo Welt“ funktioniert. Dort lernte ich allerdings C. PHP irgendwann danach.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen