PHP Interview With Paul Dragoonis CTO At BestBuys.com – Expand Your Connections Via Twitter, IRC & Google Plus

About This Interview

This is the #28th set of PHP Interview to help aspiring PHP developers and PHP fans alike to get inspired by listening from those PHPeople who are already highly involved into the PHP Ocean and *being there* taming the waves and surfing better than ever to make themselves an Awesome PHP Expert both in their own eyes (for self-accomplishment) and for the PHP Community.

On the other side, this is an opportunity for new PHPers to get to know their “PHP Elders. I hope you will derive as much fun to read my interviews as I’m having by interviewing those awesome PHP people.

A Small Intro..

Paul Dragoonis – CTO at BestBuys.com

In this edition I talked with Paul Dragoonis who is the CTO at BestBuys.com. He is to the PHP Community what the young talented and awesome footballer Javier Hernández aka Chicharito is to The Manchester United Football Community! With varied skill-sets and having his hand at so many aspects and projects as you will discover when you read through the interview. He is currently “Rising and Shining” with the new PHP meta framework, named PPI Framework – (stay tuned with me, I will bring you an exclusive interview on PPI soon!) The PPI Guy also brews his own Whisky, urmm.. organizes conferences under the entity named WhiskyWeb..

UPDATE: The PPI interviewed was also done here!

And Now The Interview…

>> Please tell us a bit about yourself

A little bit of history, I grew up in a house of scientists, my uncle was a computer scientist, my grandparents were experts in forensics and metallurgy. I was very close to my uncle who at the time was studying for his BSc in computer science, so there were naturally lots of books, papers and articles lying around the house so I’d sit for hours on end reading and absorbing information on a variety of scientific topics. Once I hit 5 years old we got our first computer with Windows 3.1 on it. I wrote my first computer program at the age of 6. I was loading up my favorite DOS games and needed shortcuts to run my games, I stumbled upon batch scripts and started getting into the coding side of things from there, before I knew it I was being taught Basic and C++.

That brings us to now, I’m an open source fanatic having spent the past 8 years contributing to open source software. I’m a strong all-rounder, I wear many hats, these range from software engineer, to front-end developer, to project manager and most recently: software architect and CEO/CTO.

I am a husband and father of two fantastic kids. I have lived in Glasgow, Scotland since I was born. I love outdoor sports such as football (soccer), fishing, climbing, hiking, the list goes on.

>> How you started with PHP

The year was 1999, I was 12 years old and doing lots of C programming at the time. I enjoyed playing with HTML for making static websites, writing network scanning and analysis tools that would output a HTML report at the end. It was becoming too difficult to maintain C code that would output HTML and then a friend recommended PHP to me. To cut a long story short I stumbled across PHP. It felt like I was writing C, without pointers or memory management and instantly fell in love with it. 13 years later, I’m still here and still hooked.

>> The relationship between You and The PHP Community comprises..

In the beginning before I discovered the PHP language I was an active user of IRC in open source communities. Once I discovered the freenode irc network I quickly joined the #php channel and started helping out community members with their projects. After a few years I stumbled upon #phpc (the php community room) and realised there were more people like me who enjoyed hanging out rather than just giving out technical help. I also discovered most of the core developers and website team for the php project hung out on Efnet’s #php.pecl and #php.doc channels, which exposed me to the underlying parts of PHP which was extremely interesting to me. I, then, started learning about php internals over there, met lots of cool people and in turn I contribute back and also help community members with internals development questions and advice.

That brings us to now. I have been spending my time on the php-internals, and php-webmaster mailing lists. I contribute to PHP core and a few pecl extensions when I can . I also work on the php.net website which I’m involved in building the new PHP layout, which is hosted at http://prototype.php.net. I’m also involved in the php-fig group (used to be the psr group). I’m a team member there and I represent the PPI Framework project. I enjoy getting involved in the discussions of the PSR’s that we produce. I help with the day-to-day merging of new PSR’s and pull requests that come in. I also maintain our website http://www.php-fig.org.

These days you can find me spending most of my time on the PPI Framework project hacking together components from existing frameworks like Zend Framework and Symfony2.

NOTE: I (Khayrattee) will soon bring you another exclusive interview centered solely on PPI, so stay tuned! (Sign up freely on my email list to get notified about it instantly)

>> How do you find PHP now as compared to when you first started

I think It’s much better. The exposure of the language and online materials are excellent these days, there’s a few good books have been released too. The community has also been more open and more exposed through the likes of twitter and google plus. We’ve also moved the PHP source code onto github.com (as a mirror) which is really engaging user interaction. Before that move PHP was kind of a secret black box that nobody really knew how to get involved with.

>> The good and bad parts of PHP are..

Good parts: Namespaces, Closures, Traits, SPL, the pecl extensions and the community, great documentation.

Bad parts: Static inheritance (lsb), inconsistencies in function names and parameter ordering.

>> To someone who wants to become a better PHP developer..?

Firstly, don’t lock yourself in a box, expand your connections via twitter, IRC and Google plus. You will learn alot from your peers which is only going to accelerate your learning process.

Write down the things you learn, chances are in a few months time you’re not really going to remember it. I recommend you keep an open blog and blog about things to remind yourself at a later date. As a result google will pick it up and people will come onto your blog to give feedback or ask for additional help. Now the shoe is on the other foot, you’re the teacher rather than the student, which is an ideal place to mature your mentoring skills.

Don’t let your ego get in the way, if people give you negative feedback on your code or project then take it as constructive criticism, it means your work has room for improvement and they are not saying you are incapable of making something great because you are! Persistence is always the key.

Finally the most important lesson I’ve learned is, when showing someone your project or idea, don’t ask them what they like about it, find out what they don’t like, ask multiple people the same questions and see what they say. If you know what your audience doesn’t like, you can come back to them with improvements, however, if you only ask what they like about the project, you really aren’t making much room for improvement. Be sure to pay close attention to the the parts they’re confused about, this means you will need to amend your documentation to remove that confusion.

>> A PHP blog or resource you highly recommend

I find these have great content:

>> The IDE that you use

[phpStorm @webide] – It’s by far the most all-rounded IDE I’ve used. In the past IDE’s were great at PHP stuff but sucked at front-end HTML, CSS, JS or vice versa, but phpStorm ticks all the boxes for me.

>> Your LAMP stack comprises.. ?

On localhost: I use a macbook pro, which has standard apache with PHP 5.3 or 5.4
For staging and production: I use ubuntu server with nginx/apache and PHP 5.3.

  • I use http://orchestra.io for deployment which is built on Amazon Web Services.
  • I use http://pagodabox.com for deployment which use their custom rolled LAMP stack.
  • When I have my own custom LAMP boxes I use http://www.softlayer.com/

>> How do you debug your PHP code?

var_dump(). It’s as simple as that 🙂

>> A PHP framework you use and would recommend

I recommend the [PPI framework @ppi_framework]. It allows you to be vendor-agnostic by dropping in and out components from other popular php projects like symfony or zend. Essentially the main bonus is that you’re no longer locked into an eco-system where it’s most “convenient” to implement say Zend\Router because you’re already inside a zend project and trying to get it to understand something other than Zend would be a nightmare. The same would apply to any other framework not just zend, I’m not picking them out. PPI doesn’t try to make any of its own components it just lets you mix and match the existing ones that best fit you and your project.

For me my php apps consist of the right tools for the job, rather than the most convenient tools for the job.
NOTE: I (Khayrattee) will soon bring you another exclusive interview centered solely on PPI, so stay tuned! (Sign up freely on my email list to get notified about it instantly)

>> A unit test framework you recommend using?

phpUnit

>> A CMS that you think is worthwhile

There’s a bunch of leading ones: WordPress, Silverstripe, Joomla. Each have their own distinct pros and cons and choosing one really depends on your project requirements.

>> An E-Commerce cms you recommend

I haven’t come across one yet that I have enjoyed working with. I usually roll my own.

>> Do you recommend using database layers and ORM? If yes, what database “framework” you would recommend?

I enjoy the Doctrine DBAL library. It’s an abstraction on top of PDO. We have produced the PPI\DataSource component which wraps up Doctrine DBAL into a nice base for your application Storage/Model classes to extend and inherit great functionality.

DBAL has everything you need to be productive, you have full control over the queries being executed and what parameters are being escaped. If you were using an ORM then you would not have the same level of control, and to me, that’s very important. I favor flexibility and control over nice abstraction.

>> One function that you like (or which you tend to use frequently)

preg_grep – This is actually for returning a list of array keys that match a specific regex. Not many people are aware of it, it’s kind of an overlooked function because it isn’t named accurately.

>> One PHP person that you admire and what strikes you about him/her

[Paul M Jones @pmjones]

He’s been involved in php projects and communities for some time now, he has contributed to Zend framework, done his own project Solar which in its reincarnation is now Aura. He has time to create surveys for the php-fig group, and blog about lots of interesting topics.

If you are asking yourself, “what should I be doing to convey my skills and help out the communityhe’s the guy you should watch to see how it’s done.

>> One PHP Community that you recommend

I believe the PHP community as a whole is something that I’d recommend. I don’t believe there’s one online community that’s more important than the other. As a collective, we’re extremely connected and willing to help each other, that’s what makes our community strive.

>> Are you part of any PHP User group? Could you tell a bit about it..

My city doesn’t have a PHP user group, we have a general tech group called “Techmeetup” and you can see more info about it at http://www.techmeetup.co.uk.

>> A PHP Usergroup that you appreciate and would highly recommend

OrlandoPHP user group seems to have a lot of big php community people over there, it seems very healthy and a lot of fun to be part of, it’s definitely on my todo list next time i’m in florida.

>> Which was the worst programming mistake you did?

Making the password, salt and email address part of the authentication process – so when users changed their email address they couldn’t log in anymore, duh!

>> Things that you’ve learned from being part of The PHP Community

Get stuck in. Start giving feedback and help. You’ll get it in return and be recognised for someone who’s friendly and helpful. This can go further than “who knows php better” or who has more code coverage on their projects. Helping and sharing is the key.

>> If you could change one thing with PHP, that would be…?

The amount of new OOP things being added to the language , just because it can be added and Java or C# has it doesn’t mean it’s the right fit for PHP.

>> Why you are successful and why others are not?

There is no magic sauce to success, the key ingredient is persistence and a lot of hard work.

Paul Dragoonis & BestBuys.com

>> Could you tell us a bit about BestBuys.com

BestBuys.com is an online comparison shopping platform bringing you the best of the best: the brands, the stores, the deals, with all the conveniences of the Internet — instant results, customer reviews, and intelligent like-for-like comparisons. We aggregate offers from online sources and make them searchable and indexable. BestBuys.com removes the clutter and helps shoppers focus on what is best for them using intuitive, visual shopping features. Our primary goal is to provide shoppers with the facts — stripped of any marketing influence — so that they can make quick and informed decisions.

The platform exists in over a dozen countries and is built using PPI Framework which is designed to scale: we have an AWS load balancer and an auto-scaling setup provided by the orchestra.io team. Our database backend is mysql but most of our traffic goes through Redis. We use memcached for centralised session management. PPI glues all this together very easily.

>> You are the CTO there, is that correct? Tell us about what your task comprises, how your team is structured and what are the challenges that you face?

Yes I am the CTO. My task entails building the platform, scaling the platform and making sure it’s up and running 24/7. Structure wise I do everything from the engineering to the sysadmin to the frontend development. The company hires additional engineers to help with workload when needed.

>> What are the best practice at BestBuys.com, the tools and softwares that you use to make the working ecosystem productive and comfortable

We do agile development in sprints and we use github.com for source control and trello.com for task management. We use the git flow style of feature branching which keeps code patches decoupled and easy to merge.

>> Anything else you want to add as far as BestBuys.com is concerned?

In 2013, we are focusing on developing B2B (business-to-business) solutions and becoming an independent comparison shopping engine with its own affiliate program. Everything will be built on the PPI framework.

Paul Dragoonis & Whisky Web & Conferences..

>> You are the organizer of Whisky Web – tell us what is it exactly and what it tries to do?

Whisky Web is a web conference created for the web community, by the web community. We’re trying to bring people to Scotland specifically its capital Edinburgh. Scotland has a very unique atmosphere and landscape which gives a great base for hosting conferences, especially as we’re able to host it in a real scottish medieval castle which dates back to the Romanesque period which can date back to year 1000AD. We’re passionate about creating an event that is much more than just turning up to watch some talks, but an environment to experience new things, share ideas and meet influential and interesting people.

Last year we had a whisky masterclass from Bruichladdich one of the top distilleries in scotland, they gave us a scientific walkthrough of what it takes to make whisky which was excellent considering the audience of the conference are scientists, engineers and techy people.

>> What does it take to organize such a big conference

Teamwork++;
You need a varied skillset from your team. You have to think ahead because everything must be decided in advance so you have time to prepare.

You need someone who’s good at finances and managing budgets. You need tech skills such as website creation. You need good scouts/researchers to go online and find companies to handle things such as AV/Projector hire, video recording. You have to pick excellent venues to attract delegates which is also research. You need people with creative ideas to make your conference stand out from the crowd.

>> How do you cope with selecting speakers, the objectives you set, the quality required..etc

Sometimes there are two similar talks and you have to pick one to give some diversity to the tracks, which is a very hard thing to do, you have to weigh up many factors such as that speakers experience. Since we’re a ‘web’ conference we have been unable to select talks that are around a specific technology such as Ruby or PHP since that would be bias or unfair. We asked all speakers to remove the specific technologies from their talks so that we’d be able to accept them.

>> Could you tell us about the processes involved in a ‘call for papers’

It’s relatively simple actually, the process is about asking people to submit their talks/slides. Once your call for papers deadline has ended you have to sit down as a team and decide what talks best suit your target audience.

>> The best conference you attended would be.

WhiskyWeb 2012, honestly and I’m not being biased since I’ve been to other conferences. It was really fun and exciting to create and run the conference but being part of it was really special.

>> Can you please share the good, and may be not so good moments, of being part of all the conferences you attended

Not so good moments are trying to get decent wifi coverage, and wake up in the morning after a night of socialising with other people at the conference.

Good parts are free gifts you get, the connections you make and the relationships you form with people. You also get to meet people in real like that you may have spoken to work worked with online.

>> What are the main aspects of conferences that can really help a PHP guy to get better in his progression

The main aspects are exposure to new technologies that the PHP developer would not have encountered before, this could be exposure from going to talks or from people around you talking about them. You meet people who’re above you and below you in the chain so you can get advice while at the same time give advice.

Now Do Your Part!

1) LIKE 7PHP dot COM on FaceBook – if you appreciate what I do

2) Help diffuse this interview to the PHP ecosystem – Share, tweet and spread the word to your audience ==> That would be a FREE way to thank me 😉

3) Make a comment below using the comment form – I’m sure you can at least say 1 word about this interview

{I’m thankful to your response(s)!}




Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.