Boldify
Time better spent

Value of (office)space

September 29th, 2008 . by Michael

Our Orange Couch

Recently the crew just moved into a small office in Campbell. This is a pretty huge milestone for us, as the old patterns of getting up early and going to work fall back into place (after working at home for about 3 months). It made me start to think about how spaces affect the way I work, relax, or play.

A while ago, one lesson I picked up somewhere talked about how you shouldn’t put TV’s in your bedroom. Many nights I would lie in bed watching some show and just fall asleep, or want to get ready for bed and finish a movie there. I tried moving the TV out of the bedroom, and was suprised to find that it didn’t take me long to get used to it. In fact, I began to notice some benefits. I slept better, was inclined to read more, and focused more on my girlfriend (at the time). Ignoring the obvious direction of that last statement, I’ll say that my quality of life improved in ways that far outweighed the pain of going to the living room to watch TV.

So this started the ball rolling on something I’ve been striving more towards. Simplicity. One part of that is to reduce what you have. Reduce the purpose of a space to a primary function. That space, then, serves to put your mind into the mode that it’s designed for. It’s another reason why I don’t believe in home gyms. When I’m at home, I don’t think of working out. I actually find the motivation is less there. However, if I get my stuff together and go to a gym, as hard as that is sometimes, I’ve been far more likely to work out completely and for a lot longer of a time, than I would with other distractions.

The office serves that same value. It’s why, I think, so many people have a hard time working at home (well one of them). Not only the distractions, but the inability for the brain to switch modes. We are visual creatures of habit. A change in space or environment affect our approach to it. The impact on the team in general is huge. The energy level has improved tremendously. Of course some of that might have to do with the orange couch!


The art of hiring developers

August 10th, 2008 . by Michael

By no means will I say I’m an expert at doing interviews.  I’ve certainly screwed up my fair share (both giving and receiving).  However, through all of those mistakes, I’ve learned a few core principles that have helped me with selecting qualified people.

1.  Go with your instincts

This is number one, for what should be obvious reasons.  Most of the time your first impressions of a candidate are fairly accurate, insofar as how they will approach  the job, interact with other developers, and generally contribute to the workplace.  I left out engineering skill in the previous list as I think that may not necessarily be as clear really quickly.  A lot of a candidates technical performance during an interview depends on the interviewer, but more on that in a minute.

Certain qualities of a candidate reveal themselves almost immediately.  Things like how they are dressed, how they handle the pressure of the situation (and whether they feel any or not), and whether they are a developer for the love of developing, or just kind of “fell into it”.  I think you can probably guess what I find to be the better candidate.  Dress reflects the persons opinion of what is acceptable at a work place.  At the very least, they should be showered and wearing clean clothes.  Does it mean they are not a good developer if they don’t?  No, they could be brilliant…. and require a cube in the basement (without the red stapler).  I also have found that candidates that are not at least somewhat nervous, tend to not care about doing a good job.  This is a small generalization, but those who are a bit nervous want the job more, they’ll work harder (because they appreciate the opportunity), and they will tend to grow faster because they don’t assume they know everything (which is why they are nervous).  This dove-tails nicely into the motivation behind being a developer.  The best developers I know are those who are so passionate about the web that they would be building their own apps at home if they had a different job.  They tend to be early adopters of stuff and know what “lolcatz” are… (next thing to ask is whether they find them funny or irritating, or the hidden third option of claiming they thought of it first).

2.  Ask useful questions

Sometimes during a technical interview it is easy to fall into the trap of wanting to ask  screw-you-over-because-I’m-smarter-than-you questions.  I won’t lie, I’ve done it before.  You might as well just thank the person for coming in, give him a wedgie, and push him out the door…because at that point the interview is over.  Even if they do well, your need to insure they are lower on the pecking order than you already shows your inability to work with other people (and probably relates to your pent up rage at the jocks from high school, college, possibly even preschool).

Often the need to ask those kinds of questions is disguised as a belief that you are probing them to find out the depths of their knowledge.  It’s not.  If you want to probe their knowledge, start with bite-sized questions that gradually get harder, and build on a scenario.  Get them talking, not sweating, you’ll learn more about how they approach problems (the really valuable part of the interview), and you can more easily simulate a team approach (which is what it’d be like anyway… unless you regularly tell your coworkers, “oh you don’t know that?  well, thank you for coming in. Have a good afternoon.”)

3.  Ask technical questions with multiple possible solutions

More often than not, I see on many companies’  sites in the job sections, fun brain-teasers.  Microsoft is famous for this (the man-hole cover question… the term “man-hole” should really be changed).  I find many of these puzzles fun, but not very helpful in determining qualifications.  Often the puzzles entail some kind of trick or specific approach to get the right answer.  People argue that watching how someone approaches these problems reveal how they will develop software.  I don’t think so.  I think they tend to cause more stress, because the questions are out of the scope of what they are normally asked to think about.  On a daily basis the developer is going to spelunking into other peoples’ code, designing classes, creating db schema’s, and so on… they aren’t going to be asked to apply their mental framework for graph theory to determine the shortest path between here and Tokyo, given the westerly winds, and recent global temperature vectors.  Seriously, ask relevant questions.

Ok, so now I’m off my soap box on what not to ask… here is what you should ask.  Solvable, bite-sized, problems with many possible answers (some of which you do know).  Here are some examples:

  • Take the string “I can has Cheezburger?” and reverse it (except punctuation) to say: “Cheezburger has can I?” (use any language. Try without built in functions like string tokenizers, etc.)
  • Write a regular expression to parse 3 common phone number formats. (Assuming US phone number)
  • Implement a basic session storage component.

Each of those questions has a world of possible follow-up questions which can add to the difficulty.  The key thing is to not spew your wad up front.  Don’t give them a stumper questions right away, start them into the problem with something they can wrap their minds around.  Then add to it.  This will yield a positive response, create at atmosphere of solid thinking, and really test their ability to contribute to the team.

4.  Don’t be a jerk

I covered some of this earlier, but I wanted to focus on this specific point.  You don’t encourage quality people to join your team by being a jackass. Your goal should be to interact with them on somewhat of the level of a coworker (or boss).  You are trying to get a sampling of what they would be like to work with.  So friendly conversation is fine.  Joking (appropriately) is fine.  Remember, besides relying on them for their work, you will be exposed to them for large portions of your forseeable life.  Personalities matter, including yours.  If they don’t know an answer, move on.  Don’t make the jackass comments like “oh, really? wow… um ok…”.  They may still be a good candidate.  They may have panicked, despite knowing the answer because their mind was still on the last problem, etc.  Everyone (yes, even you) couldn’t recall something when put under pressure.

5.  Let them shine

People like to talk about themselves, and this is often very revealing.  Ask the candidate to talk about their experience, what excites them, etc.  This will give you lots of chances to ask insightful stuff like, “so what did you do after you burned down the building?”.  Seriously, though, it will allow you to probe them on the “fuzzy stuff” like how they like to work, what environments suit them the best, etc.  Since you’ve been working for a while at your current location, this information can help you determine whether the environment at your workplace is close to the one that cause them to set fire to the building, or not.

Conclusion

You will hire crappy people if you don’t follow at least those 5 steps I’ve listed.  You can add to the list, but if you subtract, you will regret it.  Why?  Because I’ve seen it happen.  Many times.  The worst thing in the world is to work with, work for, or have working for you, someone who is unqualified (but really cool, so you feel bad when their enlarged-foreheaded ass can’t figure out how to normalize the damn db).  Almost as bad is to work with the know-it-all jackass who delights in pointing out that increments should be done as a ++i rather than an i++ as it translates to a slightly more efficient block of code when compiled (as they smack you with their mental salami-like-dong in front of the hot coworker that doesn’t know you have a girl-friend).

Valuable experiences to avoid my friends.


Keys to success… or at least motivation

May 28th, 2008 . by Michael

I had some beers with a good friend of mine tonight and something he said really stuck with me, and I thought I’d relate them on the blog. He said that Success is someone who can fail a hundred times and still stay motivated

I thought about that for a while…. what keeps you motivated after so many failures? How do you keep the energy up? My wife mentioned passion, and I think that has a lot to do with it, but I’d like to give a list (everyone likes lists!) of some key pieces to what I believe can bring you back after you start to slump from a weekend of passionate coding, or whatever it is that you do:

1) Music

You’ve got to find the right music that picks you back up and pushes you to keep dreaming big and engages you again. You have your songs… I’m stuck on 80’s ( eye of the tiger ) and 90’s ( ska and early punk like The Offspring do it for me ) that keep you going and burning through the tedious mundane work.

2) Posters / fake checks / pictures of awesome stuff

I’m a visual guy, things that I see on a daily basis work well for reminding me of why I’m constantly pushing myself through the sludge of things like “forgot password” pages and tedious “does it work in IE 6?” crap that bring you down. It’s so easy to just set stuff aside for a bit because you’ve got other stuff you need to get done, or you just need a break, and then you never get back to your original goal or dream. Make those visual reminders. Quick side story: Jim Carrey used to walk around with a $10 million check in his wallet in the early days to motivate himself.

3) Friends and Family

If you’ve got people that expect something from you. Whether it be a certain way that you act, or something that you’ve been telling them you are going to do, they will ask you about it from time to time. Those little guilt trips that you get when you have to say… ah, no, I haven’t gotten further on that, will help push you. People who care about you, or think your idea is good will inspire you to get passed the tedious beginnings of your half-baked idea.

4) Movies

Watch Rambo, Gladiator, Chariots of Fire, Top Gun. Whatever it takes. Whatever gets you pumped and living vicariously through Hollywood fluff to be something, or get somewhere you aren’t yet. These things will impact you in ways you can’t believe until you watch them again. I know you’ve seen them, that’s why watching them again will bring you out of your slump, because right after you go “hell yeah, I can do that, I can do anything!” That’s an emotion you need, the movies do help you with that.

5) Other Success Stories

You always can learn a lot from others. Everyone knows this. But when you find out that someone has done something in your exact position (or even in worse conditions) it helps to reenergize that piece in you you had at the beginning. The truth is, everyone started small, just like you. All great things have been accomplished through even greater effort. You already know this, but reminding yourself from time to time can help.

6) Focus on Failure

Think about what quitting actually means. Feel inside what it is to actually stop what you are doing and give up. Does that make you better? Does that make you happier? Be ruthless. You’ve already thought about success, and dreamed about the big house. Now dream about never having it. Imagine never being a source of inspiration or passion in others. What you do affects so many people, both good and bad. If you can be a beacon, a cover story, a legend in the legacy of your family… what is that worth? The time you have now, reading this blog, you could be doing that which would make your life more meaningful, more historic. More of who you wish yourself to be.

7) For your dreams

When you think about quitting, you think about how you feel now. You’ve got a lot of reasons to stop. But none of those reasons will matter tomorrow, or the day after. In fact, that piece of pie, or that extra TV show, or that other relaxing thing you’ve needed, wanted, and deserved, is going to be something of the past tomorrow. Of course you should take breaks, but so long as at the start of the break you know it’s a break. Because once it’s done the point of a break is to reinvigorate your bones to begin working again. It’s not the start of an end. Don’t forget what you’ve promised yourself. Don’t forget your dream. More than you owing yourself time to relax, you owe yourself the dream. That’s going to take work. We aren’t in kindergarten anymore. Just because you deserve something, doesn’t mean you get it. Breaks work the same way. Don’t let the dream die.

All I can say at this point is that I hope some of those thoughts have inspired you a bit to keep going. I have found all of them, and sometimes a combination of them, have helped me push past the barrier between initial passion, and real success. Getting from Alpha to Beta is easy, getting from Beta to Omega is work. You will need to find something that pushes you beyond the fun part at the beginning.

Any thoughts?


Why I left a place of free coffee, lots of smart people, a good salary, and great benefits….

May 23rd, 2008 . by Michael

You can’t know what you are capable of until you place yourself in a position where you are required to show it.

I’ve discovered this one adage to be true. I’ve complained for years about what others should do, what my former company was capable of doing… hell I even tried to build prototypes to encourage a new direction. At some point, though, I had to be willing to either do something, or stop bitching. Sounds easy enough to say, even to start planning. So why do so few people really do it? Because of the title of this blog… free coffee, smart people, yadda yadda yadda

Seriously though, you have to ask yourself… can you *really* do what you are saying? how sure are you? Would you bet your job on it? Would you bet your house on it? What about your marriage?

The reality of going to a brand new start up (and I mean one in the round A funding, not that cushy new SF building with 100 people and 200 egos), is that you are going to face bigger, harder, more potentially disastrous challenges than you have ever faced. As an engineer, you aren’t going to have an IT department to bitch about. Marketing will really *have* to understand the product. And so on.

So now, you have to ask yourself… can you *REALLY* do it?

Hopefully that was a mighty “HELL YES!” bursting forth. Otherwise, keep your job.

I say these things because, more than I expected, I was given a thumbs up when I left my last job. People had a glint of envy and wishful thoughts in their eyes. I was exceptionally fortunate to have worked with some of the finest people in the industry, yet I still think there was a great degree of misunderstanding.

So… what?

Ok, enough of the discouraging talk about going to a start up… that’s actually not my intention for the blog. I just wanted to bring the heads out of the clouds about what going at it on your own (or virtually on your own) really means.

Here is what my daily life has become, work work work work, drink, work, fix, work, sleep. Truth is though… it’s awesome. I love doing this stuff because you do get to dictate every feature, every concept, every piece of the product. You have a good idea? Well do it! No one to reap the glory but you.

So back to my opening adage… I am absolutely serious about this. Life has very few moments where you can take control of it and risk a lot to really see what you can do. I believe that everyone reading this truly doesn’t think of themselves as insignificant. We are all the main actors in our own movie. We all want our lives, our ideas, our moments of pure (self-recognized) genius to mean something. You do need to find some outlet for that. If your job, or your family, affords you that outlet that may be sufficient. But if your dreams are bigger, you need to set that internal thermostat of happiness a bit higher, and push yourself. Mostly because no one else will so kindly motivate you as you do yourself.

Someone once said to me, if you look back on your life, and you don’t accomplish this one thing (whatever it may be), how would you feel. Of course you’d feel bad, but how bad? Ok, now remember that feeling. Write it down, talk about it, think about it, most importantly feeeeeel it. Just like your stomach hurts when you don’t eat, that feeling is your soul telling you it’s hungry. It needs this accomplishment to be fulfilled. If you don’t listen, you will know something far worse years later… regret.

About this Blog:

The goal of this writing is to share thoughts, inspiration, sweet code, and other magical berries of wisdom that may come out of this life as the sole engineer in a three musketeers company.

Hopefully some of what I say is valuable, and possibly even entertaining, and most of all: inspiring. I do believe we all are capable of far more than what we give ourselves the chance to be. We have a lot of alternatives to releasing that inner tiger that tend to satiate our real desire to be something spectacular. I hope to boldify a few to take a chance.