Thursday, December 29, 2016

Separate Your Ideas From Yourself.

Lightbulb

We all think that we are full of amazing ideas, and then we try to share them we are often met with a lot more resistance than anticipated.  If you tie your own identity in with your idea, this resistance will feel like a personal attack.  If one feels personally attacked, they will be much less likely to suggest any further ideas no matter how good they are.

There are two ways this can be rectified.  One, get everyone who you share ideas with to put on the kid gloves and soft talk you.  Two, separate yourself from your ideas.  In reality, you can't control anyone else so there really is only one option.  You have control over how you view things so you'll need to fix your own mindset.  You can also set an example of not being an extremely harsh critic of the ideas of others and hope that others pick up on that.  Still, you are only in control of yourself.

"Separate yourself from your ideas and your work and see them as something separate from yourself, you’ll feel you truly have the right to be wrong. If an idea fails, why not let it be the idea’s fault instead of your own? Allow your ideas to fail without turning them into personal defeat. When you fail you discover your boundaries. You map out the edges of your capabilities. And this allows you to eventually move beyond them. Being wrong eventually leads to being right. And even where it doesn’t, it’s still a more interesting path than being nothing."
-Steve Pavlina

If you tie your sense of self to your ideas you will grow attached to these "brain babies" and we nurture our little brain babies and give them names and help them grow.  Then we introduce our brain babies to the world and people tell you that it's a stupid name and that it's ugly and smells bad.  If you're overly attached, you will take that criticism very personally.

If you separate yourself from your idea, you can let the idea be open to improvement.  You can also use it as a learning opportunity.  Most likely the criticism is based on knowledge that you were unaware of.  These unknowns are exactly what you need to actually reach the goal you desire to achieve.  Use this discussion as a way of learning the things that don't work.  Treat your ideas like Edison's attempts at the light bulb.
"I have not failed. I've just found 10,000 ways that won't work."
-Thomas Edison

There are of course people that are just plain negative and resistant to change or even people who don't think that any idea they didn't come up with is useful.  That is a whole different post, but most people are not in those categories so just keep on going and don't bind your sense of self to your ideas to closely.

Here's the thing, it's an idea, not a reflection of your worth.  If you had a good idea, you are not a good person and if you had a bad idea you are not a bad person.

Here's a good article on a similar note from Forbes.com

Tuesday, December 27, 2016

You Should Always Be Refactoring

Refactor stickers

So as part of my quest to read the "Classics" of software development  I've found at least one common thread.  It is that you should always be refactoring, but it's not the same definition of refactoring I would have thought of previously.

I had always thought of refactoring as trying to improve existing code, but that doesn't need to be the case.  You can and frankly should refactor the code you are writing right now.  Now, I've done code cleanup all along, but usually, it'd be something I'd do if I had enough time because I finished functionality early.  Now, I'm going to make refactoring a priority and allocate time for it up front.

Obviously, you're always trying to write the cleanest code you can, but one can't put the thought into perfect naming and optimal logic on the first try.  Coding is often about getting the ideas out of your head as a stream, so you can't stop the stream to optimize.  However, once you've completed that flurry of creation you need to step back and do the touch-up work.

I believe that before you check your code in, you should stop and give yourself a code review.  First take a break to clear your mind. Then, take a step back and really try to check everything with an objective eye.  Try to tear it apart to make sure the naming is obvious, the logic is sound and that the needed tests are in place.  Does it follow the DRY principle, are the edge cases covered, will a 19-year-old intern be able to understand what it's doing 6 months from now?  Then repeat the whole thing again until you are sure you've removed all the code smells you know how to find.

While you are refactoring your new work you should also make sure you are following the Boy Scout Rule on any existing code you work with.

Now, here's where things get interesting.  You can refactor parts of your life outside of software development.  You name it, sleep, diet, exercise, career, interactions with family or co-workers.  You can take a step back and evaluate what your goals/expectations are and check that your habits are set up to achieve them.  If not, you can begin to make incremental changes, but just as in software it will work best if you have test coverage.

With New Years resolution season coming up, this might be a good time to work on some life refactoring.  This is where refactoring can really shine.  Instead of deciding that January 2 you are going to do a "rewrite" to  "change all the things", pick out a small change and test it out.  If it works, do another small refactor and so on.  You are likely going to have better success with refactoring than with a rewrite.

If you do a "rewrite", where you try to do a complete change of everything all at once, most likely it won't be successful and you'll end up going back to the original program (with no improvements and with a bitter taste of failure), but if you make changes incrementally you'll find out what you can and can't change and have an understanding of why.




Friday, December 16, 2016

"I Wasn't Trying" Doesn't Fool Anyone but Yourself

Lackadaisical

One method that people have for protecting their ego is to never give full effort to things in life and hope that half effort is good enough.  They do this to have a built in excuse for failing.  It seems like a  low-risk proposition to go with mediocre intensity and just see how things work out.  However, it is anything but low-risk, it's almost guaranteed failure.

I have been guilty of this myself.  I have been a terrible slacker at many things that I have done. So I can come to you from a place of experience.  Nobody is buying it!  You may be able to protect your ego by saying "I wasn't even trying", but the result is the same you are putting out crappy results.  To the outside world, you are putting out bad results, the reasons why are not important.

You may save your ego, but you will lose the respect of those around you.  That's why I say nobody is buying it.  You are seen as unreliable and incapable.  People might give you the "you need to apply yourself" line, but what you really need is a firm kick in the pants (hopefully from yourself).  I don't care if you are better than most everyone else, working at 50% an experienced eye will know the difference between coasting and hustling.

Many of us don't want to deal with the true feeling of failure that will come over us if we give something everything we have and fail.  You will only end up with a feeling of regret,  even through all the bull you give yourself about how you could have been awesome if you really tried.  You'll say it doesn't matter to you anyway, but you'll know that's a lie.

Trying hard and failing sucks.  It proves to you and the world that you have been weighed and measured and found lacking.  However, you actually have a baseline for what you can accomplish if you give it everything you've got.  That gives you a true measuring stick of where you truly are right now.  With that, you can truly focus on what you can do and what you need to improve on.  Without it, it's all theoretical.  You can't know your true capabilities until you've pushed right up to and possibly beyond failure.

Most of all, going full tilt into something and succeeding is where the magic lies.  You'll have no regrets of things left undone or untapped potential.  You'll have the accomplishment of knowing that you did everything you could.  At this point what you've accomplished truly belongs to you. That is a great feeling.

Perhaps the great philosopher Yoda said it best "Do or do not, there is no try".


Goal of Reading the "Classics" of Software Development

classics

Now, I'm a developer that tries to stay somewhat up to date by listening to podcasts, keeping up on Twitter and reading blog posts, but this year I'm going to try something different.

Over the next year, I have set a goal of reading some of the "Classics" of software development.  These books are highly regarded in developer circles.







While I'm sure this list is not exhaustive, I think it's a pretty good start. (Also, I don't want to overpromise publicly)

I'm a huge fan of Audio books as well, but most of these books aren't in Audio format that I could find and honestly these books are best served up in dead tree format.  There is a lot of code and I'd hate to try to listen to somebody try to read that to me.  The other plus is that I'm planning on using these as reference material to be reviewed later, so I'm highlighting and taking notes.  So paper or e-reader is the way to go.  Also, on the plus side, it's going to look "cool" to have all these books on my shelf at work.

I have heard/read a lot of the information in these books in other places, which is not surprising since these are the original sources.  One of the nice things about this is getting the information in its original form instead of someone else's opinion about what the author was trying to convey.  Another reason I'm reading the books, instead of taking in free content for this purpose, is that the authors of books take a tremendous amount of time carefully crafting these and they are reviewed by editors.  No offense to bloggers/podcasters, but we/they don't always put that kind of care into their final product (and that's ok).

Buying all these books, of course, is not cheap, but the outcome will leave me with some more information and a pretty cool little library that I can draw upon.

I will be writing blog posts on each of these books so you can read my opinion, but most likely there are much more detailed sources of information out there.  I'm going to write my own mostly as a self-review exercise.  You are of course still welcome to read them.  I will also probably include links to reviews I like.  The trick is going to be writing my review first so I don't have outside influences.

So far I've almost finished "Clean Code" and have a pretty good start on "The Pragmatic Programmer".  These books have already cleared up some of the concepts I've been introduced to over the years.  They have also given me flashbacks to some of the terrible code I wrote in my youth, but that's part of the growing process.  Hopefully, when I look back at my code written today, in a couple of years, I'll have the same feeling.

All we can do is keep learning, keep practicing and continue to get better/wiser.



Bonus: (probably not going to be a classic, but still useful)


Friday, December 9, 2016

Hard Work Beats Talent**

The Talent In Neon!!!

So as I've mentioned before I enjoy playing ping pong.  I'm not that great at it, but I enjoy working on new skills.  I also coach a couple of people on how to improve their game.  The reason I'm the one doing the coaching is not due to my incredible skill, but rather due to my willingness to coach.

The other day I was coaching one of our interns who happens to be a woman.  Now, she did not have a lot of table tennis experience at all which is an amazing blessing for a coach, because I didn't have to force her to unlearn bad habits.  She also doesn't have an over-abundance of athletic talent (this is not an insult), by this I mean that she isn't overcompensating for bad technique with fast reaction time or strength.  

What we worked on was the very basic fundamentals, and I can tell you she picked up way faster than I did because she didn't have a bunch of sloppy techniques that work some of the time or the athletic talent to compensate.  She just did the clean techniques over and over and began to ingrain those good motor patterns.  I can tell you that in 20 minutes her game improved at least 200%.  

Talent can be a hindrance.

This is a pretty common pattern I've witnessed in coaching, that with a physically technical skill women will focus on technique immediately because they don't have the extra strength to just push through.  Men will do it sloppily until they reach a stalling point, and only then will they be open to focusing on technique.  The hard part is that depending on the person they may have already invested a lot of time into their existing methods, and that makes change hard.  Some, if they are dedicated to improvement, will seek out assistance on improving.  Others will just keep grinding away the same as before and remain stuck in the same place.  The rest will just quit.

There are many correlations in software development, though it's not gender based.  There will be developers that have a talent for cowboy coding that will just put in the hours and smash out working code.  They don't see any need to improve their skills because they can muscle through it and create "working" code.  The problem with that method is that "it works until it doesn't".  Once you get a big and complicated enough projects, brute force won't work.  At that point, just as above, you can improve, flail or quit.

Even you don't know everything and neither do I.

In coaching my intern in ping pong I was extremely pleased that she listened to me attentively and tried to follow my coaching to the best of her abilities.  She didn't argue or immediately go back to doing it her old way.  She just tried the new techniques as best she could.  Then later in the day she went and practiced it on her own to further build her skills.

To get the most improvement quickly, you need to be open to hearing what your mentors/instructors/coaches have to say.  You don't need to take it as gospel, but be open to the idea that you don't know everything and that there might be a better way.

Now I'm the type of coach that basically said this is the foundation of the technique, but you will need to find your own style.  However, what I was really working on was the principles at the foundation of the techniques.  A backspin serve works pretty much the same no matter how you hold the paddle, what angle you strike it at, foot position etc. 

In development, we have things like SOLID, Clean Code, the DRY principle, and design patterns not to mention all the *DD paradigms (TDD, DDD etc.)  this list is obviously not inclusive.  Taking the time to learn and practice these things is hard and if you are anything like me you will not be good at it at first.  The trick is you need to check your ego, be willing to be a beginner and be ok with failing (in the short term). 

Just like ping pong, learning the new technique will be hard and you may need to unlearn some bad habits, but learning a consistently repeatable sharp technique will improve your coding game a great deal.  Fundamentally solid techniques work as a ladder extension, where working harder at sloppy techniques works as a ceiling.  You can only work so many hours, even if you are 19 years old without a family or a significant other there is still only 24 hours in a day.  Also, if you ever do get other responsibilities you won't have the tools to keep up. Additionally, at some point, you might need to maintain your code and all that technical debt will slow you way down.  These are the things that make it a ceiling.

**Now if you happen to be one of the talented people out there, don't fret, there is good news for all you, "Hard work beats talent unless talent works hard".  So, if you are in either camp or somewhere in between the recipe works the same. Don't get complacent, seek out the best instruction you can find AND listen to it and then put in the work to improve.

Monday, December 5, 2016

Control Your Alerts So They Don't Control You

smart phone, smart girl
At Thanksgiving, my teenage niece was fiddling with her phone at the dinner table and accidentally dropped it.  Since she had been messing with it every few minutes since she arrived, I smiled and put it in my pocket.  From that point on, she was much more engaged with what was going on and participated in conversations.  That part was great.  However, I was having my pocket buzz every couple of minutes with a barrage of notifications from the different apps she had running.  Again I smiled at her and said if my phone did this I would throw it in a lake.  Honestly, I'm amazed she can accomplish anything with that much interruption going on.

Now, I know that young people have a much different relationship with technology than old timers like me, but I also know that an interruption is an interruption no matter what your age is.  My message here is not that you need to get off of all social media and communication apps.  Rather, it is that you need to have control over when and how often you allow them to bother you.

Putting your phone on vibrate is not a solution, it is at best a way to minimize how much you annoy the people in real life around you.

This really comes into play when you are at work or trying to study.  If you are doing anything but the most mundane of tasks, you will need some time to get up to speed with what you are doing and will only really make progress when you get in a state of flow.  Anything that yanks you out of that state of flow, even for a short while, will cost you several minutes to get back up to speed.  So the urge to "quick" check your phone is most likely going to set you back a half hour.

The real trick here is to batch all your alert handling together. Set aside a planned time to deal with all your social media at one time.  If you give yourself a dedicated block of time to handle all your social media and email, you will be more effective at your real work, but also at your social media.

Like most things, there are tools for handling the problem, but it's you that needs to change.  You will need to overcome FOMO (Fear of Missing Out).  We are trained like Pavlov's dogs to respond to notification from our devices.  I know I'm not alone in that when my phone buzzes, I'm extremely curious to know what is going on.  The trick is to get the device tuned to buzz only when it's something I want to know.  Check out this great article on pruning notifications on LifeHacker.

The big takeaway I got from that article was to divide your notifications into three categories:
Important: Get these notifications all the time.
Unimportant: Use notification management to aggregate these notifications so they can be handled in free time.
Useless: Block these all the time.

Our phones by default don't separate the importance of the notifications so we will have to do it ourselves.  The Groupon comes in at the same level as the text from your mom.

Take control of interruptions and eliminate them mercilessly.  Then in your free time (which you should actually have more of) you will have time to focus and put effort into being the best Instagram/Facebook/Pintrest/SnapChat/etc... user you can be.  Work hard and play hard!




Friday, November 18, 2016

Things That Made Me Happy This Week.

Happy
I know this isn't a particularly useful post for everyone, but I wanted to share a couple of things that made my week a little better.

My employer got a subscription to GetAbstract.com a little while ago and I started getting into that.  It is a service that gives the abstracts for different books.  I think it will be very handy to get the gist of what is going on in a book and determine if I would want to buy it.  Also, it is a handy way to get the main takeaways from some very powerful books without necessarily reading the entire book.

Next, on my list of likes, I started reading "The Pragmatic Programmer".  I decided that in the next year I want to read the "classics" of software development, The Pragmatic Programmer is high up on the list.  While I didn't get too far into this one, I was actually taking notes in the first few chapters.  A lot of this stuff I had heard before from different sources, but getting these knowledge bombs dropped one after the next is pretty cool.  I will probably write a book review on this book.  I'm sure there are other reviews on this book that will be better than what I can do, but  I'll do one anyway because it will help me capture what I've learned.

In other good news, Pluralsight just put out an Android learning path.  I've been having a hard time figuring out how to get up to speed on Android development.  This won't come as a surprise to anyone on my team, but I'm currently a horrible Android developer.  I've been trying to choose my own training, but having a curated training plan is very exciting.  I have used the training path for C# and it was extremely helpful, though I wasn't fully horrible at C#.  I'm already a few courses in and I am really enjoying 

Lastly, I got my standing workstation!  I bought a VARIDESK Pro Plus 48.  I am only one day into using it so I can't rave too much, but I've been eyeing this bad boy up for about a year.  After all, Sitting Is the New Smoking plus there is a TED Talk.  Thus far I am very happy with it and hopefully, it'll help me be a little bit healthier.

I will be taking a break from blogging next week for Thanksgiving so I'm not going away, I'm just taking a vacation.

Friday, November 11, 2016

Gratitude Practice: It's Not Just For Thanksgiving Anymore

Thanksgiving
Have you ever gone to a Thanksgiving dinner where everyone was asked to say something that they were thankful for?  If you take that idea and make it personal and do it every day, that would be a gratefulness practice. One of the simplest definitions I found was from Teens Health.
  1. Notice good things, look for them, appreciate them.
  2. Savor, absorb, and really pay attention to those good things.
  3. Express your gratitude to yourself, write it down, or thank someone.

I'm sure this sounds like a bunch of "woo", but tons of successful people swear by it and some science even shows that it work. The Science Behind Gratitude

Gratitude practice is the new hotness. The gist of gratitude practice is to take time every day to think about the things you are grateful for and reflect on them.  The theory behind why it works is that thinking about things you are grateful for changes your brain.  I won't claim that it's hard science, but I will say it works for Tim Ferris, Oprah Winfrey, Richard Branson and others.

Now there are different methods where you take different amounts of time and reflect on things.  This could be done by writing down X number of items in a gratitude journal.  It could be just thinking about the things you are grateful for.  One could also say a prayer to thanking God for the things they are grateful for.  If you are inclined, you could actually express gratitude to those in your life you are grateful for, in person or in writing.  Check this out How to Practice Gratitude

Now you might say there isn't anything in my life I am grateful for.  If you are reading this, you should probably be grateful that you have your eyesight.  If you don't have your eyesight, you might be grateful for the people that enable you to consume blog content like this through software.

This is not necessarily to take the time to be thankful for how perfect your life is.  It can be for small things, or big things.  Even in the toughest times there are things to be grateful for.  You can be grateful for your significant other, your parents, your children, your job. However, if you don't like those things or don't have them there is surely something you are grateful for.  Even if you are an angry internet troll who hates everything, odds are good that you can be grateful the internet exists so you have an outlet for all of your vitriol.

This is also an easy way to practice mindfulness.  It lets you take stock of your situation and reflect on what is in your life right now.  You take a break and see yourself existing and find the inputs that you are glad you have.

My personal method is to take 5-minute Pomodoro break and use that time to come up with a list of at least 5 things that I am grateful for today.  I sometimes write them down, but mostly I take a little time to reflect on these things/people.  Then I just go about the rest of my day in a much better state of mind.  Again that's just what I do, you'll need to figure out what works for you.

I'm grateful that I have this blog to communicate my ideas as well as the ability to do that, and I'm thankful you are reading it.




Monday, November 7, 2016

Productivity Try This: Pomodoro Technique

Pomodoro
First off, let me give credit, I did not create this, and many of you have already heard of it.  It was created by Francesco Cirillo and here is his site.

Secondly, because I'm sure a lot of you have heard of this, I don't want to cover the steps in detail.  I know people have been talking about this technique for a long time and in great detail.  What's different about this post?  I'm suggesting you actually try it.

The Pomodoro Technique
  1. Decide on the task to be done.
  2. Set the pomodoro timer (traditionally to 25 minutes).[1]
  3. Work on the task until the timer rings. If a distraction pops into your head, write it down, but immediately get back on task.
  4. After the timer rings, put a checkmark on a piece of paper.[7]
  5. If you have fewer than four checkmarks, take a short break (3–5 minutes), then go to step 1.
  6. After four pomodoros, take a longer break (15–30 minutes), reset your checkmark count to zero, then go to step 1.
       -Wikipedia Pomodoro Technique

The Pomodoro technique is so simple.  Actually doing it, on the other hand, is much harder.  The difficult part is actually fully focusing on one thing for 25 minutes without breaking concentration. There is no shortage of applications and plugins and gizmos to help you out, but they are all useless if you don't do your part of focusing and doing the work.  This is not to say that the tools are bad.  Different Pomodoro tools can be useful, but they are just a tool, not the technique.  Running a Pomodoro clock while you browse Facebook is not making you more productive (assuming you don't browse Facebook for a living).

Just do it, but do all the steps.  I can tell you from experience, as I have messed up the technique in pretty much every way you can think of, that all the steps are needed. If you don't have one task, you will get side tracked.  If you don't set the timer you'll over or under work (25 is a recommendation, if you need more or less adjust accordingly.).  If you don't take the breaks you'll burn out too fast.  All the pieces are synergistic and need to be in place to get the most out of the technique.

You need to find out what works for you and make it your own.  I like to have a physical sheet of paper to write down distractions and to make my tactile checkmarks, but I imagine some of you just don't use paper.  The important part is to figure out what works for you.  I use over the ear  headphones to block out as much sound as possible and also to discourage interruptions.  Again that might not be for you, but I'm terrible at ignoring conversations.  I use RescueTime to block distracting websites, so even if I tried to get sidetracked it prevents me from going anywhere. Finally, I actually have one pomodoro every morning of taking care of all the little administratrive tasks that I need to do for my job and all other miscellaneous tasks.  I know some of that stuff could probably go into my break times, but I like to have as clean of a working slate as I can and little todos will bug me all day.

One of the big tips I've read and tried is to set targets for daily and weekly completed Pomodoros.  This will give you an accurate idea of how much actual work you are getting done, and how much work you can get done.  We all know that the hours you spend at work are not really a good reflection of how much actual work you get done.  Pomodoros on the other hand, give a much better estimate of actual productive work being done.

"So, yeah, that seems slick and all, but what's in it for me?"  The real reason why I think this technique is awesome is not to increase the amount of work you get done.  That is a nice side effect.  The real reason is that by concentrating your productive working time you actually create more free time.  Getting in higher quality working time will get more done faster. This means you can use the time you would have previously been doing low quality/high quantity work to concentrate on other things.  What could you do with a few extra hours a week?

More information.
Get Started Pomodoro.com
John Sonmez Simple Programmer













Wednesday, November 2, 2016

Top Secret: The Most Effective Exercise Program Ever

exercising vs. Zero body fat
TL;DR The most effective exercise program is the one you will do.

Exercise Selection: Do what you enjoy.

Yep, it's that simple.  The exercise that you enjoy doing is the best exercise.  Exercise should not be suffering.  If you don't enjoy your exercise, it won't take much to get out of the habit.  We need to set ourselves up for success, not build in excuses (like misery).

There are limits to this of course. If your favorite form of exercise is snorkeling around coral and you live in Wisconsin like I do, you may not get much exercise.

Your goals are also important in choosing your exercise.  If you want big bulging biceps, daily jogs will not do you much good.  If you want to run a marathon, powerlifting 3x a week won't get you there.

If you have a very general goal of just getting into better shape, there is pretty much no limit on what is useful. If you don't have a lot of experience exercising, you may need to experiment.  Try things out and see what sticks.  Just to name a few, hiking, biking, lifting, strongman, CrossFit, swimming, yoga, tennis, basketball, rock climbing or paddling.  It really doesn't matter, they are all far superior to couch surfing.

Motivation: Customize your environment to what drives you.

The real tip I'd like to give here is to figure out is which of the four Rubin tendencies influences you when it comes to exercise?

  • Upholders respond readily to outer and inner expectations
  • Questioners question all expectations; they’ll meet an expectation if they think it makes sense
  • Rebels resist all expectations, outer and inner alike
  • Obligers meet outer expectations, but struggle to meet expectations they impose on themselves

-Gretchen Rubin
If you are an upholder, you only need to set an expectation and most likely you don't need any help.  Questioners need to answer the question "Why should I do this?".  If you are an obliger, you will need to set up an external obligation such as a class, partner or at least an accountability partner who you check in with.  Rebels, as usual, are extra difficult.  One recommendation would be to find something unique as your exercise modality (e.g. one-handed bodyweight exercises) to shows how you are different.

My personal example would be the following.  In most things, I'm a questioner, but when it comes to exercise I'm an obliger.  I love lifting weights but don't much like running.  My current goal is to lose bodyfat, so adding in more cardio will be very helpful.  So what I've done is, I have a like minded training partner for lifting. This means I don't miss any weight training days because he expects me to be there.  For the running, I've set up after work running group. As the organizer, I am extremely obligated to attend. In both of these cases, I've used my obliger tendency to blast right past any excuses I might have for skipping a workout.  My goals and enjoyment map the route and my tendency is the ignition that gets me started.

Execution: Putting it all together.

The finding your personal combination of goals, enjoyment, and motivation style is a great way to get off your butt and get after it.  You may have to do some experimentation and introspection to figure out exactly what you enjoy and what gets you going, but it will be worth it. After that work is done, you won't have to exercise, you'll want to exercise and enjoy it.

Set yourself up for success and go kick some tail!


Thursday, October 27, 2016

All I Ask is For Everything You've Got

Empty? When working out with my lifting partners, I have a saying I use before a hard set.  "All I want is everything you've got".  What I mean by that is that I don't expect you do more than you are capable of, but exactly everything you have to offer right now.  If your aiming for 8 reps, but you fail at 7, I am happy because you pushed to your limit.  If you quit at 7 because it's getting hard, I'm going to be disappointed.  I know I'm not alone among coaches with this idea.

Work shouldn't be much different. , I know we can't be at 100% intensity all the time at work, this is more like a long trail hike than like a heavy set of squats.  You need to know what your current capabilities are and at what pace you can maintain. On the whole, though, you know when you've left work and you didn't reach your potential for the day.

Recently I was doing some jogging with a friend and we were moving along at his pace which at the moment happens to be slower than mine.  He was apologetic that we had to go so slow, I couldn't have been happier, he was pushing himself hard to improve and we have a whole lifetime to move faster.  This friend also happens to be a mentor in our profession and has on many occasions taken the time to teach me at the cost of his own productivity.  I'm often apologetic to him for not knowing or not understanding quickly and he has been patient with me while still pushing me to get better. It turns out he's a good coach. As such he inspires me to do more and better work, by both demonstrating how and encouraging me to push to personal limits.

If you are anything like me you are your harshest critic, but that is what drives us to get better.  Perhaps from time to time we need to take a moment to cut ourselves some slack and evaluate ourselves against what our current capacity is, rather than against what our ideal self is.  However, when you  get done with that reflection it's time to focus on doing a little better tomorrow.  I'm not saying we should be complacent, but be understanding of the fact that we are on a journey.  Accept where you are, understand where you want to be and work hard to take the steps to get there.

Professionally, giving it all is something I often struggle with.  I come into work in the morning with grand dreams of all I want to accomplish for the day, and I may crank out a Pomodoro or two, but before you know it I'm shooting the breeze with a colleague, or procrastinating from an ugly task.  What I'm working on is giving myself the reminder to give what I've got, and don't be afraid to struggle and even fail.

The thing to remember here is that not every lift in the gym, nor every run, nor every day at the office is going to be a Personal Record (PR), but that is no reason you shouldn't do all you are capable today.  All I Ask is For Everything You've Got.

Waiting For Haters

Haters Gonna Hate
Haters are an indicator of making an impact.  For this blog I've not yet gotten any haters yet, but I know if I stick with it, they will come.

If you want to be my hater I'm looking forward to hearing from you. If I can make a request it would be that you blog about it, selfishly I wouldn't mind the traffic, but also you might as well practice writing yourself.

Honestly, I am generally too lazy to be a hater myself, but I won't rob any of you the opportunity if you have the drive. Who knows if you are good enough maybe I'll return the favor.

I haven't had a whole lot of controversial topics with strong opinions, so this will cut down on my haters. I'm sure however that with persistence I will find some.

I'm not saying I'm so tough that you can't hurt me. In fact, I'm sure some of you are proficient enough you'll be able to ruin my day. Some of the haters will just attack me, calling me names  (fat, stupid, bald, ugly etc.) Others will disagree with my ideas and opinions , and heck you might truly be right.

At any rate, I'm tentatively looking forward to it for now.  It is scary to put myself out there for criticism and being open to public scrutiny. I wouldn't write something if I didn't believe it, but that is no guarantee that I am always right.

Monday, October 24, 2016

How To Go The F To Sleep

sleep
NSFW Samuel L. Jackson Reads Go The F to Sleep

https://www.youtube.com/watch?v=nDGKK6y8OtQ

Ok, that's great for kids, but how do I as an adult get to sleep.  It's actually worse for adults because we don't have someone enforcing good sleep habits, and we have the freedom to make bad choices.

Good quality sleep is where our brain recovers from all the work it did during the day.  There is a saying in bodybuilding that you don't grow in the gym, you grow during recovery.  The same is true for your brain, it's not the learning and working that makes the brain improve, it's the good quality sleep and recovery that gets the brain gainz.  Think about a time where you started working on a new skill and just couldn't quite get it, then after a good night sleep that same skill was all but automatic.  That is your brain getting better during recovery.

I've assembled a list of tips in no particular order.  These tips are not my own, I've borrowed them from many other sources, but they do work.  For other resources feel free to search sleep hygiene.

1.  Go to bed at the same time EVERY night.  Yep, even weekends.  It's not fun it's not glamorous, but like I said you are an adult, so you get to do boring grown up stuff like go to work, pay taxes and go to bed early.

2. Make you bedroom a place where only two things happen sleepy time and that other thing that consenting adults do.  For now let's just focus on sleep.  What this means is you don't do things in this room that aren't sleep.  No television, no laptop, no smartphone, and even no reading.

3. Get your bedroom as dark as possible.  Go the full nine yards here.  Blackout curtains, cover up the screen of your alarm clock, if you must have your phone by you, put it in a drawer.  You should literally (the real literally) not be able to see your hand in front of you face.  If there are too many complicating factors, such as uncooperative spouse, get a sleep mask which is not at good as pitch black, but better than nothing.

4.  No stimulants nor alcohol near bedtime.  No caffeine, nicotine or alcohol around bed time.  Stimulants of course make sense, but alcohol while it might help you fall asleep, will give you a worse night sleep.  Feel free to look that up.

5.  Control your lighting throughout the day.  In general what this means is that you want a lot of blue light in the morning preferably by getting real sunlight and as little blue light in the evenings as possible.  For the morning you can also get a full spectrum light or a blue light that are treatments for seasonal affective disorder but also work to just get better sleep.  At night, you should get a blue light filter for your screens such as f.lux for your computer and there are similar apps for mobile devices.  Alternately you can wear orange or yellow glasses that block the blue light.  For more information on blue light and sleep check this out https://www.scientificamerican.com/article/q-a-why-is-blue-light-before-bedtime-bad-for-sleep/

6. Set up a winding down routine.  You may need to find out what works for you, if it's reading fiction, listening to a book, watching a relaxing show (with your blue light filtering in action).  You'll need to find out what works for you, but there are certainly bad choices, such as vigorous exercise (especially if competitive), arguments, overstimulating entertainment.  Anything that's going to give you a shot of adrenaline is a bad idea.

BONUS SECTION:

7.  Take a magnesium supplement.  Magnesium is a mineral that most Americans are deficient in so in addition to getting better sleep you'll be helping out your bones.  Two warnings, first work your way up on doses magnesium in large doses can have a laxative effect, so just add a little bit at a time to find out where your sweet spot is. Secondly and less problematic, magnesium supplementation can give you very vivid dreams for the first couple of weeks you use it.  Just be prepared for it and enjoy it.  I'm not sure the mechanism for this, but there is a lot of anecdotal evidence on it.

8.  Keep your bedroom cool.  60 - 67 degrees Fahrenheit is the optimum for best sleep.  Just think of those evenings in early fall when you keep the windows open and sleep like a baby.  That's the kind of temperature we're shooting for.

9. Get exercise, but not close to bed time. Getting some daily exercise aids in getting better sleep.

10. Watch what you eat before bed.  This is not about physique goals, but rather about sleep quality.  If you eat foods that cause indigestion before bed, you might be signing up for a rough night.  This will vary a lot from person to person, but things to watch out for are spicy food and dairy.

Try some of these out, and please Go the F to sleep.



Tuesday, October 18, 2016

Take Care of Yourself First

"Coach Gabavics isn't that selfish?!"

If wanting to do the very best I can at as many things I can is selfish, then I guess, yes I am selfish. However, let me share with you a frequently used, but very appropriate analogy.  On an airplane, when the oxygen masks drop they tell you the immediate thing you need to do is put your oxygen mask on first and then help others.  If you don't take care of yourself first, you will be useless to help others.

DSCN4745

Analogy 2:
Let's think of it like a vehicle, you need to do the routine maintenance (exercise), quality fueling (eating right) and fluid changes (sleep) in order to keep the machine that is you running efficiently.

If you run low-quality fuel that the car isn't really designed to run on it won't be able to run well, the body works like that too.  If you park your car all the time just not moving it much it can get what's referred to as Lot Rot, our bodies are designed to move and with neglect, you will lose the ability to do things you once could.  That one is, literally, use it or lose it.  If you don't change the fluids on your car it'll do fine for a little while, but with enough time, only bad things are going to happen.  You can cut your sleep short for a little while, but do it enough, your performance is going to suffer.  If your car breaks down, it's no good to you at all, in fact, it's not an inconvenience that you have to deal with. The same thing happens if you get ill from neglect, you won't be able to help anyone and in fact, you become a drain on others.

This happens in life too, and I can speak to this from a place of experience.  After I got married and started to settle in to work life and married life, I was eating like junk, not sleeping enough and not exercising, because I was "too busy".  My main hobby was watching TV.  My work suffered because I was always tired and had constant brain fog.  I didn't really want to do anything. This absolutely destroyed my health I just kept gaining weight and then eventually was diagnosed with Multiple Sclerosis.

The reason you need to do it is that keeping your body maintained is a force multiplier.  When you are in good physical condition (not fitness model shape here) you will have more energy to work and have the stamina to concentrate for long bouts.  If you are eating a healthy diet, you will be fueling your body and your brain so that you can think clearly during those long bouts.  Thus you will be able to do better work and more of it.  When you are done with work you will still have the capacity to live a good personal life.  This is not about vanity, looking healthy is a nice side effect of being healthy, but it doesn't need to be the goal.

Stack on top of that good sleep habits.  Yes, you will give up some time to get good sleep, but again this is where the quality of your output will far outweigh the quantity.  Sleep is crucial to your brain and your body, this is not a secret, but it comes up over and over.  So I will hammer on it over and over until everyone I know complains about having too much energy and too much clarity of thought. (If you have little kids, you have a harder road, but do what you can to get as high of quality sleep as you can.)

Now, I'm not going to tell you what to eat, what type of exercise to do, nor exactly how many hours to sleep.  I will write posts later on different modalities of training and eating that I am a fan of, but I don't know what your preferences are.  What I will tell you is that you need to find what works for you and DO IT!

The point of this is that you take care of yourself first so that you can take care of others better.  It's not selfish, in fact, it's selfless.

Monday, October 17, 2016

Find Your "Why"

Why
What is your "Why"

So you have a goal you'd like to achieve.  Great!  You might even have a plan for how to achieve it. Even better! Now comes the tough part, answering why.

Your "Why" is your north star, it's the thing that can guide you when you get lost.  When you are deep into a struggle and you want to quit or you are faced with a choice that could take you towards your goal or away from it, that is when you need a guide to keep you going.  That guide is your "Why".

Your "why" will work best if it is personal, and if it fits with who you are.  If you want to lose weight, but the reason you want to lose weight is because your significant other says you're starting to look chubby, that is an external "why".  That external "why" is doomed to failure and probably resentment.  When you are faced with donuts on Monday morning, is the fact that your partner doesn't find you attractive going to be a good enough reason to pass on them?  How about when there is cake on Wednesday or bagels on Friday?  Eventually, that kind of "why" just isn't going to be good enough.

Now same goal, but internalized.  You see yourself as an overall healthy person and that is part of the identity you have in your mind of who you are.  That being part of who you are means you take ownership of doing what it takes to achieve you goals.

You see yourself as a good father.  So you need to be healthy enough to play with your kids.
You see yourself as a smart developer.  So you need to stay up to date on current technology and have a deep understanding of your current technology too.
You want to be respected by your peers.  You need to have respect for yourself and that confidence will command respect from others.

Finding your "why" is usually a lot deeper than finding your goal, and frankly that why might cause you to re-evaluate your goals.

So you want to get a promotion?  Why?  So you will have more respect and more money.  Why is that important to you?  You grew up poor and were picked on and told you'd never accomplish anything.  When you accomplish that promotion will that actually fill in the void?  Probably not, because you will still have a chip on your shoulder.  So what really is the problem?  You were told you were garbage and deep down you believe it too.  What can you do to get past that?  You will need to learn to believe that you are worthwhile and accomplished.  How can you do that?  By getting your promotion, but not to shove it in other peoples faces, but because you are confident, accomplished person that deserved that promotion.

You see the goal didn't change, heck respect and money are honest and worthwhile goals, but the "why" turned out to be much deeper and much more personal.  When this hypothetical person is grinding the long hours and hard work, when they look at why they are making the sacrifices, they aren't coming from a place of greed or anger (which is fleeting), they are coming from the core of their being.  The "why" is basically, "because this is who I am".

One could argue that you should say "this is who I want to be", but I think of it more like Michelangelo carving the statue of David.  (loose paraphrase) "David was always there in the marble, I just took away everything that was not David."  Who you truly are might not be apparent to the rest of the world, but it's still there it just hasn't been fully uncovered yet.

I've heard the quote "If you understand your why, the how will work itself out".   That seems to sum it up pretty well, it's not some magic technique that will get you where you want to be, or at least not by itself.  There needs to be a reason behind it, a strong why will overcome any technique flaws, or at least prompt you to find better techniques.

Now if you'd like to read well written articles about this check out:

Forbes

LifeHack.org

Success.com

Tuesday, October 11, 2016

How's That Working For You ?

Sisyphus
"I would really like to lose weight, but I can't give up my chocolate bar".  "I want to get better at developing, but I don't have time for training."  What that boils down to is that "I want to do exactly what I'm doing now, but I want different results".  Yes that old definition of insanity.

Now here's the real question. How's that working for you?

We are more like a third party library than like source code.

If you want to change something about yourself you will need to change your behaviors.  You have to change the inputs to get a different output.  Yes there are hacks you can do to squeeze a little more out of the system, but those are supplemental.

Once you figure out what your goals are you need to come up with a plan to accomplish them.  Then you need to actually do the thing.  The big step one is that you need to be honest with yourself.  What do you want?  Is it achievable? If so how?  Are you willing make the sacrifices needed to accomplish it?

What do you want?

Physical things.  Do you want to run a marathon, bench 300 lbs or have 6 pack?
Are you built for any of those things?
Are you willing to put in the work?
Are you willing to sacrifice time, comfort and health?

Do you want to start a startup, get a high paying tech job or be CEO?
Are you built for any of those things?
Are you willing to put in the work?
Are you willing to sacrifice time, comfort and health?

What are your goals?
Are you willing to sacrifice what is needed to get there?

The magic of honestly answering "How's that working for you?" is that it is good to have that validation for things that are working just as much as for things that aren't.






Friday, October 7, 2016

The Three Tools For Improvement

tools

As I see it there are three main tools to improvement.

  • Learning
  • Practice
  • Application


These three things need to be balanced at least until you have really mastered something, then you actually get to go into the fourth tool innovation.  Let's not go there yet.

Why is balance important?

Learning is great, but without practice, and application it's just theoretical.  Practice is great, but without learning you'll stay in the same spot and without application you are sharpening a sword you never cut with.  Application is important, but without learning you will be stuck doing the same thing and without practice you won't have a chance to improve your weaknesses.

Depending on where you are on your journey there will be a bigger focus on some parts over others, but it's important to touch all of them.

I recently started playing table tennis and let me tell you I was horrible at it.  I'd never played it before and barely understood the rules.  Now I'm not going to say that I'm a great player, but what I can say is my game has improved faster than a lot of my colleagues that had been playing longer than me and the primary reason for this is that I did learning and practice, while all they did was application.  I watched YouTube clips on how to do different serves and shots as well as watched game play for study.  I found partners who would just do training where we would just work on one thing over and over.  On occasion I would play a game too and thus get application.  My colleagues were only interested in playing competitive matches.

If you are only doing application you can't really afford to take chances on new things or if you do, you are gambling on luck.

OK, now what the heck does that have to do with developing software.  The rules are pretty much the same here.  I'm sure you've met a developer who's been in the game for a long time and their code still looks they same as it did 10 years ago.  They may even be exceptionally good at getting things done, but they are using a screwdriver as a chisel.  They might be really good at doing it, but if they would take the time to learn how to use the darn chisel they could be even better.  They are completely focused on application.  Hey, that's what we get paid for.

You may have also met the developer who is super interested in the new hotness every week, and can tell you the differences between all the JavaScript libraries and that guy couldn't code his way out of a wet paper bag. All learning, no practice and no application makes you at best a know it all.

Now the trick is that you need to figure out what is lacking in this three legged stool of learning. Once you do that you need to get after that, you might even need to overcompensate for a while.
I can tell you the place that I am lacking in the development realm is with practice.  I do a lot of learning and I do application at work, but I don't spend enough time just practicing coding, and mastering the skills I'm learning.

So with this post I'm going to try to do some code katas and think up a side project for myself.  I will give an update post on that at a later date.

What are you going to work on?






Tuesday, October 4, 2016

Three Levels of Code Cleanup

cleanup

Here are three levels of Cleaning up a codebase, starting at what should be mandatory minimum, up to being a steward of your codebase.

Pitch In:  Don't check in any new garbage code.  Give yourself a code review before check in.

I know you are busy and you don't always have time for cleaning up everyone else's mess.  What I'm saying here is at least clean up your own trash.  You might not have enough time to leave it a better place, but what you can do is make sure your stuff isn't increasing the problem.

Give yourself a code review.  Before you do a check in do a compare to the previous version and see if you can see anything out of place.  Do you have any unused variables, any have excessive spacing, are there huge methods that should be extracted, is it Clean Code, is it following the DRY principle?  Yeah this is the same stuff you'd do in a code review for someone else.  As a bonus, by doing this you're actually getting practice at doing code reviews.


The Boy Scout Rule:  In addition to not adding garbage, you can pick up some litter.

Leave the codebase better than you found it.  If we all do this as much as possible the codebase will get better with time instead of becoming fragile legacy code that nobody wants to touch.

We've all had that time where we were in such a hurry to get something checked in thinking that someday somebody will come back to clean it up.  Well that day is today.  You've opened a file to make a change, before you check it in  it's time to make the file as good as possible.

This can be as simple as making sure that white space and indenting is consistent and removing unused references.  This could also be as complex as doing refactoring if something is really out of whack and you understand it.  Clean it up to make it the code you'd like to read.  Again it's like doing a code review, but on  the entirety of the files you touched.

Code Gardening - Going above and beyond and looking around for problems.

This is taking stewardship of the code.  You actively look for places you can fix problems.  This isn't a rewrite where you do it all from end to end, but it is more than just going where your tasks happen to take you.

Look around a little bit for problems and pluck those weeds.  This can be a major endeavor or just a way to make sure that as you do a go to definition and you see something out of place you fix it, even if it's not related to your current task.  As stewards of the codebase we try to make it better all the time.

Quick pointers for cleanup:

• As much as possible keep your task work and your cleanup work separate.  This makes it easier to get any accidents out of the code base.  Separate commits/check ins for clean up tasks and project tasks when possible.

• Especially if you are going to do a complete reformat of an entire file.  Do the format only and make that a check in with a comment stating that it's just reformatting and no logic changes.  Doing something like CTRL-K, CTRL-D in Visual Studio will make tracking changes next to impossible.  So go ahead and do it as a standalone check in.  Then any subsequent changes with the format in place will then be trackable.

• If there are unit tests on the code you've cleaned up, run them before checking in.  I know you'd NEVER check in without building, but running tests give you an extra layer of safety. Hopefully, you didn't mess anything up, but it never hurts to give it one more check.

• Don't be afraid to fix things.  If it's very complex make sure you get a code review, but we have source control for a reason,  we can get back to where you started in short order (especially if you've kept your cleanup tasks separate).

• Use, but don't abuse tools.  Tools like ReSharper can do a great job of doing cleanup, but you don't want to unleash them without supervision.  If you do the automatic cleanup on a directory, you may make yourself very busy trying to undo all the problems it can cause.

Friday, September 30, 2016

Email is the enemy, here is how to beat it.

email

 As much as possible don't be interrupted by email. 

Email is designed to be asynchronous, treat it as such. Unless your job is to respond to email, you need to check your mail very infrequently.    Ideally one would check there email once or twice a day period. Turn off as many notifications as you can get away with or just turn off your email client. Schedule a time to check your email at a time of your choosing, not at the beck and call of Outlook or whatever.  


Are you the person with 3000 emails in your inbox?  Not anymore, the axeman commeth!

When you get mail there are 4 things to do with it.
  • Delete it (if possible unsubscribe).
  • Do it now.
  • Put it in your "do later" folder or "someday" folder.
  • File the information.

Nothing stays in the inbox.
Getting to zero requires you be ruthless and focused.  Checking your mail should not be a multitasking project, it needs to be attacked as a priority task.
Open, evaluate, do? and destroy.  Nothing gets read twice in the inbox.
Here are some proven systems to control your email.

Getting Things Done Email System.  Based on the book Getting Things Done ,which is more for managers than for developers, but the email system works pretty well for anyone.


FOMO and Hoarding.

Don't use email as an excuse to be busy, when you can be productive. Checking your email should not be a procrastination tool.  If you are going to take a break, take a break.  If you are going to check email, check the heck out of it.

I know it's hard to implement a new system after you've fallen into your current system of mail handling, but most of the time if a "system" of email processing is not purposeful, it's probably wasteful.  If you are an email hoarder hitting the delete button might take a lot of practice, but trust me, odds are good you don't need it, and feel free to archive it so you can ignore it anywhere else but in your inbox.

Now I need to look into a way to get a better handle on Slack....

Wednesday, September 28, 2016

Look Better, Breath Better, Code Better, Perform Better

Bad Posture WestLB, 2002


What's the problem?

If you've been putting in long hours on your computer and devices for a few years now (and I know you have), you might be developing a sweet programmer slouch.  The shoulders are are all rounded forward, head is always forward and back is always rounded.  This awesome posture gives you a cute little pot belly no matter how lean you are or aren't.  You exude confidence with this powerful posture of constant cowering. 

I was unaware how poor my posture had gotten and how bad posture is among my peers.  Head forward, shoulders forward back rounded.  This is so common you've probably rarely even seen someone with good posture (unless you work with Marines).  I thought I was doing fine because most everyone I knew look like that more or less. It seemed normal. There is an important distinction between what is common and what is normal.  It is common especially among desk jockeys, but it's not normal in that your body is not meant to be imbalanced and broken. So many of us are slammed into cubicles with monitor(s), keyboard and a mouse and we spend 8+ hours sitting in front of the computer and our bodies adapt to this.

How does that affect me?

Now you might be saying "So darn what if I have a slouch, I sling mad code and I just get in to it.  I've been doing this for years and I'm doing fine".  You might be doing ok now, but you are setting yourself up for headaches, and back/neck pain if you are lucky, and if your not you could get worse injuries that will affect your productivity.

The biggest immediate reason I could give you if vanity isn't good enough and caring about how hard life will be in old age, would be that in proper posture you can breath better.  Breathing better will give you better oxygen to your brain and clearer thought.  To you hunched geniuses, what that means is that you could be doing even better work.  So yeah, sit/stand better, breath better and think/code better.

Anything else?

For those of you that do sports, there is an even bigger need for fixing your posture.  If you allow your body to adapt in this way, you will lose natural ranges of motion for your joints.  While you can work around these by using the ranges of motion you do have, this is where sports injuries come from.  If you can't get your shoulders and spine back into a stable natural position you start to put excessive strain on those joints, ligaments and musculature.  This is a sure fire recipe for injury.

Now what?

"OK fine I need to fix my posture, how do I go about doing that?" Well I'm glad you asked.  Now I'm not an expert at this, I'm just someone who is working on fixing all the years of damage I've already done.  So I'll defer to people who are experts.

Check out this video for some basic explanation and exercises you can do at your desk.  Upper Cross Syndrome

Now if you want a more intensive correction than just some office chair exercises there are lots of resources out there.  For athletic performance the  primary one I'd recommend is MobilityWod. Here is a link that will get you pointed in the right direction https://www.youtube.com/results?search_query=mobility+wod+posture .  Dr. Kelly Starrett will help you work on fixing all sorts of problems related to sitting and sports performance. Be warned there is much higher level of work and discomfort on this path, but you can get faster and more thorough results.

Images: Bad Posture

Tuesday, September 27, 2016

Freedom Through Discipline

Discipline


Yep, this sounds like some totalitarian propaganda, but if you give me a chance I'll try to soften it up a bit. You see one can think of willpower as a muscle which is handy on the one hand of that it can be exercised to be made stronger (more on that in future posts).   However on the flip side of that no matter how strong you get, there will still be a point of fatigue.  What discipline does is it removes the need for using that muscle on things that are unimportant and lets you conserve willpower for things that really do matter.

I will be defining willpower as the idea of being given a choice to do something more helpful and more harmful and choosing the thing that is more helpful.  I will be defining discipline as a way to remove the choice altogether, and default to the better choice without needing to make a conscious decision.

As I see it there are two ways to create this discipline and each is based on the type of decision being made.  There are "rules" which will help to take away decisions on consumption or input and habits which will take away decisions on behavior or output.

I will be writing posts on Rules and Habits individually later, but I'll give an overview of how they can help.

RULES.

Decision fatigue is the enemy of willpower.  The more choices you have to make in a day the less likely you are to be able to continue making good decisions.  Rules are a set of guidelines that let you eliminate the need to make a choice, or at least they eliminate a huge chunk of your choices.  If you have a set of rules, it works like a where clause on a SQL query.

SELECT *FROM CHOICESWHERE Good_Choice = True;

Now your subset is significantly smaller and you have an easier decision if there is even one left.  This saves your willpower for a later time when it might really be needed.

HABITS.

Habits are ways you set up your life to have you choose to do the things that move you towards your goals.  Now habits are a bit harder because you'll need to hack yourself in order to get the best results.  There are some amazing techniques in Gretchen Rubin's book "Better Than Before: Master the Habits of Our EverydayLives" which I cannot recommend enough. 

The tricky thing about habits is that you have them whether they are good or bad.  The things you do are mostly out of habit that is both the good and the bad.  The trick is to set yourself up with as many good habits as you can.  Do you jam out to tunes on your drive to work, or do you listen to an industry podcast?  Do you go to bed at 10 pm or 1 am?  Either way, it's your habit and it either takes you towards your goals or away from them.


So with good rules and good habits you have a way to replace all these manual steps with an automated script.  This automation allows you to use your willpower for dealing with important choices , and quite possibly get a lot more done to accomplish your goals.