Lessons from a Drupal replatforming project - our own

Profile picture for user gonzodaddy By Den Howlett May 4, 2019
Summary:
Undertaking a Drupal replatforming project is no trivial affair. We share our experience using the Drupal platform

As we celebrate six years of diginomica, we've opened the doors on our latest iteration. What happened? Towards the Fall of 2018, I reluctantly concluded that our time running diginomica on Wordpress was done.

Over the previous five-plus years, we had grown from a scrappy media outfit into something much more. We had gone from self-support to a small agency and then to a larger firm who helped us establish a more robust architecture.

As time went by, I realized that Wordpress cannot deliver what we need from a 21st century CMS. It just can't.

End of life for us and Wordpress

A complex Wordpress environment brings its own challenges, not least the amount of time required to test plugin upgrades. That's because the Wordpress ecosystem is a Wild West. You have no idea when upgrading what will break what. Net-net, we couldn't innovate to any material extent and our support dollars were increasingly spent on 'keeping the lights on.' And despite best efforts, we couldn't come close to achieving Google speed.

I was also concerned that the Wordpress Gutenberg project was not advancing the platform and certainly isn't creating the kind of headless environment I wanted. Why headless? We understand that programming languages come and go and what's hot today might be yesterday's news tomorrow. Even so, the choices available that allow developers to do amazing things is growing exponentially. I am not convinced that Wordpress is taking enough advantage of those trends despite it has used React for Gutenberg. 

I had seen how Drupal is getting into technologies that allow all manner of amazing things to come to life and that encouraged me to take a closer look. 

Enter Drupal

A chance meeting at Drupalcon in Darmstadt, Germany led us to Brainsum, which operates out of Budapest, Hungary. It took us a while to get our ducks in a row because we were heading into entirely new territory. Think of it as open heart surgery without deep anesthetic and on a platform with which we have limited experience.

I wasn't a fan of Drupal having had terrible experiences with the Drupal community in the days of Drupal 5-6 and Stuart told me he had a horrible time using it at another media firm. However, Brainsum offered the kinds of assurance I want in a contract - which was fixed price - and we had a fair timetable against which to work. 

...and we're off!

I'll get this off the table now - we didn't come in on time nor on budget but we only hit one change order gotcha which almost killed us towards the end of the project. It was largely a mistake on our side so I put up some more cash and we flexed the go-live date to accommodate the requirements. 

The project was treated as an enterprise-class project with regular check-ins, conference calls with the project leads and extensive use of JIRA for sprints, issues, and milestones. On our side, I ensured that the core team was kept informed via our internal social network on anything of consequence but I kept them away from any of the detail. This was important because we needed to keep focused on the bigger functional requirements picture and I didn't want to muddy the waters when I already knew some compromises would be necessary. 

I was also clear that for the re-platforming project, we were not going to add any major functionality as such but that we would do a good amount of tidying up and rationalizing of external services. My pet requirement was a font facelift as I felt we looked 'tired.' On that, I knew I could never get my team to agree on the best combinations since everyone sees design differently. I ended up making a fairly arbitrary choice using Google Fonts in the hope that no one would go nuts. They didn't although we may still revisit that element.

My approach may sound odd given what I have said about innovation (and the fact we operate collaboratively on most major topics) but I wanted to be sure that the basics of what we do work first before getting smart about new things. I was also conscious of the fact that throwing a new system at my team that includes a ton of new stuff would almost certainly overwhelm them plus run the risk of missing important things we do today. Again that has to be seen in context because using a Drupal system is very different from using Wordpress. 

Raw Drupal at the back end is not as intuitive as the Wordpress editor but we overcame that by creating an editing template that largely mimics what we were doing in Wordpress but made sure to eliminate or suppress all the things we didn't need but which are offered by the Wordpress core or which could be handled in a more elegant programmatic way. 

I visited the development team twice. Once in the middle of the project and once on the go-live day. This was vitally important because even though most of the dev team speak good English, there are important cultural differences between British people and Hungarians. This means that on occasion, interpreting what you want requires face time. Services like Zoom, which we used for intercompany communication, only takes you so far. And meeting the team allowed us to start building a relationship with the key developers. It sure beats the heck out of numerous JIRA notification/updates. 

As you count down the clock to go-live, there's always that time when you feel like you're in a pressure cooker and sure enough we had some of that. As you can see, we got there due in no small measure to the tenacity and level-headedness of Brainsum's project manager, who was sorely missed when she went sick for a couple of days.

Go-live turned out to be relatively trivial. One minute we were on Wordpress, the next on Drupal. It took a few hours to populate all the DNS services but there were no obvious horrors or SNAFUs. We have a clutch of functional fixes we need to put in place and as one regular contact advised me, we've had to change our About page which has not been updated for years. Our bad! 

There was a question about GDPR compliance raised by another external colleague but it turns out that a required patch for a module has not been widely advised among the Drupal community. 

Did we get it right?

It's a long time since I ran a project of this kind for myself but I had a lot of help and mentorship along the way. diginomica buddy Vijay Vijayasankar who runs a sizeable cognitive shop at IBM was a great help, reminding me that carrots work better than sticks. I subsequently discovered that my decision to visit the dev team is a common practice, especially when those same teams operate remotely. There really is no substitute for a smile and words of encouragement shared across a desk. 

Despite the perceived wisdom of fixed price, fixed time contracts, projects require a degree of flexibility and even though cost overruns are often cited as a point of failure, that isn't always true. I can't recall who said it but there is truth in the idea that a good outcome cannot always be dictated by time and money.

From our side, I desperately wanted to be sure we hit our go-live date, but as team colleagues explained, it wasn't so critical that we had to force fit something that might not be as ready as we'd like. Even so, with 48 hours to go and one particular showstopper issue in plain view, I was nervous. I need not have worried but then that's human nature. 

I've never been afraid of failure or appropriate criticism and so once we went live I asked the Twitterverse to let me know how it went for them. Almost universally, everyone expressed congratulations with no higher praise than the person who said: 

It meets my two KPIs, runs fast and looks good on iPhone

Being able to share those moments with the dev team in real time was priceless. 

And Google Analytics confirms we are running 73% faster with a lower bounce rate so we have a fast, performant platform for the future. In that sense, we succeeded even if, from the public front end, the changes appear relatively minor. 

Celebrating success is underrated and once we'd been through the process of catching all the critical nits, we shared local strudels and a little wine before heading out for dinner and a few well-deserved beverages. Since I was in Hungary, you can imagine how that worked out. And yeah - that was on me. The team certainly earned it. 

Next steps

We're going to take a breather, carry on squishing the nits and then work on the new new stuff we'd like to start developing. I'm not going to make that to do list public for the time being because we have ambitions that we know represent hard problems and don't know if they are solvable at this time. I've already got some ideas from readers - keep them coming - diginomica is as much your place as it is ours. 

When I specified the project, I asked for certain functionality that we know works well for us. That has presented some challenges including the need for the dev team to build out modules that replicate plugin functions we like. However, I am minded that some are not as elegant in Drupal as I'd like so am open to hearing about alternatives from the dev team. I don't, for example, think we're as strong on SEO as we could be. 

One thing is for sure - I'll be back in Budapest in a few months' time, whiteboarding the collected ideas that we'll pull together at our end. 

Final words

I can't thank the Brainsum folk enough. They came to us as an unknown quantity but I'd seen some of their work and am comfortable with their approach. They delivered what we asked and made sure that go live was as painless as a go-live can be. Between us, we could have done a better job on training since we made some schoolboy errors, but we won't make those same mistakes again.

Brainsum tells me they enjoyed the project as they learned new things they can use going forward in other projects. My core team has been incredibly patient and encouraging. 

Finally, as we bid adieu to Wordpress, I want to thank DevriX for the support and work they did for us. They've been amazingly responsive, often at very little notice. If you want rock solid Wordpress devs, they should be on any shortlist. 

As an aside - if you're a Microsoft Dynamics shop and want to use Drupal as a front end for CRM related topics, Brainsum has developed an open source module for that purpose. How cool is that?

Image credit - Brainsum

Read more on: