Contempt of PHP

As a developer advocate, I visit many technical conferences covering all kinds of communities including those within PHP and those beyond it. A few months ago, I was in the audience for a keynote at a big conference in London where the keynote speaker expressed the astonishment he had felt earlier in the week upon realising that a very successful ecommerce platform was made from *gasp* PHP.

This kind of contempt for PHP is something that I hear fairly often when I am out and about in the wider tech scene. While most web developers have touched PHP at some point (PHP runs > 80% of the web, it’s not exactly niche), it seems like most of them did so about ten years ago (or the code they worked on was created with the approach that was common in PHP about ten years ago, which comes to the same thing). As an industry we need to get better about not criticising things we know nothing about or haven’t checked in with the current versions of. Modern PHP is secure, performant and has all the features you’d expect from a modern language including OOP features and data types – it’s ideal for meeting the demands of modern web applications of all kinds. Getting criticised for things that might have been true a decade ago doesn’t reflect the true nature of PHP today, and I was more surprised than perhaps I should have been that a person keynoting a decent conference didn’t know better or at least check their facts.

This is a call to the PHP community to change the world. We must spread the word beyond the boundaries of our own communities. If each of us wrote a blog post or visited a user group to share information about the current state of the technology, we could make a difference. We must make it easier for others to learn about our tools and to use them in their own projects. Much has changed in our world and everyone should know that uninformed contempt is not appropriate.

I could end this article here, and I’m sure many people won’t read any further. For those still with me, it gets a bit more difficult from here…

PHP deserves this contempt.

Contempt begins at home and for PHP, it begins within our user groups, conferences, blog posts. Every time we poke fun at a framework or project that isn’t the one we use, whose features and community we haven’t been following recently: that contempt sets the tone for our whole community and for those looking in from outside. I have been around in the PHP community and at events for PHP-related stuff (Laravel, WordPress, Joomla, Drupal, CakePHP and the rest) for a decade and we cannot expect the respect of other communities until we respect ourselves. So let’s take the words I wrote above and revisit them in a way that will make a meaningful difference.

This is a call to the PHP community to change the world. We must spread the word within the boundaries of our own communities. If each of us read a blog post or visited a user group to learn information about the current state of the technology, we could make a difference. We must take the time to learn about other tools and to use them in our own projects. Much has changed across all the communities and we all know that uninformed contempt is not appropriate.

Think about how you refer to “other” technologies and communities. PHP is widely (and in my opinion wrongly) looked down on and there’s plenty we can do to represent our own community to the wider world, certainly. However let’s begin by having more respect, or at least informed disagreement, within and between our communities. For 2017 my challenge to you is to get out of your existing bubble, meet a community or read a post of a technology that you wouldn’t normally mix with, and reflect on whether things are necessarily as bad as (other) people claim.

Thank you…

Today I want to say thank you to two people who changed my life; two people without whom I wouldn’t be the person I am today and without whom you wouldn’t be reading this blog.

 

41e629489-32785881 I’ll start with Gero, who I started my studies at university with. After a short time there, we both ended up doing IT stuff for the student body; setting up computers and such stuff.

However, after our first attempts at the intermediate exams I took some time off, and he started studying something else. But, during my time off, he one day asked me whether I’d like to do some web-dev work for a university department.

Up to that point I had worked with FileMaker and 4D, and also dabbled with FoxPro (yes Cal, me to ūüėČ). I’d made some static websites as well. But my work with dynamic websites ended with my first encounter with Perl.

But he was convinced that I could do it. So, I bought myself a book on MySQL and that PHP-thingy he told me about. And on the 1st of August, 2001, I started doing web development with PHP and MySQL.

Besides my studies, I did all the things you shouldn’t do. I created my own Framework. I kept in my small bubble. And I only slowly¬†started to realize that there must be others out there like me.

However, with time, I subscribed to the German PHP Mailing list and even had a brief encounter with an English Newsgroup. It was a great time ‚Äď even though the product I was trying to create never launched.

And then 3 years later I graduated and went looking for a job. As a direct result of all the things I’d experimented with during university I got one. Actually, it’s the one I’m still doing!

I wasn’t employed for programming though, but soon they realized I could. So I started doing PHP again; a small fix for the intranet here, an interface to edit stuff there.

And slowly I went from the person fixing XPress-Layouts to the person that did programming and fixing XPress-Layouts. I ended up becoming the person doing programming, fixing XPress-Layouts ‚Äď even managing development in the department.

 

darren And during that time my second friend, Darren, appeared. He was hired in our web development department (which I wasn’t ‚Äď and still am not ‚Äď part of) to bring in and adopt more modern methods.

One day he organized a workshop with Sebastian Bergmann where he invited me to participate in. That was my first encounter with modern development practices in PHP.

From what I recall, I was the only one who understood what was going on. The tools that Sebastian showed us were awesome, and helped me improve a lot of code I had recently created.

After that workshop I started testing, I set up Jenkins and Selenium-Tests. I even used it on a daily basis in my development work.

And then one day Darren invited me to a usergroup meetup at the university. I felt a bit strange between all those really knowledgeable people talking about IoC and stuff the likes of which I hadn’t heard of before. But, they explained it to me, and that was awesome.

One meetup followed another. And then one Day Darren asked whether I’d like to step up and help him organize the meetup. I did, and it was great. Well, actually Darren did most of the work, or reminded me what to do. But it was still great.

Then one day he said he’d step back! And there we were. Christian and I on our own. But it was great! We wanted the show to go on! So we did! And from there on the small user group prospered and grew.

And then one Day Darren again came around and asked me whether I’d like to go to a BarCamp he was organizing. So I said yes. And ‚Äď BarCamp rule #1 ‚ÄstI had to do a talk. Me! Talk! In front of people! People I didn’t know! People that for sure knew much more than myself!

But it’s the rule. So I did it. And I still remember Talking about Zend_Form in front of Kore Nordmann and feeling like a complete idiot.

But I did it. And I realized that I actually was the one person in the room that knew the most about Zend_Form (OK, it was a small room!). I didn’t know everything. But I knew more than anyone else.

So, thank you Gero and thank you Darren for believing in me and pushing me beyond my limits. Without you I would never have started with PHP, and I would never have had an introduction to the PHP community.

Without you both I would never have met all the awesome people I’ve met. Without you two I’d never have been able to find people and to write about a community I am thankful to be a part of.

Thank You

24 Days Later…

I should begin that I really love the Christmas-calendar-like concept of “24 days in December”, thank you Andreas for doing this again! I’d also like to warn you that I share a passion for zombie-apocalypse movies, hence the twist in the title this contribution bears.

My initial idea was to put up a quick summary of what I love about the PHP community. As I was trying hard to think of what I like best, I realized that it is impossible to find anything I don’t like about it. That’s because I carry a very particular germ in my veins, giving me the PHPever!

Yes, I do believe the PHP community is extremely contagious and that’s what I love the best about it. Just look at the people behind it: A great generous fun-loving crowd that’s getting bigger and bigger by the hour!

wurst_con_600

(Left to right: Michelangelo van Dam, Milan Popovińá, DuŇ°an Lukińá, Mihail Irintchev at Wurstcon after TrueNorthPHP 2016)

The rapid outbreak is aided by several factors:

  1. It is airborne (like sound/human voice): Whenever people meet to talk about it they usually get all the innocent first-timers sick in minutes. And all these UG meetings and conferences people organize all year round just make the whole situation pandemic!
  2. It causes the release of dopamine and other good stuff in your brain that make you feel extra happy with what you are doing. Like eating chocolate but without the whole calories-counting overhead.
  3. Unlike other contagious pathogens, it spreads over TCP/IP as well!

Clinical Case Study:

The real story behind the start of our local UG (Bulgaria PHP) is that I went to a conference overseas three years ago, not expecting at all what I am going to bring back home with me. I met Michelangelo van Dam (@dragonbe) who managed to turn me into the patient-zero case for my local outbreak that started 24 days later

Bad thing about the PHPever is that unlike regular fever, it does not make you want to stay home and lay in bed. On the contrary, it would drive you to meet other people at public places that you eventually end up contaminating. This social behaviour adds up to how serious the whole situation becomes given enough time. 24 months later (to be precise), with a good number of UG meetings behind us and an even better number of new friends we made along the way, our little community was even able to put up a conference that people remember with warm feelings. 36 months after day zero we did it again even better! We contributed in enlarging the PHPamily, which produced a chocolate-on-steroids kind of dopamine wave in our brains.

bgphp16_600

(Jeremy Mikola doing a keynote about the great people of the PHP community at Bulgaria PHP 2016)

I thank God for all the wonderful people I met along the way, including Andreas Heigl, who has taken the business of spreading the infection really large-scale!

Warning:

So, you have been officially warned: If you are new to this whole PHP community thing, and there is no user group around you, there is a great chance that by reading this you’ve already caught the germ (over TCP/IP). The next 24 days may turn out to be just enough incubation period for you to start a local outbreak.

Godspeed, patient Zero!

Ask a good question

One benefit of communities is that there are very generous people who are willing to answer my questions. These wonderful people take the time to explain things to me and I try to to pay it forward by answering questions that are put to me.

I have realised that I am much more likely to answer some questions than others and am going to share with you factors that I think will make it much more likely that you’re questions will be answered.

Do your research

If you are going to ask for help, please spend some time doing your own research. Google and Stack Overflow are fantastic resources and will probably help you. You may even get enough pointers to solve your problem and then you can get on with your day.

When you ask a question, I expect you to show your research. Tell us what you have already tried and why it didn’t work or didn’t do what you expected. This will save everyone time as we’ll know what not to suggest.

Ask in public

I’m much more likely to answer a question on Stack Overflow, a mailing list or forum than I am a personal email. This is for two reasons. Firstly if I answer a question in public, then that answer is available for others to find when doing their own research in the future. This means that my answer has much more reach and benefits more people. Also, if my answer isn’t fully complete or there are some edge cases that I hadn’t considered, then others can weigh in with their experience and we end up with a much better answer. This is fantastic as no one knows everything, least of all me!

Asking your question

If your question looks like it’s your homework question then I won’t answer it. If your question looks like you haven’t even bothered to do minimal research, then I’m not motivated to help you. If you’re aggressive or negative towards the technology in question, then I’m going to skip over it too.

To get me to spend time on your question, make it as specific as you can and make it easy to understand. Provide background information on what you are trying to do so that I have the context. Provide a code sample that shows what you’re doing. Tell me what the outcome of your code is and if there’s an error message, provide it word-for-word. If the error message includes a line number, tell me which line that is in your sample code. Finally, make sure you explain what you expect to happen if it was working correctly. Sometimes the problem is with the expectation and not with the code.

Handling answers

When someone answers your question, there are a few niceties you should remember. Firstly, it’s possible that the answerer has misunderstood your question. If that happens, be gracious; it could have been that your question wasn’t as clear as you thought or it could simply be that the answerer misread. Never be aggressive, scornful or belittle the answerer when this happens; it will shut down the conversation and the chances are that no one else will join in to answer your question.

Even if you are sure that the suggestion will not help, try it out before replying. You may be surprised. If it doesn’t work then you can now explain what happened when you tried it and if a different error occurred, you may be on the path to the solution.

Finally

Finally, say thank you. Show appreciation for the time and effort that other people have put into helping you solve your problem. Also, pay it forward. If you come across a question that you can answer, do so and make someone’s day.

echo “The (12 * 2) Days in December 2016 Kickoff”;

What an awesome year to be apart of PHP!

It has been an honor to meet¬†such amazing¬†people in our¬†community. I’m blown away by the wealth of knowledge and experience some of our pillars of the community have. Due to learning from all of you out there who so freely give their expertise, so many others like me were¬†able to step their¬†game up.

Andreas & Josh

Andreas and Josh hanging at ZendCon.

I’ve learned so much this year about new¬†tools¬†and¬†libraries like Terraform, Groovy, & Docker. They have¬†been¬†pivotal in improving my new¬†development workflows. It has been overwhelming at times¬†but I always love the challenge of solving hard problems. Now as a 10 year veteran of software development, my¬†biggest piece of advise is “Ask“. I think most people would be pleasantly surprised¬†at the response you’ll receive. You will save yourself so much time by just asking questions and reaching out.¬†We are all here to help¬†each other and I feel you can learn from a novice or an expert. So don’t ever feel like you can’t teach someone else cause you’re “too new”. There are plenty of things I learn while¬†helping anyone out. Most importantly, by reading the docs, talking to¬†the right people, and understanding the code, you too can be a “Rockstar Developer”. However, I wasn’t always like this …

elephpants
The office zoo occupied by my 3 ElePHPants.

In the beginning of my software development career, I made the mistake of¬†coding in an “vacuum” (Solo or on a very small team). Never reaching out to others for guidance or¬†exploring someone else’s code. This is where getting someone else’s point of view can be eyeopening in figuring out new ways of doing things you didn’t think about. Heck, even in college I never knew there were local user groups of people just¬†wanting to learn more and teach others. Had I known these existed back then, I probably would’ve been going all the time.

While I was working solo in my “echo chamber”, I wrote my own frameworks instead of using one the few that existed back then ( CodeIgniter at the time was one I looked at and decided it looked too hard for me. Everyone’s made this mistake, right? ūüėõ ). With this type of mentality, you’ll corner yourself real quick. Learn from other peoples mistakes and use open source libraries built by some very nice people. Eventually you hopefully learn as I did that leveraging open source and the¬†community is your best path to¬†solving complex technical problems. Once you do that, you’ve graduated to Rockstar status in my opinion.

Personally for me, I feel like I learn the best when pushed to preform. Deadlines anyone? After ZendCon was the Money 20/20 Hackathon and that was also a huge learning experience when you only have 24 hours to build something. I went with a mentor of mine (Adam Englander) who has¬†an awesome post about the experience which led us to getting mentioned in Forbes. I highly encourage die hard developers/designers/entrepreneurs to do a hackathon. You’ll learn the value of rapid prototyping real quick (thanks Laravel).

stickers

I’ve given out about 400 of these stickers for our UG so far.

PHP Vegas had it’s 2nd annual meetup at ZendCon¬†and it was so great to see how one tweet filled both speaker spots in under 24 hours. Two people I didn’t even meet¬†before halfway around the world wanted to share at the meetup. They did fantastic talks and just like last year, this¬†meetup was our biggest of the year reaching¬†50-60 attendees. We are really fortunate we have such awesome people willing to go out of their way just to teach others for free and great sponsors like Zend, PHPNW Con, TekSystems, and so many others that support us. I continue to try and expand the users’ group here in Las Vegas and really believe the most successful users groups out there do a great job getting the new guys up to speed. Getting more “workshop” nights and tutorial talks is one of our goals for next year among other things like recording the meetups. My goal of starting a podcast in Q1 is driven by my passion to share¬†my interests with the world and continue some of these great conversions happening on current podcasts like PHP Round Table, Voices of the ElePHPant, and many others.

Meeting people in communities like Zend, WordPress, Symfony, Drupal, Joomla, Laravel, FIG, and so many others has shown¬†me how open and receptive the PHP¬†community truly is. So if you’ve never been to a meetup, this next year make it a point to attend a meetup, teach someone something new and share! Get involved in¬†the online conversations on topics that hit home for you. Even if it’s just fixing documentation, contribute to open source! Becoming apart of the community is as easy as introducing yourself. My new years resolution is continue to meet more people, learn more, and push myself to¬†be the best possible dev I can be.

Thank you again for everyones support and lets keep the community strong.

Happy holidays!