Software, Team and Strategy

Mike Borozdin - Kubernetes @ Google. Previously: Dir of Eng @ DocuSign, Lead @ Microsoft. I help companies focus and engineers grow.

Friday, November 25, 2011

So you got a couple of job offers, how do you negotiate from here?


I just interviewed a solid QA candidate.  She seemed qualified for a job and had the right experience.  It was no secret that she was interviewing in multiple places and got several offers because she deserved it.

We started putting together an offer on the upper end of where we felt that she would land.  The other company being a less exciting startup came in with an offer that was greater than ours because, frankly, they had to.

That is the awkward situation where the candidate has to call someone back and say: “I am getting a better package from another company, what can you do on your end?” The moment is awkward because we, engineers, generally are not used to going back and forth.  We have an answer and some data to back it up, the negotiation game makes everyone uncomfortable.

What happened next?  Next, we matched the offer.
Later on we got another call: the other company is beating this offer by $8,500.  The candidate said that she thought that we were a more exciting company to work for, but the eight grand made it a difficult choice.

At that point I made a decision that we are not going to enter a bidding war and said that the more interesting job was there for her, but the numbers are going to stay the same.  Internally we actually became a little indifferent to her accepting the offer and already started scheduling interviews with the other eight candidates we had in our pipeline.

Why did that happen? How can you handle it better in your own job search?  Number one thing to do is to understand what happens on the other end of the table.

After interviewing multiple people the hiring manager generally has one or two best candidates to move forward with.  While interviewing can happen in parallel with multiple folks, once you start the job offer you are operating serially.  You can’t have two outstanding job offers and have both of them accepted.

The hiring manager goes to HR and they get an approval to put together a package.  If the package exceeds the budget for a particular position you generally need to get an executive approval for expanded budget.  Exec approval takes time and follow-up.  If you need to do it several times over several things happen: first - you are going back for more money constantly, second – you start wondering if you are being taken advantage of.  Lastly you start wondering if you are getting a technology enthusiast or a professional negotiator.

I understand and fully support people getting what they deserve.  So what’s the best way to handle multiple offers?  My advice is to say this: “Hi, I want to let you know that I am getting multiple job offers.  I don’t want to go through several rounds of negotiations – you probably don’t either.  In the interest of making this easy on everyone could you please put together your highest and final offer? I am asking other companies to do the same.  By the way, the general range for a person with my experience and knowledge is: X to Y.”

This makes the exercise a blind auction, which is a better overall experience for people involved.

If you have a better strategy, let me know – feedback is welcome on twitter @mikebz and elsewhere.

Thursday, November 17, 2011

CSS design guidelines for offshore outsourcers


My struggle with outsourcing of design continues.  A couple of weeks ago I told all of you guys about the issues I was having with getting offshore designers.  Some of you told me that I should cut my losses and just find someone in San Francisco who can meet with me and bang out a design in a day.  I figured that I am going to keep working through it because I already had too much vested interest with these fellas. On top of it I am also using Elance Escrow so I already have a deposit that I can’t easily get back.

These guys finally came up with an acceptable design and now it’s time to actually slice it and put it into CSS.  I can already tell that it’s probably going to be amateur and crappy so I figured I’m going to save a few round trips by writing up some guidelines.


I am not a full time web designer, however I’ve been managing engineering teams for close to ten years now so I think that general engineering principles and some basic SEO understanding can be helpful.

Here are the rules I came up with and found on the web:

1) All the text besides the logos should be in text - no text via images.
2) No styles in the HTML files - all styles should be in CSS.  Search for font, color, and alignment; make sure there is nothing like that anywhere besides CSS.  If there is a need leave a comment behind for why that was necessary.  Having those elements without a good reason will result in your work getting rejected.
3) All the logical elements should be together - font information together, height width together within the individual style instructions.
4) Add comments to sections explaining the logical grouping
5) All the values should align for readability using tabs.  For example

.smallBox {
height: 100px;
width: 200px;
background: white;


font-family: tahoma;
font-size: large;
}


6) Do not use tables - just DIVs.  If you had to use a table leave a comment for why it was necessary.
7) Most if not all of the DIVs should have corresponding classes.  If you can't think of a class for the div, then you probably shouldn't have a div for it.
8) Combine elements if they are totally duplicate styles for example:

h2, h3 {
color: blue;
}

9) Test CSS instructions on IE 8+, FireFox 3.5+ , Chrome and Safari 4+, style and XHTML validators.


Of course I tried to leverage as many things on the web as I could.  A lot of these rules are borrowed from the following sources:
http://woork.blogspot.com/2008/11/useful-guidelines-to-improve-css-coding.html
http://wiki.songbirdnest.com/Developer/Articles/Style_Manual/CSS_Guidelines
http://groups.drupal.org/node/6355
http://ngocthuytran.wordpress.com/2011/04/05/30-css-best-practices-for-beginners/

Did I miss anything?  Feedback is welcome.  Post comments here or find me on twitter @mikebz

Saturday, November 12, 2011

Why do so many technical recruiters suck?


It’s Tuesday, I get a call from an unknown number.  There is a little hesitation, but I finally pick it up.  My number is listed on my business card and I feel like I should get these calls unless I am in a meeting.

- Hi, is this Mike?
- Yes, speaking….
- Hi Mike!  How are you today?
- Fine…
- I am calling from XYZ Co, and we deal with recruiting and staff augmentation.  I was wondering if you are looking for software developers.

We are in San Francisco and it’s late 2011.  Every tech company is looking for developers.  If they were not looking… just wait till one of their devs gets recruited away. Now guess what?  You are looking!

Yes, I am on the market for some developers and this guy bought himself a few minutes…

- Have you looked at the website?
- Honestly I have not had a chance to yet, but I have a couple of Ruby candidates that are really good.

Hmm…. so you don’t know what we are looking for. You didn’t care to open up our website and look at the career page, and I have a feeling that it doesn’t even matter what we want.  You have a couple of people you are trying to pitch to every company you can.

- I can’t really source candidates from agencies that are not on the vendor list.  You have to go to HR first.
- Okay…  in that case why don’t we have coffee or lunch next week?

I am thinking – does this guy not want to hear me? I am detecting a pattern: not only he doesn’t want to listen, he actually doesn’t care to consume any information at all.

I know that type! He probably refers to himself as a “people person”.  On Friday in the Marina when drinking with his buddies he probably talks about people he barely knows using their first name only. I bet he claims to have known people from LinkedIn for a long time and reiterates the values of connections.

This is why on a very basic level we can’t work together: I am at my core an engineer and a scientist.  He is at his core a connector.  I want facts, due diligence and real value.  He thinks that as long as he is nice and interesting we can do business.  One of us is going to have to adjust and since he will, eventually, want $15,000 - $20,000 for his services - it ain’t going to be me.

I do value having an agent out there who can source and screen candidates, but somehow this industry has fallen to some amazing lows.  People who don’t know what they are looking for, what they are looking at, and why they are looking, believe that pounding the pavement and setting up a boiler room is the path to make some money.

So what do good tech recruiters do? They get into the details! They figured out that they are dealing with some detailed folks.  We (other software engineers) want you to do what we could do if we had more time.  As it stands right now a lot of these “people persons” can’t compete with the most connected person of all – Craig from Craigslist.

-mb

PS: by the way I am hiring web and iOS devs, Tech PMs and QA. Apply here: http://jobvite.com/m?3m2Xbfwg 

Saturday, November 05, 2011

Using Offshore Designers


I am working with a new design firm and this time to save some cash I decided to go offshore.  The guys I am working with right now are in India and I seriously think they don't get it.

In 2001 I had an offshore project management firm and we had partners in India, Belarus and Ukraine.  Honestly all of them sucked.  The best offshore designers we worked with were in Argentina.

I can already hear a bunch of voices complaining about generalizations, however I am not the only person to notice this.  Today I decided to go a step further and figure out: "why is it that the guys in Ukraine or India do not wow me with their designs?"

Let's dissect this latest project and figure out what has been going wrong.  I believe it's indicative of design issues in general.


  1. the designer didn't have an overall strategy for the design.  For example: are we going to go with vector graphics, photos, straight edges or rounded edges?  A lot of those types of decisions need to be done on an architectural level and the rest of the design flows from that.  What you get in the end of consistency in the application.  Can you imagine if Facebook all of a sudden had a big round beveled button somewhere?
  2. the designer doesn’t have the confidence or the genius to suggest something innovative.  A good design is innovative enough, but familiar enough that users are not confused.


Let’s take my last project for example.  I am trying to put a new skin on the projet I created during the DreamForce Hackathon – www.twitter2chatter.com.  I gave the designers the overview of the solution and I gave them some designs I liked.  What I got back were three starting designs.

The designs were a variation on the same theme.  One of them actually mixed photographic and drawn images in a way that didn’t work.  Another one had a bunch of colors. All of them had all caps text everywhere.




I decided to give the designers more direction and wrote out the text, while pointing out all the obvious issues like – please don’t put anything in all caps and keep the colors consistent.  What came back were three variations with all caps and a color scheme of an Indian rug.




The next iteration I got one design with a bright yellow color, which is nowhere to be found in Twitter or Chatter.  So I basically decided to lay out the front page in OmniGraffle and see if I can get these guys back to something normal.



Another iteration, better but not there – repeated elements on top and bottom, again new colors appearing out of the blue and still ALL CAPS everywhere...


So what now?  Is it a language barrier?  Is it an attention deficit?  Is it that people don’t understand the value of consistency and small things?  Who knows, but I bet its not the last time I am struggling with these guys.