In 2020, we published a blog post about DevriX 2020 in review which described the exciting projects we got involved in and the valuable lessons we’ve learned as a growing WordPress agency. We faced some serious challenges in 2020, ones that taught us a lot. We took note and restructured our process in order to keep doing what we love while growing steadily.
It’s almost 2022, and our team of over 50 is actively working on several high-end projects, helping businesses with WordPress web development, business growth, systems architecture, marketing and creative work, all while delivering great results and maintaining a good portfolio of ongoing projects. This has been made possible thanks to some lessons that we’ve learned over the past year, and we’d like to share them with our fellow WordPress consultants and agencies who are also striving to grow, build diverse distributed teams, and work with incredible clients across the world.
There’s much more planned for 2022, and we’re looking forward to the next challenges. But before we move on to the new, let’s reflect on the old. Here is what helped us improve our business and team growth so far.
1. Proposal Templates and Sales Funnel
Landing new clients and partners is a process that requires involvement by everyone participating in the conversation. However, understanding client requirements is incredibly time consuming. It requires a number of calls, going back and forth via email and IM, asking all sorts of questions, reviewing code base to date, and preparing a lengthy custom proposal with a contract as a final step.
Late in 2020, we had received a good number of inquiries each month, but many of them didn’t take off due to a lack of sufficient budget, miscommunication, lack of understanding of our service model, and other various reasons. Additionally, all of the above took forever to prepare, and even interrupted our development workflow. And when you spend dozens of hours (or more) preparing a proposal, which doesn’t work out, it ends up being a massive waste of time and resources.
That’s why, at the end of 2021, we spent time defining our main WordPress web development service offers, outlining a format for landing pages including the basis of our solutions, and standardizing a questionnaire for custom one-off gigs.
The main type of work that we deal with include:
- WordPress Development Retainers
- Enterprise Development Solutions
- Ongoing WordPress Maintenance & Support
Our retainers and maintenance plans are now defined in detail, with different options for different types of businesses. Since custom web solutions vary and we offer various services as a part of the package – development, design, business growth, systems management and marketing. We prepared an initial inquiry questionnaire that answers the majority of the questions that we would ask each and every client, thus drastically cutting down the pre-sales time.
Given the feedback from our clients, we’ve realized that this has helped some of them to understand what we do better as well as to define their main goals more clearly. Clients often search for a web solution, without understanding why, and our form focuses on important business goals, researching the competition, defining UI guidelines, providing measurable data and more, which is often the basis of our proposals, too.
Speaking of proposals, having those three main service solutions ready to sell, we were able to prepare standard proposal templates and contracts for each of them. Part of the work was defining our Service-Level Agreement (SLA), maintenance periods, codebase ownership details and licensing, legal details, communication protocols, acceptable times for response, what needs to be delivered upfront, and what would be the end result when handing over the project (or monthly for ongoing deals).
Our template proposals include relevant sections for all our expertise. These are adapted to the given project to include the specific details our clients should be aware of.
Furthermore, we automated part of that process, to be able to speak with more prospects. Next, we identified our solutions better, reduced the number of non-qualified leads and cut losses from going back and forth with prospects who didn’t require our services.
We also officially introduced the paid discovery session plans for customers, who didn’t know what they wanted yet. To achieve this, we worked closely with them to define a business strategy that would suit their unique needs.
2. Ongoing Business Relationships
Ongoing work has always been one of our main goals at DevriX. This was made possible through building and maintaining strong business relationships, which includes two different branches:
- Building ongoing contracts with new clients coming to us.
- Build partnerships with service providers that offer complimentary services to what we do.
Building Ongoing Contracts with Clients
Previously we’ve accepted more fixed-fee gigs than needed, and due to the lack of proper proposals, we’ve faced various issues with constant delays, missing information or assets from clients, problematic hosting solutions (such as Yahoo!’s – yes, they actually offer old-school hosting) and more. In addition to that, clients weren’t often interested in ongoing work for their websites, and a year or two later, problems kept coming their way – hacked websites with a very outdated version of WordPress, or administrators installing vulnerable sliders and other additions that kept affecting the initial solution that we’d provided.
Now we take on very few fixed-fee gigs and sell mainly ongoing development retainers. However, even the fixed-fee projects include an ongoing maintenance contract that lets us control the future of the technical stack as best as possible, while maintaining a high level of security and performance.
Managing changes on staging servers, even for small clients, helps with incompatibilities and regressions, something we’re working on without pushing to production. Dealing with updates, code reviews, uptime monitoring and resource management also ensures the stability of those solutions, which used to be an internal requirement only for larger platforms.
Partnerships with Other Vendors
In late 2021, we focused entirely on partnerships. Our marketing department was handling the website content, link building or advertising that was bringing incoming leads, but the management team developed a strategy for ongoing partnerships.
We were able to form several strategic contracts with agencies in Europe, North America and Asia. Some of them were technical agencies that couldn’t deliver everything and preferred outsourcing the heavy lifting to us, or off-loading when there’s too much work on their plate.
Others engaged in different business fields – advertising, PR, SEO, marketing, creative, hosting companies looking for a solid WordPress development partner that would adapt to their processes, help them grow, and deliver ongoing development services to their accounts when needed.
In addition to bringing in good ongoing revenue, this allowed us to broaden our business development horizons by exploring different sales, marketing and growth strategies, project management processes and legal patterns that helped us scale up. After spending time with the same partners, it became possible to take on more work from them, deliver better results and in less time. This also convinced some of them to offer WordPress development services formally on their websites and offload those leads to us.
Partnerships are the core of our philosophy at DevriX, and we gladly compliment our partners’ service portfolios with WordPress development work while letting them focus on what they do best.
3. Help Different Audiences
Eleven years ago when we first started, our team consisted of just a few people. We didn’t have enough manpower to tackle large enterprise projects, and didn’t provide various services in order to sell a complete package. With enough perseverance, we were able to grow, increase our skill set, and build a team that now works on high-end projects, including large multisite platforms for automotive manufacturers, large media portals, scalable Software as a Service solutions and more.
That, however, changed our management processes as well – introducing people with different skills from different countries. People responsible for them in the form of management or team leading, QAs, internal tools and systems, and additional costs to make this all work in the long run. This quickly became too costly for smaller customers, and the lack of a public portfolio due to the numerous NDAs that we’ve signed made it harder for new leads to take a leap of faith with the mid-five figures (or more) contracts.
WordPress Development as a Service
In order to become more flexible in those cases, we’ve discussed what could be done for clients in different audiences. Defining our buyer personas and classifying the different levels of clients was an important step for moving forward.
We have specialized in several directions, such as building SaaS solutions (with different payment and feature plans), large multisites, custom migrations from different platforms (PHP, Java, Python, .NET) and large custom projects integrating all sorts of 3rd party APIs. This move allowed us to build separate processes for each of those, extract certain reusable components and increase the level of experience in our team members, which in turn allowed them to continuously deliver more in less time with fewer hiccups on the way.
We have identified ways to decouple a main service core of work that we need to do for each and every client, and defined other sub-services that we could upsell or combine on top of.
For example, building a large technical WordPress platform and hosting on a reliable infrastructure is generally our main thing. However, we could offload the hosting to a managed WordPress hosting provider, like Pagely, delegate the design to someone else, and not take on the marketing and growth efforts.
We have been experimenting internally with different tools and plugins through our verification process and those can now be used in projects without us having to bother with performance or security (or building them from scratch). We’ve formed relationships with many of their authors by contributing back patches or having a direct point of contact for reporting issues or discussing potential new features.
Updating Full Services
For clients that were willing to pay for the full suite of services, but had a hard time committing to a large amount upfront, we’ve polished our WordPress development retainer plans in a way that allowed them to sign up for a “trial” and see how we work, pay monthly for each milestone instead of committing to the full amount early on. Additionally, this allowed us to implement new requirements during the development process, redefine goals, build iteratively (let the client decide which component needs more work or features, and which one is ready), and generally save them a whole lot of money while giving them the flexibility to add or remove things during the work process.
Some of our clients started with a 10-hour per month maintenance plan, which was soon converted to a 40h/month retainer, others jumped from 40h/month to 100h/month.
Some initial negotiations that were for $10K MVP projects are now in the mid-five figures plus, thanks to the opportunity to provide ongoing work month by month, showing incremental additions built with flexibility and extensibility in mind, launching MVPs and iterating based on user feedback, and constantly introducing improvements to existing systems.
4. QA is Invaluable
Our first QA hire was in 2014, but he was only involved in testing our main SaaS project that we were working on back then. As the number of ongoing accounts kept growing, we realized that QA is an essential unit in our process. We hired another QA and an assistant helping with setting up demo pages or listing down features, helping with demo schedules and such.
With a consistent QA staff around, we are now able to assign milestones to developers, let them work on highly decoupled tasks, and assign the work for testing to our QAs.
The QA process includes pulling latest versions from Git locally, testing different branches, monitoring logs and reporting all sorts of regressions or incomplete features that need edge cases cleaned out. In addition to testing different environments (including the staging server), we are able to catch various gotchas between server versions, hosting environments, memory limits and more.
That improved the overall quality of our products and freed up some development time so that our WordPress engineers can focus on solving problems and implementing features while someone is constantly trying to break their work in the meantime. QA also includes mobile testing and playing with different browsers, which occasionally leads to follow-up CSS fixes or even switching entire libraries that don’t support media for iOS or certain browsers.
5. Communication and Documentation
Having a team of 5-8 people is manageable, but as the team grows, and people with different skill sets or experience join in, working on more projects and managing all of them quickly becomes a nightmare without the right process and tools in place.
We rely on Slack for internal communication, where we created channels for each project and each of our teams – developers, designers, marketers and management.
We have integrated some of the services we use for each channles such as Asana or GitHub, pulling the latest commits, tasks, pull requests and issue comments, which made it possible to keep the context in one place, and work with each team (per skill or project) in a much more organized manner.
Furthermore, we have also defined a cleaner process for project management in Asana, using due dates, various labels for priority, and utilizing the Team Calendar in order to monitor the bigger picture for weekly sprints. Introducing kick-offs and regular chats keeps the people up to date, aware of when demos are approaching, bouncing ideas off each other, assigning tasks to other team members and communicating internally. This ensures that we have more time for code reviews, workflow management, answering important architectural questions or helping with specific features.
Recently we’ve started documenting our projects as well, which provided us with a structured way to describe the project growth in real time, new features built every two weeks, ongoing things that needed to be handled in future. Those documents are available to people who join a new project, in order to reduce the amount of R&D by having a detailed overview of the project, progress, goals, team members responsible for features and more.
Great speakers often say that “bullets are dead“, but they are incredibly helpful in certain cases, including defining long workflows with a large number of simple steps.
We’ve established a number of different processes for different parts of our business – the sales funnel, setting up a new project, delivering a web solution, deployments, hiring new people, introducing team members to a new project etc. However, dealing with a lot of different departments at the same time, distributed across a number of different projects, turned out to be challenging – time-wise, and keeping track of the little details.
We dug deeper and broke down the larger steps of the business process into separate components, consisting of a checklist for each of them. Some are related to hiring – a list of professional and desired soft skills, a breakdown of company goals – and the mission defined in a way that we can use during interviews to assess people in detail. Same goes for preparing a demo or setting up a project – there’s a lot that should be done for each of these every time, some being larger as “creating a new private GitHub repository” through “send documents X, Y, Z to the new team members” or “add this to .gitignore”.
Adding specific checklists for testing, making sure that internal folders are not a part of the repository, emails are being changed or certain scripts are run everywhere, ensures that we don’t forget the small yet important details due to a hundred small steps that we have to take every single time.
Bonus: Automation and Reusability
That last bit is not really revolutionary per se, but last year we actually continued to plan for both automation and reusability efforts. As a part of each internal process, we identify key things that should be automated, as well as potential components that we can reuse or build and extract as modular elements from there on.
Basically the main difference is that we spend actual predefined time figuring out what can be reused in different scenarios, and what are the steps that waste a lot of time and can be automated. Some were not a problem when we were a smaller team, but if 8 people worked on a project and needed to perform a manual action 5 times a day that takes 6 minutes, then this results in a total of 4 hours that are wasted every day. That makes you think differently and plan better upfront.
It’s also important to establish how long it takes to build each, or how long it takes to make a web feature extensible. Once establishing that, we allocate internal time for improvements and flexibility which is done outside of the hours paid for by a client.
We’ve introduced additional automation and reusability layers in our internal and external processes. From a standardized continuous integration provisioning script on a custom cloud instance per project, through to templates for different project types or demo data for delivery. Building a collection of trusted plugins and libraries that are well tested and which can be reused without affecting stability or scalability, optimizing the communication processes, automating reporting as best as possible, using various tools to support our process.
We’re using various Zapier integrations across Asana, GitHub, Slack, WordPress for certain actions, including Gravity Forms submissions, various reporting tools and others. We do have two application and system monitoring platforms running and tracking web solutions, and have integrated a nice UI comparison tool running image analysis over different snapshots of the same website.
Our CRM is a custom project built on top of WordPress that we’ve been developing over the past year, and keep integrating with external tools and systems, extending the reporting mechanism for better end process reviews. Our team also interacts through an internal BuddyPress instance which our CTO Stanko connected to Slack for posting status updates and comments. We’re connecting our systems together and saving a lot of time from copy-pasting or context switching, building custom bots triggering activities through 3rd party services and performing automated business-specific monitoring for certain websites.
We have learned a ton in 2021 and have to act fast in order to ensure further company growth. 2022 is just around the corner and we already have a few new hires and a million things going on, including new partnerships, additional process improvements, a backlog of things planned over the next 2-3 months and so much more.