About This Interview
This is the #36th
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..
In this edition I talk with Maarten Balliauw who is the technical evangelist at Jetbrains (the php ide PHPStorm is one its product you can recall). @maartenballiauw is of those few programmers who is indulged closely with both PHP and .NET worlds – meaning this interview will also have questions on both worlds. I now invite you to learn from his experience and get to know his personality.
And Now The Interview…
>> Please tell us a bit about yourself
My name is Maarten Balliauw. I currently work as a Technical Evangelist with JetBrains, promoting and teaching people about all our .NET tools as well as PHP tools such as PhpStorm. In the past years I’ve been active in both the .NET ecosystem and PHP ecosystem as I like both platforms a lot and they can both learn from each other.
>> How you started with PHP
My first lines of PHP were coded in college. It was the time web hosting and web applications were taking off and as a student, it was a low-cost programming language to start with. I founded my own company as well, doing mostly PHP hosting and PHP development. After college I decided I wanted to do something else and sold the company, but kept doing PHP on the side as it had been a few wonderful years learning the language from using superglobals and deciding against it after a while, building my own frameworks and so on.
>> Your LAMP stack comprises.. ?
I’m a WIMP guy. My primary operating system is Windows which comes with IIS as a web server. PHP runs perfectly on both, so I use them together.
>> How do you find PHP now as compared to when you first started
PHP as a language has matured very nicely. Things that I missed from doing C# such as namespaces, closures and generators are now all in the language and looking at the roadmap, it is a perfect dynamic language which has all dynamic features that made PHP what it is and a number of static language features that allow for better structuring, testability and static checks to ensure you are not creating bad code.
PHP as a platform and the communities that have evolved around it are just massive. There are so many communities around PHP, around specific frameworks or application servers that there is a lot of knowledge to gain out there.
>> Based on your experience, what are the good and bad parts of PHP
The good parts? Its dynamic features. The bad parts? Its dynamic features. Allow me to explain.
The dynamic nature of PHP makes it incredibly easy to learn the language, yet because of its dynamic nature there aren’t many language features that force you into writing proper code. One has to keep learning, keep reading blog posts, go to conferences and use PHP in the wild to learn all the do’s and don’ts. Did I say the dynamic nature is bad? Absolutely not! It provides a quick learning curve and once you know how to do things, you will appreciate the dynamic features even more.
>> What would be the Top advice to a PHP beginner
The best advice I could give is learn from others. Whether that’s through blog posts, forums, conferences or anything else. We all have had to learn the language and the platform, we’ve all made mistakes and found out how to do those things better. Most people writing and talking about PHP want to share those stories, share how to not fall into the same trap they fell in.
>> To someone who wants to become a better PHP developer..?
My advice would be the same. Go out there, talk about what your experiences and issues are, someone will probably be able to help you and coach you.
>> The best PHP book you’ve read
I enjoyed Pro PHP Security (Apress). It’s a book that covers nearly all pitfalls and tiny little security holes in a PHP application which make your application subject to attacks or abuse. It’s very PHP specific (although cross-site scripting attacks and so on are things that can happen on any platform), and a recommended read which will make you question how you build your applications every time you read it.
>> A PHP blog or resource you highly recommend
My favourite PHP site is www.phpdeveloper.org. It’s too much work to read all blog posts out there and filter noise from signal. If someone does that for you, like phpdeveloper.org, it saves you some hours each day and gives you all the info you need.
>> The IDE that you use
PhpStorm.
Yes, I work for JetBrains, but I have been using it before as well. It grew from being yet another PHP IDE back on version 2 to an IDE that is very powerful to use and comes with a lot of code quality analyzers, refactorings, debugging support, Composer integration and so on. If you want to use an IDE for PHP development this is probably the best choice.
>> How do you debug your PHP code?
With XDebug and PhpStorm. Although if it’s something small, I tend to quickly craft an echo or var_dump in my code.
>> A PHP framework you use and would recommend
Well, I’ve been a long-time fan of Zend Framework and it’s still a very good one.
That said, Symfony has been one I’ve been watching closely and like very much as well.
I would recommend looking at both of them, they are both very good, solid, have an active developer community behind them, lots of books and lots of documentation out there. Speaking of Symfony, they have extracted a micro-framework out of it focusing on HTTP requests and responses, Silex. I like it to quickly craft REST API’s.
>> A unit test framework you recommend using?
PHPUnit, no doubt. It’s been a long-term member of the PHP developer tool-belt and is very mature in terms of features and stability. From writing a simple unit test to one that uses mocking and stubs, PHPUnit supports it all.
>> A CMS that you think is worthwhile
When I really want to quickly set up a website, I tend to lean to WordPress. It has a wide variety of plugins (if someone else built it already, I tend to not build it myself), its structure is pretty simple and can be learned really fast.
>> Do you recommend using database layers and ORM? If yes, what database “framework” you would recommend?
Working with Zend Framework, I’ve been using the database objects and abstractions in there a lot. On the Symfony side, Doctrine is a fun one to work with. Both are pretty solid and allow you to work with the set of classes you want to work with: the domain.
I hate having to think relational as code is typically expressed in objects that have references whereas a database has “link” tables, for example in many-to-many relationships. I always forget to query some things, I dislike having to think about doing a join over tables. These two ORMs do a lot of the heavy lifting for me. Can you forget about relational databases? No, as understanding them will help optimizing the things an ORM does. But I would recommend using an ORM as it helps speed up your coding and brings a formal way of working into your projects.
>> One PHP library/Project you really appreciate
Having done a lot of reporting, invoice generation and so on in the past, I’ve liked the project I started in 2007 a lot, PHPExcel (www.phpexcel.net). I don’t work on it anymore apart from some advice every now and then, but it’s probably the most feature-complete library out there that can be used for reporting, calculating spreadsheet formulas, convert between file formats and so on.
>> One function that you like (or which you tend to use frequently)
Var_dump() must be one I’ve used a lot in the past. Phpinfo() is another nice one which gives all the info I need about the server I am developing on or deploying to.
But the function I like the most is the search function on PHP.net. Just navigate to www.php.net/ucfirst and you’ll get the function reference, comments, examples of use and so on.
Maarten Balliauw & Jetbrains
>> You are a technical evangelist at Jetbrains – could you please share with us what this means and what comprise your responsibilities?
It’s a dream job for someone who likes to share things. My work consists of early testing of our products, writing blog posts on these products, creating written and video tutorials, speaking at conferences, meeting people at conferences and gathering feedback, …
>> Tell us a bit about Jetbrains and its relationship with The PHP Community
JetBrains is a company that makes tools to help developers work smarter. We have a range of products for Java, .NET, Ruby, Python, Objective-C, Android Development and of course PHP. There are also some tools like TeamCity and YouTrack that provide features for all these platforms as well. The main thing we want to do is make you more productive and learn while on the job. For example, PHPStorm will analyze your code and tell you if there are unused variables, if you are referencing a file that does not exist using require_once, if you are suppressing errors with the silence operator (@) it will tell you it’s probably not the best thing to do.
Since I started at JetBrains we are trying to do a webinar each month on how you can work with PhpStorm but also on how to do specific things in the best possible way. For example we had a webinar on unit testing and how to write unit tests, what to test and what not.
>> What’s your opinion about PHPStorm IDE? Is it the ultimate baby as far as a PHP IDE is concerned?
A number of years back I tried PhpStorm 2 and my feelings about it back then were sort of mixed. Yes, it provided a lot of features on paper but it looked like an airplane cockpit that had Java written all over it. I think my current boss will remember me sending him that exact same feedback J Good thing is it evolves quickly and it’s a really nice IDE to work with. It takes a while to get to know all the things in there but it pays if you do take some time to learn about all these features. It really does make you work smarter and faster. And helping people discovering those features is part of what I try to do by blogging at http://blog.jetbrains.com/phpstorm.
>> What is the secret behind producing something as elegant, solid and developer-friendly IDE?
The secret is probably being a developer yourself. Developers at JetBrains that build the tools also use the tools. The PhpStorm team builds PhpStorm using IntelliJ IDEA which is the platform on which PhpStorm has been built, for example.
Maarten Balliauw & Microsoft technologies
>> When we say Microsoft is now “into The PHP World” and “engaging the PHP community” – what does that mean? To what extent is Microsoft engaging with PHP?
Microsoft is making PHP a first-class language on Windows. They have a full-time contributor to the PHP sources and have been able to push a lot of performance and stability optimizations into the code. Want to work with SQL Server or are you forced to doing that by the customer IT department where you are working? No problem: there are now fully supported and stable drivers available for PHP. Remember where Java once said “write once, run anywhere?”. By having these contributions from Microsoft I think PHP is becoming that exact thing: write PHP once and run it everywhere you have a PHP runtime.
>> Tell us a bit about Windows Azure and how it can be of benefit to PHP Devs?
Where should I start! The Windows Azure platform is a set of services. There are a couple of ways to host your application, ranging from VM’s that run Linux or Windows over cloud services that manage themselves to a Heroku-like platform called Windows Azure Web Sites. There are services for storing data, database services, authentication and web service integration features, … It’s a nice platform and you can build anything on it, often making use of the services provided that provide a lot of functionality out of the box. If you would write an Android app… would you code a backend REST API in PHP to support it? What if Microsoft had Mobile Services where you can write your backend code as well, but all the heavy lifting in hosting it, scaling it and putting sources on GitHub is already done? They even support unified push notifications, making it possible to send ush notifications to all mobile platforms.
Closing Out With Maarten..
>> One PHP person that you admire and what strikes you about him/her
My fellow Belgian, Michelangelo van Dam. He’s probably the one guy in the community that has contacts with everyone else in the community. If you need specialised knowledge or just a highly enthusiast person who wants to move the entire community forwards, he’s your go-to guy.
www.phpbenlux.eu if you’re in Belgium, Luxemburg or the Netherlands.
>> Which was the worst programming mistake you did?
Not using a debugger and testing my code by putting a return true; in a function that authenticated a user. With any password, you could login for a few seconds before I realized that code had gone to production. Never going to happen again!
Another one was pushing my password for Gmail to a GitHub repository.
>> Things that you’ve learned from being part of The PHP Community
There is often a lot of religious talk on the Internet: Windows versus Linux, PHP versus C# versus Java. In essence, we’re all doing the same thing. All developers I have met so far are passionate about what they do (and that passion sometimes shows a lot of enthusiasm about a specific operating system or language), but in general we all want the same thing. Working with technology and making our customers and users work smarter. We all want our peers to get better at what they do and share knowledge and insights. Developer communities, not only PHP communities, are great ways of knowing that there are a lot of like-minded people out there.
>> If you could change one thing with PHP, that would be…?
Taking a time machine to the past and making sure that all string functions would have consistent parameter ordering!
>> The day you realised “You’ve made it to the A-List PHP arena” ?
I’m not sure I would put myself in that A-list or even if that A-list exists at all. Some day you just realize that the things you are doing and the days you’ve spent searching for a solution to a problem should be shared. That you want others to avoid having to spend 3 days looking for something that has been solved by someone out there. I know I’ve had those days where I wanted to throw my laptop out of the window, hoping it would be run over by a truck when it hits the ground. Being able to find a detailed blog post or a session by Googling around and making that problem vanish is the best thing that can happen.