“Try and leave this world a little better than you found it and when your turn comes to die, you can die happy in feeling that at any rate you have not wasted your time but have done your best.” – Lord Baden-Powell

Feature detection

Back in the day, when the browserwars were about certain programs created to Navigate or Explore The InterNet, we used to do things in something that was not yet called the frontend: we detected if a certain script was running against a certain type of browser. Scripts like this were extremely recognisable, as they were using certain booleans named isNS or isIE. Over the years, thanks to the progressive understanding of an ever-growing flock of developers, we changed this habit to the much better one of feature detection. These days were glorious, and the enlightenment was real. Little did we know that we still had to invent CSS 2, discover Zengarden, and to survive DHTML and XHTML.

In hindsight, it was in much the same way we evolved from mobile first to content first, by focusing not on the perceived, but on the actual job at hand. Personally, this kind of thinking is what I love these days about concepts like BDD or DDD – we try to actually understand the things the way they are, or at least get as close as possible to how they appear to be in the specific concepts we try to conquer, and we agree that most of the time we are only able to approximate. We challenge ourselves, and by being open and constructive, sharing knowledge and talking to each other, we improve our understanding, much like the allegory of the cave by Plato. Albeit a cube or a cilinder we see, whatever truth we understand, we let it be questioned, and we let those questions lead us to rethink everything we have ever known. We listen to people, not only to respond, but first and foremost to understand. They create opportunities for us, for free (as in beer), and they bring us challenges we might never have known without them. We embrace those, and thank these messengers, for they have brightened our days like only they could have. And we keep challenging our peers, only to be challenging ourselves.

This ever-evolving of our understanding, changing good practices for even better practices, is what seems to be driving most of the engineers and developers around me that I love to work with, and surely want to learn from. They don’t shy away from saying they don’t really understand something, but they share their trials and errors. They don’t see it as a failure, but they make an opportunity out of every single error they conceive through the years. They write long blogposts and prepare interesting talks, travel miles and miles to share their little knowledge and have an open conversation with anyone who does not like to have one. And lo and behold, we bring them our amazing comments, only to be getting even more interesting conversations ourselves.

It’s always on, this challenging of our thinking, our implementations and our code. Sometimes it even surprises us. Our community teaches us how to handle this at user groups and conferences around the world, and as we grow, we become better at it. We distance ourselves emotionally from the code we produce the moment we push it, and consider it legacy the moment we write it, because we know we can always improve. By doing so, becoming better developers is exactly what we keep doing – all day, every day. Even more, as what holds for our coding practices, also holds for our soft skills. We grow. If we talk about a new colleague, we don’t consider booleans like hasGenderX, gotEducationY, programsLanguageZ. We detect features, we test for skills. And if we miss them, we help them train. Because by training them, we train ourselves. And the PHP community keeps improving itself like that in a way many should envy us for. There’s still a lot of work to be done, but I sincerely believe we are able to do this. We should be!


It's the ability to fly that counts

Scary

Ah, the PHP community. That scary big herd of elephpants. I do not remember much from my first PHP conference. But I do remember the feeling: being lonely and scared. I was there to improve my skills, and somehow I had to meet new people, I had to be social. It was an interesting conference though, and afterwards I was – like so many – full of ideas and hope to bring better code to my glorious applications. But I only talked to a few people, and the one picture I shot those days was a picture from the second floor looking over the crowd. Peaceful. But per definition crowded. I still long for those moments alone every single conference, silent moments in which I can keep to myself. By now however, that’s mostly to be able to go back into the crowd recharged. I still consider talking to people some necessary evil, but it comes with such nice benefits.

It was scary to see how many of those people around me already knew each other. And for that reason alone the PHP community will always be terrifying to jump into. Especially if you are bad with names, terrible on smalltalk or if you keep thinking you have nothing to contribute technically. I felt completely lost the first time. After a few years however, I started realising that what made this so terrifying, was also the reason you have to love the PHPamily. They connect. They fight. Against each other, or side by side. They use PHP each and every day, and use it to build the web, that crazy unstoppable internet, and that premise bonds them. They create and find problems, solve them, share solutions and build on each others shoulders. They call each other giants for the smallest contributions, and they call each other names for the biggest ones. They love too much. And that’s your cue: you only have to love to be welcomed.

Challenge

So it’s very easy to see how each and every one of us is important in this big jellypudding. The PHP community needs you. Even the hastiest of blogposts or the most crazy solutions. They need the challenge, we need the challenge. We have to be able to reconsider every single rejected RFC, and to redesign our PSRs. Bring the opinions over from other communities, and share their knowledge with us. Those communities will have their own ways we might want to learn from. But also learn when to listen instead of talk. Stop making waves when the water needs to calm down. And once it calmed down, throw the next stone. To splash or to skim.

Help us to stay positive. One of the most powerful things one can do is to always stay positive. Feel the beat, care about the lifesign. Acknowledging that something is done a certain way as only one way of many, is only the beginning of a journey that will never end. Find ways to improve our sets of tools and techniques on how to solve the problems we encounter, and share them. Never ever settle down on what you think might be the best way to do something – it might be, on that day, in that certain situation, with your current knowledge and understanding, but tomorrow’s another day. Take contributions to your code and style seriously, and never dismiss even the seemingly most stupid kind of ideas. Find yourself challenged to argument, constructively, on your stance, and consider anyone you might encounter with other ideas than your own an enrichment for the cause of writing the best code you can ever write.

Go for the garbage, and expose it. But make sure to be part of the team that can clear the garbage too. Never settle for the arguments, but look for the solution. Improve the quality, lift the entire world. Write tests, talk to us, love. And if you don’t know where to start, improve your code with some of the tools at phpqa.io. Make sure to thank those project managers, and wish all of them happy holidays. Gleichfalls!