<i>> These tests were run against a copy of the live database in a production environment.</i><p>This is pretty terrible from a security standpoint. A development environment is typically much less secure than the live environment, and for good reason. The development environment must be accessible to developers, typically both on-site and remote. All developers have access to test databases for the purpose of testing their changes. There are often many more software packages in a development environment, and development servers have a higher probability of running vulnerable services. Live environments typically have much better logging and auditing.<p>Every company should have a program that can be run to sanitize the live database for use in testing. I've seen too many situations where the production environment was appropriately locked down and audited, but the development environment was compromised. It's not unheard-of for a developer to lose possession of his laptop, and if it contains a copy of the live database it's no better than the site, itself, being compromised.
Hash tables are worst-case O(n) time.<p>B-trees are an external storage technique; he means balanced binary trees.<p>The answer to the interview question is another question: "what operations does the container need to support?". It's not "hash tables are O(1)".
no real tricks here, this guy just seems happy he worked on a team with professional standards. thorough testing like that is, while not the norm, pretty commonplace at most of the better places i've worked.
<i>We had one, highly specialized piece of software code which could only be checked out, worked on, and checked in by a single engineer at a time. You were only allowed to touch this piece of code if you possessed a physical token.</i><p>Ahh, the all powerful Source Control Shingle: <a href="http://thedailywtf.com/Articles/The-Source-Control-Shingle.aspx" rel="nofollow">http://thedailywtf.com/Articles/The-Source-Control-Shingle.a...</a>
Perhaps I'm too attuned to NDA issues after having listened to the most recent episode of Gruber's Talk Show (<a href="http://5by5.tv/talkshow/46" rel="nofollow">http://5by5.tv/talkshow/46</a>), but I am guessing that this guy is coming dangerously close to — and is perhaps crossing — the line with respect to disclosing details about Apple's technology and software development practices.<p>When in doubt, STFU. Not just for legal reasons, but also because you don't want future collaborators and employers thinking you're a Chatty Cathy who's going to tell everyone about your secret sauce.
So this is all well and good if you work with a team like this. But I have two questions:<p>(a) How do you find out, before going to work somewhere, whether they actually work like this? Are there questions you can ask? Word of mouth? ... ?<p>(b) If you don't work somewhere like this, how do you start putting professional processes in place? Assuming in particular that you have never actually worked somewhere like this, so you can't speak from experience, only from instinct about what seems to be a good way of working.
> We had one, highly specialized piece of software code which could only be checked out, worked on, and checked in by a single engineer at a time.<p>Why? Also, is this common these days?
Wait a sec - "it was always an interesting experience to turn the store back on after Steve Jobs walked off stage following one of his keynote presentations"<p>??<p>Does Apple seriously turn off their store while Jobs talks? Or is he talking about pushing new content out based on announcements?<p>The former just sounds... Odd.
<i>When you're asked, during a job interview, which is the fasted lookup function, don't, as is very common, say, "a B-tree." Perfect hash tables always win, hands down.</i><p>Wait, saying a B-tree is the common answer?
>"Coding tricks I learnt at Apple"<p>I'd wager "learning how to properly use 'learned'" wasn't one of them.<p><a href="http://www.urch.com/forums/english/9214-learned-vs-learnt.html" rel="nofollow">http://www.urch.com/forums/english/9214-learned-vs-learnt.ht...</a>
"The <i>descriptive</i> answer in American English is:
There is no such word as "learnt". Use "learned" always."