4 ms·
Most comments here are misunderstanding these puzzles as some awful alternative to leetcode, but as someone who remembers puzzling over these on the T, still le
by baron_harkonnen 7y ago
Most comments here are misunderstanding
these puzzles as some awful alternative to leetcode, but as someone who remembers puzzling over these on the T, still learning to code, it was a very different world when ITA was using these.
These appeared during the post-dotcom bust pre-startup boom period of 2004-2008. If you look at CS enrollment rates of the time you’ll see they were at record lows. Software paid well, but not that well and most engineering jobs were really bad ones resembling Dilbert comics. The culture of treating engineers well, giving them good tools, snacks, unlimited pto didn’t happen until later.
At the time people solving hard problems and keeping up with changes in programming languages and tech were doing it because they loved it. Nearly everyone doing tech was doing it because they where obsessed and passionate about it. This is because if you weren’t there where much more pleasant ways to make about the same money.
These ITA puzzles were a way of signaling “hey! we’re a company of people that love to code and work on hard puzzles too! If you’re the type of person that sees puzzles like this and can’t get it out of your head for the rest of the day, you should check us out!”
These puzzles were not a leetcode like gates (in fact they very explicitly were NOT required for applicants), but rather a way of advertising
to programmers that ITA was not just another boring big corp that would suck your passion for coding away.
- dmbaggett 7y agoAbsolutely right! While we did suggest that applicants try to solve one of these in whatever language they liked, the main purpose was to attract curious and smart people. And it worked! These puzzles brought us a ton of great candidates along with lots of smart people who weren’t looking for a job, but just wanted to know how their solution to a given problem stacked up. It wasn’t a proxy for 2019 whiteboard hazing; these were simpler times... -- Dave, ITA cofounder and creator of some of the puzzles, including my personal favorite, “Rebus”.
- timClicks 7y agoI'm looking at Rebus now and it looks tantalizingly difficult to work through. So simple, yet very subtle.
- slig 7y agoI see that you're a Rust enthusiast, if you feel like, please share the solution on GH.
- ncmncm 7y agoDave is also known in some circles for coding Crash Bandicoot, a much-loved game of the period. I wonder of anybody remembers it today, and plays it on emulators.
- thenewnewguy 7y ago> These puzzles were not a leetcode like gates (in fact they very explicitly were NOT required for applicants), but rather a way of advertising to programmers that ITA was not just another boring big corp that would suck your passion for coding away. However, from the linked page: > To be considered for an interview, you may need to solve one of the programming puzzles below. In fairness, they used the word "may". But I wouldn't call that "explicitly NOT required".
- ecopoesis 7y agoI applied to ITA in 2008ish and was require to complete one of these, something very similar to instant search. Needless to say I failed because the question isn't about your ability to program, it is just if you know what a suffix-tree is. These are fun puzzles but terrible interview questions.
- kstenerud 7y agoYes, the people who were still in tech were obsessed and passionate about it. And then companies like this insisted we act like trained seals, spending days working on irrelevant puzzles for the honor of being maybe possibly considered for a job. And then to top off that shit sandwich, they sprinkle in these wonderful bacon bits: "When implementing the server, aim for scalability and robustness. (Many submissions fail due to lack of robustness!) Your submission should include a description of the steps you took towards those two goals. Keep in mind that the client may be buggy, or even malicious. For example, if a client connects to the server and sends an infinite stream of the byte 'X' with no line break, the server should deal with this case gracefully. Please do not use an existing networking framework (e.g., Twisted or asyncore for Python, ACE for C++, etc.) to implement the server." Not only no, but fuck no. I settled for a job in the IT section at a bank working with COBOL and EJBs because of this shit, until I'd finally had enough, co-founded a company, moved to San Francisco and implemented a SANE hiring process that treated candidates like professionals. Most of us did, so I guess in a way these horrible and misguided hiring practices were partly responsible for the next resurgence, because we'd finally had enough.
- matfil 7y agoWhile I wouldn't necessarily say that problems in this style are the right way to recruit in 2019, something equivalent to: Please do not use an existing networking framework (e.g., Twisted or asyncore for Python, ACE for C++, etc.) to implement the server. ...would be a massively positive signal to me as a candidate. Places that truly value "full stack" abilities like this seem to be hard to track down.
- closeparen 7y agoSame. I had to do this in first-year CS, and got pretty surprised to find out I'd be working with senior backend engineers who've never heard of sockets. Concerns at this layer don't come up much, but when they do, the set of people available to help gets a lot smaller.
- oriolid 7y agoJust out of curiosity, what do you think is a sensible hiring process for people expected to know how program, and why does it work?