PHP Advent Calendar Day 12
Today's entry is provided by Ed Finkler.
- Ed Finkler
- Ed Finkler is the Web and Security Archive Administrator for CERIAS at Purdue University. As a member of the PHP Security Consortium, he is the project lead on the PhpSecInfo and Inspekt security tools. He is also the creator of Spaz, an AIR-based Twitter client that won Best HTML Community App in the Adobe AIR Developer Derby.
- Lafayette, Indiana
Admitting ignorance is scary; for most of us, it's embarrassing. We fear ridicule and never want to seem stupid. But, this perspective is ridiculous, because we all possess great gaps in our knowledge of the world and how it works. You're almost certain to know more about some topics and less about others than the average person.
Every time I have my car serviced, I'm reminded of this, because I know very little about the subject. I don't know what questions to ask, the right way to ask them, or the right nomenclature. Rather than barrel ahead and make assumptions, I do two things:
I ask questions. "Can you explain what the carburetor is?" I might not get the right answer, but I usually come away with a better understanding of what's going on, which helps me feel a little less like an idiot.
I make sure I express what I need. "I have to be somewhere in an hour. Should I get a ride, or will the work be done in time?" I'm much more likely to get satisfactory service when I make it clear what I need.
With a topic we know more about, like web app development, it's even easier to make assumptions. It's also scarier to admit our assumptions and question them, because we're doing it in front of our peers. "They might discover my ignorance!"
So, the people who are willing to go out on a limb and test their assumptions have a great deal of respect from me, because they are almost inevitably the people who are confident in their abilities and don't care much about what other people think of them. They're interested in truly studying a subject and understanding it better.
Some classic assumptions made by many PHP developers include:
PHP is the best programming language for web applications.
Your application will fail if you don't use a full-stack MVC framework.
Frameworks slow down development.
Caching will solve your performance problems.
Python, Perl, and Ruby are inferior to PHP.
Object-oriented programming is superior.
Object-oriented programming is slow and needlessly complex.
I know I've been guilty of making these types of assumptions dozens of times, and as a consequence, I've often been unable to see the value in other approaches. I've missed out on valuable new ideas and interesting, effective techniques. Assuming, rather than knowing, closes off possibilities to us, preventing us from making the most effective choices we can.
One of the best ways I've found to challenge my assumptions is to dive in and learn about many topics. When I go to conferences, I've almost always found that the most interesting, inspiring talks are the ones on technologies or subjects I've not previously explored. For example, when I go to OSCON, I find a lot of value in attending talks in the Python and Ruby tracks. I almost always come away with a better understanding of the topic and gain new ideas to apply to my PHP-based work.
So, are you a CakePHP user? Try making an application with CodeIgniter. Are you a long-time Smarty user? Give plain PHP templating a test-run. Been programming in PHP for nearly a decade? Go through a Ruby tutorial. You'll be a better developer for it.