The community of open source

When I think back to the things that have helped me in my career, one of the biggest has to be the community.

The chats during local usergroup meetings, the conference hallway track, the Slack groups. All are great ways to get to know other people in the community, learn something new, and even teach somebody else something they didn’t know.

But another way to grow as a developer is by contributing to open source. It may be unpaid work, but being part of the community can provide many benefits.

It lets you tackle something new

Often, trying out some new tech isn’t commercially viable for a day job. It can be hard to justify the cost and the time when a company needs to make money.

In 2017, I plan to get more experience in automated testing. As a member of the joind.in community, I am able to contribute to the automated tests on a real project, and a real website, with real peers. I’ll be working with other people’s code, and I will probably also learn from the other contributors.

You’re giving back

We all make use of open source software as part of our day job, so to be able to give back in some small part helps you grow. You’re not only contributing to the world we all work in, but you’re also contributing to the community. A community that you’ve made that little bit better.

You’re making friends

Among the pull requests, bug tickets, and reviewing of code, you soon start to get to know about your fellow contributors. If there’s a project Slack channel, you might find yourself talking about non-project things.

If you contribute to WordPress or Drupal, you might attend a Wordcamp or Drupalcon — or a local WordPress or Drupal usergroup. You might find yourself eating lunch with someone you’ve been talking to over Slack.

If you ask me, this is the most fruitful of benefits to contributing to open source. I don’t always find time to contribute code to open source projects: often it can be months between my pull requests. But I’m always around, in the community, in the background.

And that’s because I made some friends. Friends who have taught me, and friends who I’ve taught. Friends who I’ve shared both a feature ticket and a laugh with.

My year of open source

A few months ago, I set up a local group where once a month, people can come along and spend some time talking, drinking tea, and contributing to open source. I call it Patch:Manchester.

Next year, in 2017, I want to continue learning and growing, and I will be using open source to do that. I’ll also be using Patch:Manchester to do that.

Why don’t you do the same?

Treat Yourself to a “New” Language This Christmas

Every few months, PHP gets a major bashing from developers who prefer other languages. These jeers are often from those who treat PHP like the runt of the litter; mainly because they’ve not used it in a decade and think it’s still PHP 5.2. Alternatively, they often make fun of it because they switched to some other language and noticed it has some cool stuff.

All of those jeers – as unproductive and annoying as they are – have an element of truth to them. PHP does have plenty of faults, and other languages do have plenty of awesome things. Those other languages have plenty of faults too, and are also often missing a lot of things, but folks who use the same language most of the time grow used to its faults, and don’t notice what they’re missing.

In general, only knowing one programming language blows. It’s certainly ok and absolutely recommended to start out just learning the one, as you don’t want overload yourself learning everything at once. When you’ve got a foothold with one programming language, you should try to start picking up other languages, even if you are only dabbling with them.

I spent a decade only writing PHP before branching out into using Rails, and later ended up doing a few projects in Python and Go. When I was starting out, learning other languages seemed really hard, and in the early 2000s it was all thick books, and trial & error. Now there are educational videos and quizzes, from sites like CodeAcadamy, Treehouse, Teachable, Pluralsight, etc., which make this easier than ever before.

Learning multiple languages widens your career opportunities, makes it easier to work in a service-orientated architecture where things might not all be PHP, and helps you make sure you’re using the right tool for the job, instead of just hammering every nail with the double-claw.

One great benefit of learning multiple languages, is that you get to see how things work in other communities. Most of the time it’s not even the language itself, but the ecosystem. Sure Go has a more consistent standard library, and Ruby has a pile of lovely syntactic sugar, but what really gets my attention is the tooling other languages have.

After a fair chunk of Rails experience, I helped bring back some of the features I liked into FuelPHP and CodeIgniter. Since then those two projects have fallen by the wayside, but all of the Rails-based features that went into FuelPHP seemed to find their way into Laravel, meaning PHP had benefited greatly from Rails. Taylor Otwell himself having a strong background in ASP.NET meant some of his ideas for Laravel were fresh and different to the norm in PHP, which again, benefited PHP.

Since I started playing with Rails back in 2010, a lot of other things I liked from that framework found there way into PHP in some form. I took ideas from OmniAuth and made NinjAuth, but sadly that was FuelPHP-only and is no more. I took some ideas from their oauth 1 and 2 clients, and brought them over, but again they were FuelPHP only.

The framework specific thing got a bit annoying, so some friends and I started up The League of Extraordinary Packages, a place where these packages ideas could come, with no ties to any frameworks. A place where folks could bring new and interesting ideas, get some traction, share the responsibilities of maintenance with others, and never get stuck in a situation where they were begrudgingly looking after code they no longer used.

Other tools have been ported to PHP by other awesome developers:

The PHP community is made stronger by those who use more than just PHP. Folks who take the time to learn multiple languages can share the fruits of their knowledge with everyone, and build some really interesting stuff.

Not only that, but having experience with other languages can really help get you through those awkward “oh you’re a PHP developer?” snarky runnings. We’ve all been there; You mention at a non-PHP conference the tool you use, and folks judge you harshly and immediately. Well, one side benefit of knowing more languages, is that folks generally assume you’re smarter if you know more than “just PHP”.

The amount of times I’d say “PHP” and they’d start being patronizing, then I’d say “Oh I use the best tool for the job, and in many scenarios that’s been PHP. I often write distributed software, and PHP has the largest potential install-base. Of course I’ve plenty of experience with Go, Python, Node and Rails too.” They’ll usually change their tone substantially, but if they keep it up, follow with: “Do you mind if I ask, what’s your issue with PHP? Have you used PHP 7 at all or were you back on PHP 5 something?” Watch as they shrink back when they realize you’re not a fool.

Learning from the progress of other communities is always helpful, for yourself, and for the communities you consider yourself part of. Even if you don’t think of any awesome packages that PHP is needing, learning other languages will generally improve how you write PHP anyway.

So, go learn a another language, and make PHP better while you’re at it.

On “Finding Time”

I hated school as a kid, but learning was always a big part of my life. It wasn’t uncommon to see me with my nose in a book soaking up whatever esoteric thing I could find that day. (Seriously, I read a book on the pasteurization process in middle school. I’ve never lived on a farm but I can tell you a lot about milk.)

As an adult, I’ve found that my time gets split amongst various things like work, hobbies, and random adulting tasks such as fighting with Comcast. The result of this is that I don’t have enough time to read books and learn new things like I used to. Or at least, that’s the excuse I make for not doing the things I desire to do.

You see, I do have enough time. The issue is not that time is finite, the issue is that I prioritize other things over these goals. It’s not that I don’t want to learn new things or that the things I spend my time on are a waste of time, it’s just that I spend a lot of time on things that don’t move the needle towards my goals.

An example of this is that I “don’t have enough time” to keep my apartment spotless. It’s a goal of mine that I regularly fail at achieving. I travel a lot for work and I’m only home for 3-4 days at a time. As I’m unpacking from the last trip and re-packing for my next one, I tornado through my apartment and leave a path of unorganized destruction in my wake. As I write this, there’s an unopened box from Amazon in my living room that contains a paper shredder I ordered 6 months ago. I just “haven’t had time” to open it and start shredding papers.

Lies. All lies. I could have tackled the stack of papers 6 months ago, but I chose to go out with friends instead. I could have shredded those papers 3 months ago, but I chose to wrap up some last minute work projects. I could have shredded those papers last weekend, but I chose to fold laundry and organize my closet. That weekend I chose to binge watch Orange is the New Black again? I definitely could have taken care of those papers while that was playing in the background. None of these choices are wrong, and I’d argue that it’s important to find time to unwind and relax, but none of these choices resulted in my apartment becoming less cluttered. Organizing my closet actually made a larger mess. As I decided to do these other things, I didn’t even realize I was prioritizing them or making a choice — it just happened on its own as if I were on autopilot. The stack of papers never entered my mind as something to do instead of these other things.

How we spend our time is a choice that we make every day, but we often don’t realize we have a say in the matter. Every time something “comes up” we’re making a decision to tackle whatever it is that came up. There’s nothing wrong with these choices — you spend your time how you want to, and that’s your business. However, you should become aware of these choices and evaluate whether these choices are the best for you and your goals.

Once we start to focus on the things we spend our time on rather than the things themselves, we can start to manage our time a bit better. Suddenly, we “find time” to accomplish the things we want to accomplish. We can stop feeling like we’re spinning our wheels on all of these projects and ideas and start moving the needle in the right direction. We can start to feel like we’re getting something done.

Just as we budget our money every month (we do do that, right?), we should focus on budgeting our time. Allocate time to the things that REALLY matter (which includes leisure activities, by the way) and stop allocating time to things that don’t matter as much. For 2017, my challenge to you is to start recognizing how you spend your time and start spending time on the things that are important to you. Whether that’s family, learning new things, writing a book, or watching the entirety of the Netflix catalogue, you can always find time for your goals.

Diversity Matters in the PHP Community

As PHP Developers, we are all part of the great worldwide herd that is the PHP Community, whether we realise it or not. From developers working in large departments for big corporations; to small teams; and single, solitary developers working for tiny companies, or freelancing from home: we all have access to that Community of other PHP developers that we can call upon for help when we need it.

 

We have access to the tools and libraries that have been written by members of that Community, and that they have made freely available to help us all.

Tools such as xdebug and blackfire that help us with debugging and profiling our code; frameworks like Symfony, Laravel and Zend save us rewriting code time and again for every new project, and provide us with a stable and well-tested structure that cleanly and securely handles the basic functionality that our code needs; the myriad of libraries on github give us access to complex functionality without our having to write it ourselves; phpunit, behat, phpspec and codeception help us test it; while composer gives us a simple mechanism to pull libraries and frameworks together. Organisations like FIG help define standards that make it easier for us to develop code that integrates easily with other libraries and frameworks. All are the products of members of the PHP Community to help us become better at what we do.

 

But the PHP Community isn’t just about providing a few tools, libraries and standards… it’s about learning and sharing knowledge. And even more, it’s about providing support for each other when we need help in any way.

If we can travel to them, then PHP User Groups and Conferences are a great way of learning and sharing our knowledge, and a great way of meeting with other developers face to face to talk about work, about our experiences, about PHP (and almost any other topic, technical or otherwise); but even if we can’t travel, then NomadPHP provides a monthly online learning conference. There are PHP developers who give freely of their time for online mentoring via PHP Mentoring. And the help given within the PHP Community isn’t limited to technical and learning support, but can be called upon to assist with personal problems as well. Open Sourcing Mental Illness is a wonderful initiative that provides resources and support for those who are struggling with mental health. When one of the PHP core contributors found himself and his family homeless and living out of a caravan, they were able to reach out to the PHP Community which donated enough for them to find a new place to live. When another member of the Community found that the twins his wife was carrying were Monoamniotic-Monochorionic, and that they wouldn’t be able to afford the healthcare if he took the time off work to support her, the Community again came together to help out.

 

So the PHP Community is about far more than simply providing a few helpful utilities, or the occasional meetup… it’s like a family where so many people are willing to help each other, not simply as PHP developers, but as individuals.


 

I don’t see myself as that infamous 10x ninja rockstar developer; but I have been an active participant in the PHP Community for many years now. I’ve released a few of my own small projects and libraries as Open Source, and contributed to others. I’ve blogged occasionally, and answered a few PHP questions on StackOverflow. I started attending usergroup meetups and conferences, at first just locally, and later in other countries; then speaking at them. In doing so, I’ve met some incredible people, who are willing and happy to do so much helping others to achieve so much more. All of this has helped me improve as a developer; and while I’ll never be that 10x ninja rockstar developer, my understanding of development techniques and practises has grown, and my designs and code quality are far better now than they have ever been because I have learned so much from the members of the PHP Community.
Two of the biggest lessons that I have learned from the PHP Community are:

  • We are standing on the shoulders of giants.
    There are thousands of developers who have come before us, who have volunteered their time and efforts to make PHP and the PHP infrastructure great, and we owe them a debt.
  • Paying the debt forward.
    We can repay that debt by helping others.

Yet there is still so much more that I can (and will) learn from the Community – if you ever stop learning, it isn’t because you know everything that there is to know, it’s because you’ve given up. And I don’t just learn from the 10x ninja rockstars; because even the newest members of the Community can give me new insights and ideas, new ways of thinking about a problem or a solution, new perspectives on design or coding, new tools and libraries that I can use. That’s the beauty of such a Diverse Community.


 

It’s that Diversity which gives the PHP Community its strength: we all come from different backgrounds, with different and unique experiences that we can share. We can all learn, and we can all teach others. Yet sometimes the PHP Community doesn’t appear as Inclusive or welcoming as it should; and sometimes it seems too much like a clique of like-minded people, that can dissuade others from reaching out to join and participate.

 

Like all families, the PHP Community isn’t always happy; and while it is more Diverse than many technical communities, it is far from perfect. To many that have yet to embrace the Community, it still seems exclusive and restrictive, and limited to those who “fit”. For many, they don’t believe they could ever be a part of that Community because they are different. They look at a conference schedule, and see no role models for themselves among the speakers that might persuade them to attend. They see photographs of conference “swag” containing playboy magazine (sorry Drupal Camp Munich), and believe that the conference is just for straight men with a liking for pornography, so it’s not for them. They read a few blog posts (or hear a conference talk) that criticises WordPress or Laravel (I use both myself) or <insert other library/framework/tool here>, and feel that they can’t be a part of the PHP Community because they are a WordPress or a Laravel developer.

 

If we want to maintain or extend that Diversity which is the strength of the PHP Community, we need to show that the Community actively welcomes that Diversity.

Promoting Diversity isn’t simply a matter of putting a “welcome” sign in the Community window. We need to reach out to all those who don’t believe that they are a part of the Community, and show them that they are; and that their thoughts and ideas matter to the Community as a whole. We need to be aware of Diversity Issues and then look at how to address them. Having a “Code of Conduct” for a Community event is like posting a welcome sign; but being prepared and willing to listen and act on breaches to that CoC is a sign of commitment. Saying that your conference runs a blind review of CfP proposals is posting a welcome sign; actively seeking out minority groups and asking them to submit proposals is showing commitment to Diversity. Those are just a couple of examples that spring instantly to mind; but there are many other ways of promoting Diversity within the PHP Community, and there are many people more qualified than myself to highlight and expand on them.

 

There is no single magical solution to making the Community more inclusive and welcoming to everybody; but Diversity is Enabled by action, and is Blocked by inaction or inertia. Organisations like PHPWomen have been working proactively to promote Diversity within the PHP Community for many years. More recently, my own Enfys, the PHPDiversity Elephpant is intended to make us think more about Diversity Issues, and to remind us that we should be more Inclusive within the Community, and that means Inclusive of all PHP developers regardless of race, gender, sexual orientation, gender identity, age, nationality, disability, religion and technology. Everybody within the PHP Community deserves to have their voice heard. Enfys may only be small step, but each small step can make a big difference; and in the coming year both Enfys and I shall be looking to see what more I can actively do to Enable Diversity within the PHP Community.

So my challenge to everybody reading this for 2017 is to become an Enabler of Diversity, not a Blocker. Think about Diversity Issues; see if there is anything that you can address, and do so. If each of us takes that one small step, then we can change the PHP Community and make it more welcoming, to the betterment of us all.

 

Diversity Matters.

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 – I 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!

A good end to a first step

At the middle of November my wife and myself were speaking about the Advent calendar for the kids. And I came to realize that I missed the phpadvent/webadvent the last years. And wouldn’t it be great to have a read about something PHP-related for the first 24 Days in December? Even for those people that are not christian the time before christmas has to be a special time. And if it’s only due to the commercials and ads what to present.

So I would wait and see whether someone would arrange something.

But wait! When everyone thinks someone should do something, no-one will do anything.

Cal Evans words came into my mind: If there’s no usergroup around, you’re the leader of the new usergroup. So I decided to just try it. Ask a few people I knew of twitter whether they would like to write something about the PHP-Community at large and get that published for those first 24 Days in December.

That first step was one of the hardest parts of the whole project. Realising that “The Community” starts with myself and – even though I might not realize it – I am a vital part of it. It’s a constant give and take and this is my way to give. There is no central authority to be asked whether I am allowed to do such a thing. Just do it and the community will decide whether it’s OK or not. And You’d be surprised how often it’s more than OK!

It was still 12 Days before December 12th. So I registered the domain with one of my providers I had good relationships with and started to make a list of people I’d like to ask for contributions. I wanted to have a good mix of people showing the broad diversity of the community and the language. People from different continents, different frameworks, different usergroups, different gender, different religion, different popularity and so on.

With that set I started to look through people I knew – and if only remotely – to find at least 24 to ask. I realized I should ask a few more people in case some wouldn’t want or be able to contribute. So in the end I had a list of 33 names I wanted to contact. It was totally clear to me that this list in no way was a good resemblance of those targets I set myself, but it was the best I could do at that short notice.

The next interesting thing then was to contact those people. For most of them I found an Email-Address on the internet, others I could contact via twitter. Some I could only contact via meetups contact-form (which seems to be rather lousy as I never got a reply from them). And then I reached out to ask whether they wanted to contribute. Now there was no way back!

I actually didn’t have a complete list when I started contacting the first people. I had about 15 to 20 names and decided to start of from that and see how it goes along from there. And during the following days I found more names by checking usergroup-leaders, people that tweeted community-stuff and so on. And suddenly the list was complete.

After sending my mail I was overwhelmed by the responses!

Apart from less than a handfull of people I got replies from everyone. Sadly a few rejection but I could understand them and it made my planning much easier. Most of the replies though where along the lines of “Great Idea! How much text?/What exact topic?/You sure I’m the right person?”

Some of the people I contacted didn’t consider themselves as part of the PHP-Community and weren’t sure they “qualified” to write about the community. All of them influence their specific framework-centric community in one or another way and that in turn influences the whole PHP-Community at large. So YES, they qualify!

Fine, everything settled. I made schedule of who should contribute at what date with no real strategy behind besides – at the beginning – first in first out. The website was set as well so I created logins for the 24 remaining people, created 24 posts, assigned the authors and hoped that everything was set now. I could not have been more wrong.

Some people couldn’t make their dates due to various understandable reasons they explained well in advance to me. So I had to find someone to swap the date with. More than once I had to write an “apologies but would it be possible for you to contribute earlier”-email. And not a single time I got a negative response! It was awesome! It was like I started to learn thanks to Stefan Koopmanschap – If you ask for something, the worst thing that might happen is a “No”. But without asking you won’t get anything.

That was the easy parts. Then there have been those that made their contribution at the very last minute (or sometimes even after that). At the beginning it caused me a sleepless night when I didn’t see the contribution before I went to bed (some three hours before the post was autopublished). But after one or another encounter with that and the realisation that the earth was still turning I put that of. The worst that might happen is that the post would be published later than expected. I think that only happend twice and no one complained about it.

And then there was the 22nd of December. The contribution wasn’t in on-time. And I was still waiting. And I hadn’t heard an answer to my “short-reminder” emails I sent everyone to remind them of the date and time. And I didn’t have an ace up the sleeve. So I had to admit there would be no post today.

And again Stefan saved the day. He simply asked! And within no time I had two more contributions in my inbox and one asking what to write. Awesome! The community worked again! (And – of course: Asking!) Why hadn’t I asked instead of apologized? There is so much still to learn!

Unfortunately at the time those emails came in I was already in bed high with fever. Flu struck! Thanks to modern medicine I could find a way to manage email, convert one of those contributions into a blog-post publish and fall back to sleep. And the last two days went extremely easy from an organizing point of view.

In the end this project was an awesome experience for me. I learned a lot about the community I so much favour and about that so much fantastic words have been written during the last days. I learned that asking is easy and often rewarded. I learned that different people work differently but when they have a common goal do their best to achieve it – it might not be my way but it’s their way of doing it.

And I learned that the PHP-Community is much broader and diverse than I expected. And I learned that it will not have been the last time I asked people to write something during the end of the year.

Thank you to all those people that contributed. Thanks to all those that told me they wouldn’t have the time to contribute. And Thank You to all those spreading the word about this project and to all readers!

And as all this would have been pointless and impossible – last but not least –

Thank You Community!