How to create the perfect home office – Part 1 – The desk and furniture

The furniture in an office is the second most important aspect of the office next to the computer. Your furniture defines the look and function of your office. If simplicity is your goal, you need furniture that has clean lines and plenty of unobtrusive storage. If multi-tasking is your goal, you need a desk with lots of surface area and room. Don’t take your desk decision lightly. My last desk lasted 10 years.

Don’t fret however. I have done the legwork. I have found the hands down best furniture for your home office. (In all actuality, I first saw this furniture at the Jungle Disk offices in Atlanta. Props to that team for having great furniture).

The Desk

The Galant series at Ikea is the worlds best desk system. It is extremely configurable, very sturdy, and very sleek. I have yet to see a desk that rivals it. Not too mention there are plenty of accessories and add-ons to add additional functionality to your desk. Here are just a few sample pictures of different configurations.



I encourage you to go to Ikea and look through the many combinations and pick one that you like. Or just go to the store and see 8 or so different configurations of the same desk.

In the subsequent posts on my office, I will show you some of the nerdy benefits of this desk system as well (namely a nice frame for running wires and plenty of surface area for velcro).

Effectiv Furniture

The Effectiv system is just a nice storage system. Like everything Ikea, it has plenty of options and is very functional as well. In my setup, I am storing everything from hanging file folders to pens and pencils. Again, some more sample configurations.



The final picture

Putting it all together, this is what my office looks like with the desk and storage cabinet. As you can see, very sleek while still having a ton of storage.







Other minor things to note, in the pictures I have the Markus chair and the Galant Drawer system to put the finishing touches on the office furniture.

In summary, think hard about your furniture. It is super important. Stay tuned for next weeks post on equipment and software.

Setting up your Mac for .NET development

Last night I spent a few hours getting my Windows virtualization setup so I could use Visual Studio from the Mac. It ended up being way cooler and easier than I thought. All it requires is two simple things, Parallels and mklink.

Parallels

I was hesitant about paying $79 for virtualization software when other software like VirtualBox is completely free. My advice, try the free trial of Parallels and you will understand why it is worth the price.

It allows you to create shortcuts to Windows apps in the Mac Dock.

Integrates the Windows task bar with the Mac menu bar.

Putting it all together, you get to run Windows apps right beside Mac apps in what Parallels calls Coherence mode.

Some other notable features are:

  • Integration with Bootcamp partition
  • Integration with Windows start meu
  • Much more…

The overall performance is good. I noticed some slowness when dragging windows around, but for everyday usage, it runs great. There are some oddities of using Parallels in Coherence mode, but no deal breakers. I definitely recommend it because of the low overhead in context switching between Mac and Windows applications.

mklink

Even with Parallels, Windows runs on a different filesystem than the Mac. It does offer shared profiles, but I only wanted to share my Visual Studio project files.

mklink is a tool I had never used until last night. For those of you familiar with Linux, it is simliar to the ln command. Here is how I used it.

mklink /d "c:\Users\Brian\Documents\Visual Studio 2008\Projects" \\.psf\Home\Documents\Projects

What this simple command will do is create a symbolic to my Mac home folder for all Visual Studio projects. From Windows, it works like a normal folder.

Now, I can easily code side by side in TextMate and Visual Studio straight from OSX.

How to create the perfect home office – The Series

Ever since I purchased my house a year ago, I have been trying to create the perfect office. After lots of thinking, a little bit of work, and a few trips to Ikea, I have finished my journey (for now). I wanted to write a few short posts that take you through the creation of the office.

My goals for the office were pretty simple.

  • Support lots of equipment (I use 3 computers in a given day)
  • No wires
  • Fung sei (my translation means clean and simple)

Over the next few weeks, I will post on how I got there.

  1. The desk and furniture
  2. The equipment and software
  3. The wires and wires and wires

And just to give you a sneak peak of the finished product, here is my home office.

Really nerdy chat room

Here is an excerpt from my team’s chat room today:

(4:31:42 PM) brian.hartsock: i saw a good blog post on how to reuse moq verification steps somewhere
(4:31:43 PM) brian.hartsock: http://blog.brianhartsock.com/2009/09/01/using-extension-methods-to-clean-up-mocks-moq/
(4:31:45 PM) brian.hartsock: oh there it is :)
(4:34:39 PM) kendall: I don’t know…is self-promotion allowed in the group chat room? ;-)
(4:37:40 PM) kevin: I promote myself to Supreme Ruler.
(4:40:46 PM) jake: as long as you don’t promote yourself to a distributed transaction

The Rule of Doubling

A long time ago when I was a team lead, we were in a planning session and I made up the rule of doubling. Jokingly, I said we should just double the estimates of all our developers (at the time estimates were in hours or days, not story points). The reason behind it was the fact that doubling would make the outcome more realistic, as I knew the developers were vastly underestimating tasks.

The problem with the rule of doubling is that it compounds. When I told someone how long a feature would take, they doubled it. Then, when that person told someone the date, the next person doubled it. What’s even crazier is the rule of doubling actual yields pretty good results. So as an organization gets larger, the rule of doubling is really the root cause of why projects take longer to get out the door.

I know what you are thinking, I am crazy but it is true. The rule of doubling is a real thing! Why?

There are two main reasons. Developer estimates have very little to do with releasing software and because you never take the time to make the rule of doubling not true.

Developer estimates have very little to do with releasing software because coding is not the only variable involved with releasing software. A great example of this is an article published 7 years ago entitled, How many Microsoft employees does it take to change a light bulb? Microsoft is definitely an extreme case, but I still experience a very similar reality. To release a new feature, the following parties are usually involved.

  • Developer codes something
  • Designers help if UI changes are involved
  • Writers help if text changes are involved
  • One or two team members review the code
  • One or two team members help to QA the changes
  • Project manager works on including information about the change in an upcoming release
  • Support and Ops teams discuss upcoming release with Project Manager and Software Development Managers
  • Ops and Development team deploy and verify changes for a release

It seems like a lot, but at Rackspace we take Fanatical Support seriously, and what that means from our software development teams is a lot of time spent to release a quality product. I honestly wouldn’t get rid of a single part of this process. All of it makes our software better and hopefully our customers happier.

This is why story points are more accurate. They measure relative size of different pieces of work and then apply past history to estimate for the future. Don’t forget that story points mean absolutely nothing to organizations or customers. If you can’t use story points to give relatively accurate delivery dates, they are worthless.

Because you never take the time to make the rule of doubling not true means that the inefficiencies that slow development teams accumulate over time rarely get fixed. Developers can easily miss the forest for the trees, working slowly on features instead of fixing inefficiencies to work faster on those features. Bad build scripts, lack of testing automation, crappy development environment, and repetitive manual processes are all build ups of technical debt that need to get resolved at some point.

The solution is good Software Development Managers. Managers need to understand the true cost of developing software, both from an initial implementation standpoint and a future maintenance cost perspective. All to often, managers don’t understand software development and hinder a teams success by setting up unrealistic expectations.

As a manager, you need to be able to set realistic expectations around timelines and also make decisions on what technical debt really needs to get resolved and what can wait. Neither of these are easy and I have made my share of mistakes in these two areas over the years. But, as a manager, I need to constantly remind myself of two questions.

Are my teams regularly meeting my expectations around releasing software (and note that if they aren’t, that is probably a managerial problem, not a team problem)?

What roadblocks do I need eliminate to help my teams meet more of my expecations?