Laravel and Grumpy Programmers
So let's get this out of the way right first: I have not built anything using
Laravel and currently have no plans to. But not for the reasons you might
Yes, it's true that I have gotten into arguments with the current president
of the Paul M. Jones fan club, Taylor Otwell. Sometimes I have been right,
sometimes Taylor has been right. I don't dislike Taylor at all, and he has
gotten into the spirit of "Twitter as performance art" in a way that I
So. Laravel. At first glance, it is a full-stack web framework with a very
opinionated lead developer. There are plenty of those. But what has made
Laravel stand out and send a little splinter into my brain that I cannot
remove for reasons I cannot explain?
In a word: marketing.
As a info-product person, I can spot cohesive marketing efforts from a
kilometer away. Taylor and his crew have put a lot of work into crafting a
unified message. That message? Laravel is a framework for people who care
about what the insides of their applications look like. Like the website
says: "The PHP framework for web artisans".
Laravel has done an excellent job of positioning themselves as a very
desirable choice if you want to build web applications using PHP. But it
is still, in many ways, just another framework. But marketing and presenting
a consistent message do matter.
Now, people do know my opinions on frameworks -- they all suck, and they all
suck in different ways. The trick is finding a framework where you can push
all the suck away into a deep, dark corner and build the thing you're trying
For the most part, much of what Laravel is doing is familiar to anyone that
has built applications using multiple frameworks like I have. There is very
little new out there in pseudo-MVC land. Laravel appears to be good at
what it says it is, which is actually refreshing given the hyperbole you can
find surrounding other web frameworks.
There is one point of contention I have with Laravel -- some of the naming
conventions that have causes numerous Twitter flame wars and blog posts.
I speak, of course, about facades.
Before you get all twisty and annoyed with me, I am not here to rehash the
argument about whether or not Taylor was right to call something that does not
fit the old design-pattern-driven label of facades by that name. That is not
the point of this entire argument. Taylor has patiently explained it to many
people. Including me in a very nice set of emails.
My concerns lie with making sure that the focus is on good coding habits, and
not shortcuts that lead to sloppy code bases and late nights when your little
minimum viable poopshow actually gets some traction and you have to figure
out how to make it webscale.
Is Laravel promoting good overall programming practices? I don't think it's
doing a terrible job at it, there are only so many paradigms that you can
follow when building web applications. I have noticed that there has been
a great attempt to be consistent across how Laravel chooses to do things.
Still, the facade thing is a warning to remain vigilant and do your research
into what everyone else calls something. Common vocabulary is critical when
it comes time to solve difficult problems.
Consistency matters because it allows you to recognize patterns, which leads
to learning how to group common functionality together to reduce code, make
tests easier (yes, Laravel has a very large commitment to making it's code
easy testable), and providing clarity when reading code written by others.
As a fan of creating task-specific frameworks using components and libraries
to build my applications, Laravel is not my thing. If you decide to check
it out, I highly recommend checking out the wide range of Laravel books
available at Leanpub (https://leanpub.com) and also throw some money
at Laracasts (https://laracasts.com) to see some high-quality screen casts.
In three weeks I will be in Chicgo for php|tek 2014 doing a testing tutorial and talking about why we, as developers, have such a hard time actually doing testing. I hope to see some of you there.
Look for another newsletter in two weeks!