About 10 years ago when I started as a junior web developer, I was obsessed with writing programs. Complex programs. I remember senior guys telling me that I needed to simplify my code so they could understand and help me to maintain it. But I naively thought I was the smartest coder in the world and kept introducing shiny new complicated parts.
As time went on my responsibilities grew and I got involved in multiple projects. Not going to lie, it was a great feeling to be important, but because no one else wanted to touch/understand my complicated programs, I had to maintain all of them myself…
I was stressed out. Feature requests would continue coming in and I just physically wasn’t able to keep up. My productivity dropped significantly as I had to constantly switch from one project to another one.
The other interesting thing that I noticed is that after I would come back to the code that I wrote a few months ago (my own code!), I would have a really difficult time understanding it as well. All the complexity that I introduced started biting me in the ass.
One other important thing that I forgot to mention – not only would I write complex and hard to read code, I would also refuse to explain how it functions to other developers and write any kind of documentation. I thought if I’m the only guy who understands how the system worked, then the company would have to keep me around forever. Naive Sergey…
Basically, I had to change my approach in order to reclaim my life and reduce my stress levels (and keep my job of course).
All beginners go through the same process. Once I started writing simpler solutions that other people could actually understand, my load and stress levels dropped significantly.
Then I started sharing everything that I learned with other engineers and the magical thing happened – I gained authority. People started coming for the advice and wanted to work with me! That’s how I eventually transitioned into operational roles.
Do you guys follow? Do not hold anything back. Share and contribute, it will pay off in the future, I promise.
Why am I telling you all this and how is it relates to marketing?
Well, you may already know that I’m the founder of e-commerce store that sells women clothing (weird for the guy I know).
Anyway, we have the guy who runs our marketing department and he LOVES complexity and new shiny tools. Every other month he asks us to swap one tool for another one.
For example, right now we are working on yet another integration with the new “supposedly great” marketing tool. It’s called Carrot Quest.
According to our marketing guy, the tool does “everything” and it’s a pure magic. It provides online chat, email delivery services (blasts, triggers), push notifications and gives you “very powerful” user behavior logic builder.
This is all cool and nice, but here the problem – all of those complex solutions make it VERY hard to understand what the hell is going on. We can’t get a simple answer anymore… But the marketing department appears to be always busy implementing those complex solutions…
The integration with external services is another can of worms. One of our developers had to spend more than a month to implement all the API calls and secure data exchange. We had to to make sure we keep data backups on our end as well because as practice shows, external services have a tendency to fail and it happens much more often than you may think. What’s worse is I have a feeling it will not last long and we will have to integrate with yet another “awesome marketing automation service”.
I think all of the fancy tools/services like that are popular because they create a sense of work. They make it easy to switch the focus from simple but very important metrics, like the number of new registrations and orders. Instead, you are forced to think about building complicated user behaviour logic (when the user stays on the page for 10 sec, then goes to another one, stays there for 30 sec, then puts a product in the cart, then puts another one after 1 minute – if all true, show popup or send email). The complexity here is only limited by your imagination…
Plus there is this blame… Our marketing team always blames devs for not creating proper integration, devs blame external service for not functioning properly and it goes on and on forever. Nothing really works and no one knows why.
What do we get in the end? Zero visibility and scattered focus!
That reminded me one of the Russel Branson stories where he explained the difference between simple and complex funnel. I can’t find a link for some reason but here is the idea.
There was a client that wanted to hire Russel and his team to help improve the existing sales funnel that was built with Infusion Soft. The funnel looked similar to this one:
After studying this chart for about an hour Russel still wasn’t able to figure out what goes where and how it was designed to function. There were so many entry points and different scenarios that would transfer prospects to different steps in the funnel, that was essentially impossible to calculate any meaningful data.
Basically, he had to redo the whole thing from scratch. All sophisticated user events and triggers were gone. Only a few critical pieces survived the rebuild – the Acquisition (Optin) and Sales / Webinar (the main thing that you sell) funnels.
That “simple” change dramatically improved the visibility and accountability, but more importantly reduced maintenance costs and improved the bottom line for the client. It’s not a secret that when you monitor the important business metrics (the numbers) they tend to magically improve.
Did you guys get it? Simplicity beats complexity every single time! But here is the problem – it’s very easy to build a complex system, especially with all the modern services and tools, but it’s VERY HARD to build the simple one.
I thought this principle only applied to the world of software engineering, but when I started looking into different areas I see the same patterns.
Keep it simple! That’s my challenge for you guys.
Leave a Reply