Category Archives: tips

Sacred Space: Building the Energy of your Home Office

In a previous entry I mentioned that you should have certain infrastructure readily-available when you work from home. After I wrote it this idea kept bouncing around my head that is a lot more important: how you treat your home office.

What you don’t do in your home office and what you don’t have in there matters more. You can’t just pull up a fold-up chair to a coffee table and get real work done over the long-term from home. You have to create a Sacred Space.


To pull off working alone and to build anything of any real value you should treat yourself as a professional and respect your work for its intrinsic value. Take it seriously and build a space that shows this attitude.

Don’t eat at your desk. Don’t browse YouTube aimlessly at your desk. Take a break at a separate desk or computer; the space for work is for work only. Don’t allow your kids into your office unless they are there to make something. When they make something put it up on the wall. The smell, energy, and feel of the place is that of doing stuff, making stuff. It helps your muscle memory when a space is always used for the same purpose.

This of course means that you probably won’t be sitting at your desk for 8 hours a day. The time you aren’t working you shouldn’t be in there. Run your online errands elsewhere; check your news elsewhere.

Design your space

Your office should be highly-functional but pleasant. You should be in  direct control of noise and interruptions as much as possible (door that shuts is a minimum, steel door that shuts is better, sound-dampening room with a parachute catapult for quick exits is ideal).

Your office should be treated seriously but it should be a place that you want to spend time. Work is hard sometimes. When you look up from your computer to think  you should enjoy the fact that you don’t have to look at sad greyish-brown-really-man-oh-man cubicle walls or generic ‘art’ and the smell of sad coffee stains soaked into the walls of a typical office space. Put up some Teenage Mutant Ninja Turtle posters. Have toys, write something on your wall. Buy some ZenPencils posters. Have something that you want to look at; change it often.

As an illustration of this concept the below are some videos of professionals showing the rules of their spaces:

Casey Neistat: Red Boxes

Tom Sachs: Sacred Space

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

Write in 2012

Last year I resolved to write more this year.  I ran across the idea of Morning Pages and found a writing site and some tools that helped me no matter where I was.  In this post I’ll talk about what this has meant and done for me and encourage you to spend some time writing in 2012 ’cause I think it is dope.

I write first thing in the morning and then intentionally at lunch a few days during the week or I jot down notes as the day passes over me.  I just write anything.  Sometimes it’s in the form of a 13 year old girl’s diary in that I dump my emotions on the page and other times its intentional work towards a blog post.  More often it’s simply noting patterns, entertaining myself, and processing whatever is in me.

Most of the writing that I do is not published – it is a language of communication in which the sender is the present me and the receiver is future me.  I started writing in 2002 after graduating college and being really bored in my first job.  I wrote it on a Movable Type blog that had a password on it – a personal pay-wall of sorts to ensures that only I read it.  Write for yourself first.

Why spend time writing?

If you don’t intend to ever pursue writing as a career or serious hobby why would you spend time writing?  I mean don’t you have Facebook stalking to do and fart apps to download?

Well let’s start with a list of small to medium-size benefits:

  1. If you work for a small business you can easily use your writing skills to establish a culture, public voice, and internal attitude for your company.
  2. It doesn’t matter what your job is – if you can clearly convey an idea over email, the phone, text message, smoke signal etc. you are going to be better at your job. It is a natural prejudice but a positive one: if you can clearly communicate people think you are much better at other things.  Software developers with clearly-written blogs are thought to be great programmers even if it isn’t so.
  3. Writing gets you in touch with yourself – what is in you comes out with stream of consciousness writing.  It reveals your prejudices, in-the-moment emotions, and things that you can’t process without “talking about it”.
  4. Archived writing is stored state of mind.  I go back and read stuff I wrote when we had our first child in 2007 and it is fascinating and beautiful just because it takes me back there better than music or photos.
  5. Writing is an effective break during work – you clear your head in the same way that reading does while keeping your mind more active.
  6. Writing gets new ideas out of your head and new ideas are stuck behind old ideas.

On to the bigger benefits:

Writing helps you learn to create

In writing you create something from nothing.  Most of us don’t think that we can draw or sing or dance or freestyle rap but any literate person can write.  You don’t have to be fancy; you can write a story about anything to please yourself and create a thing. Creating changes you in many positive ways and writing is the most accessible of those ways.  One of my takeaways this year was how often I came up with something new while writing.

Writing helps you learn to focus

Writing is a very intensive focus-based activity.  You can switch over to a web browser while writing but the structure of words and sentences means you probably won’t do so in the middle of typing out the word “encyclopedia”.  In this way writing is a good way to bootstrap your focus muscles – letter by letter, word by word, sentence by sentence, paragraph by paragraph, chapter by chapter, book by book, obscenity by obscenity.

Resolve to write

Anyway, my unsolicited advice: write something this year.  No excuses.

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

Managing your Significant Other when working from home

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

When you start working from home you have to prepare those around you for the inevitable consequences of this new lifestyle. I’d recommend telling your neighbors, kids, pets, imaginary friend(s), team of personal therapists, and parole officer.

And of course the absolute most important person to prepare is your Significant Other (SO). A lot of people who try working from home give up after about a month and when you ask them why they say “I was driving my wife crazy so she threw a burrito at my face”. If you do not properly handle the work from home transition (aka “The Great Move Away From Pants) you will eventually have a burrito thrown at you – I just proved it with science.

When you start working from home your SO’s life is going to change in unexpected ways and they need to be prepared for this shift. The way you communicate, interact, and smell are all going to change in ways that they don’t expect.

Why? Because of mismatched expectations about the benefits to their lives.  The sad reality is that working from home does not offer many benefits to the significant other.  Maybe eventually you will look at them more and will be able to do cool things like eat lunch with them sometimes or do them small favors. But the reality is that telecommuting (i.e. riding your phone to work) has certain realities that lead to other not so pleasant realities for your SO:

Change for you Consequence for your spouse
You can achieve higher productivity because you don’t have to deal with others slowing you down You are less patient
Less physical interaction with others Your SO now lives with a slightly crazy person who thinks that eating cereal with eggnog instead of milk is totally normal
Cooler coffee breaks, low key lifestyle They slowly begin to become jealous of the fact that you get to listen to music/watch Oprah while working
No longer have to shave or get all dressed up They now live with a person who thinks track suits are a good look
Full-time access to Internet and kitchen Live with 120% more juvenile and fatter version of you
You are always around You are 140% more annoying

You can see these realities and mismatched expectations when you announce your transition:

Honey, I’m going to start working from home.

Your SO hears other things:

Sweetheart, I am now available to wait for packages and repairmen for you full-time.
Organic maple syrup, we can now talk on the phone for four hours a day divided up into separate conversations spaced 17 minutes apart even when I’m in the bathroom.
French Toast sticks you can eat on the go, We are going to save $400 a month that we used to spend on gas and soap so feel free to spend that guilt-free by yourself on something that upgrades our lifestyle permanently without chatting with me first.
Peanut Butter M+M Gift Basket, I have achieved more freedom in my life and you should let your jealousy boil slowly like in a rice cooker until it burns our intimacy like if you picked up a rice cooker and it was crazy hot so you dropped it on your head and wow that hurt.
Never-ending pancakes from IHOP, you know how when you call me at work you say I’m sort of a jerk and are different and sound stressed – you now live with that version of me!

The SO Management Plan

You need to make sure that your SO knows what working from home actually is and establish the below ground rules.

You wouldn’t like me when I’m working from home but will like what it makes me.

Tell your spouse / girlfriend / live-in monkey what working from home is – a risky challenge with a high payoff.  Working from home is stressful – you have to work much harder at staying in the loop, reading between the lines, networking, and focusing to get things done.  Managing the tension of working out of your home – where you used to just relax – is not easy. Let them know that focused/work version of you isn’t chill/at home version of you.

You working from home may offer no direct benefit to your SO but does offer massive benefits to both of you.

Working from home successfully is not easy and might not be all roses and free burritos for your spouse, but it does offer them some good overall relational benefits:

  • When you work from home you are more in control of your environment and schedule thus leading to an overall happier version of you
  • They no longer have to listen to you complain about co-workers (because cats are not co-workers)
  • You can, if managed properly, save an amazing amount of money
  • You can, if managed properly, have free time in the middle of the day to do other things (if you have a typical commute you can gain 10 hours a week to spend with your family, level up in your favorite video game, work on your novel, tweak your karaoke robot – whatever.  For those of your doing the math at home with an abacus: 10 hours is more than a typical workday that you gain.)

Separating work from home is a critical component of telecommuting success and is the only one they can help you with

Your SO can’t help you communicate effectively, stay organized, stay professional, and get more things done but they can help you separate working from non-working.  There are two common complaints that affect worker and SO: the SO complains that the worker continues working past normal work hours (since the office is right there) and the worker complains of being constantly interrupted by their SO during the day.  Both of these common failures are just cases of work and home not being separated aggressively.

How to separate work from home is a separate topic, but the attitude should be that during established work hours you simply aren’t there.  Any interruption should be run through the filter of “Would you have called me during work for this?”.  I have my SO text me just like she would have if I had been at work – don’t knock on the door.

I’d also suggest a month trial run in which you have very hard and fast rules about work hours, communication, and availability so that you set expectations firmly – i.e. as the worker don’t be helpful in the beginning.  The space this creates allows them to realize that after they leave you alone for a while you are able to establish yourself as a reliable telecommuter that you will be a more relaxed version of yourself.

Being left alone and in charge leads to super-productivity if you are intentional about it, and having more control means more freedom means more happiness, and will allow the sort of things that they desire.  When the Cheetos-dust clears most SOs when given the choice prefer a happy slightly crazy/stinky spouse to a clean miserable one.

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

How to convince your employer to let you telecommute (LIKE A BOSS)

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

You have decided to work from home. Telecommute.  Listen to the kind of music you want to – dance the way your body tells you. Shower less, love more.

La-di-freaking-da – you still need to convince your traditional in-office boss to let you do it.

What your boss fears

Your boss thinks that working from home is all Saturday-morning: pajamas, fruit loops, SpongeBob SquarePants, drinking, gambling, loose women, not working, cursing off the Boss (“BWAAAHH this bar gets Wi-fi look at me on IM right now guys!”). (ed note: Saturday mornings are pretty exciting for me)

He has heard horror stories of people working from home just doing enough to get by, not returning phone calls, working on other things, quitting, etc. He fears that:

  • Your performance will decrease
  • You will lose touch and work on the wrong things
  • You won’t be there to help others

Therefore he is afraid he will:

  • Look really stupid to everyone else for letting your try it
  • Have to let you go and find someone else

We just need to fix these concerns one-by-one in a detailed manner. You need to think through and deliver a proposal  – and then you need to be a badass and execute it.  He is most concerned with Performance and Communication.

Performance: prove that it will increase

You need to show that for you working offsite is more productive. Tell him why and then show him its true.

Send him studies and a summary of their conclusions to show that it can work

Studies say that:

  • People who work from home don’t change jobs as often
  • People who work from home have better morale (which leads to nice things like staying alive, being less stressed, and having more ideas)
  • People who work from home end up doing more actual work / work longer hours (emphasize whichever one your boss seems to care about more)

Finding evidence is easy:

Show him how much it works for you

  • Ask if you can hole up in a conference room for the afternoon, and then show him scary results.
  • Ask if you can work from the coffee shop/hotel across the street, and then show him scary monster results.
  • Ask if you can work from home one day and then show him scary monster-who-is-taller-than-average results.


There are two fears about communication – one specific fear is that you won’t be productive simply because you will be out of the loop and the other is that you will be a roadblock that holds up others.

Over-Communicating Status

For status the simplest method is to email what you are planning to do at the beginning of the day, and email at the end of the day with what you did. This also acts as a clock-in/clock-out mechanism for the more paranoid set.  Over-communicating is a good place to start – you probably aren’t offering twice-daily status updates in person now.

Offer to share your to-do list. When you work from home you will need more structure than you had before so you will most likely be documenting more anyway. Use one of the many tools (RTM, Workflowy, Toodledo) that offer sharing so that your boss can (but most likely won’t often) see that you are in fact adding and deleting items that he recognizes.

Be available

For team communication it is harder to stay in the loop.  You need some infrastructure in place: broadband internet, slower internet or a close Wi-fi backup, Skype, clear phone, etc. You will need to have your cellphone with you all the time when starting out and will need to act like you are in the office: if you need to run a 30 minute errand or have a doctor’s appointment tell someone.

Smell the tasty politics

For on-the-fly information and politics it gets much harder.  Since clearing communication roadblocks across the team might (absolutely should) be part of your boss’s job you are indirectly asking him to do more work by communicating differently with you so avoid any special cases that require him to do anything just for you.

Take the initiative on your own to identify how real information travels around the office and make sure you can show him what proactive steps you will take. e.g. “I’ll still be on the morning call and I’ll message Cathy around lunch to see if anything comes out of the Thursday interdepartmental fist fight that seems to always determine our priorities”.

Being in-office also helps – offer to do 3 work from home days and 2 non work from home days. If the days are typically the same (i.e. there is no big planning meeting) offer to still come in on Mondays and Fridays. This calms his SpongeBob nerves as an irrational fear of ninja three day weekends is common.  On the days you do come into the office you should turn into a total water-cooler guy and try to catch up with people to see if there is anything you need to know.

The most badass move out there

So you give him your plan – I’ll work Tuesday – Thursday from home from 7AM to 4PM, be available over IM, on Skype as needed, dial into the stand-up meeting, share my todo list, keep in touch with Cathy about politics, call you once a week if I haven’t seen you, etc.

Setup a timeframe of one month in which you will execute this plan. Tell him that at the end of it if he feels that you got less done you’ll give him the vacation days you would have earned over the period back.  If you are a contractor offer to not be paid for 2 of the 20 business day in play, or 10% of your billed time over the period.  Also – you should fully intend and be ready to make good on this.

The reason this works is that you are putting a stake in the ground and providing a mutually beneficial outcome for both parties.  The boss knows that he is still in charge but has an employee that is taking initiative and will get things done.  The added benefit to you is that it puts you in the right frame of mind – the absolute most important thing to understand about working from home is that it is all about execution.

(The second most important thing about working from home is never missing an episode of SpongeBob.)

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

How to deal with robots and get your poodle a job

How should you act when a recruiter calls you during personal relaxation time (i.e. grooming your pet poodle “Fluffikissh”)? What are the ground rules for interacting with robots? If the end goal of everyone is to have a good reputation and to earn a living what are some long term things we can do to get there?

You can interact with a recruiter in a bunch of ways:

  • Unsolicited email
  • Phone call
  • Prank Phone call
  • Awkward stare
  • Love Letter
  • LinkedIn message
  • Scheduled Social Interaction (i.e. poodle playdate)

Tech recruiters get a bad rap because a good deal of the initial communication is unsolicited and untargeted. (er, spam) I’ve gotten many emails about positions that I am not qualified for in any imaginable way – they might as well for jobs as a mime.

Fact: mimes have a difficult time getting referrals from others mimes over the phone.

It’s pretty simple really: be pleasant, professional, helpful, and don’t be a jerk.

Be professional: Don’t waste their time

If you are a Ruby on Rails hacker living in New York and you get an email from a recruiter casting a wide net looking for talented programmers for a position on Yourass, IL to work on YourElbow v2.0 (NOT 3.0 or 1.1) – just delete the email. Do not write back the recruiter and waste their time. Don’t get upset and bad-mouth them to your friends – they are either clueless and junior in their industry or they are desperate to find somebody with a rare skillset. Shame on you for using your email that you check every 15 minutes anywhere having to do with a job ever.

Side note: I once got an email looking for a “Pearl Architect”. There are 3 bugs in that statement (perl: NOT EVEN ONCE)

Be Pleasant: Don’t Assume

I have met a lot of developers that can’t stand recruiters recently. The bad-mouthing that goes on in places like Hacker News is pretty brutal. A developer on Hackers News complaining about recruiters is very close to a college graduate complaining of a person whose entire job is to help you find a job you like. Every time you waste 30 seconds on a recruiter think “this is a good problem to have”.  When you meet a new recruiter don’t start out the relationship by telling them about the time that one recruiter lied to you and broke your heart.

Be Helpful: Think Long Term

Recruiters do provide value and a good recruiter (like a good mechanic or a person who has never tried Skittles) is rare. So think of every interaction with a recruiter as you vetting out two recruiters that at some point in your career you will use to either get a job that you really like (“I always wanted a job where Fluffikissh could be my personal assistant”) or to help out a friend who is either breaking into the industry, has moved from a new place, or is simply looking for something specific.

Don’t be a Jerk

Now is a good time to be a developer. Our entire industry, especially the value-creating role of a developer of products, is a buyer’s market. Don’t let it go to your head. You are not that special. Don’t be a jerk to a recruiter – in the same way dishonest recruiters are eventually spit out of the industry – no matter how good a hacker you are the word gets around that the freak with the poodle is hard to work with. Stay classy.

A system for analyzing systems [Part 2]

This is the second part of an (awesomely epic) series on how to analyze a software system quickly, click here to view Part 1.

So now you (having the right attitude and documenting everything) have viewed the main nouns (data) and verbs (use cases, workflows).  What do you do next? Profit?

#3 Find integration points and environmental concerns

It is important to understand the system within its software ecosystem – find the system edges:

  • Make a list of the technologies used (again – avoid judgment)
  • Make a list of the integration points (other systems, off the shelf products, web service apis, manual steps in overall process)
  • Look at dll references, build files, web references, configuration files, database connection strings, etc.
  • Draw a simple sketch of the application within its context with others

#4 Read some code

This is normally where developers start – reading semi-colons.  But maintain some discipline:

  • Make a simple outline of the project structure and main namespaces and entry points. Input, processing, output.
  • Try to not go down every rabbit hole too quickly – add to your WTH list liberally and then circle back.
  • Guided by what you know already dive in based on what makes sense – read the billing module, the calculation piece, the ranking algorithm, or the integration with Facebook.
  • Document system conventions, code conventions, and architecture. The build order can be useful and painfully revealing here – on larger projects I break out ndepend to see the overall structure.

#5 Read some documentation

If the project has some artifacts now is a good time to read them. Most people will read them earlier in the process but since documentation is a record of what was the truth during a time in which the truth was still being figured out when people had time to do such things I’ve grown untrusting of it until I know what is what in the application. Project documents are fascinating in that they provide historical clues to design decisions, project status, pressure, and onetime events like data conversions and client meetings that affect the system in the future. Read up and take notes. Be aware that some pieces of documentation are position papers and do not represent the current reality.

#6 Talk to some people

Armed with nouns, verbs, and a basic understanding of the code go get your questions answered by someone on the project (if they will return your calls). A few tips for this process if a developer is handing off to you:

Realize that when a developer hands off they will do two things:

  • Blow off steam (I really didn’t want to do this but that freakshow client forced us to)
  • Play defense / apologize (I was under pressure so just hacked this up)

Let this happen, avoid judgment and be friendly and helpful.

#8 Identify the Win Condition

By this stage in the game you should know the “win condition” of the system – when it works how it provides value to a customer.  Examples would be:

  • “Allows users to find out about flight delays before other airlines, saving them time and allowing them an advantage against other travelers in a cancellation scenario” (FlightCaster)
  • “Provide an easy to use way to update online ads across multiple platforms based on your inventory” (Tentail)
  • “Allows users to find out about current events much faster, trade cat pictures, and waste half of their life” (Twitter)

#8 Wrapping up

So now you have your document with just Facts and Questions having hopefully whittled down your WTH list. Polish up your facts and add a summary statement and the application “win condition” to the top and you are done:

EasyTrack is a web-based accounting system used by small businesses that is built on ASP.NET Web forms with a SQL Server 2005 database. It integrates with Quickbooks, exports transactions as csv, and has a web service api for 3rd party integration. It syncs nightly with a client customization of an older version that uses the same database but has a non-web frontend. It works in Internet Explorer. Its niche is being an easy to use tracking system for a discrete set of common accounting tasks that are harder to do with larger systems.

A system for analyzing systems [Part 1]

We seek definition to understand the system so that we can discern
the rules so that we know what to do next so that we win.

— Michael Lopp, Being Geek: The Software Developer’s Career Handbook

How do you approach learning a new system that is dumped on your lap like a spilled plate of nachos? Let’s say somebody walks up to you and says:

Hey nerd- we need you to look at the EasyTrack system tomorrow – we have a buglist that we need you to churn through before the end of the week. Ralph was working on it but after his nervous breakdown he won’t return our calls.

As developers we are asked to jump into complex software systems all the time and a big part of our value is simply understanding systems (not just changing them or making new ones). This is a skill that we need to be intentional about. We need a system for learning systems. Here is mine.

First steps: Attitude

Avoid judgement of the people who have worked on the system, the client’s goals, the choice of typeface on the one page of system documentation, the developer’s skills and experience, the organization of the code, the choice of technology, the choice of coffee used during the project, the organization of the altar built to the stored procedure that does everything, et al.

You have no idea the in-the-womb conditions on the project and don’t know the real trade-offs that were in play. Like many negative emotions judgement will close you down and cloud your thought so keep a clear mind when reviewing a system. Starting with a good attitude will also help you in talking to people on the project later on.

First steps: Document

As you work through the steps document what you are finding. When I do this my goals are:

  • To make me feel like I’m doing something as just staring at a new system can be brutal.
  • To make a deliverable that I can publish at the end of the system analysis if needed.
  • To allow me to have a place to store questions that I can’t find out from just reading code.

On that last point – I normally have Facts, Questions, and WTH sections in the document that I use as I work through a system. Facts are things that I have learned definitively about the system, Questions are open questions that I have researched and can’t find an answer to without asking someone or gaining access to something else, and WTH are bogeys – items that I see that I don’t understand that I’m deferring until later.

An example – as I’m reviewing the database I see an oddly-named stored procedure: spSyncOrderNoTransactionWithRollback? Hmm… So we add this to the WTH list until we can go back and read through it, where it is called, etc.  So we might end up with:


  • In spSyncChangeOrderNoTransactionWithRollback – how can you have a rollback without a transaction – is this nested?

Which leads later to the following:

  • Some of the stored procedures exist in the database but aren’t used by the application and are part of an export / sync process.  They start with spSync*
  • Some, but not all, of the stored procedures use nested transactions with checkpoint.


  • What is the export/sync process called by job execSync4_Bak that runs every night and calls the spSync* sprocs? [No access across linked server to the tables it is writing to]

As I work through the system I’m simply turning WTHs into Facts or Questions. The temptation once you have a basic understanding of the system is to stop typing – don’t do this.

If you maintain the facts list and polish it up you’ll have a nice system overview document. The easiest time to document a system is when it doesn’t feel like you are having to write-up up a bunch of things you already know.  So by writing while learning the system you can trick yourself into producing nice documentation that is much easier to keep updated later.

#1 Start with the data, don’t start anywhere else

I didn’t say start with the project plan, system documentation, email threads, interviews, test plans, or insulting notes about the system on the bathroom wall. The live data is the only thing that you can be sure is actually real in the beginning.

Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won’t usually need your flowcharts; they’ll be obvious.

— Fred Brooks, The Mythical Man-Month: Essays on Software Engineering

I’ve found this quote to be true – your code follows your data and you will get further faster if you understand the basic nouns in the application first. Seeing an Order table with a StatusId field gets you along the road faster than trying to read a 2,000 line method:

void placeOrder(int? productId, int priceStructureId, decimal price, int priceSigDigits, int userKey, string userNameInternational, bool isA, object? requiredBlob, out long intRetVal1, out long intRetVal3, out bool multi)

So go ahead:

  • Create database diagrams to identify relationships
  • Begin drinking if there are no enforced relationships
  • Look at table sizes to identify transactional vs. configuration tables
  • Look at meta and programmable database constructs – sprocs, functions, jobs, indexes, linked servers, etc.
  • Begin thinking through the possible workflows – an Order table with OrderDetail which points to Product and PriceStructure implies that in the application someone is purchasing something and that prices vary.

#2 Use the application

If at all possible get a login to the application to view it as a customer does. You can’t always do this safely but you should try. Developers are always saying that the UI is the tip of the iceberg and that all the logic is in the back-end, but knowing the data model and having poked around the application will teach you the vocabulary of the system very quickly.

  • What are the main uses cases [verbs] in the application?
  • What nouns/entities that we saw in the data model are actually shown to the user?
  • Is there data shown to the user that wasn’t in the data model? [hint for the next step]
  • What doesn’t appear to be working or isn’t intuitive? Enjoy this perspective as once you learn the rest of the system you’ll lose it forever.

Tune in for the exciting – no electrifying – conclusion to how to analyze a system for fun and profit.

The Three Laws of Robotics (for tech recruiters)

The tech market is so hot right now that if you are a developer and can tell the difference between O(n) and your own butthole you might be getting calls from aggressive recruiters. Recently I’ve had two recruiters that I’ve never met contact friends saying that I had recommended them for a position and I’ve heard stories of continued home phone calls, at-work phone calls, and all sorts of odd LinkedIn abuse.

I’ve heard many people say that recruiters don’t have much value, but I strongly disagree – we just need some agreed-upon moral boundaries. Let’s use Asimov’s Three Laws of Robotics [If you haven’t heard of these I’ll just hold on to your geek card while you go read that…]:

Law 1: A recruiter may not injure a human being or, through inaction, allow a human being to come to harm.

Harm means:

  • wasting my time
  • affecting my reputation
  • affecting my friend’s reputation

A recruiter shouldn’t hurt me, they should only help me and themselves in that order. Long-term it can work out for both of us; don’t affect my reputation negatively and I won’t affect yours either.  Some more specific ways they can harm me:

  • Submitting my resume to anybody without talking to me
  • Saying that you know me when you don’t
  • Talking to a 3rd party about me without us knowing each other
  • Being dishonest about the positions that you have in order to have a conversation with me

Law 2: A recruiter must obey the orders given to it by human beings, except where such orders would conflict with the First Law.

If I say I am not available at this time, don’t want you to do anything on my behalf, or would like you to stop calling me and crying into the phone – I mean all these things [But if I’m honest the crying does help me sleep].

Law 3: A recruiter must protect its own existence as long as such protection does not conflict with the First or Second Laws.

Of course there is a place in this world for recruiters and they should be allowed to make a living.  There is a lot of tech-recruiter-bashing but they are valuable for a hiring manager in that:

  • they can maintain a healthy pipeline of competent people [still up to you to find the people out of this pipeline]
  • they can filter people by personality [still up to you to detect people you don’t like]
  • they at times have a very good sense of the competency of tech managers (as they see loyalty from movement)
  • they can tell you who *won’t* work [they will filter out some incompetent people and some jerks]

They are also valuable for people looking to get hired:

  • they can tell you a good deal about the internals of particular companies
  • they can provide serendipitous events like connecting you with people that you end up working with later
  • they can help you get back out there after staying with one company for an extended time by giving you a feel for the market

We can even apply the later-added-4th law to recruiters:

Law 4: A recruiter must establish its identity as a recruiter in all cases.

Recruiters go to user meetings, tech conferences, social meetups, etc. I’m not sure if recruiters have gang signs (throw up a P for placement) but you should identify yourself as a recruiter to everyone other than the tollbooth operator that you talk to while you are working.

Following these laws will go far in re-establishing the reputation of recruiters within the technology industry.  Also: free pie mailed to my house.  Contact me for more details.

Proper reentry for developers

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

If you are a developer or anyone else that does high-concentration work (writer, artist, maker or orange juice) you have to reenter the world at some point after your workday is done. Those of us with families can probably all think back on a time when we were writing software like mad only to see that it was 6:30 and thus time to check-in, logout, and go play with our kids. Only for the first 30 minutes to an hour we weren’t engaged with our kids and we were impatient with our wives.

In fact I’ve met those that appear to treat the people in their lives like computers – demanding fast responses and barking instructions at them while getting annoyed at how unreliable they are. After hours of doing development work you need to make sure you separate effective methods at work and at home.

Why are we jerks? Aren’t we working to support our families? Wouldn’t we rather hang out with them all day rather than sling electrons to the highest bidder? Well I’ve had trouble with this and I think it’s because the pace of both activities are just so different you have to be intentional about ‘reentry’.


Writing software means that you are in almost complete control of what is going on – your computer hums and obeys, you listen to whatever you want, you look at whatever you want. Your software if it has bugs are your bugs so you can’t yell at anybody but the cat (side note: recommended). In short you are in charge.

In addition you can control how much you have going on, and most of us choose to dive deep into the waters of NADD and have caffeine, music, and multiple threads running while we work. If you were to watch a video of me working you would think my job was to load test Windows 7. This is a high stimulus environment and its fun and addictive. You feel powerful and respected.

Enter family: you do not control what is going on. Your music is suddenly different. You do not feel in control and can’t Alt-Tab away from a slow-loading page. If your two-year old wants to start off a conversation by saying “Daddy daddy daddy today we today we daddy daddy today at school we daddy daddy today we went daddy oh then she said that the doggie…” then you should act like a normal human being and listen.

So, my tips for proper reentry.

Enter the vacumm chamber

Twenty minutes before you get home unplug as much as you can. If you drive home don’t check your email once you walk out the door and try to listen to different music (or ideally none at all or talk radio) to separate. If you work at home close up everything like you are about to stand up but don’t walk into the rest of your home until you take a few minutes and do something physical – sit-ups, pushups, Christopher Walken-impression, hiding under your desk, etc.

Begin reentry

When you get home greet everyone and go change clothes. This signals to everyone that Mr. Rogers is awesome and his legacy lives on forever and that you are switching from one thing to another. If you work from home I’d say change something even though you are probably wearing the most comfortable thing you have on (i.e. your moo-moo). I normally either put on or take off my cape (depending on what happened during the day).

Turn off your phone; like hit the button. During the day you are probably checking your email all the time and if you are like me you use your phone for this. Guess what – you aren’t working! So don’t check it. If you must go put it somewhere that you can hear it if someone calls but not close enough to see a little light blinking telling you that you got something that doesn’t matter such as a new Twitter reply or a virus. Unless your job description involves the phrase “nuclear launch codes” or “creator of Chipotle restaurants” let’s face it – your job isn’t that important and you should enjoy your rest.

Get some perspective

On the days when you can’t get this right: you have too much to do, the kids are crazy, the significant other is crazy, everything is chaos in both parts of your life you need to gain some perspective to snap yourself back to reality. I have a few, but here is one: there are many immigrants in this country who work more hours than you, for less money, doing harder work, in a foreign land, for the sole purpose of sending money to their families who they rarely get to see.

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

How to work from home without going insane (purple monkey dishwasher)

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

So you’ve decided to work from home. As a rookie-veteran of working without a traditional office for one year I’m here to tell you that it is the greatest and worst thing that can happen to your work life – much like being transferred to a glitter-packing facility. What follows is a quick two minute guide of what you need to know before you take your pants off and turn up those old Hootie and the Blowfish albums.


Working from home completely changes your interrupt cycle. At a typical desk job you are interrupted constantly due to meetings, cake feasts, fire drills, people coming over to tell you about what the lake was like on Saturday, daydreaming about tripping said individuals, etc.

When you work at a location of your choice you can control what distracts you. If you want to work for 4 hours and not use the bathroom you can do it; if you want to work with 2 lbs of nachos taped to your face like a beard while wearing a sombrero filled with nacho cheese for snacking you can do this. Most people think they will be far more productive due to being able to control large blocks of time, but I found that the experience was quite jarring.

What you will realize is that outside of your normal distractions your body has learned to not focus for very long on anything. In my case after years of working in an environment where I was constantly interrupted I couldn’t focus on anything for more than 20-30 minutes (about the longest free period I had on average). I would internally interrupt myself constantly: twitter, facebook, doodling, trying to clean nachos that fell onto the keyboard from my nacho beard, calling the manufacturer of said keyboard after the ‘s’ key stopped working, writing a strongly-worded letter calling the manufacturer a bunch of “lazy jackae”, picketing outside their headquarters, etc. Typical stuff.

When you work in an office you don’t allow yourself to constantly be interrupted internally – you simply can’t watch every video that looks funny, you can’t read each article on The Morning News everyday, you can’t keep up with Hacker News like you think karma points are worth money.

The way to get over this is pretty simple – practice. I for one spent about a month making love to The Pomodoro Technique (meta: learning to make love using this technique is experimental and not recommended by most doctors) but it worked quite well for me in training my brain to recognize interruption events and stop them. Now I can go over an hour without eating a nacho.


When you have a ‘bad’ day at a normal job you still feel a sense of accomplishment – you drove to work, you drank some coffee, you attended a few meetings, you chatted with some co-workers about how little progress you were making – you did some concrete tasks.

Working from home alone you have days that you feel like you get *nothing* done. As soon as you get going you are interrupted, you spend a few hours working on something that you later scrap and start over, you can’t figure something out. These days happen in an office but when you are alone with them they create extreme emotions. The thing you need to remember is that one day like this can be followed by a sugar-rush Work-From-Home monster day: a day in which you get as much done in a day as you remember getting done in a week at BigCorp. An entire feature imagined, mocked up, coded, then just plain mocked, debugged, re-tooled, polished, stabilized, and then shipped.

Crippling Depression – ride it like a wave

If you work at home for long enough away from other real people you will be surprised how much you will miss the interaction. The annoying “did you see the game?” water cooler talk and “OMG Its Friday!!” chit-chat that used to make you want to hide in a conference room is actually a pretty effective social convention to avoid The Question: “Why am I working right now when I could be doing XYZ?”.

While working you will have many moments when you will think things like:

  • I work from home now, I could go take a walk – right now!
  • I work from home now, I could go eat some yogurt – right now!
  • I work from home now, I could ride a bike – right now!
  • I work from home now, I could watch The Wire – right now!

In the spring these thoughts are tough and you will stare out the window and cry a single slowly descending tear before turning back to your semi-colon delimited job and push through. In a normal office you don’t think about the difference between working and playing hooky because the threat of getting fired for playing Grand Theft Auto III at your desk is very real.

In addition you will need to take steps to keep in touch with others in your field less you become a Work-From-Home monster like many that I have met. Signs you are becoming cripplingly depressed without realizing it from working from home:

  • You see a former co-worker and talk for 20 more minutes than would be normal. Even after they have gotten up and left the stall you continue.
  • You are way too active on twitter, facebook, g+, etc. and constantly send videos to your friends like you work at Tosh.0.
  • You watch TV instead of listening to music and you talk back to the characters.  You think you hear Ferb talk back to you.
  • You drink Diet Pepsi just to let the pain make sure you can still feel something.

If any of these things happen put some pants on and go to a coffeeshop.

The greatest thing about working from home is your kids. They are also the worst thing.

This might be a personal problem as:

  • I work on the same floor of the house as my kids typically play.
  • My wife currently stays at home with the kids.
  • Before I worked from home I never listened to music while working (due to a deep-seated and irrational fear of being caught singing out loud a Jon Secada song)

I was very stressed with the noise of my kids and the general stress that kids cause when you do concentration-based work. I felt like a bad Dad because I would have to tell them 8 times that I wasn’t “done yet” but was just coming out to go to the bathroom, refill nachos, etc.

Once I realized that working at home meant more time with my kids I just mentally substituted the time spent in the car with time on the floor with them, and my stress melted away awkwardly like reheated queso.

Less informal communication means more organization

I’m an organic and an improviser. I’m not naturally organized. But working from home in the absence of informal methods of communication means that you need to have prepared the following:

  • a to-do list that you can share (workflowy, RTM, etc.) in less than one minute
  • a general daily plan that you can recite at beginning, middle, end of day.
  • a weekly plan of what you want to get done and what you did last week
  • a plan for when you will meet with the client, boss, parole officer next

Enjoy it

I know that at some point my work from home life will be put on hold or go away. And I decided when I started that I wanted to do a good job and to enjoy it enough that when I looked back I wouldn’t say that I regretted much. To remind myself of this I wrote “San Diego means a whale’s vagina” on my whiteboard (since this kinda isn’t the sort of thing you can do in a normal office).

So go – enjoy it. And please just go take a shower.

I’m writing a book about successfully working from home; click here if you want to know when it is complete.

Great discussion, as always, on Hacker News.

Republished on Lifehacker.