Published 10 months ago by Mickc
I have a few friends who are big on Symfony and were appalled when I told them I was learning laravel.
They say with laravel you don't learn to be better at PHP - you learn to get better with laravel. And ultimately you will become a laravel developer as opposed to a PHP developer.
What are your thoughts on this?
I just recently started a web development position at my university and they use a framework called Zend 2. Total piece of garbage and it doesn't teach you anything other than passing arrays into functions.
Laravel, on the other hand, gives the developer full control over everything. If a developer wants to design a full blown package in PHP they can. If that same developer wants to get a quick app running, they can pull in pre-built packages. And someone, like myself, can do anything in the middle. It is wonderful.
Laravel is by far the best framework out there for anything from a small application built by a novice web developer all the way up to a professional web programmer.
With any framework, you will learn the framework, but you will also learn and get better at the base language as well.
The comment by your friend would be like going to Java and saying, "Learning the Java Collection's framework doesn't make you any better at Java. Rather you only learn the framework"
I read that before. This claim only comes from Symphony developers. Laravel is deeply integrated with Symphony, but takes the pain away. Symphony has a relative steep learning curve. As with any framework, they have their own conventions.
Maybe developers who rely on Symphony find the simplification Laravel offers a sign of weakness. As such, it may give the impression a developer moves away from PHP and understanding design patterns.
It's simply not true. Without understanding the fundamentals, no one will become a solid Laravel developer.
I've been a software developer for over 3 decades and I'm going to tell you that what you program in matters a hell of a lot less in the long run than knowing how to program, how to design software properly, good design patterns, and having the general ability to figure stuff out.
Back when I started, COBOL was still in heavy use. Then it was C, Visual Basic made an appearance, C++, Java (so many different flavors in those early days), C#, .NET, on and on the list goes.
My point is, you need to be a good programmer regardless the language or toolkits you use - good overall knowledge. The language and toolkits are just something you use to do that job, and they'll change over time, incessantly.
Being a "good PHP" programmer could be as irrelevant in 10 years as being a good COBOL programmer is now.
Understanding good OO design principles, that will last you a career.
Tell your friends they're idiots to be fixated on any one language like that. Get the job done. Efficiently and correctly. Doesn't matter what you use.
Tell your friends that an X java programmer said horse hockey. I may use the querybuilder, and sometimes orm. But for many complex queries I still use regular pdo queries via getPdo(). I also use regular php arrays many times. And I use my own authorization system with roles, not the built in.
So bottom line, Taylor made laravel flexible enough to choose a coding technique. You aren't restricted.
From what I have seen Symfony is much more restrictive.
Hm, from my own experience I guess things like these have a lot to do with people having learned one thing, being proud of it and fearful of someone reducing the value of that achievement, even if nobody intends to do that. I have heard a lot of similar thing from people only writing php without any framework - sure, eventually you'll know large parts of the sdl by heart but is that really what makes a good developer? I don't really think so.
The same thing could be set about everyone who is too much fixated on one specific set of tool, be it PHP plus only the SDL, Symfony or even Laravel.
So yeah, I do get that it's sometimes hard to see that one has learned something and spent a lot of time on that and it's just one more thing among so many alternatives and not the "one and only". But then again, that keeps it interesting.
Everything we do (devs) is in fact opinion 99% of the time. The only time it isn't is at a very basic php level. You create a class only one way etc..
Really get to the nuts and bolts is: are we using tools and techniques because we know them or because the task at had requires it? Lots of times we find our selves somewhere in between.
What, if you're not a freelancer, are the technology that employers in need of? Knowing framework A with 0 jobs available means your good at nothing. But learning framework B because there are 50 jobs available is money in the bank, literally.
In my area of the world Symfony is framework A and Laravel is framework B. So who wins that argument on who's better then?
Recently I accepted a contract for a laravel position while the company was in preplaning stage. They since decided to implement a lot of Microsoft solutions (dynamics, pim, office 365 and cloud based active directory) and Azure. So what I was contracted for either become a lot harder utilizing laravel and more specifically php into a c# and asp world or adapt and use asp.net. For the amount they pay, I'm brushing of visual studio and getting up to speed on mvc core 1 (mvc version 6).
My main point is, those stuck in their ways will be left looking like a fool and/or out of business.
I would just add : A framework is not here to teach you anything,
Patterns are concepts, this is what makes you a good developer, it's knowing concepts and knowing how to design your code.
And this my friend, can be done in Laravel or Symfony or even the smallest FW out there or any language out there, it's up to you to code well.
However, symfony's leaning curve is indeed so high that i beleive in my opinion, that it may show you the path to learning patterns quicker than laravel when doing basic things, but only at the basic level because as you go deep in any framwrok you will always come accross concepts to learn.
Your friend has a point, and it seems quite clear when you read this forum.
For many here, the starting point of their apps is Laravel, which is absolutely the wrong way of creating a good piece of well-written maintainable software.
The first step in creating your app should be to design it. Create the specs. What does it do, how many pages does it have, what are the functionalities on those pages, etc... What functionalities will be in the first release, what functionalities do you know will be required later on, etc... Does speed matter, does deployment strategy matter, is there a small team working on it, or big team, etc... ?
Once you know what you want to build, then you choose your tools. This means Laravel won't always be your choice. Remember that Laravel is a whole macro-framework - pretty complex. Frameworks are at the peak of complexity in the software world. You have C, PHP build over that, librairies built in PHP, then Laravel packaging certain PHP librairies in a certain way.
Choosing your tools on the server side should start by establishing things like what PHP version you should use and what librairies you will need. Hell, you might even be a step before that and choose the language. Sometimes PHP is not the right choice. It depends on the many factors. You might be better off programming your app in Python, or Ruby.
Following Unix programming philosophy, your goal should be to remain as decoupled as possible and use the smallest librairies with the fewest dependencies you need. For example, if your application requires authentication, you should use a library that does the type of authentication your app requires. If there are many choices, the auth librairies that are smaller and have fewer dependencies should be prioritized over other bigger ones. The goal is to keep complexity at a minimum. Of course, documentation is important too, and how maintained the library is. If you find a PHP auth library that does what you want, is super small, has no dependencies, it still might be a bad choice if the documentation is horrible and the last commit was done 3 year ago.
Much like the Arduino in the hardware world, Laravel is a system that makes many choices for you. If packages many libraries - auth, validation, router, etc... and glues them together in a certain way. The advantage is that you can start faster (don't have to choose librairies), has a large community of people using the same combination of librairies, has docs that cover the whole system. The disadvantage is starting your app with a high order of complexity you might not need.
Symphony is not really a framework. It's like https://www.opulencephp.com - a series of librairies. Most of them are decoupled, which is what good programmers love. Laravel uses many symphony librairies because of this.
In the end, it depends what your goal is.
If software programming is a hobby and you just want to get sites done quickly without worrying too much if they are built with the best tools, then I suggest you use Laravel + jQuery or Vue.js, etc... and get on your way building apps. The same way I would suggest someone who just wants to make motors work for some art installation to use Arduino.
If your goal is to become a great software developper, then I suggest you don't think 'Laravel' every time you start a new web project. Like I described above think 'what does my project want to do, how can I spec it out'. From that information, then you choose the correct tools for the job. It might be Laravel. But it might be slim3 with a few components, or Lumen, or opulence.php, it might even be straight up PHP for simple sites.
Good programmers start at the bottom and build up only adding the complexity they need (Programming is all about keeping complexity to a minimum).
Lesser programmers start at the top of complexity (a full fledged framework for every project) then try to add what they need.
Remember, a framework is only a delivery system for your app. It is not your app.
If your main goal is to quickly make web apps, then I say just start with Laravel.
if your main goal is to become a great PHP programmer, then I suggest you start by learning PHP well, then download many different PHP frameworks - Silex, Slim, Larael, Lumen, opulence, symphony, kohana, etc... and read their source code. Try to see how they were made, what are the different philosophies. What problems are they trying to solve.
If your goal is to learn PHP, then you have to start with plain PHP. It's a big language with many things to learn.
It depends what you want to do.
I agree with @thc1967 I very much doubt the platform we work on now, will be the same in 3... even 2 years time.
I would focus on building your ability to learn to program, apposed to worrying about the finite details.
I mean, Look at all of the expert Silverlight developer.