Recently Phil Sturgeon blogged on the tendency in the PHP world to create redundant packages and reinvent the wheel. Matthias Noback retorted with some arguments in favor of such tendencies. But neither of them tried to find the reasons for this happening.
Just yesterday I have watched a talk by the man behind the Sphinx search engine, and he made a very interesting point as to why so many people are interested in developing search engines.
Search engine development is very appealing. It as well as game development presents the programmer with a lot of new and interesting problems to solve. Unlike web development, which is basically taking up shovel and throwing data from the database into HTML.
– Andrej Aksenov ( very loosely translated )
Now let’s delve into some psychology, let me present to you Maslow’s hierarchy of needs:
Maslow’s hierarchy of needs
The part we are interested in is the very top of the diagram, creativity and self-actualization. It’s pretty self-explanatory, each person tries to be creative and to do something, e.g. I am writing this post right now =) Sometimes I even feel that it’s not me writing PHPixie, but that it is an entity on it’s own demanding to be brought into this world.
Obviously for some people their day-to-day job may be interesting and challenging enough to fulfill this need, but sadly in PHP world the majority of developers are doing redundant things like shoveling the data from database to HTML or implementing yet another user registration form. sometimes they read blog posts of these new cool tools, continuous integration, on building opensource communities, contributing and want to be part of it. And their creative fairy pushes from inside and begs to be let out, and she won’t stop until they sit down and code something.
Now comes the second problem of the PHP world. When you want to create a library you want people to use it, a lot, you want to make it popular. But since a lot of web development is based around redundant tasks usually all the useful niches are already taken. And then you have to choose, either make something for a rather small userbase or try to create yet another router. This is how we get both yet-another-routers and strange things like Anthony’s PHP interpreter in PHP. Well there is also the third category of people that write new libraries because they really hate all existing implementations =)
The only advice I can give is to try learning other languages. Perhaps there is more place for your creativity in desktop, mobile or gaming apps.
P.S. there were a lot of artists who produced fake painting of well-known painters like Monet and then donated them to galleries for free. When caught they said that one of the reasons was to prove to the world that they were as good as those they copied.