How To Build a Web Development Business That Works for You

Download MP3

Eric Karkovack (00:00)
Hi everyone, and welcome to another episode of the WP Minute. I'm your host, Eric Karkovack Today, I'm joined by Ian Svoboda. Ian is a senior software engineer and web developer. He's worked with a variety of clients focusing on custom WordPress development projects. Ian, welcome to the WP Minute.

Ian Svoboda (00:22)
Hey, thanks so much for having me Eric. It's great to be here.

Eric Karkovack (00:26)
So I've seen your name around. We were talking a little bit before we started recording here. I've seen your name around the development world quite a bit. So tell me about your ⁓ history with WordPress. How did you start getting into development with it?

Ian Svoboda (00:44)
Well, that's actually a really funny story. I was working at Web.com, which has since rebranded a billion and a half times, but now they're just called Network Solutions. And I was working for the Network Solutions brand doing ⁓ e-commerce store support, like multi-channel support through chat and phone, email, all that kind of jazz for like that and this other internal platform. And I didn't know anything about coding at all when I took this job. And this guy who was on the mods team,

Eric Karkovack (00:53)
Yeah.

Ian Svoboda (01:13)
He hit something with CSS and I was like, my God, you can just like do that. Like through the dev tools, you know, it made my brain like explode. And, and so I just, learned this, this, ⁓ like some CSS HTML things, mainly for the desire to sell more like upsells with relevant recommendations. Cause I don't want to like make somebody buy something they don't need or like, I don't like selling things that don't understand. So I thought maybe if I understood it better, I could sell it. And then I ended up turning out to be pretty good at it. So they asked me to do it.

Eric Karkovack (01:19)
Ha

Ian Svoboda (01:42)
in a lower level capacity. And then eventually this dev team, an internal kind of basically an agency that they ran internally. ⁓ They had a slot and I started off just doing builds for that store platform, but then eventually they come through and like, ⁓ WordPress stuff. they had me before, actually, I forgot to mention this when I was doing the support, sometimes I would do WordPress training, but I didn't do any WordPress development. I wasn't building things with WordPress. I would just get briefed on how the thing works and then instruct somebody through it and stuff like that.

Eric Karkovack (02:03)
Okay.

Ian Svoboda (02:11)
So then I started doing work there and I had the benefit of a really good mentor in the form of my coworker Rich, who if you're watching this, thanks again, homie, much appreciated. And he was like one of those people that, you know, it was, how do I put this? Made me feel very comfortable being able to ask questions and like, how do I do this? And he helped me learn a lot of really good habits, which I think set me up for.

later things in my career. So over time, I just started doing more and more things, building WordPress. I worked at like an agency job before 10UP, this local shop called Oyova, where that was the main thing I was doing. I we did other stuff too, eventually, ⁓ like a Vue app, React apps for people. Sometimes we'd inherit projects and work on them, that kind of deal. But our tool of choice was WordPress. And then eventually I went on to work at 10UP there and just continued to.

You know, sort of evolve the game over time. And most of my builds were not like using Elementor or page builders like that. mean, sometimes we did because that was the project and that's what it called for. But most of the time it was like a custom build, usually something that involved ACF on some level. But then of course, with the advent of, ⁓ you know, Gutenberg, which eventually was not nearly robust enough to even bother learning. And it changed so damn much. Like there was just no.

Eric Karkovack (03:11)
Okay.

Ian Svoboda (03:33)
It didn't feel like there was any use to it. But then by the time I got the job at Ten Up, they were asking, hey, what do you know about Gutenberg? And so I made it a point to really educate myself on those things. And, they had some internal training stuff. made a contribution to the project while I was learning it, which was also pretty cool. And yeah. And then after just kind of doing that for a while, I thought to myself, it'd be cool if there was like a course, like I saw things like say Epic React by Kenzie Dodds, which is a really great course.

It's really well done. And I think aspiring to do that is horrible because they have a team of like 10 people that are involved in the creation of that. In addition to Ken just being a really good educator. But I thought to myself, like, what's like the gold standard version of that for like learning WordPress things these days? And the answer was, I'm not sure. I mean, maybe there are some stuff I thought maybe there's some stuff out there, maybe not, but I don't know what it is and nobody seems to talk about it. So why not just, you know, kind of put my own, my own spin on that.

Eric Karkovack (04:05)
Hahaha

Ian Svoboda (04:30)
instead of making it like a one-on-one thing, was about like, are things you would use in the real world, things you will actually do. Because I've done a lot of things in the real world. I've worked on projects for a small local business to a nonprofit with zero fricking budget, all the way up to like a national news outlet or like California government or all kinds of other scales and different things. And so I've kind of gotten a good sense of like what actually matters for things to know.

Eric Karkovack (04:37)
Yep.

Ian Svoboda (04:59)
I still look up a ton of stuff too. I think there's just principles and other things that I've learned over the course of my career that are worth sharing and trying to distill into educational material. And so that's kind of why I'm doing the course in the first place. But yeah, that's kind of my origin story.

Eric Karkovack (05:16)
So

you're doing, just to be clear, you're doing a course on theme development,

Ian Svoboda (05:22)
Yeah, like it's, it's kind of interesting because I had this original kind of length when I was thinking about the language of it, it was just going to be one thing with a ton of parts. But then it kind of occurred to me that some of these parts were actually kind of a course under themselves, you know, like building block themes, doing advanced block development things, doing more advanced things with the rest API, like not just consuming it, but like registering endpoints or like the finer points of modern CSS.

You know, like trying to shove all of that into just one self-contained course. It was feeling a little bit daunting and also like, how can I structure this in a way where it's not going to be Uber expensive and something that's pretty accessible to people and things like that. So I'm still trying to work out some of that, but I have a beta for the theme building block themes course that's coming out very soon. So I have some people who are going to be.

and going through and giving me some feedback and helping me kind test all of these things out. But the building block themes course is like the next piece of content that I'm gonna be outputting. And I'm pretty stoked, pretty stoked about that.

Eric Karkovack (06:28)
That's exciting. it's nice when you have that experience and you can go out there and teach other people how to do some of these things and kind of learn from the mistakes you've made. That's one of my favorite parts of my job is that I get to actually talk about all the mistakes I've made because I've made a few thousand of them and, you know, kind of help guide people toward, don't do what I did. Here's the actual good way to do something.

Ian Svoboda (06:51)
⁓ absolutely. I think that's an important point of humility for everybody, especially as you become more familiar with a given subject. You might forget that like, well, sometimes you don't know everything or maybe you go, I should just know this. Maybe I don't need to look it up. Maybe you still do. People have been doing things for a long time, still got things to look up. There's always like, it's not so big of a deal to make that mistake. It's just how do I not do that next time?

Right? What do I remember for next time? And being able to share that with people, help them close the gap faster. That's, I think that's a huge, ⁓ like value proposition for any course. Right? I can show you how to get there faster because I can tell you don't step there. Don't jump in that thing. You know what I mean? Yeah.

Eric Karkovack (07:18)
Yeah.

Yeah, I know.

Exactly. And there's no

substitute for experience. mean, that's the thing. We all have that experience. And as we go along, we learn and we've made mistakes and we can learn from them and do better. ⁓ yeah, I I know I've had a lot of guilt over the years of looking at the WordPress codex. Like, shouldn't I just know how to do this already? But there's so much to know, right? I mean, how are you supposed to, you know, we're humans. We have other things to do besides WordPress. You can't remember everything.

Ian Svoboda (08:02)
my gosh, it's so funny you bring that up, Eric, because I was just doing a job assessment for somebody, doesn't matter. And it was like a test format where it was multiple choice or fill in the blank or whatever. And it was another one of these things where they're like, okay, we're gonna record you doing this. You can't pull up any other browsers. You can't do this. You can't use browser extensions or anything and all this different stuff. And I'm just thinking like, okay, mean, you can test somebody's like,

memorization skills, right? But that doesn't mean they're automatically going to be a good like be a good at this role or actually know what to do with all that. Like, sure, I remember the name of this function offhand. God. Right? Like, what is that's not that's not actual meaningful advice. Like I've looked at or a meaningful thing to check on. Like I've done like these boot camps in the past where I didn't actually end up doing them. But like I applied for one.

Eric Karkovack (08:48)
Yeah.

Ian Svoboda (08:59)
and they had to do a test where it was like no syntax highlighting, no Google, none of this, right? All of this stuff from scratch. And it's just, it's not a real world use case. It's not real life. Real life people make mistakes. Like I built in generate blocks, this really sweet like transform tool that lets you add multiple transforms to the same element, right? And there's a ton of underlying like CSS stuff that you have to understand.

Like if you have a perspective in there, the perspective has to come before anything else and certain things have to be in certain orders and stuff. I made that tool. I still don't remember all of it by hand or like in my head. I still have to look that up. I still have to look up the order that the fricking background properties come in when you shorthand them. And it's not even a complete list of all shorthandable properties. I built a tool that does all of this where I had to know all of that, but I don't store all of that up here because I only have so much brain power, only so much room.

So it's like having this expectation for yourself that, well, if I don't know it, if I can't remember that, then I'm a bad developer. That's ridiculous, right? Any place that tests you purely based on that is, I think, making a mistake. It's very easy to BS that kind of thing. I can remember the names of things too, if I really want to. It doesn't mean I know when they should be used or what, you know what I mean.

Eric Karkovack (10:17)
yeah, yeah.

Yeah, it's something that I think we all go through it in our careers where you think, okay, I'm not a real developer because I don't remember how to do this by hand. And even with AI now, I find it's like you're going in there and you're creating something and anybody can create anything with AI, right? But you still have to have that knowledge of what you want something to do. And you have to have, you know, be able to instruct the tool on what you want it to do.

It's not just ⁓ remembering the functions or remembering, know, quick story. I, when I started in web design, I wrote everything by hand. was HTML. It was the nineties. This is what we did. Everything, every piece of, of code, there were no WYSIWYG editors at that time. So every piece of code was written, every paragraph tag, every bold tag, all that stuff. And I was railing against WYSIWYG, right? Cause I'm like, ⁓ who needs this? This is not going to help me. I.

This is for people that don't know what they're doing. And eventually you get enough volume of work and you're like, okay, I need this tool. I can't do all this by myself. I need help. And I think people go through that even with today's code, right? You have to kind of cede power to ⁓ the tool once in a while.

Ian Svoboda (11:36)
Yeah, and that's, it's just such an important, it's an important thing to get out of your own ego, right? Like, I think everybody, if you've worked on a team at some point has run across, there's a person who has, ⁓ what was the, there's somebody who coined this term, I can't remember the name of it, but they call it like, like not invented here syndrome, where if it wasn't something that we wrote, it must be bad and therefore we should write our own version of it, right?

Eric Karkovack (11:43)
Yeah.

Yes.

Ian Svoboda (12:03)
or something or like you said, like, it's a whizzy wig, it's automatically trash. But I don't know, I think that, you know, the whole premise of say AI in the first place, right, is like you said, you have an unders, I know what I want. I just want you to carry out my instructions really well. So I can like delegate the brain power and the keystrokes or whatever, but you're still doing my vision, you're executing my thing. It's like auto-complete on steroids.

That's kind of, I guess, the premise of like even a WYSIWYG editor, like the block editor. You know, people might, ⁓ it's this, that and the other. There's ways you can do quite advanced things inside the block, inside the block editor, right? But it's like, yeah, sure. I could, I could write CSS classes and I could just copy and paste them into the elements myself. But if I have a thing that knows what all the classes are that I can choose from a list and I know which ones are available, that's handy. Right? I can do inspect element.

But if I could just look at this thing and it tells me go here and I click there and it takes me, why wouldn't I do that? Right? These are all things that directly improve or like reduce the amount of time it takes you to do things as a developer. Right? And then you can spend more time like creating business value for people and thus getting paid more, which is what matters way more than like, did I handwrite all this stuff? You don't always have to. And it's, it's a, it's a trap to fall into. I mean, I think everybody has done it at some point, even.

Eric Karkovack (13:15)
Yeah.

So knowing that, how do you work with AI now? Have you adopted it in any sort of way to kind of get things done faster for your clients?

Ian Svoboda (13:36)
You know, it's funny because, and maybe I'm crazy slightly for this, but I've, I've, I've fallen out of love using like the audit, like the tab completions in the editor. The only thing I care about that for is like import statements. Like if I put a function down there, but arguably like certain IntelliSense features kind of know that stuff anyway, like through your editor. So that's maybe the one thing I use auto completions for.

Eric Karkovack (13:58)
Yeah.

Ian Svoboda (14:03)
Even semi regularly, but I don't pay for cursor anymore. So, you know, I only have a certain amount I get every month and I just I don't know I haven't missed it but Claude code has been really instrumental for a number of reasons I think it's if you're a person who's like man I don't know about this AI stuff and I want to you could it work for me Claude code is a great place to start You can take somebody's theme say your client goes. Hey, man This person made this theme somebody you don't know and we want you to look at it and tell us about it and do all

this, like you could manually go through all those files and you probably should, but you can also use something like Cloud Code pointed at that folder and say, tell me about this theme. How does this particular feature work? Like I had a client that I'm doing some kind of on and off work for and they have a plugin in the WordPress repository and a pro version and it is a very extensive code base. Lots of PHP, lots of JavaScript.

Lots of little pieces. There's really no documentation on how any of the internals work because it's largely a shop of one person, right? So like being able to use Claude to say, can you look through and just kind of give me a sense of how this works? Does it do this thing? Like I think it does. Like that's huge. It's really invaluable. I mean, you can always ask the person, but when you're on a working with a small team or whatever, it's not always easy to, get somebody to sit down with you for an hour and just point you where every single thing is in the code base. So

Eric Karkovack (15:25)
Yeah.

Ian Svoboda (15:26)
That's really helpful. Another one, is I think the most awesome use case yet is for overcoming platform shortcomings. That's a lot of coming ⁓ words that I use just there. But in any case, like Shopify, for instance, if you make a dev store with Shopify, you can't just like export all the orders and then import them to that store. You can do that with products, but you can't do it with certain things. And when you do it through orders, there's rate limits and all kinds of stuff.

Yikes. So being able to use Claude to say, write a Python script, which is a language I don't actually write that can do all this and enforce rate limiting and all of that. And I can give it a CSV and it goes, that's really cool. ⁓ I actually have found that having it do small micro project things like that, like writing a script that does a very specific thing or building like a green field project for some insane idea that I have. Those tend to be fun.

I have this one project that's pretty sweet that I need to test more, but the idea for it is that you can have a block like block.JSON. Like you can have some information about this block or it can look at your block JSON and automatically generate the code needed to create editing attributes in the sidebar for the block. So like if you had a string for a name or something, it would create a text control.

Eric Karkovack (16:46)
nice.

Ian Svoboda (16:53)
And it would just make all the code for you like it'd be like It's kind of like it's supposed to be like an npx command you can just run I I kind of worked on it a little bit and then I haven't touched it for a while But that's an example of something that I I worked with Claude code to write so I didn't just completely vibe code the whole thing I went through a pro like a planning phase and I had it step through changes where I like was Approving each one or saying no don't do that making sure it worked a certain way

stuff like that. And there's this other thing that I'm working on, which I hope I'm going to mention it now and then not forget to do it. Cause it's a really sweet idea that I run into all the time, man. I have this thing when I'm making a new project, sometimes I want to spin up posts and I want those posts to have like actual blocks, which is kind of difficult because you have to actually like have the parsed block markup in there. So if you want like paragraph, paragraph, headline image, and so on.

Eric Karkovack (17:46)
Yeah.

Ian Svoboda (17:48)
It has to be formatted a very specific way and doing that with WP CLI in the past might be easy. You can say, here's some text in a featured image, but it doesn't actually put it in as a block. puts it in as like classic content, which is terrible. know, so if you're trying to generate a bunch of posts and you want real block content, there's, have yet to find a really easy way to do that. Unless maybe there's some plugin I don't know about that. So I had this concept for a API basically, where you'd have like a URL.

Eric Karkovack (18:01)
Okay.

Ian Svoboda (18:18)
And you could say, give me random, like a random pages worth of blocks. And it would actually have formatted block. Output. So like if you're using WPCLI, you know how you can like, ⁓ if you're doing a more complex command, you can have it like fetch a featured image from pick some or some photo API or something. Same thing, but for the blocks, actual content. And then you could say, give me one that's like a landing page or one that's like a this or that. That's the idea that I had. So I'm working on that. And that's the thing that's,

Eric Karkovack (18:35)
Yeah.

Okay.

Ian Svoboda (18:48)
built with like React router and Cloudflare workers, which is a thing that I know enough about. Like I've built a remix app before, but I'm not exactly an expert in either of those things. So being able to use AI to help develop that very specific, very Greenfield project. That's a very, that's a thing that I largely care about. That's really cool. Cause I can just be here doing client work and I'm like, holy shit, that would be so useful. And then I can have somebody else. I can outsource the thinking on that and I can review it and then.

You know, that kind of thing. So I guess those are the most, the most common ways. don't ever just pointed out a project and have it one shot a feature for me. That never works. Literally ever. I've sometimes used it to vet an approach. Like, like the style indicators in generate blocks is a good example of that. I asked AI, does this even seem like something that would be possible? And it's like, yeah, it might be like this. And the answer it gave was wrong, but like,

Eric Karkovack (19:28)
Yeah.

Ian Svoboda (19:47)
It was like, yeah, you could do that. You could. And that ended up being one of my favorite things that I've made in recent times. Are you familiar with this feature that I'm talking about in Generate Blocks?

Eric Karkovack (20:00)
Actually, yeah, I am. I am a GenerateBlocks user,

Ian Svoboda (20:02)
Yeah.

So for, for someone who doesn't know, if you're in generate blocks and you know, you have all these different style settings for a given block, right. And those could come from the block styles or from a global class that you apply to the block. And what it'll do is like, say if you had a global class that applies a maximum width, if you go to the block and look at the blocks, individual styles, it'll show you that there is a maximum width applied and you can click a button and it shows you like the CSS for that.

and you can click right to where that setting, that style is actually set. That whole thing was the, it was just an idea I had while we were building the 2.0 stuff. It wasn't part of the original spec. And I was like, man, it's kind of annoying to like figure out where these styles come from. Cause you can use a nested selector, like class H1, that's not this or some crazy thing. So it's, it's, it's hard to just keep track of that. And I thought, man, if it was me and I was just developing.

doing my thing, I would inspect element. I'd go to the dev tools. I'd see the computed style and I'd see exactly where it comes from. ⁓ wait, what if we could just do that in the UI? And so that's literally what it is. And it's a hyper optimized function. Like it was, this was actually funny. asked, I did ask the AI at one point, there any way I can make this more performant? And they're like, It was like, this is about as good as it's gonna get.

Eric Karkovack (21:25)
Hahaha

Ian Svoboda (21:29)
It's very highly optimized. It does a lot of insane nerd level stuff to figure this out. CSS has a lot of quirks when you're dealing with computed styles. You can ask the browser at any time to give you like the values of all the stuff in the computed tab, which just shows you like at that exact moment, what is the styles that this thing has. like a simple example, if you're watching this and you don't know what I'm talking about, you can do this and you'll see what I mean.

Eric Karkovack (21:47)
Yeah.

Ian Svoboda (21:59)
If you have an element, say, you set it to width 50 % and then you inspect it and you go to computed styles, the width that it shows is not going to be 50%. It's going to show you like what 50 % is in pixels at that exact moment in time. It's a, it's like a resolved value and things like font sizes, grid template, columns with, I cannot remember all of them, but I would look it up. Aha. Like I was saying before, right? Like those ones all have resolved values. So if you wanted to know.

is this actually set to two Ms, right? You have to like do conversion on these things and same thing with grid template columns. Like you'd have to like figure, cause instead of doing one FR, one FR, it's like pixel values. So it's a whole thing. It was a lot of stuff to learn, but it all started as a validated idea from AI. And then I built the thing from there. Like I didn't have it just build the entire thing for me. I'm not sure that it, I'm not sure that that type of stuff is viable.

just yet when it's so, I would say cutting edge like that. Like there's no example I've ever found on the public internet of a similar thing being created. So there was no frame of reference, right? And ⁓ we had to, used like at a certain point, you know, we were using this parcel library to like parse the CSS selectors, but we already had the class name by the time this logic runs. So it's just checking.

Eric Karkovack (23:06)
Yeah.

Ian Svoboda (23:24)
Is this one of the global class names? And if so, where does it come from? You know, stuff like that. But there was no frame of reference. So I couldn't have AI just whip it up for me because there was no public example of anything like this before. So I could have maybe instructed it through writing every single piece of it, but that shit is just, that's not always faster. Right? Like I think if you have a very clearly defined idea and it's something that is relatively like

Eric Karkovack (23:28)
Yeah.

Ian Svoboda (23:53)
something it might have seen before in some shape or form, you're gonna have better luck with something like this.

Eric Karkovack (24:01)
I've never thought about it that way. If something's not really out there in the public sphere, then what is AI supposed to do with that? And I almost think it's like you've got to do it piece by piece, right? And it's, well, want to do step one is this, and then let's iterate and step two is this. And it probably would take you quite a lot of effort to get that figured out.

Ian Svoboda (24:22)
Yeah, and it's like, you know, when you're, when you're trying to determine a novel approach to something, this goes back to what you were saying before about how you want to be able to provide specific prompts, give it the context it needs to achieve something. If you don't actually know what the right answers are yourself, and there isn't a verifiable example that they could compare against, it's not going to give you any smarter answers than you would already have. Right? Like it needs to have.

Eric Karkovack (24:46)
Yeah.

Ian Svoboda (24:49)
Sometimes I have to try a thing enough times to realize that this approach is stupid and I shouldn't do that But it seems like a perfectly sound idea. So it's gonna be like you're absolutely right as They are saying right but yeah, so there it's it's definitely like it's the most useful when you have a relatively good handle on what it is you're building or you're doing a Greenfield build on something where there's like a concept for that that exists I can say

Eric Karkovack (25:03)
Well, yeah.

Ian Svoboda (25:19)
I want this API to kind of sort of work like how Pixum's works. It can look at Pixum and conclude how that works and get a sense of exactly what I mean, right? Or I want it to generate something and you can like look at this project's docs to see like what the code that's generated would be and all that. Like that's way easier than this extremely novel niche thing that only applies here.

Eric Karkovack (25:44)
Well, I want to shift a little bit to your business because, ⁓ so you're a freelance developer working kind of hired gun for different companies. I noticed one of the interesting things that you're doing these days is you have ⁓ development plans for folks to subscribe to. have two different plans, right? Different costs. And I want to know how that's working for you because so many of us

You know, we have like maintenance plans maybe where we charge a set amount of dollars a month, but you're doing this more on a, hey, you want custom development. I'm going to give you custom development. Here's how much it costs for a month of that. And here's what you get. How is that working for you so far? And what, you know, what made you decide to go that route with your business?

Ian Svoboda (26:32)
Well, I'll try to answer that in a few different parts as best I can. There's a couple of different things there. So I think that this subscription model in general, like the concept sort of for this thing was probably most popularized by the design joy guy, Brett. I don't know if you are familiar with that. He actually had a course that he did even that taught the method, which I haven't done or anything, but I have a friend.

Eric Karkovack (26:53)
Yeah.

Ian Svoboda (26:59)
kind of brought up the idea and I know this other guy whose name is Joey, shout out to Joey, who does this type of business model also. And sort of it got me thinking like, is this an offer that matters? Is this something that somebody might find value? Because that's really what it depends on, right? Is the person that I would want to buy this gonna look at this and go, that looks like a deal to me. And so the...

I guess the impetus, if that's the right word behind all this was like, nobody likes reviewing hours. Almost every client that I've had in the last few years has never actually reviewed the hours that I do. Like they don't go through it with a fine tooth comb and be like, Hey man, why'd you take three hours? Do this thing over here? Because most of them, A, don't either don't know that information in the first place because they're not actually a developer and we're not scoping every single little thing in advance or B,

they just have a sense of that from like what the invoices are and they go, well, I'm getting like really good output here and I'm happy with the out, like I'm getting quality work. It's being done in a timely fashion. This all seems fine. And that's kind of how it mostly works out anyway. And so I've kind of thought to myself, if you could take away the whole stigma of hours and how many hours does this thing take or what have you.

it sort of simplifies the whole approach and you can make it more of a partnership and a conversation. So it's like you have an expectation of I'm not going to send you five things that are really complicated and they're all going to be done tomorrow. Right. And a really big project would get broken up into these individual tasks, but it's like, we're not working on a million things at once, working on one thing at a time. And as you provide me good details on those things, then I start to do them. And it's like, it kind of rewards the client.

for being like having all their shit together. They know what the task is supposed to include. They know how it should work. Here's a way to do it. And then it allows me to just deliver on it as quickly but accurately as possible. And so that's kind of the model that I'm trying to adopt here. I've had, like, I'm not exactly a marketing expert. So I think getting this in front of the right people and refining the offer is something that I still probably could do better with, right? But ⁓ I've seen,

I had like, I basically had one person already take advantage of this. There was another client who I was going to offer this to, but they ended up going in an hourly direction anyway, which is still something that I do because I'm mainly focused on trying to, you know, find clients that are good fits that I can provide exact value for and not being like a complete stickler on it. But I like the idea of it because it's more about, am I providing you this or more in business value?

versus a certain number of hours. How do you even know how many hours is enough? Like the amount of hours it would take me to do something or you to do something is inherently different because we're not the same person. We don't have the exact same skillset. Even vaguely equivalent skillsets you don't really know. And I think most of us who've ever quoted hourly work for customers also know these are really just educated guesses. Nobody actually likes hours in the first place. That whole practice is something that was borrowed from like lawyers and doctors and stuff.

Eric Karkovack (30:08)
Yes.

Yeah.

Ian Svoboda (30:17)
Like it's not about that. If you give somebody a simple line item though, and you can say, this is $10,000. Am I getting $10,000 or more worth of value from this? Sure am fam. Then great. Then problem solved. So that's the thing that I'm hoping to accomplish with this. So I'm not just, ⁓ you know, taking forever to do things or people asking, well, how many hours is this? It's just like, is this a thing that we'll be able to do within a month or not?

is kind of a simpler way to look at it, right? Like could we build this whole site within a month? And I'll tell you, breaking this down, this is probably looking at more like two months worth of work or something in change, or maybe this, that, but you know what I mean? You can put it in more like grounded terms than just hours or having to quote up every single project separately.

Eric Karkovack (30:48)
Yeah.

Yeah, mean, hourly is really kind of a fool's game when you get to it because you have people that say, well, can you do this within three hours? Well, maybe if, you know, all the stars are aligned and I don't run into any problems and my computer doesn't crash on me and the browser works like it's supposed to and all these other things, like you kind of need like a miracle sometimes to hit that hourly rate, right? But then also you have the other end of it where

I could say as a developer, I know that I'm not going to be able to do this in three or four hours. So I'm going to put 10 hours into my estimate to give me a lot of padding. And the customers ended up paying for more than what I actually put into it. So maybe if you are putting it in a monthly term, it gives you a little bit of breathing room and you can say, okay, I have time to do this right now. I don't have to rush as much and to meet some arbitrary, you know,

and then I can also, you know, not overcharge the client for something that, you know, I'm not providing them.

Ian Svoboda (32:16)
Yeah, it's like, it's really a lot more flexible, I think. And I'm hoping that this is something that other people are going to explore. Like once I get more exposure to it and all that. you know, I think that it's basically like having an employee, except you don't have to pay them benefits and you can let them go at any time. Right? Cause you just know, it's like $6,500 times 12 months. Like that's like the annual cost. If I'm doing, if I'm thinking about it in those terms.

So it's like you could maybe hire somebody, but maybe not for as little money. And even then like, it's like you're hiring somebody, but there's a reasonable expectation of the turnaround time. And most jobs that I've had where there is a salary in the first place are not expecting you to do things that lightning fast anyway, more often than or not they're like, well, if you're getting like, you know, a small task, like a reasonable size task done like every day or every other day anyway, and a bigger thing would naturally be broken up. that's.

That's the expectation of an employee, except now for these subscriptions, like I don't have any sort of commitment terms or somebody has to do like a certain number of months or things like that. I'm trying to keep it really flexible and like provide the most value that I can to a client, not just like try to cash grab it and then do low quality work with bad tools and other stuff. know, I want people to go, yeah, this makes a ton of sense.

and it's like a no question, no brainer high value for them. And that's what the whole idea is focused on.

Eric Karkovack (33:46)
So I also think as a freelancer, I mean, you're one person, you've only got so much time. It would seem like a good way to keep your client list relatively in check. Like you're not working on 30 different projects at once and you're not necessarily getting that crazy email in the middle of the night from someone. my gosh, we need this tomorrow. You you can kind of schedule out things as we all kind of dream about doing.

Ian Svoboda (34:13)
Yeah, right? Because, you know, at the end of the day, if you're if you're not purely basing things on what I'm giving three hours here and two hours there and so on, like there's ebbs and flows. Sometimes some clients need more than than others. Right. And it allows you to keep a smaller list of focused and engaged, most importantly, engaged people. Like, I don't want to have to chase down a ton of details. But if I if I am, then you should not expect that this is all going to be done super fast.

So if you have an entire engagement that's based around, you're gonna provide me with the most accurate details upfront. I am going to complete this in as reasonable a timely manner as possible. I'm not doing like minimum SLA, like service level agreement stuff where like I'll respond to every message in an hour or, you know, join the company Slack and be susceptible to messages at any time or things like that kind of deal. But it's like you're establishing meaningful guardrails.

Eric Karkovack (35:05)
Yeah.

Ian Svoboda (35:10)
And you can always drop people, you can increase or decrease price, adjust the offer, et cetera. But I think keeping a lower client list is definitely my preference. I want to provide more personalized, considered attention, even when somebody's not paying me to do strategy. It's like the context switching of all these different projects and trying to juggle all of that, it's a lot. I definitely like the idea of working with a smaller focused list of clients who I really feel like I'm.

helping and providing a huge value to. And that's kind of what I'm trying to do or continue doing now.

Eric Karkovack (35:43)
Yeah, it's fascinating. I'd love to catch up with you eventually and see how this is going for you if it's something that maybe more developers will start doing because it seems like a lot more sanity than what we're doing now with hourly and even just trying to scope out projects and run around like a person without a head pretty much.

Ian Svoboda (36:06)
I wanna just

stay grounded in value, right? Like getting away from just hours and focusing instead on how much business value am I doing? Am I providing you, Mr. or Mrs. Client, whatever, 6,500 plus dollars a month in business value? I mean, probably if I'm doing anything that matters, and if I'm not doing things that matter, then maybe this isn't a good idea for you in the first place. I don't want somebody's money if it's a bad fit, right? I'd rather just have the right person come across this and go,

snap, that's really what I need because we only need somebody temporarily for the business season. I want to know I have somebody who's experienced and trustworthy and stuff. And yeah, I hope to continue to expand things like testimonials and other things like that too, because I got a lot of got a lot of very happy clients and I care a lot about doing a good job. I'm not a box checker and that's a big reason why I think I actually wrote that even on my on my site.

Eric Karkovack (36:45)
Yeah.

Ian Svoboda (37:04)
And just as a quick aside, by the way, did you, did you appreciate the zoo lender meme? ⁓ I was like, was like, you know what, you know what? I'm just going to do that. I'm just going to do it. Cause this is first, the first thing. Yes. Exactly.

Eric Karkovack (37:08)
I did like that, yes. We don't see enough of him these days.

Why not have fun with it? It's your site, you do what you want. So

Ian, I want to thank you for being on the WP Minute. It's been a lot of fun. Where can people find you online?

Ian Svoboda (37:30)
⁓ the best place where I post things most is going to be like X so it's X.com slash Ian slow. I a N S V O. I also have the course website, learn WP theme.dev, which I might be rebranding to learn WP dev.com soon, but either way it's. Learn WP theme dev.dev and, there's a newsletter that I'm doing these days, WordPress Wednesdays where I'm sending out like a tutorial on.

how to do something with WordPress that's developer focused. there's actual code that you might use or a plugin, like I was talking about my content area block plugin the other week. This latest one was about doing custom fonts and block themes. There's a ton of examples though, and this is all stuff that's publicly available on the site too. When you're on the newsletter, you just get access to it first and any course discounts and stuff will be coming their way first as well. So I would...

Definitely check that out if you're interested in learning more about WordPress development.

Eric Karkovack (38:34)
Awesome. Well, man, thank you so much for being a part of this. I appreciate you taking the time out to speak with us. And for everyone who's watching, listening, thanks so much for being a part of the WP Minute. We appreciate you and we hope you visit us over at the WPminute.com slash subscribe. You can get our newsletter too. You can get Ian's at his site. You can get ours as well. And you know, you get a taste of what we're providing for you every week. And you can also become a member, support our... ⁓

our content and join our Slack channel for free. Ian is in there so you can get to talk to him as well. ⁓ If you're bored with me, you can talk to Ian anytime. He'll answer right away, I think. ⁓ Thanks everyone and we'll see you next time on the WP Minute.

Ian Svoboda (39:09)
Let's go.

immediately.

How To Build a Web Development Business That Works for You
Broadcast by