Intro: Hey everybody. Welcome to episode 95 of How I Built It. Today I’m talking to Mark Zahra, who among other things recently released the EDD Bookings plugin for Easy Digital Downloads. Now we’ll get to just about everything he does in a minute, but I am excited to talk to him about this brand new plugin. It’s something that I thought of doing myself back when I was teaching multiple classes at the University of Scranton. When I was on campus to help manage a fluid schedule for my own office hours, I deemed that project was maybe a little over my head for the amount of time that I had. It’s very cool to see that it’s come to fruition a few years later. So, we’ll get to all of that in a minute. I do want to tell you about the show’s sponsors. Today it’s brought to you by Pantheon and the Techmeme Ride Home podcast. You’ll hear about both of them later in the show. I also want to mention one more time, the HowIBuilt.it/shop. We have T-shirts available there for your purchase and enjoyment, we also have a mug. The T-shirts come in a bunch of different colors and sizes, and there is both a men’s and women’s cut. Definitely check those out if you’d like, over at HowIBuilt.it/shop. That’s everything for me at the top of the show, you’ll hear about our sponsors later on. Check out our T-shirts. Without further ado, on with the show. Joe Casabona: Hey everybody. Welcome to another episode of How I Built It, the podcast that asks, “How did you build that?” Today, my guest is Mark Zahra of EDD Bookings. Mark, how are you? Mark Zahra: I’m good Joe, how are you? Joe: I am fantastic. Just saying EDD Bookings is kind of underselling you. You’re the host of Mastermind.fm, and you do work for WP Mayor, is that right? Mark: Exactly. Mastermind.fm, WP Mayor and WP RSS Aggregator. Joe: Nice. Very nice. You have your hand in a lot of different pots, but we’re going to be talking about EDD Bookings today. Why don’t you tell us a little bit about who you are and what you do? Mark: Sure. Currently I am the project manager for the company that runs all the projects you mentioned. With EDD Bookings I’ve been the project manager for a year and a half now. Basically EDD Bookings is a premium third-party add-on for Easy Digital Downloads, an e-commerce plugin for WordPress, and it adds a an appointment booking solution to your WordPress site. You can accept appointment bookings from clients, either via a booking wizard so they can make bookings on your website. Or you can even accept bookings in person via e-mail, on the phone, or whatever it is. And you can create bookings manually within the system. Joe: Wow, that’s fantastic. I thought several years ago when I first started teaching, and I had to maintain office hours, of building something like this for my students where they could book office hours. I wish that this existed 10 years ago. It did not exist 10 years ago, right? Mark: No. It started around three years ago, 2015. Joe: Gotcha. Yeah. So as I thought about that problem I’m like, “This is a big problem to solve in the limited amount of time that I have.” But it’s very cool to see that it has been developed and it works with EDD. There is a free version of easy Digital Downloads, right? Mark: Yeah, exactly. It’s a free version, so they have their own premium add-ons and they’ve just released a few different packages of a lot of those add-ons. And there’s third party add-ons all over the place as well. Joe: Fantastic. So, let’s dive right into this because this is very interesting to me. Like I said, I’ve actually thought about this problem before. What kind of research did you do as you started? First of all, who came up with the idea, and what research was done around developing the plugin? Mark: It started in mid-2015, it was [Jean][inaudible] from WP Mayor, who is the founder of our company. He needed a booking solution for himself. He didn’t find anything which was easier to integrate than what he currently already had, and since we’ve been using EDD for a few years he thought, “We have the team to do it, why not develop an add-on of our own and create a simple bookings plugin?” That word “simple” came back to bite us. We created the first version, I wasn’t even involved at that time yet, it was Miguel who still works on the project today as well. And they created a simpler version, it was not really researched or anything, it was more what was needed at the time. A few months later I came in and released a version to which had a few changes and a few improvements, but still based on the old code base. Around the end of 2016 we realized we were hitting a wall because of the code base and because of the lack of research before, we couldn’t add certain features that we wanted to add and we couldn’t grow the plugin. So at that stage we decided to rethink everything, I did a few months of research myself. A few weeks, a few months. From there we decided to rewrite and create a brand new version, which has been in the works for about a year now, and were currently in beta about to launch. Joe: Awesome. That’s really interesting to me. Essentially, [Jean][inaudible] was scratching his own itch. That is a very common story, on this podcast at least. But you did some research as you were gearing up for some new features. What did that look like? You had a product and you were like, “Let me just rethink this product from the ground up”? Mark: It came in a few different parts. At first we looked at our existing customer base, which wasn’t so big but at least it gave us a base to start off of. We contacted those users and tried to figure out what pain points there were facing, why they even chose EDD Bookings over other bookings plugins which already existed and had more features. So we were seeing the positives and negatives and what we needed to cater for. Apart from that, we had blog posts on WP Mayor which helped out a lot, which had a lot of feedback on appointment bookings plugins. We had around 400 comments on one post which was brilliant to go through, and understand over the years what pain points there were. That was great. And apart from that I did my own research looking through existing blog posts and articles on the web, both for WordPress booking plugins and for online solutions away from WordPress. Then we actually looked at the products themselves. We took WordPress plugins and tried those out, we bought a few of those, we tried online solutions during the demos, and basically tried to understand what they did right and what they did wrong, and what their clients were saying about it. We actually looked at reviews, comments, support, forums of each one trying to understand where we can do things better than anyone else. Joe: That’s fantastic. So you didn’t just want to build a clone of one of your competitors, you actually wanted to based on customer feedback and the things that you liked and didn’t like, build something possibly better. I use Calendly for bookings currently. Is that one that you looked at? Mark: We looked at Calendly for certain aspects of it, but it’s not exactly what we were aiming to do. Certain solutions we looked at certain aspects of them rather than the entire solution as a whole. Break: Today’s episode is brought to you by Pantheon. WordPress 5.0 and the new editor Gutenberg are coming. Are you prepared? Do you want to learn about the changes in advance? Pantheon has gathered resources to help you prepare, including webinars and tutorials. Pantheon also has made it easy and free to try Gutenberg with your site before the official launch. Visit Pantheon.io/Gutenberg. Let them know that How I Built It sent you. Now, back to the show. Joe: What other WordPress plugins are out there that do similar things? Mark: There’s different ones and they will cater to different things. In the beginning of our research we looked into which field of bookings we were going into. Whether it’s appointment, hotel reservations, things like that. So we’re looking at different plugins. There’s a fee for reservations, a fee for appointments, there’s tickets. I remember Leadership Bridge Press, there is a WordPress appointment bookings plugin, and I think [inaudible] as well. There’s WooCommerce Bookings which there’s a few versions of. There’s the official, there’s one of [Tai-Chi]. We looked across free and premium plugins all over the place. Joe: Gotcha. That’s really interesting, what you said. You wanted to look at what type of bookings you want to get into. Kind of calling back to what you said earlier about having a “simple” booking solution. It sounds like one might not exist. Mark: There are free versions and free plugins out there which you’d think are simple but then they’re very limited. Some of them, for instance, only allow you to set appointments that are 15, 30, 45 or 60 minutes long and that’s it. It might help you out if you’re in that market and that’s what you need. Go ahead, it’s free, and why not. But if you’re looking for something a little more complex then you need something better. Joe: Yeah. If I’m running, let’s say, a barber shop maybe a 30-minute haircut is fine. But a shave and a haircut might take an hour and a half or something like that. So already I’ve grown beyond what is freely available. Mark: Yes. Joe: Awesome. You mentioned that you read comments and talked to your customers, did you talk to contemporaries? Are you part of a Mastermind group where you got feedback from people that are doing similar work as you? Mark: We spoke to a few different people in different fields with regards to bookings itself, it was mostly customers and users. I thought that those would give us the best feedback. We did speak to a WooCommerce developer who develops customizations for WooCommerce for different needs, and we spoke to him to understand where e-commerce was struggling in WordPress and where certain integrations would need to be thought out. For instance, with resources and staff locations, it’s always a bit of a struggle with e-commerce to handle all of those and when you introduce bookings and different available days and everything, it gets complex. So he pointed out a few areas to us where it can get complex and what we can do. We spoke, obviously it was [Jean] who was helping us out the whole time from the business side of things, mostly. Even pointing out areas where you might overlook something, so while you’re actually in the zone of all of this you might miss certain things that you’re looking at every day. Having a fresh set of eyes was brilliant, so [Jean] was the kind of guy I would bring in from time to time and ask questions. We had others who we spoke to about marketing or branding, or anything along those lines. So, actually thinking about the name and thinking about the content, and even the wording within the plugin itself. There’s many WordPress plugins out there in the element dashboard. There’s typos, there’s wrong sentence structures all over the place. Joe: Or even just generic copy. Things that don’t really inspire the user to do whatever it is you want them to do. Mark: Exactly. So we tried to find people who could help us out with those. We also had [inaudible] who joined us to think out a few things. He’s [inaudible] at Mastermind.fm. He is the kind of guy who can help you out to take a simple sentence and make it more attractive. Joe: That’s fantastic. It sounds like you talked to a lot of people to attack this from all sides. And we’re recording this in the summer of 2018, you said the process started in sometime in 2017. So, a lot of work went into re-imagining this plugin. Mark: Yeah. It’s actually gone through a few before even getting to development, it went through a few different stages and a few different versions, sort of thing. In the beginning we were re-thinking of doing it a certain way. They realized we were very similar to what we had before, so we’re still going to get stuck, so we started from scratch and started over the complete process. We also had the opportunity of having the EDD team help us themselves in certain areas. Pippin was always open to answering our questions, and kind more as well as helping out with understanding even the direction of EDD, with now EDD 3.0 about to come out soon. That comes into play as well, because you are developing for one version but you are then going to switch to a new version in a few months. Joe: Yeah, absolutely. That’s a professional developer move right there. You know that your plugin relies on– your extension, I guess, is the official nomenclature for EDD. Your extension relies on another plugin or product, and you want to make sure that all of this work isn’t for naught once the new version comes out shortly after. That’s great. Mark: Yeah. We’ve had customers actually ask us now while we’re in beta, “What’s going to happen when 3.0 comes out? Is it going to be useful or not?” So we’re working with EDD to make sure that doesn’t happen. Joe: That’s fantastic. Very cool to hear. For the listeners, there’s a lot of stuff in there to parse out. I think that was one of the most comprehensive answers I’ve gotten to, “Who did you talk to?” And there’s a lot of really good information there. But we’re about at the halfway point here, so let’s get to the title question which is, how did you build it? It’s currently in beta so I’m sure there is probably still some active development going on. But from the project management side, how did you put the project together? If you’re familiar with any of the development processes, what did those look like? Mark: It started off in the beginning mostly research, we were documenting most things on Confluence which is a tool from Atlassian. I have been using those for a while. [inaudible] as well. Once development started, we switched to GitHub. Most of our code is developed on GitHub. With regard to development, I’m a developer myself, but I do have an idea of what’s going on. Basically we tried to automate as many processes as we could along the way. Even though it takes a little longer to get through the development, it saves you time at stages that we are now and in the future. Our build process is one example. Right now, as we build alpha versions and beta versions it’s all very fast, it happens within a few minutes. So that’s saving us a lot of time and effort. The plugin has been developed in a module system, so this is something that our team stressed on from the beginning. With [Anton] and Miguel who started out as tooling developers that keep the plugin organized and structured. We gave a lot of importance to other principles as well, coding standards. So, from the solid principle to the principle of ones that nobody wants. Basically, not having duplicate code and not having redundant things within the plugin. These are all things with which we struggled with in the past and different plugins, and we learned from those lessons and try to apply them here. Joe: That’s fantastic. As somebody with a software engineering background it makes me very happy to hear those ideas coming to WordPress. I think a lot of WordPress developers have been self-taught, and over the last few years we’ve been going through a maturation. We’ve been maturing as developers, and have been automating things, doing more testing, and looking at things from a software architecture standpoint instead of just throwing out code that works. Mark: Exactly. The two developers we started off with, [Anton] and Miguel, they don’t have a WordPress development background as such. They both studied certain types of development and worked with certain types of development. So they’re trying to bring those into WordPress and they’re trying to improve things. Like, unit testing for example is something which we did as much as we could. In the beginning it was hard for me to understand, as a software developer, what the benefit is. But as you go along then you start to realize the time you’ve saved and the struggles you’ve saved for the future. Joe: Yeah, absolutely. If something you developed on day one isn’t touched again and breaks and something from day 20 breaks it, you got to go back and you could have a domino effect. Unit testing can prevent that. Mark: Exactly. And also make sure to keep things extensible, and reusable. Taking the booking wizard for example. It’s used in the front end for the client to book, but there’s also a similar process in the background for the admin to make a booking. Those were previously two separate solutions, you need to maintain them in both places and you need to make changes in both places. So, what we’re doing now is making those one, and basically you reuse one in different areas and the future will have an integration with front end submissions as well. Which is an EDD add-on which allows you to create a marketplace so anyone can register on your sites and add their services from the front end. Then once again you’re reusing the same component within FES. Joe: That’s great. I love everything I’m hearing right now. It sounds like EDD Bookings has gone through a refactor in the truest form. For those not familiar with the term, you have version 1 of the software, the MVP. You want to get it up and running and out the door as quickly as possible. The re-factor is where you go through and make everything right. There may be bug fixes, but it’s really a re-architecture of the plugin. Mark: Yeah, exactly. We’re not even naming this version 3, to be honest. It’s a completely new version 0.1. Just because it’s completely different, previously it was sold on the EDD Marketplace which now no longer exists so we’re selling it ourselves. Once again, it’s completely different. You have taken a completely different approach and started from scratch. Break: This episode is brought to you by the Techmeme Ride Home podcast. You may have heard of Techmeme.com, which is a great tech news site that you can check multiple times a day. Techmeme Ride Home distills all the great content from Techmeme.com into daily 15-20 minute long episodes. You get top stories, posts, tweets and conversations every day around 5:00PM Eastern. It’s like NPR’s marketplace, but for tech news. The show is hosted by Brian McCullough who also hosts the internet history podcast. To listen, you can use your favorite podcast app to search for Ride Home and then subscribe. Get your tech news daily from the Techmeme Ride Home podcast today. Joe: The last question I have regarding how you built it is managing the team. I suspect you have a remote team of developers, possibly in multiple different time zones. What’s it like managing that team? Mark: It’s been a bit of a struggle in the beginning to get used to, because not everyone was necessarily used to working remotely. Miguel and [inaudible] have been with us for a while on the WPRS [inaudible] projects, so they were used to the way things worked. Currently for day-to-day chatting we use Slack, Skype for video of course whenever we need them. We document everything in Confluence, GitHub, Bitbucket, whatever is needed at the time. Over time we’ve introduced different people to the project. We hired Danny Watchorn, who is an Irish UI design expert who helped us come up with the UI and different ideas for the user experience. He was in Ireland and the idea was to have someone with a similar time zone. Previously we had hired a Canadian designer, [Sedra], and she helped us out for a few weeks. But the time zone difference was a struggle, there were I don’t know how many hours difference and it wasn’t easy. I would stay up late to be at her morning, for example, and we’d just have an hour of discussion but we never could work together. Joe: Right. Was she on the west coast of Canada? Mark: Trust me, I can’t remember. It was quite a difference. Joe: Just because I’m on the East Coast of the United States and it looks like it’s still daylight for both of us if I’m– Mark: Yeah, it’s 5:20 here. Joe: So, it’s about a six hour difference for us in Eastern Daylight Time. I suspect that she was probably on the West Coast where it was closer to a 10 hour difference or something. Mark: Yeah, it was something like nine hours, or something like that. Joe: And that’s rough. If you don’t have a big enough team, you’ll have somebody isolated, or somebody has to work really odd hours. That’s really interesting and it’s a problem a lot more companies are experiencing, because a lot more people are starting to work remotely. Mark: Yeah, and when we were hiring new developers then we were looking for a JS developer for a while. We worked with a company called Coding Ninjas to find someone. We had a couple of developers from the Ukraine join us, and from somewhere else I can’t remember, they only joined for a short amount of time because it didn’t work out. Eventually I found the developer we have now, [Ramon] who has been a brilliant addition to the team as well. And it’s great to have him in Ukraine because there’s a 1 hour difference, so he starts work at 10:00 AM and we start at 9:00 AM, everyone finishes roughly the same time. If we need to work late there’s no big difference. So that’s worked out. And then support, we have [inaudible] who’s in the Philippines. There is a time zone difference but it works. He’s a brilliant guy and he structures his day in a different way. When you work remotely and you work the way we do with a flexible schedule, you can make amendments. Everyone can work at whatever time is comfortable for them as long as it doesn’t compromise someone else. And for him, it’s worked great, because he can work evenings which comes roughly two hour mornings, or even for our customers makes a difference. Because most of the customers for Aggregator are American, so it works with their time zone, and support it worked out to have someone different from where we are right now. Joe: Absolutely. I was talking to Joe Howard from WPE Buffs about this very thing, and he tried to have a good time zone coverage so that he can offer what’s essentially 24/7 support without having somebody stateside having to stay up all night. And it sounds like you’ve got some pretty good coverage there, between you and, what was the support fellow’s name? Rent? Mark: [Rentz]. Joe: [Rentz], yeah. So, that’s great. That’s a really good tip for a lot of people to take away as well. We are coming up on time and I do have a couple of questions, and these can be related. We talked a lot about the transformations from maybe the very first version of EDD Bookings to now, and you’re currently in a beta, so what are your plans for the immediate future of EDD Bookings? Since you just are reimagining this now. What’s your roadmap look like? Mark: The next few weeks we’ll be launching the product for sale on EDDBookings.com. After that we plan to take some time to regroup. Basically, while we work on bug fixes and support that comes in, there is going to be a few weeks of figuring out what should come next. What we’ve done right, what we have done wrong in the past, we’re trying to figure those out. Right after that we have a roadmap for new features that are going to be added and they range from Google Calendar integration to front end submissions integration, which I mentioned earlier, for marketplaces. There is the introduction of staff and locations, and any other resource which we might need. There is different pricing options that are coming in with variable pricing, group pricing, group bookings. Some of these are planned, some of them are mentioned on our website on the roadmap section, and we’ll be keeping everyone up to date with what’s going on. Joe: That’s fantastic. I want to touch on one more thing here, because you did mention that there are different types of bookings. This is probably a sales question that you’re going to get a lot. Is EDD Bookings maybe flexible enough to be the hair salon as well as the college professor, or are you planning out different add-ons to help with each of those areas, maybe? Mark: Currently, we don’t have plans for add-ons. The idea is that the plugin will be a whole plugin which can cater for different needs. As it is right now it can be used by a consultant, it can be used for lessons, it can be used for doctor’s appointments. Anything that comes up with appointments, basically. We’ve built a very flexible availability set up. Each service actually has its own calendar very similar to Google Calendar, where you can click and add the availability, the exclusions, whatever you need so you can repeat for a period of time. Repeat weekly, whatever it is. The catering for different needs is a focus on appointment bookings, so it’s not going into tickets or reservations or anything like that. We’ve seen people already on our [inaudible] before, basically discuss ways with us that they can use it for different scenarios away from appointments. So, you can make use of it that way, redeveloping it in a way. It’s very developer-friendly so anyone can go in and customize, and we have different modules. You can add a new module for separate customization. Eventually we might see it be used in ways we don’t even imagine. Joe: That’s fantastic. I’m very excited to take a look at the beta, especially after this conversation. I have a few ideas for how I can use it, and how it could possibly save me money since I am paying for Calendly. So, awesome. I want to end with my favorite question which is, do you have any trade secrets for us? Mark: Such as what? Joe: Any good advice that you would like to impart on the listeners, I guess, is really what it is. I’m not asking you to give away your secret sauce. Mark: I think something which we’ve stressed on in the past and that I keep stressing on is build a good product, build a great product, build a great team around it and plan for support. If you build the best product around but you are not going to support it well, you’re going to struggle. Make sure you put the focus on that, train your team, and get the resources ready. Joe: Awesome. That’s great advice. I can’t add anything more to that. Mark thanks for joining me today. Where can people find you? Mark: Thanks. People can find us on EDDBookings.com, on Twitter as well @EDDBookings. Other than that it’s WPMayor.com and WPRSSAggregator.com. Joe: Awesome. Thanks so much for your time today, I really appreciate it. Mark: Thanks for having me, Joe. Outro: So, Mark and I are in a very similar situation where we’re both doing a lot of different things, and he seems to be handling it really well. I love the advice that he offers and the tools that he talks about when it comes to project management and managing a group of developers, because most of us maybe are developers or maybe business owners, but no matter what project management is an important part of that. So, I really enjoyed that and a bunch of advice that he offered about support and things like that. You just listened to the end of the show, so you know what he just talked about. Instead, what I’m going to do aside from thanking Mark once again, is thank our sponsors Pantheon and TechMeme’s Ride Home podcast. Definitely check both of those out, they are free resources for you. Head over and visit them both and let them know How I Built It sent you. We deeply appreciate their support for the show. The question of the week for you is, how do you manage your projects? Do you use a project management tool? Is e-mail or Google Docs something that is integral to your business, do you work with a team of people or are you by yourself? Let’s just narrow it down to one question of the week, which is how do you manage your projects? Let me know on Twitter @jcasabona or e-mail me at Joe@HowIBuilt.it. You can also join the Facebook community over at HowIBuilt.it/Facebook. I’ll ask the question over there too, and you’ll have the opportunity to discuss it with other listeners. I want to build a strong community for this podcast and Facebook is the place to do it. Don’t forget to check out our new T-shirts and mugs over at HowIBuilt.it/shop. And as always, for all the show notes head over to HowIBuilt.it/95. If you like the show, head over to Apple podcast and leave us a rating and review. It is helping people discover us, we’ve been consistently in the top 30 podcasts for tech on Apple Podcast and I wouldn’t be able to do that without you the listeners, and the folks who are leaving ratings and reviews. Thanks so much. Until next time, get out there and build something.