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.

Monday, September 26, 2016

Who the heck is this guy?

In case anyone is wondering what the point of this blog is, mostly it is a way for me to share my thoughts with the world. I'm trying to practice my writing skills, I haven't allocated a lot of time for this, so I'm writing all of these posts in less than an hour. That is a huge chunk of why the posts are all so short.

 So who am I? Professionally I'm a reformed slacker programmer turned mediocre developer aiming to become a decent dev some day. I have however been around for a while and have learned a thing or two, most of them have been learned the hard way. In my free time I like to lift weights in a "powerbuilding" fashion, which takes a lot of the best things from powerlifting and from bodybuilding. I've been on a Paleo diet for about 4 years and have been experimenting with Paleo/Primal Ketogenic diet for a couple of months.

The reason I went Paleo is because about 5 years ago I was diagnosed with Multiple Sclerosis and then I came across Dr. Terry Wahls Ted Talk Minding your mitochondria | Dr. Terry Wahls | TEDxIowaCity.

Outside of that I'm a husband, father, fisherman and hunter. I love to get outdoors with my family. I'm also a bit of a lifehacker and a biohacker trying to squeeze as much out of life as I can. I'm a Pluralsight junkie which just plays into my voracious appetite for knowledge. The thing I always need to work on though is putting my learnings to use, but hey everybody needs a hobby.

Thursday, September 22, 2016

The Secret To High Productivity.

productivity

Take care of your body! Yeah, this is not a secret, but we all see it ignored all the time.  I know many of you see your body as a brain transportation system and little else, but you are a system and you need to keep that system working optimally for maximum results.

  1. Get Enough Quality Sleep.
  2. Eat for mental performance.
  3. Get some exercise.

"But Coach Gabavics, I'm a developer, as long as I can sit upright and type, I can do my job."  Yes, but not optimally.

"I don't have time to eat well".  You are a professional knowledge worker, it is literally your job to perform at maximum mental clarity.

"I can't get enough sleep, I do my best work at night" Then work at night and get your sleep elsewhere.

"I do just great on 4-5 hours of sleep".  No, you don't.  You might be used to living on 5 hours of sleep, but you've probably forgotten what great feels like.  Get 7+ hours of sleep for a month and then tell me how great you did on 5.

"If I sleep more I'll get less done, those extra hours are what I use to get ahead."  Ultimately the number of hours you put in is a useless metric.  We produce working software.  The longer it takes you to do that the more inefficient you are being.  Being rested, fueled and fit will allow you to be efficient.  You will have clarity of thought that will put you in the zone faster, enough fuel to not need to stop because you are hungry and the stamina to push through.  This means you can stay focused longer and better.  This will make you more productive and not less and much more efficient.

Now I'm not saying you need to train and eat like a bodybuilder or CrossFit games competitor.  I'm saying take your body seriously and treat it like you are a professional.


A great resource for optimal performance is Dave Asprey's Bulletproof Lifestyle https://blog.bulletproof.com/bulletproof-for-beginners/.  This guy takes mental performance seriously.

Wednesday, September 21, 2016

If You Can't Get Out of It, Get Into It.

Dive


So you just got the assignment from heck, it's for a one off, disposable piece of code.  It's not challenging, and you won't learn anything, but it's super tedious and will just take all your time.  Or perhaps your company is doing a re-org and you've been selected to be put on a team you don't want to be on.  You can view this as a punishment and a disrespect, or a test and an opportunity. 

As the title says you can't get out of it, so that's not an option.  From this point on you are going to do it, the thing you have a choice in is how you choose to see it.  You can choose your attitude.

If you have a negative attitude, you will not produce your best work.  That negative attitude will also act like a poison to your team.  If you are lucky you may get sympathy from your team mates, but you will be dragging them down with you.  You also could also give off such a negative vibe that your teammates won't trust you.  The worst part is that you will have chosen an mindset that will make you dread going to work and dread working on the task.  Hating your job is not good for your mental and physical health and could harm your relationships.  It's like a recipe for depression.

On the flip side if you embrace the task (get into it), you will produce your best possible work, and your positive attitude will lift up your team.  This positive attitude will keep you from dreading you job and your task.  I can't think of a time in one's career where doing excellent work and having a positive attitude will work against you. 

Now I'm not talking about taking a Pollyannaish view of this, blind optimism isn't what is required, just and understanding that there may be some discomfort, and that is ok (Growth == Discomfort).  I know I have fallen into the negative trap before and it is not a good place to be, and for a good part of my career that was my default, and I have to remind myself to not go there.  So "If you can't get out of it, get into it" is a nice short reminder of how to choose your mindset.


I first heard this quote on the podcast Happier  with Gretchen Rubin.  I honestly can say this has been a huge help in my life.  The point of this is that when something comes up in your life that you don't have control over and it's not the thing you would have chosen for yourself, the best thing you can do is to dive into it and make it your own.

Tuesday, September 20, 2016

Pitch In

Pitch in

So yeah the Boyscout Rule is awesome, but 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 and see if you can see anything out of place.  Do you have any unused variables, do you have excessive spacing, is 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, so you're actually getting practice at code reviewing.

I know this sounds like a huge pain, you just spent a bunch of time just trying to get this thing to work at all and you write amazing code by default.  Great for you, then think of this as a chance to bask in the glory of reading your amazing code one last time before sharing that flawless gem of code with your source control.  For the rest of us, it's a chance to refresh your memory of all the things you did and possibly pick up some of the trash you may have dropped accidentally.

In the end you will now be committing code that will not need to be cleaned up by someone else (or yourself). Compared to doing code clean up on it later you'll be saving time, because you'll never be as familiar with the code as you are right now.  This gives you an opportunity to review code, refactor code ,fully understand the changes you just made, and check in the best possible code you are capable of generating. To paraphrase Ghandi "Be the clean code you want to see in the source".

Photos: Pitch In

Sunday, September 18, 2016

Growth == Discomfort

growth

This may not come as a shock to you, but in order to grow in anything you will need to put yourself through discomfort.  When you are a child, the process of your body growing can give you what's referred to as growing pains. A child's bones grow causing pain, the ligaments and muscles stretch and grow to accommodate this and it is an uncomfortable experience.  This is not done intentionally, it's just part of life.

There are however places where you have to choose discomfort in order to grow.  A place that I have experience with growth and discomfort is in lifting weights.  In order to get your muscles to grow and your body to get stronger, you have to lift a weight that is heavy enough to cause mild damage.  That damage is the cue to your body that it needs to rebuild itself even stronger than before to handle the loads you are putting on it.  This stimulus can be mildly to extremely uncomfortable, but it is the only way to get your muscles to grow.

Now professionally, it can be easy to coast by and never really put yourself into a position of discomfort, especially if you are talented, to begin with (this is not a problem I have to deal with, but I digress).  To truly grow as a developer you need to put yourself into positions of discomfort.

Training is one place that can be uncomfortable.  It's Monday night, you have 2 hours before you go to bed and you now have to decide what to do.  Do you tune into the Football game, binge some Netflix or do you watch Pluralsight training on something you are unfamiliar with or maybe do a code kata?  Do you coast, or do you grow?

At work, you are presented with two projects, one that you know you can crank out quickly because you have years of experience on it or one in a technology you have barely touched?  This can be extremely difficult, because accomplishing tasks is highly praised, while grinding through tasks and barely completing them in time is not.  The business wants things done, and your growth while useful is not their top priority.  The choice to grow is yours, but it will not be without discomfort.  You will need to live with the pressure and the risk of failure, but that risk of failure is the only way to grow.

With lifting weights, there is a concept called progressive resistance, which means to slowly and steadily increase the amount of work that is being done.  This can be by increasing the weight, increasing the reps, or slowing down the tempo to increase difficulty.  This is fairly easy to do because you have control over what weights you'll be lifting.  Professionally you don't always get those nice easy incremental changes.  You want to try and take a task that is just out of your reach now, but not one that will crush you nor one that you can do without any hard work, that can be difficult as we don't always have a say in what tasks we will need to do.  The takeaway here though is that if there is little to no chance of failure, there is little to no chance for growth.

Don't be the guy at the gym that consistently comes in and does the same weight for the same reps week after week year after year and wonders why he hasn't grown and don't be the developer that works on the same types of tasks over and over and wonders why he's pigeon holed.  Push your limits, risk failure and embrace the discomfort.