Archive for June, 2008

How to Nail Tech Interviews (both sides)

June 26, 2008 5 comments

Here are some tips for both the interviewee and the interviewer to conduct successful tech interviews.

For the Interviewee

  • Be On Time – This really means be early, but sit in your car or drive to a nearby coffee-shop after you find the location of your interview. Then walk into the office exactly 5 minutes prior to your interview time. If you make it to the interview 30 minutes early, suppress the urge to go in. Wait until 5 minutes prior to the start of your interview. So how early should you be? Leave your house at least two times your estimated drive time. If you have a 30 min drive, leave your house 1 hour prior to the interview time. At Axosoft, where our flagship product is named “OnTime”, being late to the interview really puts you at a major disadvantage.
  • Expect the Unexpected – Every interviewer likes to do something to surprise a candidate or to get them out of their comfort zone. How a candidate deals with this situation is extremely important because it tells the interviewer whether or not the candidate will react well in new situations or when presented with new challenges. Take deep breaths, if necessary, to relax yourself and deal with any situation presented to you in a calm, calculated manner. Ask questions if you don’t fully understand. Don’t be afraid to have a conversation with the interviewer. Some interviewers will purposely suppress data from you to see if you ask the right questions in order to obtain the data you need to solve a problem.
  • It’s OK to be Nervous – Every interviewer knows that it’s nerve racking to be sitting on the other side. They are already sympathetic to your position of being on the other side of the table. So it’s OK to be nervous, but don’t let your nervousness bother you by thinking that your nervousness is killing your chances of success, because it’s not. Nobody cares if your hands are shaking when your write or if your voice cracks. It’s OK. I’ve seen a number of candidates get nervous about being nervous, which makes them even more nervous and it goes in a vicious circle. The end result of letting nervousness take over is that you will completely freeze up, but knowing that the interviewer expects you to be somewhat nervous can help you remain calm (or calmly nervous).
  • Learn about the Company – Take some time prior to the interview to learn about the company you are interviewing with. I’m always surprised at how often people skip this very simple step. Knowing something about the company shows that you would be enthusiastic to work with this company, while a lack of knowledge shows that all you care about is getting a job. All else equal, no interviewer would pick a candidate who is simply looking for a job vs. a candidate who came into the interview with knowledge about the company.
  • Look Sharp – This doesn’t necessarily mean wear a suit and tie. It simply means you should be dressed at least 1 dress level above the way the employees at that company dress. At Axosoft, you’d be dressed 1 level above if you wear a collared shirt and jeans. Here’s the key: nobody gets eliminated as a result of being over-dressed. Using that rule, make sure if you’re going to error, it’s on the side of being over dressed and not under dressed.
  • Don’t Burn Bridges – One would think this is blatantly obvious, but sometimes, interviews go so bad, that the interviewee feels the urge to give the interviewer a piece of their mind. Suppress the urge! It can do you absolutely no good and the tech community is small. Making a negative memorable impression with an interviewer could kill your chances of a job with other companies! If the interview goes bad, remain professional and conclude the interview as you would normally. It doesn’t cost you a penny and not doing so could cost you a future job. 

For the Interviewer

  • Give Technical Questions – Don’t forget, you’re hiring for a technical position, simply asking about past experience or what a candidate did on a previous project does not show you whether or not they are a superstar. You are looking for superstars. The only way to find them is to give a highly technical interview.
  • Ask Them to Write Code – Ask them to write code. Simple stuff, nothing big. Pay special attention to the speed at which they write the code. Variable names, efficiency of the code or algorithm, do they self-check the code by going over it in a similar manner to how the computer would execute the code? Don’t get surprised at how long it takes even good interview candidates to get started writing simple code. It’s tough to write code on the spot and many candidates have never done it in an interview before. Some might refuse. If they refuse, say goodbye to them. You’re hiring them to write code. It only makes sense to ask them to write code in the interview.
  • Test Problem Solving Skills – Past experience is only an indication of what the person already knows. So they know C# or Java or SQL. What happens when you need them to learn a new technology or when they encounter a new problem? Problem-solving skills is how you can determine a candidates ability and willingness to learn. So you give them problem solving questions and pay special attention to the way in which they go about solving it. Do they guess at the answer? Do they try to break down the problem and look at it from different angles? Do they tend to give up way too soon? There are tons of potential “interview questions” that can be given…pick a few easy and a few hard ones to give to every candidate and look for the way they solve it. Getting the exact correct answer is not nearly as important as how they solve it.
  • Use 2 or More People to Interview – To make sure you’re going to make the right call on the candidate, use at least 2 or more people to conduct the interview. Everybody should be sold on the candidate. If you have a “No-Hire” decision from any of the interviewers, pass on the candidate. They are not a superstar candidate and they don’t belong in your world-class team.
  • Don’t Leave Them Hanging – I could never understand the standard “we’ll get back with you” response that interviewers give to candidates. You should follow some basic guidelines to make sure you don’t waste the candidates time nor your own:
    • End an Interview as soon as you know for sure the candidate won’t work for your team. Sometimes, that means ending an interview only 2 minutes into it. There’s an urge to keep the interview going for the “right amount of time” before letting somebody go. Don’t do it. What’s the point? If the candidate gets upset at you for telling them it’s not going to work after 2 minutes, that’s their problem. You just did them a favor by saving them another hour or more of time. They should thank you!
    • Do immediate assessments of the candidate. That means ask the candidate to wait 5 or 10 minutes while you and your other interviewers discuss the candidates prospects. Let them know you’ll come back to them and give them the results so they won’t have to wait for days. They’ll really appreciate it! You’ll want each of your interviewers to give a “Hire” or “No-Hire” decision. The outcome of your discussions should be 1 of 3 choices:
      • Hire – Which means you’ll make an offer of employment to the candidate
      • No Hire – Which means that candidate will not get an offer of employment for whatever reason.
      • Follow-up Interview – You needed more information or perhaps you didn’t schedule enough time for the interview and you need to do a 2nd interview.
    • Tell the Candidate the Results – There’s simply no good reason to wait. Let the candidate know if they will hear back from you with an offer or if it was a no-hire decision. I often tell no-hire candidates why we decided against an offer, which they appreciate immensely as it helps them improve their future prospects.
Categories: Business, Team Tags: ,

Dell’s $1,304 Premium over Mac Pro

June 20, 2008 11 comments

If you’re following along with my blog, you know that I recently came to the conclusion that even Windows developers would be smart to pickup a Mac as their next developer machine. In that article, I made the argument that even if buying a Mac has a $500 premium, it would still be a non-issue and choosing a Mac would be the wiser choice. Taking my own advice, I just upgraded Axosoft Developer machines to Mac Pros, without doing any comparison shopping.

Today, I decided to see how much I would have saved for each developer if I had chosen similar Dell machines. Of course, I wouldn’t have cared what my savings would be, because part of the incentive to buy Mac Pros was to provide our dev team with the flexibility to develop anything for any platform. But to my huge surprise, buying a comparable Dell had a $1,304 premium!!! Take a look for yourself:

Dell Dual-Proc XEON Workstation

As you can see from the images above, the Dell price without tax is $4,153 while Apple’s price is $2,849. 

Who is Dell joking here? Now to be fair, there are 2 differences in configurations:

  • The Dell System bus is 1,333 Mhz vs. Mac Pro’s 1,600 Mhz bus
  • The Dell Memory is 667 Mhz vs. Mac Pro’s 800 Mhz

That’s right! The Mac Pro has even a better configuration and costs $1,300 less. Upgrade pricing was equally insane. While Apple charged $200 for a 2nd 500GB drive, Dell’s price for that same upgrade was $339.

So now taking the Dell premium into consideration, the faster Mac Pro, better style and looks, the easier component access and ability to run OS X, is there any reason to stick with Dell?

Taking the Plunge: Upgrading Dev Machines to Macs

June 19, 2008 11 comments

Taking some of my own advice, I have started the transition of developer machines at Axosoft. Our previous dev environment was:

  • Dell Latitude D630 Notebooks
    • 4GB RAM
    • 7200 RPM Drives
    • 2.1Ghz Core 2 Duo
  • 2 x 20″ Dell LCDs (1600×1200 resolution)
  • Docking station (to allow 2 monitors)

Here’s what a setup looked like:

There’s a great story behind the pink pony in the picture, but that’s for another blog :-)

So we just started a transition for our developers to a Mac Pro setup.

  • Mac Pro With:
    • 2 x 2.8Ghz quad-core Xeon (8-cores total)
    • 6GB RAM (buy memory upgrade elsewhere, much cheaper)
    • 500GB Drive
  • Apple 30″ Cinema Display (2560×1600 resolution)

So here’s what the new setup looks like:

These workstations are absolutely amazing. They are the world’s fastest workstations for running Windows, and of course, they are the world’s fastest for running OS X. The idea is that our developers now have the best of both worlds and they have the flexibility to meet changing Axosoft demands. With such blazingly fast machines, they could choose to run Windows in a virtual environment and still run it faster than their old setup.

One question you might have is why did we switch to desktops from laptops? We had initially gone with laptops to allow for easier portability of the machines in case of travel, meetings, etc. However, about 51 out of 52 weeks of the year, the laptops didn’t move from the desk. For the 1 week that they did, the developers determined it wasn’t worth giving up the performance boost that comes from a desktop.

Lets see what develops…

Categories: Development, Team, Tools Tags: , ,

Why Every Developer’s Next PC Will be a Mac

June 18, 2008 24 comments

Every Developer\'s Next PC will be a MacIf you’re a developer, your next machine will be a Mac. Here’s why:

  1. iPhone Development can only be done on a Mac.

What, were you expecting a #2? No need! #1 is sufficient reason. “But what if I don’t plan to develop for the iPhone?” you ask. It’s called hedging your bets. The fact is you don’t know if you’ll want to develop for the iPhone in the future. The general tech community consensus is that mobile is the future. Having a mobile version of the apps you write (whether games or client/server database applications) is a smart move. In fact, your customers might start demanding mobile versions of your software soon and if they have iPhones they’ll start demanding them much sooner than later.

iPhone has a good chance of becoming the standard platform for Smart Phones. Even if it doesn’t become the standard, it will have a commanding share that cannot be ignored. The fact is, you can’t develop native iPhone apps on anything but a Mac. The world’s best Dell, HP or IBM won’t help – even if they miraculously become the better PC to buy.

Until now, lots of Windows users bought Macs because they were the best PC to run Windows. But what if another hardware vendor creates a better PC? The idea was that this group of Windows Mac users would switch back. But not anymore. Now, for a Windows developer, it would be smarter to pick up a Mac even if a better alternative for running Windows existed. Buying a Mac ensures that you can develop software on ANY platform: Windows, Linux, Unix, OS X and iPhone. Even if you don’t care about OS X, chances are you’ll care about iPhone users soon. iPhone seals the deal on buying a Mac. It’s good to be in Apple’s shoes right now.

Some of you are undoubtedly thinking “most people wouldn’t pay the $X premium for a Mac vs. a Dell machine.” Some will argue going to Macs will cost 20% or 30% more. Wouldn’t most organizations want to save 20 or 30% on their hardware costs?

This line of thinking couldn’t be more flawed. Consider the total cost of a developer during an average 2-year replacement-span of typical hardware:

  • Salary: $60,000 (low) x 2 years = $120,000
  • Benefits (Taxes, Bonus, Vacation, Insurance, etc.) at 20% (low) of salary: $24,000
  • Other Costs (Space, Desk, utilities, etc.) at 10% (low) of salary: $12,000
  • Typical Developer PC: $2,000

So the total cost of a relatively inexpensive developer for 2 years is at least $158,000 and these are extremely conservative numbers. I’m using a small salary to illustrate that even on the low-end of the salary spectrum, the $X premium of a Mac is meaningless.

So what is the extra cost of a Mac vs. a PC? Even if you have to pay a $500 premium for a Mac (Not True – See Update), we’re talking about 0.3% more than the 2-year cost of a developer.

So the question is, what organization would limit their ability to develop on quite possibly the world’s #1 mobile platform for a savings of 0.3%? The answer is “an organization that doesn’t think!”

Updated (6/20 4:55pm):

It turns out Dells now have a premium over Macs. Look at the comparison.

Categories: Team, Tools Tags: , , , , , ,

Will Your Project Ship On Time?

June 17, 2008 8 comments

Will Your Project Ship OnTime?I am working on a simple test that software development teams could use to determine whether or not their projects will ship on-time. I ran this test by Eric Sink who helped refine a couple of the questions. I think his input made the test stronger and I’d like to get some feedback from you.

It would be great to see what your results are and if you agree with the results based on this test:

Question Response Calculate Points
1. How many total team members do you have (count everybody)? _____ x -2 = _____
2. How many non-engineers (non-developers) in your team (testers/mgrs/etc.)? _____ x -2 = _____
3. Break down your team to # of Members with:
– Negative or Neutral Productivity
– Normal Positive Productivity
– Superstar Productivity
x -5 = _____
x 3 = _____
x 10 = _____
4. Expected Project Duration – Use This Scale:
< 3 Months = 0
3-6 Months = -2
6-10 Months = -6
11-18 Months = -15
18+ Months = -30
  x 1 = _____
5. Organizational strictness on methodologies or processes:
– Hard Core about following a heavy methodology (6-sigma or similar) = -6
– We strictly follow an agile process (scrum, XP, etc.) = 0
– We follow best practices or loosely follow agile process = 2
– We don’t do any process or best practices = -6
  x 1 = _____
6. Is your project broken down into tasks & features with estimates for each?
– Yes = 2
– No = -6
  x 1 = _____
7. Does each team member have a task-level checklist of when the project is done?
– Yes = 5
– No = -15
  x 1 = _____
  Total: _______

To determine whether your team will ship the project on-time, use your Total Score and compare it to the following scale:

Negative Total: Forget about it – Your project is at risk of cancellation.
1-9: Project will finish late.
10-24: Project has a good chance of finishing close to schedule (within 10-15% of estimate)
24-50: Your team has a reputation of delivering on-time!
50+: It’s unlikely that you have that many superstars. Go back and take the test again.

The goal here is to make questions easy to answer and still be able to get accurate results. I am going to make this test into a web-based calculator that any member of the development team could use to help determine their team’s chances of shipping software on-time, so I need as much feedback as you can give.

There are a lot of other factors that came to mind, but were omitted from the test to keep things simple. For example, you might be thinking “what about using past success rates” or “quality of estimates” in determining whether the team will ship on-time. However, I’m trying to leave out questions that are difficult to answer (too subjective) and allow for first-time teams to still be able to use the calculator to estimate their success rate (no reliance on historical data).

You might also ask “isn’t it subjective to categorize your team into 3 levels of productivity?” The answer is yes it’s a little subjective, but I bet most people would agree with your categorizations (with possible exception of the individuals who are being categorized in the negative or neutral category). Most of us know who the super-stars and the bozos on the team are. Everybody else is a normal, productive team-member.

So the questions are easy to answer, but the result should be extremely accurate. I’m curious to know if you agree.

Google Android vs. iPhone: It’s 1984 All Over Again

June 2, 2008 16 comments

Android vs. iPhoneBack in 1984, Apple was on top of the computing world with top-notch sexy hardware and it partnered with Microsoft for some top-notch [not so] sexy practical software. It was a winning combination for both Apple and Microsoft. Microsoft’s strategy in 1984 was hardware agnostic making its software available on any popular platform. Apple’s strategy in 1984 was holistic. We’ll call the period between 1984 and 2000, Round 1.

In Round 1, it turned out that Microsoft’s strategy was the clear-cut winner. By being hardware agnostic, hardware vendors competed with one-another to drive down the price of hardware much faster than anyone could have imagined. Clone prices fell so fast and so much lower than the price of a Macintosh that it simply became impractical to own a Mac. Software vendors also took note and quickly the non-Mac-PC became the standard. Apple nearly died.

2007 set off Round 2. This time around it’s in the cell phone business. Once again, Apple is on top of the Cell Phone game with top-notch sexy hardware and it has partnered with Google this time for some top-notch [not so] sexy practical software (think Google Maps, YouTube and other web-based Google Apps for the iPhone). Once again, it’s a winning partnership for both Apple and Google. And Once again, Google’s strategy is exactly the same to that of Microsoft in 1984: stay hardware agnostic. Apple’s strategy is also identical to its own strategy back in 1984: stay holistic. Round 2 has begun.

The similarities are eery. In 1984, while Microsoft was building the most popular application software on the Mac, it had begun a similar hardware-agnostic operating system (Windows) on its own. In 2007, while Google has some of the most popular application software on iPhone, it has begun a similar hardware agnostic Cell-Phone operating system (Android) on its own. Apple’s strategy has not changed a single bit. It refuses to license its operating system or any other technology while it continues to want more and more control over the entirety of the experience. The iPhone in 2007 has set off a brand new race much like the original Macintosh did in 1984. Interestingly, 24 years later, the strategies are still identical on both sides.  

So will Round 2 end in the same way with Google’s Android prevailing due to exceptionally cheap phones that are sure to emerge using Android? Maybe not. There is one key difference between Round 1 & Round 2: Steve Jobs. Steve didn’t get to finish fighting the strategy that he helped establish for Apple in Round 1. He left Apple in 1985. So there’s no telling how things would have turned out. The fact that Apple lost round 1 may have taught everyone a lesson and it might falsely embolden Google to think Microsoft’s winning strategy was the better strategy. After all, Google’s chief, Eric Schmit, has been learning from (and losing to) Microsoft for 20+ years. Eric is now using Microsoft’s own strategy to successfully beat them. Google is the new Microsoft.

But this time around Steve is much smarter than he was in 1984. So smart in fact, that he’s resurrected Round 1 from the dead and may still pull off a win (the Mac is coming back). It’s possible that Steve & Apple’s holistic approach will still be the winning approach for Round 1, assuming you extend round 1 to at least 2015. But in Round 2 Apple’s chances are a lot better. Everybody is at the beginning of the race. There are no clear winners and just like in 1984, Apple has a major lead. It’ll be interesting to see what happens.

I’m curious to know your thoughts on:

  • Who you think will win Round 2: will it be Google with its Android or Apple with its iPhone? 
  • Is Round 1 over in your view or will the Mac eventually beat out Windows-based PCs in market share?
  • Is Microsoft even a player in Round 2? (I would never recommend a current Windows-Mobile phone to my worst enemy – so do they even stand a chance?)
Leave a comment with your views.
%d bloggers like this: