Qpractice case study, Zao client spotlight, Zao WordPress web development, Zao WordPress eCommerce development, Zao WordPress plugin development, custom WordPress plugin,

Zao Client Spotlight: Our Collaboration with Qpractice

One of Zao’s goals includes taking on complex projects that require in-depth strategy. We don’t want to merely solve problems, but add value to the technology our clients are using. We take a boy scout approach to the work we do: Always leave the campground cleaner than we found it.

This means not only cleaning up what messes we may find when we arrive, but ensuring our clients have sustainable technology that benefits them in the future.

We recently had the pleasure of completing an initial phase with Qpractice, a website built to help interior designers prepare for the NCIDQ exam. So far it has been a complex, but extremely exciting collaboration with Lisa League, designer and founder of Qpractice. We’re here to share what we’ve done so far, and be sure to check out our interview with Lisa to hear her thoughts on working with Zao!

What Qpractice Does

The NCIDQ exam is an interior design licensing and certification test offered in the US and Canada. According to Lisa, it tends to be commercially oriented, with a focus on health, safety, and welfare. It tests designers on their understanding of necessary codes and regulations, making sure they can demonstrate their understanding of the non-structural part of the building (like plumbing, electrical, mechanical systems, etc.).

The exam tests knowledge interior designers should have accumulated both during their education and from their work experience. The NCIDQ exam can be a crucial element in an interior designer’s career trajectory; designers often seek out the exam to move up to a senior design position or land higher profile, higher paying projects.

Qpractice aims to help interior designers prepare for the NCIDQ exam by providing extensive opportunities for trial, error, and education. The Qpractice site provides practice tests that in many ways mirror the real NCIDQ exam, allowing designers to become familiar with the format and feel confident when facing the exam live.

Zao’s work on Qpractice

Like any ongoing project on a live, thriving site, as we worked through the initial phase, the scope was extended to cover new and emerging (and sometimes urgent) issues and inconveniences. Zao updated much of Qpractice’s existing system, as well as revamped the entire theme, added functionality, and created several plugins to better serve Qpractice’s needs. The NCIDQ exam also recently added a new quiz format, and Qpractice needed to have that created for test takers continued comfort and familiarity with the exam.

The discovery process

As we do with most of our clients, we did a significant code and performance audit before diving in. JT talked about how vital the discovery process is before, and it’s a staple in the way we approach projects. For Qpractice, we made recommendations for custom features that can be added, as well as data migrations from one plugin to another, and more.

During discovery, we don’t always recommend changes. Sometimes we recommend staying with the current solution if it’s best serving our client’s needs. We believe this is just as important as adding the new and shiny features.

Qpractice was set up using Sensei and WooCommerce Memberships, and we suggested that they continue to do so. From our initial discovery document:

  • Sensei – Given the high level of integration with custom functionality plugins and the purpose Sensei provides on your site, we’d recommend keeping it as your quiz management solution. Developing a custom quiz management solution would offer minimal long-term benefit and incur a high short-term cost.
  • WooCommerce Memberships – Based on our discussions with you, the most recent changes to WooCommerce that have resolved outstanding issues, and the cost of switching membership platforms, we recommend sticking with WooCommerce Memberships.

We aren’t kidding when we say Zao is working on behalf of our clients at every turn.

Once the discovery document was sent and we got the approval from Lisa, we went straight to work.

Order up: adjusting Genesis and making the menu

Lisa wanted to make some adjustments and add new elements to the Qpractice theme, but wanted to stay on Genesis.

One of the big pieces that took a lot of time and effort was the way the menu functions. We overhauled the entire menu system in terms of functionality and mobile responsiveness. It’s a specific implementation that works responsibly, as well as opens and closes according to different user actions. When logged in, Qpractice users have access to an additional menu with custom functionality as well.

The entire site is now device agnostic, which is particularly important for appealing to new users and making it possible for existing users to access information like the study guide, grades, and more, with ease.

Creating seamless integrations

On Qpractice, these three tools are integrated to offer the most to users, as well as make the business easy to run. Sensei powers the Qpractice learning and quiz systems, WooCommerce Memberships controls access to those systems, and WooCommerce powers the eCommerce component of the site.

Between these three tools, there were lots of bits and pieces that needed cleaning up. When one would update, it would often introduce a bug to one of the others, and it would impact the entire setup negatively. Zao’s first step in improving the Qpractice site was obvious: we triaged a bunch of bugs popping up in the integrations between Sensei, WooCommerce, and WooCommerce Memberships, as well as submitting several pull requests against their respective repos.

Side note: This is where retainers become necessary. Plugin teams have their technical goals in mind when they’re building their product, but they do not have your specific ecosystem in mind when they release. That’s why paying to have a technical partner to bridge the gap between the technology and your specific needs is so valuable.

Simple, but lovely features

WooCommerce Product Bundles price shortcodes

Qpractice uses WooCommerce’s Product Bundles, but there wasn’t a good way to output the price for the each product in the bundles and show the user what each item cost and just how much they were saving. The shortcode is super easy to use (of course), and makes solving this problem extremely simple.

WooCommerce Product Bundles, WooCommerce WordPress websites, WooCommerce development, WordPress web development

Custom message bar

Zao added a way for Qpractice to flash a message bar at the top of the site. We wanted it to integrate nicely with the Qpractice menu and show up in certain scenarios set by the admin. Although there are plugins that offer this kind of functionality, most of them only create a message bar that shows universally across the site, and we wanted to give Qpractice more control over this component of the site. The message can be shown across the site entirely, or the site admin can toggle it to show exclusively to logged out users, which is particularly useful as a promotional tool.

All the WordPress plugins

As mentioned, the Qpractice site is using Sensei, WooCommerce Memberships, and WooCommerce.

Additionally, we migrated Qpractice from another affiliate plugin to AffiliateWP, built by Pippin’s Plugins. They create great products and support AffiliateWP incredibly well; we felt confident that AffiliateWP would put Qpractice’s site (and affiliate program) in good hands.

Once again, we make sure our clients are gaining the most value from their technology, which means setting them up with what we believe to be the best products, and there’s no doubt that AffiliateWP falls into that category.

Custom WordPress plugin development

Qpractice had some specific needs and problems to resolve that existing plugins couldn’t address, so we did one of the things we do best: we built them.

We encourage all of our clients to open source the plugins we create for them, and Lisa was especially enthusiastic about creating products that are open sourced and available to the public. Not all of them are open sourced just yet, but many of them are.

Bulk Boot for Sensei

The way that Sensei is built means that users are signed up indefinitely unless they remove themselves, but this presented a problem for Qpractice, which operates on a seasonal schedule. At the end of every season, they needed to be able to remove access to the courses and encourage users to sign up for the next season, should they want to do so.

We discussed the fact that booting learners from a course is actually a pretty intense operation performance-wise and that it needed to be an asynchronous operation. As a result, we decided the best course of action was to add an optional turtle to help the user’s anxiety levels.

Bulk Boot for Sensei, Qpractice, Bulk Boot WordPress plugin, WordPress plugin development, custom WordPress plugin development

We wrote Bulk Boot for Sensei to give Qpractice the ability to bulk remove all learners from a specific course at the end of the season. Now, tidying up user access in Sensei is super easy.

Sensei Advanced Quizzes

The Qpractice site already had a plugin that extends Sensei, adding additional functionality, and we built upon that to add more useful tools in the admin area.

One of the most frustrating things about Sensei is that it dumps all questions/question-types in one big listing in the admin without faceted filters for drilling down to certain types of questions. Qpractice has a variety of question types that act a certain way, and Lisa had no way to search by the group. We created a tool that adds columns and filters to allow advanced sorting so she has a much easier time of filtering.

WordPress plugins, WordPress WooCommerce Sensei, using WooCommerce Sensei, WordPress eCommerce development, WordPress educational development,

WooCommerce Custom Product Redirects

Zao created a custom plugin called WooCommerce Custom Product Redirects. This plugin is not only a great sales and customer support tool, but it allows the Qpractice site to direct their users to information they may find crucial for using the products they’re purchasing.

With WooCommerce Custom Product Redirects, if a user has a product in their cart and makes a purchase, they will be redirected to relevant content set by the site admin. If the site admin has a relevant tutorial to the product being purchased, they may decide to custom redirect to that tutorial for the customer’s benefit. If there are two products that have URLs, the site admin can define priority, ensuring that their customers get any and all pertinent information automatically delivered to them post-purchase.

WooCommerce VitalSource Redemption Codes

Qpractice offers an e-book that is delivered by a third party, but purchased through the Qpractice site. Qpractice needed a way to keep an inventory of codes and her stock in WooCommerce without spending a lot of time keeping track of it manually.

With WooCommerce VitalSource Redemption Codes, every time a user purchases a product stored on a third party site, it associates one of the codes (in Qpractice’s case, a free code for the e-book) with that user so they can find the code on their receipt, and so inventory is neatly kept in WooCommerce.

This plugin was written specific to VitalSource, a Qpractice partner. We will likely adjust it and make it open source soon–stay tuned!

Zao Sensei Media Attachments

We created an alternative to a WooCommerce plugin that allows the site admin to associate media items with a lesson and ensures the media shows up in the resources list for associated courses. Zao Sensei Media Attachments now serves the same function, but uses CMB2 to create a better user interface. CMB2 simplifies the admin fields and provides more filters for modification.

WordPress plugins, Zao WordPress plugins, WordPress plugin development, Qpractice, working with Qpractice, e-commerce website development, eCommerce website development, hire a developer, looking for an eCommerce developer, WordPress eCommerce,

CMB2 Snippet Library: Associate WordPress Menu Field

We also contributed one of the features back to the CMB2 code snippet library. With this feature, Qpractice can select or create a curated WordPress custom menu to associate with a quiz or lesson and that menu will be displayed by placing the “Associated Post Menu” in the corresponding sidebar widget area.


Working with Qpractice has been an absolute delight. Lisa is a creative powerhouse, suggesting all kinds of ideas that we had the opportunity to create into a tangible, functional reality. We’re on the next phase of the project, and we’re all too excited to see what comes next. We’ll keep you posted!

Check back later this week for an interview with Lisa sharing her perspective of the project. 

Macbook laptop sitting on a brown table with WordPress dashboard open next to a cup of coffee, with the title "Yes, You Want Your Business Site on WordPress" across the lower center of the photo

Yes, You Want Your Business Site on WordPress

WordPress is powering more than a quarter of the web, but many businesses have shied away from taking the leap. Overhauling an entire site to move to a new content management system (CMS) can be intimidating. Businesses have a wide variety of concerns that prevent them from making such a big technology shift–even if the shift would be beneficial in the long-term. There are also a wide variety of myths surrounding what WordPress does and how it can benefit a business (or, rather, how it won’t).

I’m here to give you a few reasons that you want your business site on WordPress:

WordPress isn’t just for blogging

Although those of us in the WordPress industry already know this to be true, there are a lot of non-WordPress folk who still believe WP is just for blogging. Many of them aren’t even clear of what WordPress is.

WordPress provides all kinds of opportunities for your entire site, and it’s not just a place to host thoughts scribbled in a blog. Whether you want a member site, an e-commerce store, or a sleek, beautiful design to represent your company, WordPress can do all of that–and more. Since WordPress is endlessly advancing and changing, the bounds of what it can do are determined by the skill and creativity of the person building on it.

The learning curve is a little steep, but it’s worth it

Although WordPress boasts a five minute install, the average person is going to spend a bit longer setting it up. For someone who doesn’t have the technical savvy, getting a WordPress site set up the way that they want can be a challenge.

Don’t let that stop you from taking it on!

One of the best parts about WordPress is that it’s open source software, which means the source code is available to the public for study, alteration, and distribution. Most of the folks in WordPress are deeply committed to advancing open source software and giving back to the public by making it better and faster. The best and brightest professionals are giving their time to make a free software the absolute best it can be–which benefits all of us.

The work developers do requires expertise and skill, and when you hire them to do the work for your business, you pay for their extensive time and effort. In addition to that, they provide a public service by making WordPress, a free tool, widely beneficial and accessible to everyone. You may hire one developer, but when you work with WordPress, you benefit from the community work of countless brilliant minds.

If you stop and think a moment about all the people who generously give their time and knowledge, often without compensation, to create one of the strongest platforms available, you’ll realize it’s a community worth joining.

Since WordPress enthusiasts, professionals and amateurs alike, are so dedicated to enhancing the software and innovating with the tools provided, there are a ton of resources available for learning how to do what you want to your site. Sites like WPBeginner and WP101 aim to educate people on the fundamentals of WordPress, and if you do some Googling, you’ll easily find a wealth of answers to almost any question you have.

If you’re still worried about that learning curve, many WordPress developers and designers offer WordPress education as a part of their services, so the day to day dealings can be handled by you or your staff without a struggle.

WordPress makes content management easy

Yes, WordPress is a content management system, but that doesn’t just refer to blogging. “Content” describes nearly everything on your site–videos, photos, and text.

As a CMS, WordPress is the absolute best. Once you learn the basic terminology and know where things are in the dashboard, updating your site is easy peasy.

Even if you have a staff of Luddites, teaching them how to handle basic content management in WordPress is super simple! This means your staff will be empowered to make those changes and can handle the content on your site as a part of their duties. This means less oversight from you, which gives you time to focus on running your business. Empowering your staff to use your technology allows you to delegate responsibly and allocate your time to where you need it most.

Integrating with WordPress opens up your audience

One of the ways we’ve helped our clients is by building them their own WordPress plugin. This is particularly helpful for companies that offer a digital product or service and have a target audience that is building out their own business sites.

We have an example of this from our own experience:

Quantcast Corporation is a technology company that provides real-time measurement and analysis of advertising and audience engagement. Quantcast hired us to create a WordPress plugin that puts a JavaScript snippet in the header of their users’ sites. This extended their service out to the greater WordPress community and provided a huge benefit to their existing users. Quantcast users with WordPress websites can install the Audience Analytics plugin. Then, their Quantcast account is linked directly to their WordPress site and they can access their site analytics through WordPress super easily.

WordPress can scale–which means it can grow with your business

To make it do so successfully, though, you’ll definitely need the assistance of a professional. This part gets a little technically advanced, but Smashing Magazine took a look at what different developers have done to set up high traffic sites for success. WordPress isn’t the only key component in the fight to keep your site performant, but it’s not going to be what holds you back.

Getting on WordPress means being in good company

There are tons of businesses and major publications that are on WordPress, including:

  • WorldPay
  • Amazon
  • Disney
  • Politico
  • The NBA
  • Discovery Communications
  • USA Today
  • Microsoft Office Blogs
  • FiveThirtyEight
  • Airbnb

And many, many more. Big names take their technology seriously, and they’ve chosen WordPress to best serve their massive audiences.

So what are you waiting for?

WordPress developers, WordPress eCommerce developers, Zao, Justin Sainton, Justin Sternberg, Cancer Tutor, best WordPress developers, what it's like to work with a WordPress developer, why choose Zao, Zao web development reviews, WordPress web development, code audit, hiring a WordPress dev, WordPress developer red flags, what is a code audit, how do i get a code audit, what is in a code audit, what's included in a code audit, how do i find a developer, finding a WordPress web developer, best WordPress web developers

Crucial Questions You Need to Ask Before Getting a Code Audit

Code audits are one of the main things Zao offers to our clients. Many of our clients are strategically looking at how they can expand their businesses, and a crucial aspect of that is making sure their technology is not hindering their growth.

There’s a lot of muddled information about what a code audit should look like, and many clients start their search for a code audit without any idea of what to expect, what questions to ask, or what they should be looking for when vetting developers to do the job.

Are you looking for a code audit? Here’s what you need to know and ask before you sign that check:

Code Audit Questions Clients Need to Ask

— What is the final deliverable I can expect from this audit?

Depending on your developer, the final deliverable can range from a simple confirmation that everything is working as it should to an in-depth delivery document that details what is working, what isn’t, and appropriate recommendations for improvement.

Nowadays, we all research what we’re spending our money on before we pay up. Whether that research is looking at Yelp reviews of local restaurants or comparing the best and the worst Amazon reviews on new products, we want to make sure we’re getting the best bang for our buck. So often, though, clients don’t ask what they can expect to receive when it comes to code audits.

Maybe you just want a developer to look things over and confirm if everything is solid. That’s great! If you find a developer that will simply send over an email with a 👍🏼 and “Everything’s cool,” then they’re a good choice for you!

code audit, getting a code audit, code audit my plugin, WordPress web developers, WordPress web development agencies, WordPress ecommerce developer, getting a developer, hiring a WordPress developer, should I get a code audit?, what is a code audit?

If you’re looking for a more intensive analysis of your current code, you’ll want to find a developer who provides that. Since there’s no industry standard on what deliverable comes with a code audit, you’ll need to investigate to find the developer that is providing what you want.

Here at Zao, our code audits come with an exhaustive document that assesses our clients’ current technology with a specific eye on their needs and challenges, and includes recommendations that pragmatically account for budget, time, and priority.

We also provide a timeline that, should the client choose to work with us on implementing those recommendations, gives a realistic perspective on how long it will take for those technical goals to be accomplished. Lastly, we detail in each recommendation how and why this change adds value to our clients’ businesses.

— What kind of code do you audit?

Investigating the details of what to expect from your code audit is vital because some developers only offer specialized code audits. Some developers exclusively audit plugins, themes, or apps, whereas others are focused on auditing detailed eCommerce integrations or your entire site.

If you know you’re looking for a specific kind of code audit, finding a developer who specializes and focuses on that kind of development is key. If you’re looking for a full site audit, but the developer you’ve contracted with focuses specifically on auditing Genesis themes, you may not get the most effective and comprehensive audit that you need.

— Can you provide more details on code audits you’ve done? Do you have a sample I can look at?

When you find out more about the scope of a developer’s experience and take a look at a code audit sample, you’ll get a better understanding what the end deliverable will be–even beyond the initial response. You’ll get a better idea of how your developer tackles code audits and communicates the end result.

This information is crucial, as it helps you understand what to expect of your developer, and can help you find a developer who communicates in a way that works best for you.

— What kinds of clients have you worked with in the past?

Most developers have worked with companies that span a broad range of industries, and can tackle projects in unfamiliar industries like a champ. However, knowing if their experience includes working with companies in your particular niche helps you know whether or not you’ll need to explain specific industry nuances to them.

Your technology needs to meet your business’ needs, and those can vary slightly from industry to industry. Knowing your developer’s history with your industry can help you determine what kind of crucial information you need to communicate–or whether your developer is already in a position to take on those challenges without extra explanation.

Red Flags

what questions to ask your developer, what is a code audit, when should i hire a developer, should i use WordPress, WordPress for eCommerce, WordPress web development, hire a WordPress developer, build a WordPress plugin, get a WordPress plugin for my business

In an initial introduction, everyone is on their best behavior.

Job interviews are like dating. As Chris Rock says, “When you meet somebody for the first time, you’re not meeting them, you’re meeting their representative.” You need to know what red flags to look for when seeking out a developer–and how to look past the friendly representative to make sure it’s going to be a good fit.

— A dev who doesn’t ask questions

If you’re talking with a developer about a code audit (and potentially more work beyond that) and they don’t ask detailed questions about what you’re looking for, what your current technology is, what kind of pain-points you’ve experienced, and more, you have a problem.

You want a developer who is invested in your company’s success, in solving your technical problems, and bringing value to your business. A developer who doesn’t ask questions isn’t going to know what you need, nor have the full understanding required to adequately assess what is going on with your site.

That’s one of the reasons that we ask detailed questions and make sure we know exactly where our clients are coming from. We want to make sure that we have specific notes on what to look for and what they’re trying to accomplish with their technology. Even if our clients don’t have the technical savvy to articulate what they need done, by knowing their goals, their struggles, and their technical history, we can help by capitalizing on our technical knowledge to come up with creative solutions.

— A dev who can’t tell you in concrete, clear terms what you’re going to get

There’s a reason asking about the deliverable is so important. Code audits, without planning, can beget intangible results. Unlike design, there’s no Photoshop mockup, or unlike copywriting, there’s no first draft. If a developer isn’t willing to say, “Here is the end result you can expect from me,” it’s a huge red flag.

hiring a WordPress dev, WordPress developer red flags, what is a code audit, how do i get a code audit, what is in a code audit, what's included in a code audit, how do i find a developer, finding a WordPress web developer, best WordPress web developers

Your developer needs to be able to set your expectations accordingly. You need to know what you are paying for at the end of this–and a developer who cannot tell you what you are getting for your money is not one you should hire.


We know vetting developers who, as far as you may be concerned, basically work magic on the internet, can be stressful. It doesn’t have to be, though. Now that you’re armed with these questions and red flags to look out for, you can assess which developer is going to be able to provide the code audit you need.

Have any other questions about code audits that we haven’t covered? Drop ‘em in the comments; we’re here to help!

Our Audience

Blogging is sort of amazing to me. Don’t get me wrong – I think I’m objectively terrible at it. But I still think it’s incredible that we can put words onto a screen, press Publish – and then BAM! It’s out there, for the world to see.

Never before in the history of the world have so many said so little with so many words. Alas.

As our team grows, so grows the content we produce. Because I value clarity above almost anything else; I’d like to clearly define who we consider our audience to be. I haven’t really seen too many company blogs do this – the more views, the better! I don’t care loads about how many pageviews we’re getting – I just want to be helping the right people. Without knowing who we’re writing to, we do ourselves a disservice, and we do you a disservice.  You might not find yourself counted among our audience! (that would make us sad, fwiw. do something to become our audience, because I really like you.)

Without further adieu, three segments of our audience that we’re always considering:

Ourselves

That is, our future selves. Often times, we write something that is important at a leadership or business development level, or perhaps something that is inherently technical and geeky. We may publish this specifically because we know, in six months or so, we’re going to be Googling for that again. We’ll be delighted to find that our past self answered our query! In helping ourselves, scratching our own itches – we can be sure that we’ll be helping someone else in the process.

But sometimes, we also write to our past selves. Because, unlike probably most of you (wink wink), we tend to learn some lessons the hard way. When that’s the case, we write posts to give our past selves the wisdom to bypass those hurdles, and we hope that we can maybe help someone else who hasn’t yet stumbled over them.

Our Potential Clients

We have loads of clients, past and prospective, who have commented on the content (albeit limited) on our blog. We attract clients that we love because they get to know us, what we value, how we work, our personalities; all from our blog! I’ve found few truer things than this: you will work with people you like. We are almost never the cheapest or the quickest option for our clients – but they keep working with us because they like working with us. And often times, they know they’ll like us before they ever meet us – because of the content we produce.

Our Friends™

Some people like to call them clients, competitors, other agencies, other businesses, leaders, entrepreneurs etc. We just call them friends. Anytime we think we have anything that might be remotely helpful to other businesses, other developers, other product producers, or our current clients – we’ll publish it. Even if that means that we lose our own competitive “edge”. Sometimes this looks like systems and processes. Sometimes it looks like code.  Maybe it’s a book recommendation or a conference suggestion.  Maybe it’s pitching one of our friend’s products or courses! Anytime we can shine a light on something we think is helpful, we’ll do it.

Execution is Everything

Every Thursday, our team connects for an hour in the morning in a Google Hangout. It’s the only time in the week where we’re all connecting, face to face, in a meaningful way. The purpose of these check-ins used to be primarily tactical. We’d attempt to go through our team, each member outlining what they were working on, if they had any blockers, etc. Fairly standard stuff.

There was one problem, though. None of us really enjoyed these meetings. In my estimation, the communication that occurred during these calls could be handled much more effectively via Slack, one-on-ones, or some other method.  I was frustrated that the valuable face-to-face time we had was being squandered.  So we changed things up.  Instead of focusing on primarily tactical and task-related issues – now we focus weekly on strategy.  That’s right – our entire team focuses on business strategy, every week. We make it the responsibility of everyone on our team to be thinking about why we do what we do.

I’ll likely write separately about why this is so wonderful – but we’re still realizing all the benefits from switching to this focus for our check-ins.  So far – having everyone focused on why instead of what has been wonderful for so many reasons. It’s incredibly empowering.

As our team’s leader, it’s my job to make sure we start every week with a strategic question for the team to be pondering for our check-in on Thursday.  Recently, the question was this:

What do you see as Zao’s single primary strength, and what do you see as our single primary weakness?

This was one of my favorite questions – because I knew it would force us to face some hard truths!  I’m a firm believer in the hard way being the best way.  Creating a space for our team to be totally honest and bring to the surface the hard truths about our company is not painless – but it’s worth it! From this particular check-in, I was able to realize a common thread that tied everyone’s feedback together.  A common strength we all recognized: We’re really good at what we do. We’re able to tackle really, really complex projects that the vast majority of agencies our size, in our space, are not capable of working on successfully.  That’s the good news!

The bad news? As much as I believe that execution is everything – we all recognized our weakness in different areas of our company on that very thing.  We each found a specific weakness that centered on our ability to execute. That doesn’t necessarily mean we were abject failures in each of these regards – it simply meant that though we might be executing at a level that was getting us by – it wasn’t good enough to get us where we want to be.

To me – this was a revelation.  Recognizing that, as a leader, I had allowed us to operate in such a way that “good enough” was acceptable; that “getting by” was enough – this was a gut punch for me! In every area – internal communication, project management, documentation, systems and processes, client follow-through – we found that we had significant room for improvement. Naming this reality and accepting it – though difficult – has been one of the most freeing moments I’ve had as a business owner in recent memory.

 To be clear is to be kind

To be kind is to be clear, and to be clear is to be kind. This is one my favorite business axioms. Often times, we can intend to communicate something – but by the time we’ve added all of the sugar-coating and politeness that we often add – we’ve lost any semblance of clarity. The kindest thing that our team could do for our company was to come to a place of clarity on our strengths and weaknesses.  The outcome of this one hour meeting has been a level of accountability, transparency and clarity on our collective strengths and weaknesses that did not exist before. Because of that clarity – we’re able to grow into what we see ourselves becoming.

Execution is everything.

Man expressing sadness

When Projects Crash and Burn

** Queue sad music **

Once every 5 years or so we run into a project where things go so south we have to exit the project before completion.  This is painful for everyone involved and not something we ever like to do.  Additionally, on occasion we take on projects where once completed we never want to think about said project again.

To avoid these problematic projects in the future we’ve committed to learning from our mistakes.  Here’s a bit of our painfully earned wisdom in no particular order:

Listen to your gut

While this sounds like a no brainer, 9 times out of 10 we had red flags along the way in our initial communication with a client that we ignored and decided to move forward with the project anyways.  Had we kept to our “thanks, but no thanks” stance we would have saved ourselves many a headache and late night.

Be wary of asset overload

Sometimes potential clients come to us with a tiny budget and a TON of information on scope and assets in an effort to be helpful.  While this sounds like a great thing, especially since sometimes it’s like pulling teeth to get a nailed down scope, if there aren’t the resources to thoughtfully explore those assets it’s easy to miss crucial details of the project that would have stopped us from moving forward to begin with.

Get another set of eyes on it

This is related to the gut check.  Sometimes things might feel great to you but once you bring in another set of eyes, they see things you totally missed or push back enough to create the right expectations for the project so that things don’t go south.  If you’re on your own and don’t have any other team members that can take a look, try reaching out to a trusted colleague in your sphere.

Define your ideal client/project

There’s got to be some saying to the effect of “if you measure it, it will come”. Having a clearly prescribed and defined list of traits your ideal client and/or project will help hold you accountable to only taking on work that will be successful.  Make your list to have must-haves and nice-to-haves so you can create some space for negotiation and compromise.  Then, if a potential project violates one of your must-haves, do not cave in and take it unless you are destitute, without food and shelter, and must get paid no matter the cost…aka that should hopefully be never.

What about you? Any hard earned lessons you’ve learned?

Git Bisect and Why it is Amazing

Had a client email me recently, mildly concerned, as an update to WP eCommerce broken his search layout. I told him that I couldn’t think of anything between the latest version and the prior version that would have caused any such thing, but I’d be more than happy to check it out.

Initially, if I’m being quite honest, I just assumed it was user error.  It’s easy to mis-configure things, set up a theme wrong, etc. Any number of things can go wrong. But, I dug in and in fact, we had broken it.  I didn’t recall any changes in the 913 commits between the two changes.

With nothing obvious, and 913 commits between release – what was a developer to do?  Enter, git bisect.

Git bisect is amazing. Prior to using it, you might think to yourself,

“Hmm, self, I suppose I can checkout a few different commits, figure out a commit where it works, and one where it doesn’t, and sort of narrow down a range until I find it.”

And that would be a really good thought.  But it would take you, a human, waaaaaaay longer than git would take.  That very thought you had? That’s what git bisect does.  Imagine you have the master branch, latest commit checked out.  You know that a previous version branch worked fine.  Check this out.

git bisect start
git bisect good
git bisect bad branch-3.8.14.4

And boom, you’ve started down the path. Git will analyze how many revisions exist between good and bad, split the difference, and checkout that commit. Then, test to see if the bug still exists. If it does, git bisect bad. If not, git bisect good. It will keep narrowing down the commits until it finds the precise commit that caused the issue.

In case you remain unconvinced – remember – I was able to wade through 913 commits to find the single commit that caused a bug in a piece of software that spans hundreds of files and over 150,000 lines of code.

It took about three minutes.

Git bisect is amazing.