PDF version of my slide deck for "PHP Without PHP" given at International PHP Conference in Berlin, Germany on May 2009
Abstract:
An obscure but ubiquitous design pattern in PHP development is known as Funky Caching. Using real architectural examples as a lens to look at this one simple PHP design pattern, we see how we can design web architectures that are "organic, democratic, and lasting."
9. Code Complete
The metaphor of Code as
construction comes from this
book…
We now know this is
fundamentally wrong…
10. Mythical Man Month
“man-month” is a term from
construction work
The premise is that man and
months are interchangeable.
This means that in order to
reach a deadline I simply add
more people to the project.
11. paritionable
with training
traning + communication
unpartitionable
20
Time to COmplete Title
First consider something like
painting a fence: everything is
15
partionable (man-month).
…add a constant time for training. 10
…add communication cost: n(n-1)/2.
5
Compare to the unpartitionable
(single man)
Adding people to a late project
makes it later! Number of People
29. PHP is “Cheap”
“A project done in Java will cost 5 times
as much, take twice as long, and be
harder to maintain than a project done
in a scripting language such as PHP or
Perl.”
—Phillip Greenspun
30. PHP is “Scalable”
“That a Java servlet performs better
than a PHP script, under optimal
conditions [has] nothing to do with
scalability. The point is can your
application continue to deliver
consistent performance as volume
increases. PHP delegates all the ‘hard
stuff’ to other systems.”
—Harry Fuecks
31. PHP is “Pragmatic”
“PHP is not about purity in CS
principles or architecture; it is about
solving the ugly web problem with an
admittedly ugly, but extremely
functional and convenient solution. If
you are looking for purity, you are in
the wrong boat. Get out now before
you get hit by a wet cat!”
—Rasmus Lerdorf
39. Design Hubris?
Frameworks (almost by definition)
Develop in the PHP community?
Take over an existing project?
Limitations of Site Operations?
Hosting? or Virtual hosting?
Business needs trump programmer
desire?
Dealt with a user request?
52. Design Patterns
Defined
“Each pattern describes a
problem which occurs over
and over again in our
environment, and then
describes the core of the
solution to that problem, in
such a way that you can use
this solution a million times
over, without ever doing it
the same way twice.”