Motivation & Accomplishing Goals

Life goals, they’re hard to achieve.. Right?

Everyone has goals. It could be improving health, buying a new house, getting that promotion, or starting a business. Goals and change carry a stigma of being difficult. Many struggle and fail to accomplish their goals. Many more fail to even start towards them.

I am personally very goal oriented. I’ve used my mentality to succeed at my job, expand my future potential, cease using tobacco products, lose substantial weight, start a regular exercise program, buy a home, etc. These all are completely unrelated things, except in the sense that they are goals and I attack all of these different goals with the same mindset.

These are some of the things I tell myself to keep myself on track.

“Media is a reward.” – Information overload. There’s so much content out there to consume between all of the different media channels, it can be hard to get enough of it! So much so that I routinely see people risking their lives messing around on their smart phones while hurdling down the highway at 80mph. That’s right, people love to consume media so much that it’s apparently worth risking life & limb for. Media is designed to be addicting, and it works.

One strategy I use to keep myself on track is simple — I don’t allow myself to consume more than I produce. If I want to spend an hour or two reading a book, watching a movie, or playing a game, I first make sure I put in at-least that amount of time up front on a proactive and productive activity. This has helped me procrastinate substantially less and has also cleared my thinking that is now more focused on achieving my goals and less focused on viewing others’ accomplishments.

“Don’t multitask.” – Multitasking skills can be valuable when you’re executing on the daily routine. Being able to cook while talking on the phone or fill out forms while waiting for a file to transfer is a useful skill to have, except when you’re trying to break the day to day. Accomplishing a goal means making meaningful life change, and that requires devoted attention. The goal is new, and any other existing activities that you try to pair with the goal in a multitasking fashion will be more appetizing to your brain than the (difficult) goal. Basically, stay focused!

“You’re overthinking it.” – Just do the thing. Whatever it is, just do it, and nothing more. It can be easy to get distracted by potentials that may never happen and other rabbit holes along the way, but what’s important is that you keep the goal simple. Don’t allow additional scope to creep into the goal. Scope creates doubt. You can always set additional goals to improve further after accomplishing what’s at hand, but trying to make something bigger than it needs to be will spawn a relentless cycle towards failure.

I’m in software, so my goals tend to be product oriented. When building anything, software especially, it’s very easy to play the ‘what if’ game. What if it did this, and had that, and could interact with this other app, etc. All of that is well and good, but if you never stand the basics up, there’s nothing to what-if about. You can always iterate, but you first must accomplish something.

“You’ve got this.” – The most important thing to tell yourself is that you’re capable. It can be easy to let doubt sink in when the challenges seem unsurpassable, but you just have to forge onward. I’m in the midst of watching my mother open her second restaurant. When I was a kid, I never thought I would see her doing what she’s currently accomplishing and has accomplished already. The amount of challenges that she’s faced along the way would have crushed most people, but she has the tenacity to keep the ball moving and that is the driver to her success.

In all, the important thing is just to keep a clear head. Limit your consumption of others’ accomplishments so you can focus on yours. Stay on track and don’t allow added scope to creep in. Most importantly, believe in yourself. Pair self-belief with dedicated time and success in your goals will follow suit.

Learning to Think by Learning to Code

You know, besides the essential actions such as eating and breathing, I can’t think of many things I’ve done for the vast majority of my life. One of those activities is computer programming. I don’t write code nearly as often as I used to. Rather than 40 hours / week, I now just dabble at work and with small projects on the occasional weekend. Most recently, I wrote a simple tool that scrapes the internet for news about our customers merging with or being acquired by other companies, so we can stay in the know. The skill that I do use constantly that I learned from programming is thinking.

Thinking? Yes. Programming teaches you how to think.

I can imagine a standard, and probably quite reasonable, reaction to that statement from someone who has never had to break instructions down to something so simple that a machine can understand the message. “What, you’re telling me I don’t know how to think?” No.. I’m being purposefully extreme with my statements. I am, however, telling you that your ability to process information and come up with a proactive plan would be improved if you wrote some code from time to time.

Virtually everyone has given some instruction or ask at some point in time. Even an inquiry as simple as “Hey, grab me a water would ya?” is an instruction to another person which will be met with a response. Think about what happens what you ask someone to grab you a water. That person instantly knows what you want. They know to get a “water” which could be a bottle of water, a cup from the tap, etc. They know how to get it. They know where you are and what it means to properly bring it to you without making a mess of things. Hands down, there is much more ambiguity in our average dialog than most people consider. The difference is, when you’re communicating with other humans, there’s another human brain on the other end to interpret the message, fill the gaps, and make decisions.

This is not the case with a computer, I don’t care how far machine learning has come. For machine learning to solve this problem, you first have to teach the machine to learn and then put it through years of “learning.” Substantially harder than just teaching it to get water.

So how would this work with a computer? Well.. Think about how your brain processes how to go and get water from the kitchen. Not at the “I need to get water” level.. No.. let’s get closer to the “bend my knee, move my foot, plant it on the ground, repeat for the other leg” level. A machine needs step by step instructions. It needs to know how to move, how to recognize water, how to retrieve the water, how to deliver it to you. It’s actually quite intensive.

Seven words, the initial inquiry was seven words, because a human already has all of the ability. By the time you’ve accounted for controlling motors, balance stabilization, object recognition, task management, ability to grasp / hold objects, you’re into the tens of billions of lines of code. Alas, I’m using a very over-the-top example to make my point, but that is, in fact, what it is like to spell things out for a computer. That is also why you should generally triple any timeline that a software developer gives you. It’s so easy for a human to envision how the pieces fit at a high level, but when you get down to it the devils are in the details.

The point is, since a computer cannot make choices or recognize patterns the same way that a person can, you have to spell things out at a level that most people are not accustomed to thinking. When you force your body to do something it’s not accustomed to, as with any exercising, it becomes stronger in that area. We take ours and others ability to process information the way we do for granted. It really is an amazing thing, something that we’ve been trying to recreate artificially for a while and are still just scratching the surface of.

So, let’s take a more realistic example. Let’s take a simple chat app that allows two people to chat with each other. What’s funny is, writing the “happy path” for this app really wouldn’t be too bad. You need some sort of user system, some sort of database for storing chat history, and some sort of basic interface which is basically a large text field (current chat text) above a small text field (what you want to send). It would take a few hours to stand all of the infrastructure up (should probably triple that timeline..), but it wouldn’t be too complicated. Before you knew it the computer would know how to facilitate chat with others.

The complexity with even the most simple app comes in the exceptions that usually don’t happen in design or controlled testing. There’s actually a whole other topic here I’d love to get into regarding designing for exceptions rather than use cases, but we can leave that for another day.

The gist revolves around asking questions like:

  • What happens if a user loses connection mid chat?
  • What happens if a user sends a message that’s too long for the server to process?
  • How do we handle non printable characters such as 0-NULL or 8-BACKSPACE?
  • What if two people try to chat with the same person at the same time?
  • How are times handled in the chat database for differing time zones?
  • et al

Each case needs to be handled, or the user experience will be laden with bugs.

Point being, if you want to be better at solving things, learn to teach a computer how to solve. It doesn’t know how to do anything. It has less solving ability than even the smallest child, and therefore, teaching it how to solve teaches you how to think at the most basic of levels. Applying this extremely detailed level of step-by-step thinking to bigger picture problems is a whole different story, but at least it gives a solid foundation.

Thanks for reading! Still trying to figure out if this whole blog thing is going to stick with me, but this was very enjoyable to write. Constructive feedback is certainly welcome.