Home » productivity

Tag: productivity

Is this the best way to accomplish our goals?

Have you ever tried to coach a team towards an end goal but failed? Either because you can’t get your point of view across or because the discussion gets sidetracked continuously into things that are not that important? 

I have tried to send documentation to be studied that points at the right solution. That did not work. 

I have tried to use my experience and authority to give them the best solution and move on to the implementation phase. That did not work either. 

I have tried allowing them to learn on their own and to figure it out eventually. That also did not work because of time constraints. 

And guess what the common denominator is to all the failed attempts? Me! 🙂

My thinking says: if they only had the right information, they would see things like I do. Unfortunately, that is not true. As I am discovering, each one of us sees the world through a different lens. Our views may be similar, but they will never be the same

Today I was studying Seth’s book “Stop Stealing Dreams.” And I was fascinated with how many ideas he can share, without giving any advice on what to do! And not only that, but almost every paragraph had me stop and ponder what was said. I could feel the cogs in my brain getting a good workout!

I had to digest the entire book to figure it out finally. And the answer is now simple and obvious. Seth asks a lot of questions, inviting the reader to think for herself!

And the most potent question was:

Is this the best way to accomplish (…insert goal here…)?

This question serves double duty:

1. It makes sure that we know and agree on what the goal is. If we don’t, we need to go way back in our discussion and check and decide on our goals again. 

2. Once we agree on the goal, asking “is this the best way” opens everybody’s mind to contribute in a focused way towards the goal. 

The key difference for me is that I no longer dish out my solutions but instead invite everyone to contribute. The best way that the group finds may be way better than what I had initially thought the correct answer was. We all learn, and we move forward together.

I will definitely give implement this one in my communication.

Meetings – as a display of power

Why yet another writing about meetings? Because it is an old habit that needs to change. And because it is so old, we need to challenge it strongly and repeatedly to defeat the inertia.

Most people go to meetings because they feel they have to, not because they want to or need to. 

When there is no engagement, the meeting becomes a waste of time and a show of status (“who’s who”).

If you are the meeting organizer, you may care a lot about your project or your idea or about getting feedback. But not everyone in the meeting cares about the same things that you do. And if all you can see around you are bored people who would rather be someplace else, what can you do differently? (assuming that you care)

You could change the meeting duration from one hour to 10 minutes! No more room for fluff, for checking the phone, or for being late. And above all, you show respect to the other participants forced to spend their time with you.

You could also simply cancel the meeting. Do you need to send an update? There is email; there is slack; there is the phone. Do you need feedback? You can use online surveys or schedule one-on-one interviews in cases where you need to go deeper. 

Above all, seek and measure engagement. If people around you are not engaged, everything moves in slow motion, and you are also missing on a ton of creativity that has no room to be expressed. 

If you are meeting participantwhat would happen if you didn’t go? Would the project miss a critical piece of insight, or would “people upstairs get upset”? If it’s just people getting upset for you being honest about not having anything of value to contribute, then maybe you need to bring this up. Challenge the reason you have been invited to the meeting and make sure you need to be there. If you know your input is valued and sought after, you will be more likely to be engaged. But if you feel like a replaceable cog in the system, then you won’t be missed. 

Another thing you can do is start a discussion about meetings around the office. Are they effective? And how do you measure that effectiveness? If there is little engagement, what can you change to have more of it? What would happen if you canceled the meeting? What is the difference between synchronous communication (phone and meetings) and asynchronous (Slack, email, voice messages)

With new technology, we can do better. Show respect and seek engagement, not a display of power.

How do you think meetings should change in the new environment? Who are meetings for, and what are they for?

Where do you start when you design a Website?

“Writing is easy. You only need to stare at a blank piece of paper until drops of blood form on your forehead.” Gene Fowler

I used to feel the same way when it came down to designing a website. 

I would have all these general ideas of what should happen on the site, but then I was faced with this white emptiness and an infinite amount of possibilities. 

The simple task of laying down the first line felt daunting! 

If this is your struggle as well, read on, because you’re in for a treat!

It turns out that the problem is with the “infinite number of choices” when thinking about design. If you only had two colored crayons to choose from, you would not spend to much time picking one.

The key is to limit your choices to just a few!

If going down from “infinite” to “a few choices” makes you cringe, consider the fact that most designs that work were built within pretty restrictive design systems.

But now it seems like we just shifted the problem. Instead of figuring out where to start, you wonder how I choose my design system restrictions?

I will argue that this is a new and different problem. Because you don’t have to choose these restrictions, they are instead imposed on you by the project you want to create. 

What is this project for? Who is it for? 

When you answer these questions, you will build a set of features and an audience for these features. Within these answers, you will find your constraints. 

For example, let’s look at color. Instead of randomly choosing a color or thinking of something that is appealing to your sensibilities, you would serve your audience better by reading on the psychology of color and choosing the one that conveys the message you want to convey to your audience.

The same applies when choosing the fonts for your design. If you know how different people perceive different type-faces, the font choice will be an obvious one.

When it comes to the overall design and layout, you are again constrained by creating a clear hierarchy. You don’t just jam everything in there; you need to consider what is most important and prioritize accordingly. It also helps if you sketch first the features and build up from there, instead of figuring out what the navigation should be like when there is nothing to navigate to. 

The web needs to be accessible, so you need to create proper contrast with your color, provide appropriate text sizes for your labels and enough space around the buttons. 

When you write all these restrictions down, you are left with very few options to choose from. And starting the work on your design will be much easier, especially if you focus on the features or the main call to actions and build from there. 

Build your constraints first (from the requirements of your audience), and the design will flow from there.

Still not using Log Files in your app?

Have you ever had to contact support for a web app or a plugin to fix a problem, and the first thing they ask is for full access to your web server so they can “debug” the issue? 

This request frustrates me to no end. 

It is unprofessional, and it is lazy. 

The reason support asks for this is so they can run tests and inspect the results on your LIVE server. If that makes you nervous, it should! How can you know that they will not accidentally mess with your customers’ data? Not to mention all the privacy issues that crop up as soon as you hand your keys to a third party with no control. 

A proper way to deal with providing support for your app or your plugin is to add logs—a log file journals the activity and the data passing through your code. Inspecting a good log file will almost always let you know what the problem is and where the problem is. When a customer calls you for support, you only need to ask for the log files, not the keys to the server. 

In my experience, a good log file creates a breadcrumb trail that documents the data flow and the branching decisions in your code. Ideally, inspecting the log file alongside your code allows you to precisely follow along and determine what was wrong, without even having to run any code. 

A common mistake is to be unnecessarily verbose while at the same time not documenting the branching decisions. Silently discarded errors and exceptions are the usual pitfalls, and close second are if/else branches where only one of them leaves in a mark in the log. 

Security and Privacy

Now that you understand why log files are a must, especially in a client-server situation (like all the web applications), you need to be careful not to store sensitive data into the log file. Don’t store passwords or credit card numbers, and unless absolutely necessary, do not store emails. 

If sensitive data is required for you to be able to rebuild the data flow, make that available under a specific “log level” that is only activated on request. And in some cases, the entire log system can be activated only when trying to debug a problem. With this approach, however, you lose historical data that you need to fix the problem.

Always provide a way for an admin to flush the logs. 

Rolling Over

I am an overly enthusiastic user of log files. Simply because they work, and they speed up the process of solving problems. But there is a mistake that I kept doing for far too long. That mistake was no automatic rolling of the log files. What that meant is that the logs grew and grew until they would eat up all the allocated disk space. 

Oopsy! 

When using log files, decide when a log entry is too old and have an automated mechanism to remove those logs. Rolling the log files once a month (log1, log2, log3, etc.) and removing the very old files is a useful approach. 

If you don’t currently use log files, what is your strategy to support and debug your application while it is running on the customer’s LIVE server? I hope you will not say: “get root access and hack away until I find the bug” 🙂

Is your website really helping your business?

I know this seems like a silly question to ask in 2020, but I still see examples of websites that do not actually help (or not as much as they could).

For a website to be helpful, it needs to have a well-defined goal. And if you can track that, all the better!

Here are some examples:

  • it helps sell your products or services
  • it showcases your experience and expertise
  • builds a community
  • makes a bold statement about a cause you believe in and support

Website vs. Social Media

Social media gets a lot of attention today. It is tempting to focus on building a following there. We all know and follow “influencers” on YouTube, Instagram, Facebook, or LinkedIn. 

But who really owns that audience and that space? Hint: It is not the influencer. It is the social media company. 

On a social media platform, even if you create content, you are still the guest. You are still a product that gets attention back to the social media company. You and your business can be kicked out at any time with no explanation given or a way to get back. And everything you have built can fall like a house of cards. 

This is where your website can help in a big way.

At the very least, your website should build a mailing list as a way for you to be able to contact your audience directly and not depend on “the algorithm” or “boosting” your content. 

Unlike your social media page, the website is yours, and so is the mailing list. You may be forced to change hosting or email providers, but you don’t lose your audience or content, provided you are disciplined with your backups.

A website can be supplemented with a podcast. The podcast shows will also be distributed directly to your subscribers at no extra cost to you. There is no algorithm involved and no need to “boost” your content. A podcast has the added advantage that your distributing content cost does not increase with the number of subscribers, as it happens with your mailing list. You should, however, still invite your listeners to subscribe to your newsletter from time to time. 

The Take-Away

The take-away is that your website should do something, not just take up Internet space.

It should at least:

  1. build trust
  2. invite the user to subscribe to your newsletter or podcast
  3. have a clear value proposition and a call to action on the home page

How is your website doing? Let me know about your challenges in the comment section.

Just Quit!

Or better yet, don’t even start!

Quitting has a bad reputation, but it can be one of the best decisions you can make. 

As children, and later as students, we were often being told to “not be lazy”, and people who are busy or hard-working are applauded. 

But this advice is flawed in a subtle but dramatic way. Busy work is not the same as focused work. It is entirely possible to be busy all day and not accomplishing anything of importance.

The way we were taught in school was in 50 minutes blocks of something, and then we would be interrupted to do something else. 

The logic, they say, is that children get bored with one subject, and this switching adds diversity to the school day. But what it actually does is prevents anyone from going deep on any one topic. 

We carry this habit of “multi-tasking” into our adult life, and working on multiple projects at a time, doing a tiny bit of each day. 

I used to think that doing multi-tasking, I was productive, but I was just busy.

The Cost of Task Switching

This cost became extremely obvious to me when working on complex software projects. Just getting into the context of thinking where I left off would take up most of the hour, and then I’d have to switch to something else. My mind got an excellent workout, but my output grew at snail speed. 

Repeated task switching does not allow you to go deep and to build expertise. And it costs you time that will add up. It is a perfect recipe to become and stay average

The solution is to quit! Or better yet, don’t even start! 

If you don’t have it in you to finish this project or become the best at what you do, quit and choose something else. Don’t quit soon, quit now. Ignore the sunk costs: “but I’ve already invested so much in this!”

Quit, but quit strategically. Don’t become a serial quitter. Instead, quit so that you can focus on the projects you want and can finish. So you have the time and energy to become the best in the world at what you do. 

Quitting is especially important if you find yourself on a dead-end path. A dead-end path is different from a plateau. A plateau can be overcome; a dead-end cannot. Every second you stay on a dead-end path is a second wasted that could be spent on the other path, which would get you more fulfillment and personal growth. 

Dead-end paths could be a business that is now obsolete and dying, a job where you’ve become stuck in a rut, a project that is not moving forward despite your best efforts, or a relationship with no potential for growth. 

A quick aside about “The best in the world.”

Becoming the “best in the world” can feel very challenging until you realize that “the best in the world” does not mean “the best on the planet”. You get to choose and define your world, your market, the people you would like to delight, to be “the best” for. And you can grow from there. 

I will end with a quote from the book that inspired this article:

“Quit the wrong stuff.
Stick with the right stuff.
Have the guts to do one or the other.”

The Dip – by Seth Godin

Building ZAPs!

Since I recommended you build an API into your service that integrates with Zapier, I figured I might as well give it a try myself, and not just talk theory

I was shocked to finish the integration without having to write one single line of code

But I am getting ahead of myself. 

Part of my skill up plan is to take a deep dive into automation. What a better way to study than looking at what the masters are doing? Or, in this case: Zapier. 

I’ve fired up their tutorial and was getting ready to crank some code! 

I have integrated APIs before, and if the documentation was clear and with relevant examples, I could get the hang of it pretty quickly and then extend it easily. 

As I am progressing through the tutorial, it dawns on me that this integration will be created entirely online, in the Zapier UI, by answering some questions and filling forms! 

My mind was going: “it cannot be that simple! Each API provider has its own interface or authentication mechanism… you would have to write some adapter for that!” 

No, sir! Not so! 

If the APIs follow the standards when it comes to authentication and passing data around using JSON, then Zapier has you covered! 

You answer the questions, you fill out the forms as instructed… and you’re done! No code required! And since there is no code required, there is nearly zero chance of having a bug in your integration. How cool is that? 

Needless to say, I am impressed. And I got another confirmation of why following standards is a good idea. 

Not quite like building with Legos

Even though I did not write any code, it did not feel like building with Lego blocks. But more like solving a jigsaw puzzle. Because the APIs are very diverse, you need to spend some time to connect the right pieces in the correct order. But since everything is built via filling forms, you have validation available and tests. There is immediate feedback if what you are making is not working as you’d expect.

I did spend two hours getting the final step to work. I almost contacted Zapier’s support to inform them that their builder is broken, but in fact, the problem was with me :). 

I had a typo in one of the data fields, and the error message I was getting from the API I was using at the time was very misleading (apparently on purpose). So it took me two hours to find that typo in my configuration and get the Zap to work. Take away here: please make your error messages clear; it will save you time in the future!

Just as with finishing a complex puzzle, seeing the success message was so satisfying. 

Why all the fuss?

Building a Zapier integration is so simple and straight forward that I can easily see AI building integrations and ZAPs in the (very) near future. This means that if you decide to provide an API that can integrate with platforms like Zapier, your service may be used in ways you cannot even imagine. The pieces can be interconnected in infinite ways to create something new, exciting, and why not: disruptive!

Keep on creating the new paradigm. 

New Normal – Collaboration Tools – Asana

As I wrote in a previous post, the remote collaboration will become the “new normal,” so you might as well get comfortable with the tools. 

I bring up again the resistance to change. Know it is there, say “hello” to it, and then persist anyway. There are gems and diamonds on the other side! (And cookies if you like sweets).

Bribing aside, you can find dozens of tutorials on how to use Asana, so let’s instead dive into this question: “why bother?”

The challenges of “self-management”

School, and the first jobs I had, taught me to be obedient and to follow orders. This habit meant that someone else had to do the planning, issue the requests, and track the progress. 

When I broke off, on my own, choosing my projects and collaborators did not mean that I instantly knew how to self manage! Quite the opposite!

I was anxious that nobody was telling me what to do and when to do it. I perceived this responsibility as a burden. (spoiler alert – it is, in fact, great freedom, but it took me a while to wake up to that).

I began by writing my thoughts and things to do on pieces of paper. That worked so well for the first few days until I realized I was losing the pieces of paper, or some of the messages were no longer making sense because they had no context. (I had on a piece of paper this note in big, bold letters: “Very Important: 5“. To this day, I don’t know what was so important about that five.)

Next, I moved my notes to the computer. Each project had a “TO-DO.txt” file where I would write my tasks, and log my progress. This file worked well for many years. And I still use it today for small projects. With larger projects, it was getting more and more difficult to scan the file to see what is “done” what “needs to be done” and what is the deadline for each item. 

And there was another problem. I was continually checking that I did not miss anything from what I promised I would do and that I would deliver on time. This monitoring would crowd my attention by keeping mental track of dates and features and promises. Not much room left for creative thinking. 

I looked for a solution. I knew from the start that it had to be online. Why? Because I did not want to carry my computer with me to check on things. Ideally, I would log into a website and have everything there, accessible from wherever I have an internet connection.

The right tool for the job

I tested a couple of things, and the tool I like the most was Asana.

First of all, it has a free tier that has everything that I need. 

Second, it has an excellent design that makes sense. Think of it as an advanced “TO DO” list manager. That means you can easily add items; you can check them off as done; you can immediately see what still needs your attention.

These reasons were great, but what sold it to me was the feature to add “comments” for each item. I did not even know that I was missing this feature. Comments became essential for complex tasks, where I had to do research and keep track of my findings and have all that information connected with the relevant “to-do item.” A long text file with notes would become so hart to read that it would be useless. But items with their own set of comments, now that is very easy to digest at any time. 

The second thing was the reminders! When you set a deadline for a specific item, you will be emailed a few days in advance that you need to take care of that item. Now, I could relax and free my memory from all the dates and deadlines and allow the software to do that for me, knowing that I will not miss anything. 

The final reason is why I put this into the “collaborative tools” section. You can add more people into a project, share your list of items, add comments, and complete tasks. You no longer have to write emails working out with collaborators what needs to be done. Instead, you can assign a task to someone with two clicks, and they will get notified about it. A follow up to the email problem is that you can keep all the discussion next to the task, so you don’t have to search for an old email.

For a team (and even a solo project), this tool adds clarity! I have discovered that when you are clear on what needs to be done, it is much easier to build the confidence and the motivation to actually do it. 

In Conclusion: choose a small project and give Asana a go. Don’t just read this post and decide, but actually test it out and then decide if this can improve your workflow by freeing your mind to focus on the creative things and not project tracking. Look at this as an investment in yourself and your team.

Automation with Zapier

What do you value most? I hope that your answer is: “TIME.” 

Time is our most valuable resource because it is non-renewable. Wasted time is lost forever. And it could be argued that the reason we work so hard is to have enough resources. Resources that will allow us to spend more time doing the activities that we enjoy: activities like following your dreams, working on your business, spending more time with friends and family. 

I don’t know of any better time-saver in the online environment than automation.

Automation means to identify and formalize processes for the flows that make your business work and then use various tools to set them on “automatic.” This way, they can work even when you are not paying attention. It is like having an employee that is almost free and never sleeps or rests. 

In today’s world, the leading tool for automation online is Zapier

The idea behind Zapier is quite simple and yet profound because of the market they are speaking to. 

What happens is that in the online world of business, you have your website, your store, your payment gateway, customer engagement, webinar, emails, and so on. All these components need to talk to each other. What used to happen before, is that you, as the business owner would have to create and manually maintain this communication, usually based on email notifications you would get from various systems. 

The alternative was to hire someone to do it for you or hire a developer to write a custom program that would automate these processes. Both options could get pretty expensive.

There has been a shift in the past few years. Each of these services exposes an API. This API allows them to talk to each other in a clear and standardized way. With this option available, you would need somebody to integrate these APIs. To connect them in ways that make sense for your business. 

Here in comes Zapier! The beauty of it is that they have put together a platform that allows non-developers to visually express their processes and to connect all these components in a way that makes sense. This flow is testable (which is very important, you want to make sure that your automation works as intended), and you have analytics and an overview of what is happening.

There is a free tier for Zapier, but I want to get into the paid one because I think that is where the power is. You may shy away from paying them the monthly fee. So let’s explore that a bit. 

The way to think about choosing a paid plan is to make a business decision. Would paying Zapier a monthly free enough time and generate enough sales to cover for the costs and then some?

If you get their $20/mo plan, you need to only generate an extra $20/mo in sales for this option to make sense to you. But not only that. Also, consider the free time you now have to do something else, and how much you value that. Consider the money you would spend on a developer to set this up for you and then have it maintained. (By the way, I am not an affiliate for Zapier, I am just using them as an example to talk about automation)

In conclusion, we live in exciting times, where with a bit of patience and thinking through your processes, you can build your website and connect the required components with no need for a developer if you use a tool like Zapier. And this excites me because it enables even more people to express their creativity cost-effectively!

If you are reading this and you are a developer, then seriously consider exposing and API for your services and products and have them seamlessly integrate with Zapier. 

The Power of Using APIs

Many years ago, I had set up my very first website. It was a Sudoku generator based on a selected difficulty level.

To promote the website, I wanted to have a newsletter so I could email my subscribers a daily puzzle to print out.

At the time, I was using AWeber as my newsletter service.

I was very annoyed with the fact that to capture the email of my visitors I would have to send them to a new AWeber page where they would fill out a form, and then instruct them to go to their email to click the confirmation link, and that would get then to a confirmation page on AWeber, and then finally back to my website.

Those were way too many clicks to get yourself a printable sudoku puzzle!

What I wanted, was a way to plug into the AWeber service, and communicate with them, on my visitors’ behalf, while the visitors were staying on my website. What I wanted was an API, which is short for Application Programming Interface.

They did not offer that at the time, so I decided to simulate one by using a “fake browser” to make it “as if” the user has opened their page instead of my mine.

I was very proud of my solution, and it worked very well for about ten days until my account was banned for violation of terms of service.

Today they do offer an API, so I don’t have to resort to “shady tactics” to keep the users on my page.

I use this little story to make it evident why APIs are so powerful. I am all about automation and integration and the APIs make all this possible in a way that is reliable and makes sense and does not violate any agreements 🙂

I don’t think it makes sense to create an online service in today’s world and not to develop an API for it. Interconnectivity and interoperability increase the rate of adoption of your service. And you open it up to be used in ways that you may not even have imagined before and if you connect it, for example, to a platform like Zappier.

In conclusion, I feel that all software development is moving towards building APIs that will talk to each other. Even the front-end of websites will be a templating API making requests to a back end API.

This change will bring about dramatic shifts it what software developers do and will open the doors for non-developers to be even more expressive and sophisticated in their creations. Add AI to this mix, and we can only guess at the limits 🙂