Tuesday, April 22, 2014

What Are We Testing For?

Recently, Jaya Jha had a bad experience recruiting programmers for her company. She set up an online test for the interviewees and they cheated (googled the results on the internet.) For her, it was an ethical problem. It seems that some people told her to ignore the incident and interview these candidates anyway. She chose not to.

While this may have been an ethical issue for her, to me it raises a different question. Why do interviewers ask questions whose answers can be easily googled anyway?

To some extent, this is a hangover from our pre-internet, information-scarce world. I've had the good fortune (?) or having living memory of both worlds. Back in middle school, all we had was a single non-networked PC with the Turbo C++ compiler on it. It came with a function reference. We had a few C++ books in our school library. In those days, it was important to remember the nook and crannies of the language we were using, API references and compiler quirks. If you were stuck, you were stuck. You had to wait a day or two before you could go to the library and consult a precious language reference.

Times have changed. Programming today is mostly googling StackOverflow. And while good memory always helps, it's not critical. What matters more is being able to make engineering and design judgments. What API among the multitude available should I use? Which language is suitable for a new project? How do I make my app more user friendly? How do I scale? How do I make my code more maintainable and scalable?

Silicon Valley has been struggling with this question for some time now. Even the Microsoft Interview is passe. Companies now look at patches and github accounts. Recruiting needs to get smarter.

Duplo - The Flipboard Layout Engine

Last month, Flipboard published some details about how their web and Windows 8 layout engines work. It is fascinating.

Duplo is a new layout engine that starts with the ideas in Pages but uses a modular block and grid system to quickly fit content into thousands of page layouts in all sizes. [...]

However, while Pages looks at about 20 candidate layouts, Duplo looks at anywhere between 2000 to 6000 candidates, searching for the best layout to fit the content.

This is the kind of attention to detail that Donald Knuth paid to typography with TeX back in the 70s. This is also the first time that I've seen an algorithmic approach to design out in the wild.

Sunday, April 20, 2014

The Zen of Computers

  • No computer works the way you want it to. This is a problem not with the computer, but with you.
  • Pick a computer (or software), any computer (or software), and stay with it. When it stops working, abandon it, pick something else, and stay with that.
  • It is okay to be a fanboy or an ideologue. But it is not okay to let fanboyism or ideology make your life, or the life of others, miserable.
  • If you cannot decide between using one tool or another, you probably need to use both of them.
  • Occasionally, you will find peace with your computing machine. But this peace shall not last.
  • All exciting software will always seem to exist on the some other OS/Platform/Hardware that you're not using. Know this to be an illusion.