Home » Learning

Category: Learning

Innovation is messy

A hard lesson I have learned recently. 

I like to be right. I like to be efficient. I like to do things the correct way the first time around. I would like to believe that my experience would allow me to do so. 

But some projects present an interesting problem. To understand the problem, let’s imagine we are the architects of a tall and spectacular building

We know how the building is supposed to look. We know what purpose it will serve and who will use it. With this information, we can start making our plans starting from the ground up. We design a solid foundation, and then we layer on top of that floor after floor until we finish. 

However, this is not innovation. Is following a well-established workflow where there are little to no unknowns. We can make good decisions about what materials to use where and a reasonable estimate about when the job will be done. We don’t expect many surprises along the way. 

But what if we have this idea to use a new material, and design this building to serve some innovative purpose that no one has done before. Now there is no way to lay down a solid foundation because you cannot answer the question: “solid for what?”. 

You may discover halfway through that most design decisions do not help you achieve your vision due to some unknown limitation that was invisible right until you got to this point. So you have to dynamite the whole thing, learn your lessons and try again. 

Large, innovative software projects are like that. The architecture you started with may have looked great in the beginning but ends up feeling very limiting when you suddenly realize you need to make a dramatic shift in your project, and your “foundation” does not allow for it. Tearing down a software project is free, compared to dynamiting a building, but you still won’t get your money back from all the work that you cannot use anymore. 

But not all is lost. Because in this process of trying and failing, you learn and you grow into your idea. You stumble into the things you didn’t know that you didn’t know. And drip by drip, you make the unknown, knowable. 

This “failing often” is a challenge for me to accept and work with because it feels wasteful. In hindsight, “I could have done better!”. But thinking like that is a trap, and it suffocates the very creativity required for innovation. You need to be ok with failing often. 

Now that we can agree that innovation is messy and it feels wasteful, what can we do about it? 

1. Don’t start with a big spectacular thing. Instead, try to come up with an MVP (minimum viable product) that you can build on (or next to) in the future. 

2. Budget for the messiness and the learning process. Make sure you have enough money to make the mistakes required to get the learning experience you need to bring your idea to life.

3. Aim for many small mistakes, so you don’t make one massive “end of game” mistake. This idea expands on (1) above. Move fast, but take small steps. This approach will make it easier to backtrack and change direction. Significant commitments are giant leaps forward that give you less flexibility to turn around. 

4. Don’t worry about optimization and edge cases in the beginning. If you do, you may end up doing tedious and lengthy work on a feature that may not even make it into the final product.

5. Try again tomorrow. Some days it may feel like you are getting nowhere, and this is all doomed to fail. That is normal. Take a break, go back to the original vision that got you excited and try again tomorrow. 

6. Be patient. You are playing the long game.

7. Once you have your MVP, you can start again and “do it right” this time. It will no longer be innovation because you have learned your lessons. Now is the time for the polished, optimized, and secured product. 

How do you deal with innovation in your projects?

The DEATH of FTP as a deployment tool

Some years back, a client of mine was having issues with her order confirmation emails not being delivered to her clients. 

Testing the website, it looked like the process was suddenly stopping right after the payment confirmation. The webpage was blank, and the logs were incomplete — classic symptoms of a fatal or critical error in the code. 

The problem was that on my local copy of the website, I could not reproduce the issue. Everything worked fine. 

Many hours later, out of desperation and frustration, I decided to a full comparison between my mirror and the live website. If the code and the database were the same, then I had to get the same results. Since that didn’t happen, I had to conclude that something was out of sync. 

The code was in sync, but some of the files were present on the live server that I was missing on my test machine. Those files present on the server were causing PHP to load a different set of classes than what I would have expected. An older version of code was used that was not compatible with the newer shopping cart.

So how did this came to be? 

Eventually, I realized that by using FTP to deploy my code, I would be able to create new files or update existing ones, but I had no idea that some files had to be removed. 

FTP uploads were always additive. Old, unused files never got removed, and sometimes, their simple presence on the server would mess up with how the code was being loaded and executed. And this issue is rather difficult to discover and debug. 

I tried to manually keep track of files that should be removed before the upload. That works with simple, small projects, but it quickly breaks down when you need to deploy tens or thousands of files. 

I realized that with FTP uploads, I was never sure that my local work was in perfect sync with the LIVE software.

Transitory states

There is another scenario where FTP uploads cause issues. 

Imagine a popular web application with a shopping cart. If we need to update this application with some significant changes for plugins or core updates, using FTP to upload the files one by one creates this problem: for a couple of minutes to half an hour, some of the files are new, and some are old. Visitors who are in the middle of using the web app or making a purchase will suddenly notice all kinds of strange error because the code is in a transitory state: old files mixed with new and not always playing along. Depending on your project size and target audience, this may not be an issue, but if you have a high traffic web store, you may be losing money and also looking un-professional if you do updates like this. 

The final nail in the coffin

I have had this happen to me a couple of times. I am fixing something or working on a new feature. I am testing everything thoroughly to make sure nothing breaks. Once I am confident, I push the upload button on my FTP program, and I watch the progress bar impatiently. When finished, I load the LIVE website, and disaster strikes… errors all over the place, even on the home page. 

My mind races to come up with a possible quick fix, but it comes up blank. How I wish there were a “revert” button in my FTP program! It takes me some very long minutes to manually revert the FTP upload with the previous files and get the site working again. And then I am left with this puzzle: it still works on my test machine, it fails on the LIVE server, but I don’t have a way to test why, without breaking the web app while I am doing my investigation. And that is not very professional in my book. 

A faster, safe, better way to deploy your work

Wouldn’t it be nice to have a “deploy” button that would create a perfect mirror of your work on the live server, with no extra or missing files? And wouldn’t it be nice if this would happen with ZERO downtime for the LIVE app and no transient state for the code? And if disaster strikes wouldn’t be lovely to have a “revert” button and get everything near-instantly back in working condition?

Is this even possible? 

Of course, it is. I think everything is possible in the software world!

Enter “Deployer”

In my quest to find a tool and a workflow that would allow for perfect and zero downtime deployment and the ability to rollback my changes in a precise and complete way, I found a PHP tool called Deployer

And their idea is quite simple actually, but brilliant. On the live server, you don’t have only one copy of the code, but instead multiple versions. 

When you deploy your changes, a new version gets created from your updates, and when this process is complete without any errors, the web app is instantly flipped to the new code! 

If there are problems, there is a “revert” command that instantly flips the web app to the previous working versions. 

To use “Deployer,” you need a certain kind of workflow. 

My favorite is using git and GitHub to get my new code published on the live server. Using git in your workflow means that you need to be able to run git commands on your live server. Another requirement is the ability to use “composer” to download or update the third-party vendor libraries directly on the live machine, significantly reducing the time necessary to create the new version of the website. 

What this means is that you have to choose your hosting carefully (here is my affiliate link to SiteGround) and to make sure that your workflow is compatible with using a versioning system like git. 

This process takes a bit of getting used to and some setup time in the beginning, but the fast, safe, and revert-able deploys will give you peace of mind and speed up the time you roll out your updates or fixes. 

It is time for the FTP Uploads to Rest In Peace.

SSO – Single Sign-On – One Ring to Rule them all!

I am sure you have noticed most of the software services today that require you have an account allow you to “Login with Google” or “Login with Facebook.”

That is very convenient for your potential users and customers as Facebook and Google are so ubiquitous. 

The process above is a form of Single Sign-On. The user logs in only once into Google and then uses that login to authenticate themselves into various other software services that accept Google as an “identity provider.” 

The term “identity provider” is what Google and Facebook do when they allow you to use their services to authenticate your users. 

I was reluctant to use an external identity provider before, because I had assumed that it would mean that you do not “own” your user base, but instead Google does, and they could cut access on a whim. But that is not the case. If you request and are granted access to the user email, you can still get in touch with them, even if Google or Facebook will refuse to do business with you anymore, for whatever reason. 

So it makes sense to add such a feature to your service because it will make it much easier to adopt. 

For larger companies that manage multiple applications and services, it is possible, and it makes sense to implement their own Identity Providers to create the Single Sign-On capability.

Potential Pitfalls

A big challenge that I found with using Identity Providers is “session management,” which means keeping track of the “logged in user.” For example, if the user logs out of Google and logs in with a different account, your application needs to be able to spot this and create a new session for the new account. Otherwise, you risk exposing private data to the wrong person.

The Technical Side

Implementing Identity Providers and consumers it is relatively easy now because they are standard, so you can find ready-made libraries that will make the connection a breeze. 

The libraries I have worked with that I can recommend are:

For Php Composer:

– The PHPLeague / OAuth2-Server 

– The PHPLeague / OAuth2-Client 

WordPress Client Plugin:

– OpenID Connect Generic Client (this required some modification as it was not implementing all the requirements out of the box.)

What does it mean to add value to your customers?

“How can I add value?”

This is the question I write at the bottom of my daily planner almost every day. Why? Because I want to train my brain to think in those terms. Why? Because I hear this is the key to success.

I never managed to answer this question adequately. And I had the insight that I need to answer a different question first! And that is:

“What does it mean to add value to your customers?”

Looking at this question, I realized that my efforts have been selfish. I was concerned with “my success.” The reason I wanted to add value is that I become successful by doing so. 

This question forces me to face the fact that I don’t know what “value” means for my customers. Yes, I can make guesses, but I don’t truly know. 

So many times, I have been tempted and followed through with this idea: what I do is valuable to me, so it must be valuable customers too. And if they didn’t see the value, that was their loss! This approach has resulted in projects that are too complex or in features that I thought were cool, but the customers did not care about them. 

And this has happened because I never paused to ask: “what is valuable to my customer?”.

Value is very subjective, I have discovered. I don’t handle loss very well, so I have a reliable backup policy. But others are much more willing to start over again, so backup is not essential. 

I value aesthetics and elegant design. But most of my customers value ease of use and the ability to manage the website themselves. 

I also have discovered that I am biased. And my bias is not the same as my customer’s bias. 

The first step in discovering what it means to add value to my customer is to be humble enough to admit that I don’t know and that I need to have a discussion. In this discussion, I need to ask the customer what is valuable to them, and if required, to help them discover their values in that process. I also need to set my bias aside and truly understand where the other person is coming from. 

The second step is for me to determine if we are a good fit. Based on what I now know about my customer’s values, can I truly serve them in their best interest? And sometimes the answer is no. And in this case, I have to send them away. 

But there is a way to refuse to work with someone that is not selfish. You can still add value by making a recommendation and send them to a specific someone else (your competition), instead of simply turning them down. This way, interacting with you has still got them one step closer to solving their problem, and you have been generous and trustworthy enough to recommend another person for them to work with. You may have lost a client, but you have earned trust, and in today’s world, trust is precious. 

So how can I add value to my customers? It first starts with showing empathy and meeting them where they are at. And in some cases, it means saying “no” and pointing them in a different direction.

Credits: my viewpoint on marketing and adding value is shaped in great part by people like Chris Do, Seth Godin, and Blair Enns.

Why do I write?

I am writing for both selfish reasons and generous reasons.

The selfish reason is that as I write, you will perceive me as an expert: someone who knows what he is talking about. And when you need help with your online business, you will feel confident to ask me.

Another selfish aspect is simply training. When I sit down to write, I have to put my thoughts in order. I make a mental plan; I consider what the message that I want to share is, why would you care, and how can I make it interesting. Writing gives me clarity, and it also forces me to consider the value of my processes.

The generous reason for writing is to teach. My aim with each post is for you to feel you have learned something useful that you can apply in your online business. Reading this post, you may feel inspired to write too. And a tip I have is: don’t write about you. Instead, write for your customers or the people you want to serve.

I will end this with a thank you to my brother. He is the one who first encouraged me to write and got me over: “my writing has no value” mindset.

How do you find customers?

I know this is a burning question in the minds of many entrepreneurs and freelancers. 

I don’t have a “how-to” guide that will guarantee your success, but I would like to share my perspective because it is not just about getting more business, but also about creating a better world for everyone :). I also admit that what I about to share does not apply to everyone or every business model.

My first customer was my first employer. They were buying what I had to offer, my unpolished, raw programming skills fresh out of school. I did not like that customer, but they taught me a lesson: 

your customers should find you, rather than you finding them. 

It took me almost a decade to understand it, though. 

My second customer was my second employer. But this time there was a big difference. They called me, and I had to decide if I wanted to work for them, not the other way around. They had already decided they wanted me there.

This may seem like luck, and that is what I also thought for a while. But it happened again with the third employer. And after that, I stopped being an employee and became a freelancer. And the people I work with today found me. 

It wasn’t until I read about inbound marketing that I understood what was going on. And that, in fact, luck was just a part of it, and maybe not the most significant part. 

What I was not doing was not sitting around, waiting for clients to call. I was continuously working. Either to improve my skill or to generously solve other people’s problems. 

When I began my freelance work, I’ve spent the first two years doing volunteer work. And they have been the best years. In those times, I would only do work that was profoundly satisfying to me. And I discovered how nourishing it is for the soul to be able to choose the people you are working with or working for. 

To paraphrase Seth Godin, the way to get clients is to do work that matters for people who care and to do so generously.

Contact forms done right!

What is worse than nobody contacting you for business? It is having to deal with a lot of Spam. Spam takes away from your attention, and it can potentially drown a valid contact request or a genuine request for support. 

I will be talking here about WordPress and specific plugins, but the general principles apply to other technologies as well. 

The contact form is an essential part of your business. You can get both feedback about how you are doing, but also it is a way for customers to quickly reach out to you, or for leads to ask presale questions. 

The easiest way to get a contact form in WordPress is to use Contact Form 7

But just installing and activating the plugin is not enough. There are two extra steps that I suggest you do:

First: get rid of SPAM. 

Yes, I know, in the first few weeks or months there will be no problems, but as soon as a script bot discovers you it will send a ton of Spam, and that will also affect your server reputation and your ability to send out email. Don’t wait for that to happen. 

To get rid of Spam activate and configure the CAPTCHA test. The one from Google works best, and I choose it most of the times. (If privacy is a big concern from you, I don’t know if Google can be trusted, so shop around!)

Second: Safeguard against email failure.

The way a simple contact form usually works is to accept the submitted message and then email you (the website owner) with the contact message. 

This way used to work well, but with the ever-increasing Spam problem, there is a chance that the contact email will never reach you. When and if this happens, you will never know. Unless…

Unless you also save the messages on the server where you can review them later. For this, I use the companion plugin Flamingo. Aside from making sure you don’t lose your messages, this collection of data can become a treasure when it comes to customer research: most common questions asked, or problems in interacting with your products and so on.

Bonus: Integrate with an auto-responder.

When you begin to get more messages than you can quickly respond to, a nice touch is to use an auto-responder to provide some quick tips or to reassure your visitors that you will get back to them as soon as you can.

When you do use Flamingo or an auto-responder, make sure you update your privacy policy to inform your users about that and be GDPR compliant.

A look into the (not so distant) future.  

Soon contact forms will be replaced with virtual agents/assistants. This is already happening, and it will be a game-changer — more about AI in a different article.

Can you run a business and not talk to anybody?

At my core, I am a computer nerd. I am excellent at talking to computers. Not so much when it comes to other human beings.

For a long time, this was the only thing I would do. I was the happiest when I got the project specs on paper, so I could read them and implement them, by myself.

But when I decided to become a freelancer, I realized that I had to talk to other people. I had to talk to the people I wanted to serve about their goals and their vision, but also about money. There were times when I knew had to say “no,” but I couldn’t. There were times where there was a conflict that had to be resolved through better communication.

I wish I could say there is an easy “how-to guide” to learn to communicate better, but there isn’t. I just had to practice — one awkward conversation after the other.  

And it is still hard at times. Especially when I need to make a change in how I price things, or in the terms of the engagement. 

So why go through all this trouble and stress of learning to be a better communicator?

Although it seems obvious now, here is the lesson I resisted the most: to find clients and to keep finding better clients, you need to learn to communicate. There is no way around this. 

You need to know how to tell your story compellingly; how to communicate your pricing and how to negotiate in your favor. You need to be able to use your conversation skills to determine how you can best create value for your clients. And, in some cases, you need to know how to let some clients go. 

By avoiding communication, I would frequently make wrong assumptions about what was valuable for my client, and that would jeopardize the relationship and the project. 

If you don’t learn to communicate better, you will have to let someone else do the talking, write the copy on your site, create the video, and tell your story. And even if they do a good job, they are not you :). You will continue to depend on someone else. It will be comfortable, but you will be limited to your view from the “back seat.”

If you are still not convinced then maybe this will shake you up a bit (as it did me): 

“The better communicator will determine the price.” 

A business-savvy website should consider money, and therefore price. And you can spend a lot of time and money optimizing the technical bits, but if your communication is off, your success will be limited.  

I will end this post with a book recommendation. It is the most expensive book I’ve ever bought, but it’s worth every dollar: Pricing Creativity by Blair Enns. Don’t think that if you don’t work in the creative business that this book does not apply to you. It does! And it is all about communication.

The Process – A project from start to finish

There is value in having a process. It helps you provide consistent results, and you have something that you can continuously work on to improve. 

Here is “The Process” that I use today with software projects.

1. Are we a good fit? 

The first thing that happens is the discussion where both myself and the client try to determine if we are a good fit for one another. 

My job is to determine what the client needs and consider if I can provide a creative solution to solve that problem at a price that is fair for both of us. 

Sometimes this discussion happens in two parts if I need a break to do some research and investigation before I can begin to think of ways I could help. 

An important note here is that what is “needed” may not be what the client initial thought may be needed. That is why we have a conversation before any agreement happens. 

2. Project Set-Up 

After we agree on scope, price, and what it means to be 100% satisfied, I begin the work. 

With time I have learned the value of keeping things organized and tidy. 

Each client gets their individual folder that will document the history of the project. In that folder I will have things like:

  • meeting notes; 
  • agreement of project scope and price;
  • backups – I never do any changes unless I have a backup first;
  • client files – images, documents, other media;
  • a work-log – where I document what I have done and why. In very rare cases, I can use that to remind the client of the road we took together and justify a decision over the other. Another benefit is that you learn and get better by journaling what you do; 
  • access details – a file where I store various logins that the client has shared with me. In some cases, it makes good sense to have this file encrypted, like a ZIP archive with a password, for example;
  • any new agreed-upon changes also go here;

3. Making a plan – The List

I was trained, mostly by my father, to be organized by using lists. And I have kept that training and added on top of it. It is very useful, and it gives me clarity on what it needs to be done and in what order. 

Here I make a list of everything that needs to be done, broken down in tasks. The tool I use most of the time is Asana. I have tried Trello and Bootcamp, but I find Asana to be much closer to how I like to work. 

I also use a calendar service (like Google Calendar) to remind myself of upcoming deadlines.

Something that I found is handy is to split my list into three main sections:

 a. Go Live – the project cannot go live or shipped if any of the tasks here are not finished;

 b. Nice to Have – other tasks originating from the client that we can add later, after the go-live and in, some cases, in a “Phase 2” of the project;

 c. Bright Ideas – here I write down my own ideas that I think could help the client;

Why am I organizing things like this? 

The short answer is that it forces me to focus on the client; to get them on the market as soon as possible. I did not always use to think like that, and I was routinely making the mistake of focusing on tasks in the “Bright Ideas” section because there were so inspiring to me and they would challenge me. But in most cases, they were not mandatory for the client. So that added unjustified delays and extra costs. While I don’t think the client is always right, I do believe the client knows what is important to them. And that is where my focus should be and what I should be solving first. 

I hope it is now evident that the order in which I go about these tasks is: Go Live, then Nice To Have and then Bright Ideas. And I have learned to be OK with the fact that most projects stop after the “Go Live” part when the burning need of the client has been met. 

So why still keep “Nice to have” and “Bright Ideas” around? 

The biggest reason is to clear your mind so you can focus on the tasks at hand, knowing that your “good thoughts” are not lost. The second big reason is that is how you learn and grow. Maybe you don’t implement these ideas now, in this project, but because you wrote them down and thought about them you will remember them, and they may be the perfect solution for the next project or the “Phase 2” of this project. The “Bright Ideas” section is your most creative section. Don’t throw it away.

4. Set Up a Schedule 

I believe that if a project does not have a deadline, it will never finish. I am very wary of clients who say: “we can finish this whenever… no rush!”. That can be a source of significant delays for you and the project. 

I know this is not the same for everyone, but if deadlines motivate you, a client who is continuously delaying the project will drive you mad. 

In this step, I set-up reminders in my calendar for milestones that will help me get the work done in time for launch. 

When I do this, I need to allow time for the “unexpected” right before the launch. So I plan to finish the project at least a few days early to have some space to extend in case of unforeseen trouble. 

5. Doing the work

Only in step 5 comes the most fun part for me, doing software work :). But as a solopreneur, I need to do and master the business admin part as well.

When doing software work, I have a few principles that I follow:

  • Blocks of uninterrupted time – 2 – 3 hours blocks when I am the most efficient. When coding, there is a complex context that you need to have running in your head, and that takes time to build. If your block of time is too short, then most of that is spent just reminding yourself what the project is about;
  • use a versioning system – this should be obvious – even if you are working alone, it is so much easier to roll back to something that was working when you have a versioning system in place 
  • automatic testing – for particular clients that require a very high level of quality control this needs to be done;
  • Automatic backups of the client’s old code/website – again, just in case you need to roll back. Make sure the backups also include the database, not just the code files;
  • Keep track of working time – in some cases, “hours of time” is what I am billing to the client, and also this is how I know if we are going to finish on time. I am however transitioning out of this, so stay tuned for a post about it. Keeping track of time can be a learning and discipline building tool, just like journaling your work, but sometimes it becomes very, very restrictive and creates a lot of stress; 

6. Client Feedback 

I used to work, work, work, and then do the “big WOW” reveal at the end when the client would be floored with the amazing quality and results. 

This big reveal was silly. 

Why? Because it would allow me to focus on the “Bright Ideas” list instead of “Go Live.” And I would deliver an excellent, high-quality product, that would not speak to the client’s needs. 

What I do now is to deliver work in smaller increments and get feedback soon and often. I am careful here that the feedback I am looking for is “does this meet your needs, madam client?” and not about “how to do my job.” Therefore it is a tool to keep me focused on finding solutions that are important and relevant to the client. 

7. Making mistakes 

Mistakes are happening in every project. If I am not making mistakes, I am not learning anything new, and I am just delivering the same old solution. In some cases, that is OK, but generally, that is not what I am looking for. Each client is unique, so I want to challenge myself and meet their individual needs. 

It is therefore essential to know that I will be making mistakes and have a plan on what do to about them. Like, make sure I have factored that in the price so I don’t add more as a cost to the client to fix them. Also, I need to include those in my schedule. That is why I always have the “unexpected problem” in my planing with some time allocated to it. 

I am, however, fair. If I make a stupid mistake that I could have easily foreseen and avoided, the fix is on the house! I am talking here about the unavoidable trials and errors when you are building custom solutions and exploring places you have not explored before. Those mistakes need to be allowed for if you want to arrive at a good solution where you have explored alternatives that did not work. 

8. Going Live 

When I “go live,” I strive to have a seamless experience for the customer and their clients, which means as little to no downtime if that is at all possible. Over time I have discovered various ways of “flipping the switch” that can use depending on the specific situation. 

Again here, backups are super important. In case you mess up the live deployment, you need to be sure you can roll back to what worked before. I have seen so many instances where this not done, and people roll the dice. They may be that good, but it is just a matter of “when” things will crash on you, not “if.” I have learned my lesson.

9. Review and Learn

Ideally, the project has completed with the “double thank you.” You give thanks for the business, and the client is grateful for the solution they got. 

Either way now is the time to reflect on the project and look for “lessons learned.” 

What worked? Do more of that!

What did not work? Do less of that! 🙂 Or at least try to figure out what you can do differently next time. 

Something else that shows up here is opportunities to learn new things. Look at the “Bright Ideas” section and the “Nice to Have” section and try to come up with solutions to those that use new technologies. I sometimes set-up a pet project where I implement that solution.

I mustn’t skip this step or else I would get stuck in a rut. 

Mic to you!

How is your process different when you’re helping your clients? What are some of your lessons learned along your journey? 

Business Automation

When you start a business, you do it because you have something to say, something to share, or a service that may benefit others. So there are a lot of opportunities to be creative and to express yourself. 

But once you start getting some traction or you have been at it for a while, you begin to realize that many of the activities you do are business administration tasks, and not so many creative tasks. 

Some people enjoy this, but most creatives tend to feel drained by it. 

If you can afford it, a solution is to hire someone who cares to help you. 

Another solution is to automate as much as you can. 

We live in the age of Artificial Intelligence. If you wonder: “Is there a way I could automate this” the answer is very likely to be “yes.”

Here are some of the things that can easily be automated:

  • order fulfillment for downloadable products
  • thank you notes
  • providing support and guides about how to use or access your products
  • ask for feedback or testimonials
  • subscribe customers to your newsletter service
  • backups of your important data
  • weekly or monthly reports
  • health checks of your systems
  • posting on social media

Zapier is one of the most powerful automation tools that I know. It allows you to connect apps and services that do not talk to one another and create all kinds of workflows that will run automatically. 

And if you are thinking of building an online service yourself, it may be worthwhile to integrate it with Zapier as this will increase the rate of adoption. Many other services will be able to connect with you without having to write custom code. 

There is a caveat to all of this: your customers and visitors are humans, and they crave a human connection. Automate the repetitive tasks, and for the others, let your creativity and human nature shine :).