britrunner

aaron cooper

7 Apr 2017

Why I ditched Angular, React & Mongo for WordPress

A few years after getting my hands dirty with web design & development projects I itched to share some of what I’d picked up with others out there. That’s the sole reason I chose to create a blog. Or, so I thought.

I released my blog in 2016. Not this one, but a former version built on web technologies that, at the time, I was keen to get to know better. Things like Angular JS, React (for the CMS), Express and MongoDB. For me, this combination was a no-brainer. After all, passionate web developers are always looking at what the next big technologies are out there. These were the new sweets my boyish mind craved to wrap its metaphorical tongue around.

And, well, here I am writing on a WordPress-based blog. Why?

The pitfalls of developing a blog platform

The main part of the problem was putting development time over writing time. I had this grand vision of completing the development work on the blog and having a beautiful, delightful user experience for those who found my blog from the design I spent many weeks perfecting, all backed by a silky smooth single page React app as my CMS tool. But it never quite worked out. I burned myself out getting stuck on big and (more often) small blockers that would frustrate me and make me believe a little bit less in what I was creating.

The final straw really was when I came to actually use my blog. Updating it was nowhere near the silky smooth experience I’d hoped for. I faced issues with the CMS due to cases I hadn’t considered handling and some which I had, but never felt I’d done a great job with (I’m looking at you authentication…).

I did manage to pump out a couple of posts about unit testing in JavaScript, which from a technical perspective I was content with, but these only scratched the surface of the itch I had to really share my knowledge with others.

There’s another dynamic that drove me to push my blog out the door, and that was the desire to show to others around me that I can create something of my own, on my own time. I felt accountable to my family, my friends and my colleagues who knew about what I was pursuing because I’d told them how passionate I was about creating this cool, unique product.

Whenever I worked on my blog for longer than I’d said I would, or when other arrangements cropped up at the same time that I wanted to devote to programming, I usually felt rubbish.

And then WordPress

I left my blog to settle, thinking that one day I’d get around to working out those kinks and getting really stuck into blogging properly. Clearly, that never materialised since here I am.

I’ve used WordPress before but never been a fan. On the projects I’ve been thrown into maintaining over the years in my career that have used WordPress, all of them have either been too overloaded with plugins to be approachable from the CMS, or the client’s requests have been too specific a use case to be offloaded onto the burden of a new plugin and have involved me making dirty template modifications to implement. Both of these scenarios are developer drudgery.

But when I take a step back and think about it: these are problems that I’ve faced as a developer, but all I’m trying to do is write a blog to help others, right?

As soon as I saw it this way, I felt a lot less egotistic and a lot freer to make a decision based on what was practical, not on the technical details.

Really? WordPress??

I’m sure some web developers who consider themselves “above” working with WordPress sites, turning up their nose at this comment. But, really, let’s look at what WordPress gives you out of the box for absolutely nothing: templating, CMS, initial database setup & integration, authentication, oh and did I mention? Your hosted WordPress site can be connected very easily to a WordPress.com account and with the addition of a free plugin (Jetpack) you can create, edit and publish posts and pages from a native app for Windows, Mac, iPhone and Android. Sounds tasty, right?

Sorry if this is descending into something like a sales pitch, but the main point I’m trying to make here is that others before me have created hugely functional and complete tools that achieve the ends that I’m gunning for. It may not be perfect and it may not be a blazingly quick as a well-optimised homebrew solution, but it’s perfectly acceptable I feel for the purposes of maintaining a tech blog.

A good few of my colleagues of both developer and non-developer backgrounds also use WordPress to maintain their own blogs and all of them look fantastic.

The final nail in the coffin for my home-grown blog is time. Take a look at the stats:

<td style="height: 24px;">
<strong>Angular, React, & Mongo Blog</strong>
</td>
<td style="height: 24px;">
<strong>WordPress Blog</strong>
</td>
<td style="height: 24px;">
2-3 weeks
</td>
<td style="height: 24px;">
Half a day
</td>
<td style="height: 24px;">
2 months
</td>
<td style="height: 24px;">
10 minutes
</td>
<td style="height: 24px;">
1 month
</td>
<td style="height: 24px;">
30 minutes
</td>
<td style="height: 24px;">
1 month
</td>
<td style="height: 24px;">
Included in backend setup
</td>
<td style="height: 24px;">
1 month, brittle security
</td>
<td style="height: 24px;">
15 minutes
</td>
<td style="height: 24.7812px;">
1 week
</td>
<td style="height: 24.7812px;">
5 minutes
</td>
 
Prototyping & Planning
Backend & DB setup
Front-end setup
CMS setup
Security, Analytics, Misc
Deployment setup

The numbers speak for themselves.

Takeaways

There’s more to the story that what I’ve covered here. Web developers are humans and have feelings, emotions and requirements to fulfil outside of the work we do, just like everyone else. Sometimes we forget this or push those human characteristics aside in favour of our desire to learn more, tackle bigger challenges and strike out on our own to try to create something we can really be proud to put our name to.

There’s nothing wrong with those desires in moderation, in fact, those are some of the things that truly push us forward in our enjoyment and understanding of programming. However, when we have 9-10 hour work days and come home to work some more, to those around us, it doesn’t matter if we’re programming for fun or for overtime. We owe those people better than our affirmative hums or nods of agreement and we should take back some time to break away from what we’re working on. Those who live alone or with flatmates perhaps have it another way, but even so, give yourself your own downtime to regenerate and reflect.

I feel good now that I’ve got this all down and out of my system. You tried once Aaron and it didn’t work out, but it’s cool: you can try again without any penalties. And to other developers out there considering how to blog: ask yourself really, honestly, are you building this for you or for those you wish to reach out to?


I just want to add a thank you for reading this far. Although I have technically blogged before, this really feels like my first post. Apologies if this isn’t your sort of thing, as a web developer I’ll be primarily blogging about things relating to that.

Cheers! 🙂