Any Business Questions?

At WordCamps and WordPress meetups, I come prepared to talk code but other developers seem more interested in my thoughts on business. It helps that I went to school as a finance major and have a few startup experiences under my belt.

I’d like to do more blog posts and conference talks on business/freelancing, but not sure exactly what I should talk about.

Do you have any topics or questions you’d like covered?

Bill Erickson

Bill Erickson is the co-founder and lead developer at CultivateWP, a WordPress agency focusing on high performance sites for web publishers.

About Me
Ready to upgrade your website?

I build custom WordPress websites that look great and are easy to manage.

Let's Talk

Reader Interactions

Comments are closed. Continue the conversation with me on Twitter: @billerickson

Comments

  1. Nick Davis says

    Bill, thanks again for putting this together, I must have shared this with everyone I know, really useful.

    I wondered what your technical setup was like for developing sites, particularly client sites? For example, what software you use? How much you use things like Git in the process? If you have a local development environment etc etc

    I know there’s a million different ways to do it and probably no ‘best’ way but I’d be really interested to know more about your way of doing things.

    Thanks!

      • Nick Davis says

        Hi Annie – I just started using Git and while I’ve still got a lot to learn it’s been useful so far (and finally feel like I’m doing things ‘properly’)

        I had a lot of help in the setup though because I’m hosted with WP Engine and their support basically talked me through everything or I’d probably still be stuck now so if you’re with them I’d definitely give them a shout.

        Otherwise I’d offer to help but I’m not sure how qualified I am yet! I’d be happy to share my tiny bit of experience so far if it would though

        • Annie says

          Well my assumption from what I’ve seen so far is that it’s a collaborative effort of people sharing WordPress and other code. So I guess I’d like to know if that’s correct, or wrong, and what you use it for. Do you get pointers from others? Collaboration? Or is it more of a repository where you put code? Is there a testing environment? Those kinds of questions. I really don’t know much about it except that a lot of WordPress peeps put their code out there. No I don’t use WP Engine, at least not yet. Not cost effective. At some point hopefully it will be.

          • Nick Davis says

            Hi Annie

            I think Bill probably explains it better than I could below 🙂 but what I’ve personally been using it for really is just a way to join together a local development environment, two different computers and have a way of sending things to a production area and a staging area fairly neatly. Not any collaborative stuff as yet (though that is a possibility for me in the future)

            As Bill says it’s probably not necessary for every project (I don’t use it on the ‘tiddlers’) but I really just wanted to force myself to get an understanding of it.

            Taking a step back it might be overkill for my process right now but like I say I wanted to try it out and I do feel it has been of benefit.

            If what you’re doing is working for you right now and you’re not doing huge sites with lots of different contributors then you could probably leave it as Bill says. I still have a loooong way to go before I really understand it properly so my experience is very limited right now but hope sharing it with you has been of some help!

            Cheers,
            Nick

    • Bill Erickson says

      Here’s a brief walkthrough of how I personally build out sites:

      On my dev server I have a folder called /latest which has a standard WordPress installation with my base themes and plugins (akismet, gravity forms, debug bar, core functionality…)

      I also have a folder called /dev, and in there is a folder for each site under construction. When I’m starting a new site, I create a new folder in /dev, then copy the contents of /latest into it (so I have an up-to-date WP, theme, and plugins), and then change the table prefix to be [client-name][date]. So if my client was Google and I was starting today, the table prefix would be google03202013_ .

      I build almost all sites without version control, as the projects just aren’t big enough to justify it. I use version control on really large sites, or on ones where I’m working with multiple developers.

      Sometimes I develop locally, but not very often. I usually only dev locally if I’m planning to travel (I’m going to build a site on my flight to San Diego on Friday).

      Annie, there’s two different things you’re asking about. Git is a version control language, similar to svn and mercurial. It allows you to keep track of changes and distribute development (multiple people can work on a project simultaneously and merge their changes together).

      GitHub is a social coding website where a lot of developers share their code. It’s powered by Git, but adds a lot of extra stuff on top like a social network. GitHub makes it really easy for others to contribute to your code, which is why a lot of us developers post our code up there. All my plugins are on GitHub for development, and then when I’m ready with a new version I push it to WordPress.org (which uses svn).

      • Nick Davis says

        Bill – thanks for the insight I really appreciate you taking the time to explain – as you can probably tell I’ve been experimenting a bit recently with local development and Git so was curious to know what you do – Cheers, Nick

      • Jamie Mitchell says

        Hi Bill, hope you are well

        when you copy or clone your “latest” wp install to start a new project, do you need to give the database a new name as well, or just the prefix?

        For example, i use cpanel, and can easily “clone” a wp install through the application installer, it allows me to rename the database and table prefix.

        thanks so much

        • Bill Erickson says

          On my old development server I kept everything in the same database and so changed the table prefix.

          On my current development server (provided by Synthesis) creating a subsite also creates a new database, so I just clone the wp-content directory (wp-config.php uses the auto-generated DB credentials).

  2. John says

    Awesome post. I learned a lot from the post but also the comments. You spend a lot of time replying. Also enjoyed and learned a lot from reading your post on the defence of consultation business. I was wondering if you could point me to some resources, free or premium, on how to learn WordPress PHP.

    Thank you in advance
    John

    • Bill Erickson says

      For a book, Professional WordPress: Design and Development is the best one I know of. It might be a little advanced, but you can search online for more information on the concepts you need help with.

      Working with a framework like Genesis has a bit more of a learning curve than a standard WordPress theme, but once you get to know it you’ll be much faster at building themes. You can purchase StudioPress’ Pro Plus package is a great way to get started as you can look at the code for all of their themes and see how they implemented that design and functionality.

      • John says

        Appreciate both replies. Thank you. Will order the book and check out that website. I already have the pro package from Studiopress but thank you for suggesting it.

  3. Mike says

    Hi Bill,

    I know John just above asked about PHP, but I’m wondering if that’s the best place to start.

    I’ve used WordPress for a couple years now but if I wanted to get into it deeper and learn coding for the purpose of being able to really modify or even create themes, plugins, etc. is starting with learning PHP the best way? If so, what’s a good, as-basic-as-possible “beginner route” to start?

    Or is it better to get a grip on coding languages in general? Like a more basic coding primer?

    Hope that makes sense. Great blog, plugins and code help – really appreciate all of it.

    • Bill Erickson says

      What worked for me was to just start digging into WordPress themes. I had known HTML/CSS already, but I learned PHP through WordPress.

      Open up some theme files, see what’s in there, google, the function names to learn more about them, make changes, and see what happens.

      Also, remember to always have debug mode on. In your wp-config.php file, set this to true: define('WP_DEBUG', true); Without debug mode, when you make a mistake you’ll get a blank screen (the “white screen of death”). With debug mode, you’ll get an error message that points you to the line of the error. It makes troubleshooting so much easier.

      I recommend starting with standard WordPress themes like TwentyTen, TwentyEleven… Once you have a grasp of WordPress functions, consider looking at theme frameworks like Genesis or starter themes like _s. If you just started with Genesis, you’d have a hard time knowing what is WordPress and what is Genesis.

      • Mike says

        Thanks Bill. Good idea on the reverse engineering and particularly on the debug mode. I can see how that would help quite a bit.

  4. Richard Buff says

    Hi Bill,

    When you install WordPress on a temp site for the client to play around with during the development of their project, do you create a temp site for each client or do you have one temp site that all clients play around on?

    • Bill Erickson says

      I have one temp site with WP101 videos for them to watch. If they want to play around more (ex: maybe start creating content), then I’ll create a separate subsite for them

  5. Richard Buff says

    Hi Bill,
    Since you don’t host or maintain any of your sites after launch, whenever there’s a service that requires registration, for example connecting the Jetpack plugin to WordPress.com, do you have the client sign up for that or do you have an account you use for all of them? If you do have the client do it, at what point does that occur in your process? Since you build the whole site in just a week, do you get stuff like this knocked out before starting, so that you aren’t held up waiting on the client?

    • Bill Erickson says

      If it’s a project where the service isn’t essential (Akismet, Jetpack…) I’ll have the plugin installed but not activated, and provide them instructions on how to do it. If it’s essential for the buildout (ex: I need stats from Jetpack) then I’ll register an account for them using my email address, give them the username/password and ask them to change the email.

  6. Joshua Nelson says

    Bill,

    This is a great thread, thanks so much for putting it together!

    I have a business/code/plugin question. I’m curious if you have standard plugins you use/recommend for specific tasks outside of your core functionality plugin. For example, do you have a specific plugin you prefer for shopping cart and eCommerce, mailing list & marketing plugins, et cetera. I know you have gravity forms on your site, but I’m curious about others you might have on your short list.

    Cheers,
    Joshua

    • Bill Erickson says

      I don’t work on projects that require ecommerce or membership sites, so that eliminates those types of plugins 🙂

      Here’s the plugins included in my base install. I remove those which are not needed:
      – Advanced Custom Fields
      – Akismet
      – Black Studio TinyMCE Widget
      – Core Functionality
      – Debug Bar
      – Debug Bar Console
      – Debug Bar Extender
      – Gravity Forms
      – WP101

      I also use my own plugins a lot: http://profiles.wordpress.org/billerickson

      • Nick Davis says

        Hey Bill – thanks again for what’s turning out to be a extremely useful post not only for me but obviously a lot of others too!

        I was curious about your ‘default’ plugin list and was interested to see your reply.

        You mention Advanced Custom Fields, does this mean you’re using this instead of the Custom-Metaboxes-and-Fields-for-WordPress project (which I love btw) on Github now?

        Or do you have situations where use both?

        I’m really interested how you implement these kind of things. (I first started out using ACF and then moved to Custom Metaboxes and Fields when I discovered that and I just wondered what your process is for this kind of functionality).

        Thanks

        Nick

        • Bill Erickson says

          Our Custom Metaboxes class is a much leaner and simpler implementation, so I use it when I’m building something that will be publicly distributed (themes and plugins that are sold or given away).

          Advanced Custom Fields takes a bit more work but allows me to craft a better user interface for the client, especially with repeating fields. So for most client projects, I end up using ACF.

  7. Joshua Nelson says

    Thanks for the reply, a couple of follow-up questions. Do you avoid ecommerce/membership sites on purpose? If so, any specific reasons why?

    I know you mentioned somewhere that you’re an LLC now – I’m guessing that is largely for other reasons outside of liability, right? This seems to me to be a low-liability type career. On that vein, do you have business insurance?

    And last question – is your “Now Scheduling Projects For” notice connecting to your CRM & automated, or do you manually update that?

    Thanks again!
    Joshua

    • Bill Erickson says

      1. I avoid them because I don’t have enough experience with them to be willing to take on those projects. I’m not comfortable having a client hire me to learn something and not knowing how long it will take.

      I have a few membership sites coming up where I’m hiring a top developer to handle that aspect. Once I see how they put it together, the issues they have, and dive through their code, I might be comfortable taking on those projects.

      2. LLC isn’t so much for liability as was to allow me to set up business bank accounts and a SEP IRA. I don’t have business insurance.

      3. “Now Scheduling” is something I manually set in the backend of billerickson.net. It would be nice if it was automated, but I don’t think I’d be able to programmatically determine my next available date – it depends upon a lot of fuzzy factors (ex: how many projects currently active that might need changes, travel plans…)

  8. Richard Buff says

    Hi Bill,
    I’ve seen you mention that you use Toggl for time tracking, which I also use. I’d love to know more about how you’ve setup your tags (or tasks) to track various aspects of a project. I started using Toggl about 6 months ago or so to track total project time but I haven’t been tracking the different aspects of a project (phone calls, mockup, theme dev, launching, etc..) but would like to start doing so. I’m curious to know how you break down your tracking for each project (or if you do at all)? And do you then copy this information out of Toggl and into a spreadsheet upon project completion?

    • Bill Erickson says

      I have a pretty minimal setup. My main tags are “initial dev”, “changes”, and “hourly”. Hourly is things I’m being paid for by-the-hour. Sometimes I track phone calls too but I usually forget to do that (most of my calls are with prospective clients and so I don’t have a client to associate them with).

      Periodically I copy this data over to my CRM. Since it’s a manual process, I don’t do it often. I’ve been meaning to find a time to update all my 2013 projects with their time logs but haven’t done it yet. This is mostly to see how accurate my estimates are, which projects are most profitable, and across what types of tasks the time is spent.

  9. Sheryl Coe says

    Hi Bill,

    I’d love to know more about which tools you consider core, which associations and conferences you would not miss. I come here for the great tutorials and snippets, but I’d love to hear more about how you weigh your budget for those items beyond code.

    • Bill Erickson says

      I try to make it to as many local WordPress meetups as possible, but haven’t been too good at that recently. My main conferences every year are WordCamp Austin (local) and Pressnomics. I also try to fit one or two other WordCamps in other cities as an excuse to travel and meet people I’ve only known online.

      To be honest, it’s hard to justify the cost of traveling to a WordCamp in business terms – I’ve never landed a project due to attending or speaking at a WordCamp. Pressnomics, on the other hand, allows me to connect with all the top developers, agencies, and service providers in our industry. The relationships I’ve developed there have definitely led to benefits to my business (new clients, other developers to forward work to, actionable discussions about our businesses…).

      Beyond travel, there’s a few expenses I’d consider necessary for my business:

      • Synthesis web hosting. I use Synthesis as my development environment for all projects. I get SSH access to the server (unlike other managed hosts), and they have a great support team to handle any issues that come up.
      • Freshbooks for invoicing. I haven’t explored other invoicing services so there might be another that’s a better fit for you, but this one has served me well for many years
      • BrowserStack for device testing. Every site I build now is mobile responsive. And while I do have a good collection of devices to test on, it’s so useful to be able to test on any possible device. When a client says they have an issue with your site on their iPhone 3 or Kindle Fire, you can quickly see what they are seeing.
      • Adobe Creative Cloud, for Photoshop and Illustrator.
      • FitBit and a gym membership. Since I sit at a desk all day, I have to actively seek out activity. Working out or taking the dog on a walk keeps me awake and working efficiently.
      • A comfortable chair. I recently got an Aeron chair which has been great. Again, if you’ll be sitting for many hours a day, make sure you’re comfortable and not causing health problems.
      • Sheryl Coe says

        Agreed. I think that it’s natural when bootstrapping to aim for DIY and low-cost tools. Such a waste of time. Each time I stepped up to better tools, hosts, life was so much simpler, I wondered why I EVER wasted my time doing without.

        In retrospect, I know I wondered if bloggers were swayed by affiliate fees in their recommendations. Not in an evil way, but I thought they were being just a little over enthusiastic.

        You just have to learn the hard way whose recommendations you can trust. So, if there is anyone newer than I reading this far down in the comments… THIS is one of the sites you can trust. No joke.

        • Jon Brown says

          I think there are three kinds of affiliates and it’s usually pretty easy to tell them apart.
          1) Content driven sites that have affiliate links for everything as a way to monetize. They make no/little effort to curate what they’re shilling.
          2) Niche marketing sites. They write reviews of very specific products to drive affiliate sales of a specific product. Hosting review sites, product review sites, etc. These tend to be very low value.
          3) People like Bill ( and myself) and a lot of people in this community who have affiliate links for things they love and recommend ALL the time anyway. They’re recommending the product first, and monetizing that recommendation as an afterward.

          There is no bias in category 1, they’re just linking everything. Usually the content isn’t high value in terms of making decisions (think cnet, gizmodo, etc…), the content is basically entertainment. Category 2 I never trust. Their sole goal is advertising a link and sales through that link. Category 3 however I trust highly, with a small caveat. The caveat is because the recommendation isn’t meant to be a exhaustive review of the marketplace.

          I have plugins, hosts, etc… that I’ve come to trust and recommend. I also have those that I’ve learned to avoid, but there are thousands out there I’ve never touched that could be much better. A journalist would review many/all of them, a blogger wouldn’t it’s personal experience, so you need a little of both. Regardless I don’t know anyone in category 3 that makes a decision to tout hosting A over hosting B because A offers a better commision. It’s about monetizing a recommendation already being made.

          Just my 2 cents.

  10. Joshua Nelson says

    Bill,

    I’m curious what sort of items you subcontract out? I know you mentioned large or custom database work, SQL experts, but are there other aspects that you have occasionally or frequently sub ou? For instance, java/query, Ajax, flash, et cetera. If so, do you “have a guy” or is it typically something you would have to find if/when the need arises?

    Again, this is an awesome post and thread, greatly appreciated!

    Cheers,
    Joshua

    • Bill Erickson says

      The main type of work is jQuery if there’s something that’s very custom. I’m not that great at jQuery myself – I can tweak FlexSlider but that’s about it.

      If a project requires deep integration with a third party system, I’ll recommend we bring in someone who has experience with that system. And if we’re moving from another CMS to WordPress, I recommend they hire a database developer to migrate the content.