Your Workspace Can Make you a Better Programmer

Came across a great article on what factors make someone a great programmer. It’s not salary or years of experience.

The best predictor of writing good code is having control of your work area and having a relatively private work area.

I know that days my wife interrupts me often (and she is awesome at leaving me alone but sometimes it needs to happen) are days that little gets done. There is nothing different between one day and the next but interruption.

When your employer wants to stick you in a highly interruptible place, send them this link and hopefully they won’t screw you over.

The Programming Rat Race

For a while now I’ve been feeling like something has been missing in my programming work. I’ve referred to it as ‘craftsmanship’ when trying to express the sentiment to someone else. You know, the ability to really hone something to as close to perfections as possible give you current skill set.

But that, unfortunately, is not what most programming is about. It’s about trying to come up with a working solution in a problem domain that you don’t fully understand and don’t have time to understand.

The big reason that craftsmanship has been lacking for me is budgets. Clients often don’t want to pay for 2 hours of toying with a way to do something just to see if its a few less lines of code. They don’t want to pay for a few hours of playing with the UI so that it’s a perfect blend of features and simplicity with that perfect interaction that makes a user raise their eyebrows in appreciation.

Never mind that this type of interaction and attention is something that clients say they want. Almost every developer learns quickly that what a clients says and what they are willing to pay for are drastically different things.

Every project quickly turns in to a crunch with a few extra features tossed in. Then a difficult problem comes up and we still work hard to make a deadline since we really want to please a client. The things that suffer are the little items that would really make a site ‘pop’.

So now you’ve got a project that’s certainly functional but overall it’s a bit of a mediocre example of the high hopes you had in your head. Maybe some programmers learn to lower their hopes, they get jaded. In the 5 years I’ve been programming I haven’t become jaded yet, resigned maybe but I still try to fight the spiral to mediocre interaction.

I can see why some become totally jaded and give up though. Working on project after project that end up being ‘only okay’ gets tiring. Now it is true that the common denominator is me.

I’m the one on these projects. The clients are different, so maybe I just can’t deliver? Maybe I’m some interaction genius waiting to be unleashed on the right project?

After talking to many other developers, I don’t think it’s me not delivering. I like to think that it is in fact me aspiring for so much more than I can do. Unfortunately at some point I have to make sure my kid is fed and has a house. That’s going to trump a few hours of extra unbilled work on a project every time.

Do you have any solutions to getting the time to make that project pop?

Quote from Programming in the 21st Century.

Throw Away TODO Items

Eric Davis asks a simple one line question.

What would happen if you threw away 10% of your TODO items every day, not finished threw away.

So I took a look at my TODO list and realized that at least 10% of it is simply things I mean to do at some point. They’ve been sitting on my list for months though. If they haven’t been important enough to do in months, then are they important enough to even stay on the list?

No!

So what would happen to me? Well I’d have less guilt when I finally get around to an OmniFocus review. I wouldn’t have this list of awesome things that I’m not doing hanging over my head.

I’d reduce my stress. So what would happen for you?

Starting the Day Productive

It’s no secret that to really be productive you need to start your day the right way.

Tumblr founder David Karp will “try hard” not to check his email until 9:30 or 10 a.m., according to an Inc. profile of him. “Reading e-mails at home never feels good or productive,” Karp said. “If something urgently needs my attention, someone will call or text me.”

I’ve actually started planning my day the night before and not answering any email till after lunch. Then I check again before I close things down for the day. I’ve found that lots of the urgent emails have dealt with themselves by the time the afternoon rolls around so I don’t waste my time on something that I obviously didn’t need to deal with in the first place.

This does mean that I need to answer my phone though. I still only answer numbers that are already in my address book. I haven’t found it to be a problem, since the only people that have issues that I need to deal with as an emergency are existing clients, which I have in my address book already.

Any other strategies to start your day right?

My Writing Workflow

Today I figured I’d cover my current writing workflow.

Collecting

Much of my writing currently is inspired by articles read by others. I collect those articles from Flipboard on my iPad, Twitter, and a few email newsletters listed below.

Typicall I’ll open the link in my browser and then do a quick scan. If the article looks like it’s interesting, off it goes to Instapaper. The fact is that:

  1. Most sites have a terrible reading experience
  2. Collecting all the possible options in one spot allows focus later

The first item on the list is my biggest push to Instapaper though. There are other ways I could keep a list of possible links, but then I’d have look at their crappy site with ads all over, small type with bad line spacing. Then add the inane comments at the bottom, just terrible experience all around.

The Cull

The process of going through all the articles in Instapaper is an all week affair. I read each one and if I still think that it has something to contribute I keep it. Actually removing articles of little interest and writing are steps that happen at once often. If an article is really good I’ll jump directly in to writing about it.

Each week I probably end up tossing 90% of the articles that I put in Instapaper. Either the article turned out to be totally boring or I just didn’t feel like there was anything to say about it. Doesn’t matter the reason I read about may more than I write about.

Writing

Once we move on to writing we get to see MarsEdit. After questioning where MarsEdit fit in my workflow I tried it out and I just can’t find a reason to remove it again. I did a review on MarsEdit as well if you’re not familiar with it.

Depending on my mood I just write in MarsEdit (full screen if I’m not at my desk with the 2nd monitor) or iAWriter or Byword. Lately I’ve been leaning more towards Byword after having some small bugs with iAWriter. Going from MarsEdit to iAWriter and back, just didn’t work and sometimes I’d open it and it would think it could still appear on my second monitor which just didn’t work since the monitor was in another room. Byword seems to not have these issues so that’s what I’m using now.

I also use iAWriter or Byword to work on articles from my iPad or iPhone. Many of my product reviews start there while I’m making sure my 19 month old daughter doesn’t choke on breakfast. Having this segregated writing environment for my own articles (not inspired by or comments on articles) just seems right to me. iAWriter (maybe iCloud) has issues here again. When I go back to writing the article on my laptop I get constant version conflicts to resolve. Byword just doesn’t have this happen.

My other writing tool is Scrivener, which is used for articles that need more research (like the upcoming one on Agile Dev Cycles or Email). These usually have a number of articles to read through on the topic and they are longer. Nothing I’ve tried beats Scrivener for this type of writing.

Publishing

Now, the articles are written and sitting in my WordPress install as drafts. Here is where I take a look to see if there is any order to the articles. Does one article lead nicely to another? If so I’ll schedule them to suit the order, if not then I just schedule them for the week.

Articles are scheduled to publish at 5am PST but you probably noticed that 5am doesn’t happen. This site is actually on my own MU network. I’ve got sites for my family and a few friends here. While all of the other sites publish scheduled posts fine, this one always misse the schedule. I’ve spent a bit of time (only a little bit) trying to sort the issue to no avail. I end up using WordPress for iOS and ‘updating’ the article which publishes it. So you get them somewhere around 6 – 8am depending on if the kid let us sleep in.

That’s it. See any place where I could streamline my workflow? Did I not cover anything in enough depth.

Balancing Working from Home and Kids

One of the reasons I wanted to be working for myself was so I could spend time with my future (at the time) children. My dad worked hard outside of the home and was gone for 12 hours a day, talking to him now that I’m an adult, he wishes he could have been around more. I decided not to repeat that ‘mistake’.

For the most part things work just fine. I see my daughter off to daycare then pick her up around 4pm and have 3 hours with her in the evening. The issues come up when she is sick and at home.

The days I’m home as the main caregiver are just a total write off, even if she is not sick. At 19 months old she needs lots of attention and wants you to play with her the whole time. This is not a bad thing, just a thing.

Days my wife is home as the main caregiver it’s still not a full day of work if she is sick. I end up helping with things, taking long lunches and generally just making sure that both of them are alright.

When we started this adventure of having a kid and working for myself I way over estimated the amount of work I can get done with the kid in my charge. At one point I’d even get really stressed about getting work done and trying to watch my daughter, I just gave up.

There are some things you can control and some things you can’t. One thing I can’t control is the time it takes to be a good parent, so I stopped sweating it.

Here are a few of my tips to get work done, even with the kids around:

  1. Good pair of headphones so you can stay focused (obviously not when you are the main caregiver). I have two sets. The Logitech G930 for when I’m working in the office and Ultimate Ears 500vi when I am out or working from another portion of the house.
  2. Get out of the house then you can focus. I’ve found that despite my being ‘at work’ I end up helping my wife with stuff during the day when she is home. Stop getting frustrated with that and find a spot that you can go to and work out of the house. This makes you truly ‘at work’ and if you’re not around to help then you can’t be asked. It’s not mean it’s pragmatic, the money I make pays for the house if I don’t make money we have no house.
  3. Decide the child rearing split. In some houses one parent does 90% of the child rearing, in mine it’s a fairly even split. Decide what works for you and your jobs and then just accept it. Of course the kid will be sick during the busiest week for both of you. The point is that you talk about it and each feel like it’s a fair split, then stop complaining, it doesn’t help you or your partner/spouse.

That’s it. If you can only do one of the 3 items above the third one is the most important. Keep talking with your partner/spouse and you’ll both make it through okay.

What Does Productive Mean to you?

On a recent members podcast Shawn talked about the type Z personality, from a post by Sarah Bray. The short version of her post is that she only works for 90 minutes a day. She divides that 90 minutes in to 15 minute blocks and devotes the first 4 to 4 items that are time sensitive. At the end of a 15 minute block, if she is enjoying the work, she just keeps working on what she is working on. In her own words here is the result of her work setup:

Then something magical happened. I got my mojo back. I started loving my job again. Since I don’t treat it like work, it doesn’t feel like work. Side bonus: I no longer waste time obsessively checking email or social media. Since I’m not resisting my work, there’s no reason to procrastinate. Hence, I’m more productive, and I feel like the luckiest person in the world, because I only work 90 minutes a day.

To me what is most interesting is how she figured out what makes her most productive and then uses it. She doesn’t really use any specific ‘system’ (though the astute among you probably notice this is similar to Pomodoro). She also may only work 90 minutes a day, which I love.

I admit I often find myself checking my email, twitter and other stuff in what really amounts to a way of procrastinating the work I really have to do. The reality is that I’m probably procrastinating because I’m not all that interested in it, or maybe I haven’t quite figured out what productivity looks like to me?

If you didn’t stop to read the whole article above then go do it, and maybe see if that is what productivity looks like for you.

Live Your Eulogy

My friend Eric recently wrote about his quest to get the right fit in his life. It seems to me that he is trying to sort out the things that are most important to him and then set about doing them, and in theory, getting someone to pay him for it. Darryl at Loving the Bike just wrote about the same thing, his two loves and setting him self up to work in a way that gives him as much time as possible to do the things he loves.

To many who view my life from the outside it would seem like I have things sorted. I spend every Saturday with my daughter, have time to pick her up from daycare and play with her every day. I can even take the odd weekday off to hang with her and my wife. I take Friday’s for personal work and then go for a ride with my afternoon. But it stills feels like I’m falling short, at least from this side.

Much like Eric, programming is a job. Sure I get to work on some cool stuff and I certainly don’t hate it, but I also often feel that I’m not working on the projects that really interest me. I don’t have bad clients or anything, just not the work I’m really passionate about. Secondly, I despite the time I get to take off I feel like I spend too much time worrying about work. Lot’s of my weekday time off with the family has a bit of stress for me as I think of the work things I could be doing, or let my mind wander to the balance of my bank account (whose perfect balance is n+1).

I’ve always thought that you should live your life as if your funeral is coming up and what do you want someone to say about you? I don’t care if they say I was a good programmer, or that I was a great business man. I want people to say that I was a good husband and father, that’s it. Paying myself with riding certainly helps me recharge and thus helps me accomplish the items above, but if it got in the way I’d give it up to be a good dad.

Are you living your life as if someone is writing your eulogoy now? If not you’re wasting time.

Multitasking is a Farce

I don’t multitask, well not if I want to get anything of any real substance done with my time. If I want to waste time then I have Twitter and MailPlane and Linkinus open just to make sure that I can get distracted (wait ‘multitask) as often as possible. I’m still surprised how much of the day can be wasted this way. I’m not the only one that thinks multitasking is bad.

Wrong, way wrong. “I, more than anybody I’ve ever met, do not believe in multitasking,” says Orman, 54. “I think it’s the absolute ruination of the perfection of a project.

Sure, Orman has the usual battery of electronic devices–in fact, she runs a paperless office but has strict rules for using her gadgets. “When I am writing, I don’t answer phones. I don’t care what else is going on,” she says. She has a cell phone but never leaves it on. “You can’t call me. I only call you. I think you have to stop thinking you are at everyone else’s beck and call.” Silence, she adds, is critical. “You cannot complete your thoughts with everything ringing.”

I actually use a Pomodoro timer during the day and turn off all the things that can cause distraction. I don’t even answer my phone during a Pomodoro (well the wife has a special ring and I answer that). I’ve never thought it was all that fair to bill a client for 25 minutes when you really spent 2 – 3 checking and replying to tweets, or sent a few IM’s or had your brain pulled off track by incoming email. Every time you stop and start a job you have to get your brain up to full speed again, so your client ends up paying for a more ‘up to speed’ time than time you’re at full speed.

If you’re not familiar with Pomodoro [this is an awesome book][pombook] on the subject. I’ll be reviewing it in the near future since I’v read it already.

[pombook]: http://www.amazon.com/gp/product/1934356506/ref=as_li_ss_tl? ie=UTF8&tag=strugwithfait-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1934356506 “Pomodoro Technique Illustrated: Can You Focus – Really Focus – for 25 Minutes? (Pragmatic Life)”

Maximize Team Productivity

Really interesting article about making a team more productive. I would have totally thought the first assumption would produce a more productive team since each member can work on what they enjoy the most. Turns out I was wrong (which of course is the first time and don’t tell the wife).

But our research has shown that the opposite is true: collaboration improves when the roles of individual team members are clearly defined and well understood — in fact, when individuals feel their role is bounded in ways that allow them to do a significant portion of their work independently. Without such clarity, team members are likely to waste energy negotiating roles or protecting turf, rather than focusing on the task.

Something I must keep in mind as I grow my business to include others.