Adam Wathan is a Laravel developer and podcaster by profession. He has contributed to a number of open source Laravel projects on GitHub. Adam is also known for introducing Test driven Laravel application. Beside development, he also has a podcast at Full Stack radio, in which he talks about how developers could build great software products. In this interview, Adam talks about Laravel development and the workflows he follow for pro level development.
Let’s start the Interview,
Cloudways: Hi Adam, Thanks for taking out the time for this interview. Briefly, can you tell us about yourself and your motivations for becoming such an exceptional programmer?
Ans: Sure! I got interested in building websites when I was 10 or 11 years old, and it didn’t take long before I wanted to do something like handle a form submission, which couldn’t be done without learning some sort of server side language.
PHP was the most prevalent option (for a long time as a teen, I didn’t even know you could use other languages!) so that’s what I started learning. I learned just enough to do what I needed at the time but didn’t get into programming at a deeper level until I decided to go to college for software engineering.
That’s where I started learning about things like object-oriented design, and really became passionate about writing well-designed software. I remember becoming obsessed with books like “Agile Principles, Patterns, and Practices in C#” by Uncle Bob, and “Refactoring: Improving the Design of Existing Code” by Martin Fowler.
Cloudways: Adam, you have done a lot of your work in Laravel. Can you tell us something exciting about your Laravel projects. What is “Test Driven Laravel” Project?
Ans: I’ve been working with Laravel more or less full time for around 4 years now, and have used it for a ton of different projects. The biggest personal project I have used it on though have been Nitpick CI which is a SaaS business I run.
“Test-Driven Laravel” is a course I launched recently where we build a pretty sophisticated Laravel application from start to finish using test-driven development. That means the tests are always written before the code, and we use the test failures to help us implement each feature.
Cloudways: PHP’s popularity had taken a hit recently. But with the release of PHP 7, things are looking better. In your opinion, will PHP be replaced in coming years or will it be the core programming language for the open source community?
Ans: I don’t think PHP is going away anytime soon. It has got a massive user base, and like you said the language and the surrounding ecosystem is better than ever and continues to get better every day. It has its flaws, but I think because of frameworks like Laravel, we’re going to see more and more interesting new businesses choose PHP for their platform as against something like Rails.
Cloudways: Can you elaborate how Nitpick works? What flow did Nitpick adoptes to point out the poor standards and code in PHP?
Ans: In every team I’ve worked with, it’s always been really easy for pull request comments to degenerate into nitpicking about code style. Instead of focusing on giving feedback to help improve the design of a solution, the reviewer would get caught up in looking for little superficial things to fix.
Nitpick is a tool for automatically pointing out PSR-2 style violations during code reviews, so that the developers on your team can focus on the bigger picture.
Cloudways: Workflows play a major part in a developer’s life. What are the tools and services that you use in your development workflows?
Ans: Sure! Here’s some of my favorites:
- 27″ 5K iMac for 99% of my work
- 13″ Retina MacBook Pro, for when I need to work on the go
- Sublime Text 3 for all development work
- Sequel Pro for working with MySQL databases
- Airmail 3 for email
- Todoist to keep track of what I need to get done
- iTerm 3 with ZSH as my terminal
- GitHub for all my repository hosting
- Laravel Forge for provisioning servers
- Envoyer.io for zero down time deployments
Cloudways: Beside coding and projects, you also work on Podcasting. Can you give us some advice about making a podcast more successful?
Ans: I think there’s two important things to focus on to help make a podcast successful.
- Be interesting and provide useful insights. I try to do this by finding really interesting guests who have a lot of wisdom to share, and having very specific, practical questions to ask them that leave my audience with new ideas they can apply in their work right away.
- Be consistent. You aren’t going to have 10,000 people listen to your first episode, but if you continue to put out new content on a regular basis, your audience will grow. It’s important to pick a schedule and stick to it, so that people can fit your podcast into their regular routine. For example, I know that the Giant Robots podcast comes out every Monday, and I don’t know when I realized this, but I subconsciously expect to start my week with that podcast every single week. If you can become part of someone’s routine, you’ll have a listener for life.
Cloudways: Mentors play a vital role in career development. Who were your mentors in the PHP world. Who would you recommend to follow within the PHP community?
Ans: The most important personal mentor I’ve had was Grant Lovell, my boss at my first programming job. Aside from that, most of my inspiration actually comes from developers outside of the PHP community. I like learning about what people are doing in other communities and figuring out how to apply those principles in PHP.
Some of my programming heroes:
- David Heinemeier Hansson, the creator of Ruby on Rails
- Kent Beck, author of Extreme Programming Explained and Test-Driven Development by Example
- Sandi Metz, author of Practical Object Oriented Design in Ruby
- Martin Fowler, author of Refactoring and Patterns of Enterprise Application Architecture
- Michael Feathers, author of Working Effectively with Legacy Code
- José Valim, creator of Elixir
Cloudways: Adam, what best practices and tools you will recommend to follow in coding practices with current PHP frameworks. Can you recommend our readers some resources to learn Laravel?
Ans: For learning Laravel, I think Jeffrey Way’s Laracasts is a fantastic resource, if you enjoy learning through screencasts, and Matt Stauffer’s new book Laravel: Up and Running is the most comprehensive resource you’ll find, if you prefer to read.
In terms of general programming advice and best practices, I think the most important thing you can do is get really good at the fundamentals, and don’t get caught up thinking the latest pattern-of-the-week is going to solve all of your problems.
Never blindly follow a programming principle or “law” unless you really understand the purpose of that rule, and what problem it’s aiming to solve. Too many developers get stuck on applying the rules for the sake of the rules, and it often leads to poorly designed code.
Cloudways: Enough technical questions :). Let’s talk about life! How do you spend your time when you are not working? What are your hobbies?
Ans: When I’m not programming, I spend a lot of time with my wife Katharine and our dog Winnie. Aside from that, I also train for competitive powerlifting, and try to play guitar for a few hours a week to keep up my chops!
Cloudways: Just to acknowledge our readers, can you please send us an images of what your workstation and office looks like 🙂
Ans: Sure! (it’s not always this clean…)
Cloudways: Adam, What do you think about managed hosting solutions such as Cloudways. It provides an optimized PHP stack with Laravel and other features that help developers kickstart their web projects?
Ans: I haven’t used Cloudways myself, but I’m a huge fan of any product that tries to help developers focus on launching their next idea instead of wasting time on server configuration.