Open Side Menu Go to the Top

04-29-2015 , 12:34 PM
Quote:
Originally Posted by bip!
^ tyty - I'll start working through the event flag flow. My critical section is minimized already, but good point there too.

And yes - it does lots with the data.
- analyzes it
- pattern recognition
- records to file (I disabled this when troubleshooting)
- displays real time graphics (direct3D)

.. those processes are very heavy and are resource hogs too. So I will play around with bumping he USB thread and see what happens. Next step is to wire up 3x of these instruments - so figuring it out will become imperative.
FWIW it looks to me like the basic design is ok but I'm guessing that you need to figure out how to factor application into threads more effectively to handle the data rate. I assume you are using the C std library for doing file I/O which is good but your disk I/O could still be a problem. Hopefully you aren't doing needless copying from one buffer to another. Windows File Mapping could help you. Of course determining the threads you need for optimal performance is necessary. But again it seems like a lot of thought was put into this already so not sure. Looks like a fun challenge. Seems to me like you have a good handle on how to proceed. It will be interesting to see what you figure out. BTW Windows isn't the greatest platform to this type of thing on basically because of the scheduler.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
04-29-2015 , 12:34 PM
Quote:
Originally Posted by candybar
Again, the problem with allowing your interviewers to add unspecified criteria as they please is that it becomes entirely about tickling the egos of interviewers and not at all about fairly evaluating the candidates. Why not stop at namespacing? What about dependency injection? Idiomatic usage of prototypal inheritance? Did the candidate use IoC patterns properly? Does the code use promises to avoid unnecessary callback spaghetti? Is the code properly annotated jsdoc style? Sometimes you can't even win. Is the code is written cleverly using functional style? Ding them for not being straightforward and point out potential performance problems. Is the code written in a straightforward imperative performant manner? Ding them for not taking advantage of abstractions and writing verbose assembly code.
I did do dependency injection! Which I was very proud of and pointed out. I also mentioned idiomatic use of prototypical inheritance but never assumed they would think I don't know how to do it. Yes 10 years as a Java developer and inheritance confuses me.

I was definitely worried about trying to show off too much creating complex abstractions for future requirements that were only hinted at. I thought the assignment meant we could talk about those. It's ridiculous to design abstractions into a framework without at least one concrete implementation of the thing you're trying to abstract. That's like an academic exercise that has no bearing on how you would actually code in the real world.

I would ding a developer big time if they made up a bunch of fancy layers of abstraction based on a guess. We have some of that in our codebase right now and it's an absolute nightmare to maintain. Devs basically threaten to quit if they get put on it for too long.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 12:36 PM
Quote:
Originally Posted by Grue
If you/other people have looked at his submittal and think its fine then he probably didn't want to work there anyways if they'll pass on him based on the above.
I wanted to work at the company I thought they were until yesterday. But yeah if that's how they handle highly-recruited devs, just throw them to an engineer who's obviously been writing the same app for different devices for a long time and thinks everyone should skin the cat exactly the same way, especially when it was the hiring managers idea to send me to that department and I never billed myself as an SPA guru, then that's not a good sign.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 12:38 PM
Honestly, it sounds like suzzer wrote a simple app and took the shortcuts that go along with a simple app.

But this was an interview and add in the wording and I don't think it's unreasonable to expect that they want a simple app that shows what you can/would do on a real app.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 12:40 PM
Which I thought I did. Here's my email that went along with my submission (which I have a suspicion the engineer who reviewed it never even read).

Quote:
Here it is. I made some code comments but mostly just what I would put if it was normal code.

Basically the architecture is MVC with one "app" controller and a couple "puppet" controllers for each panel. The idea is that more puppets can be added and wired up to by app controller at any time, and the puppets can be re-arranged without having to re-code any of their core logic. So if the nav had something like a settings panel, the app controller would listen for that item selected, and load in the settings panel instead of content panel. It's assumed the nav is generated with the original HTML payload with an item pre-selected. If necessary the nav could be lazy-loaded like the content panel.

The puppets take direction only from the app, then fire events to let the app know which things are selected, or when the focus tries to move off of their panel. They never know what happens when they fire events, nor do they talk directly to the other puppets or to the app controller itself. The app controller decides which events to listen to and act on. In this way the panels could be moved around on the screen and not need to be refactored - just the app controller behavior. This allows panels to be very loosely coupled and function mostly as independent entities via their exposed methods.

The app itself never manipulates or looks up anything on the DOM - this keeps its behavior at an abstract behavior-logic level. If a panel with many more keystrokes were added, it might make sense to create a separate injectable component just to map those to actions. The mapping from keystroke to action exists to provide a layer of abstraction that will make the code more reusable if the method of user interaction ever changes. The panels only know actions as dictated from the app controller - not actual keystrokes.

The app injects any outside dependencies (such as a service to retrieve the list of content) into the puppets. Injecting the service to get data makes the code far easier to write automated unit tests against, and allows for different implementations of the get data service to be easily swapped. I am using a static service for development. An ajax service could be written and only one line of code in the app controller would need to be changed in order to use it. The service could also handle lazy loading chunks of data for when the user loads more content in a panel. However the panel itself would keep track of which chunk to load. The service itself should always be stateless.

I thought about extending the panels from a basePanel object - but there was much more different than common between the two. Once the panels are more fleshed out, or there are more panels, I would consider factoring out commonalities into a base object via prototypical inheritance or possibly some other inheritance method (often in practice this will be dictated by the chosen front-end framework). I tend to find it easier to just develop components, then look for commonalities to factor out later.

One thing that bugged me a little from a performance POV was using jQuery lookup to see if there is an item adjacent to the selected item to move to. Obviously it's not a performance hit on Chrome on a fast laptop. But if this turned out to slow down interaction time on some device, I would read all of the available elements into an array at init time, and then traverse that. But imo the lookup solution is a lot cleaner from a code complexity POV. So I would tend to leave it in unless I knew it was slowing things down.

That's the gist of it. I will be happy to go into a deeper dive when we discuss it further.
Btw they said using jQuery or underscore was fine, but no heavy frameworks like angular or ember.

Last edited by suzzer99; 04-29-2015 at 12:50 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 12:43 PM
Quote:
Originally Posted by candybar
Yeah, the problem as stated is not particularly hard, so they are judging you mostly by your ability to guess their intentions and fill in the blanks. And looking at their comments, I don't think whatever solution they'd come up with would pass my screen, if I were to be equally as harsh from my perspective.



Hiring should be done primarily based on capacity, character and motivation. It's hard to say for sure without knowing exactly what you do, but in general, technical screens should be used to judge the candidate's capacity and it's hard to imagine what capacity you're testing for if you're not stating up front what you're expecting. Generally, "let's see if the candidate can guess what I'm looking for" type of questions are used to test for social and cultural affinity - it's a nerd's way of seeing if you know the secret handshake.

If your technical questions are so easy that too many people are passing, make them harder or use other criteria. There's no real reason to judge people based on things that they don't even know are being tested for during a technical interview. What's worse, it's a way for interviewers to feel smug about their own abilities when they themselves aren't good enough to pass or administer objective tests that are sufficiently hard enough to distinguish between candidates.

If you're worried that the candidate's style of coding doesn't mesh with the existing team, give them an existing code base and have them add features and tell them that they will be judged based on their ability to follow the existing style guidelines and work within the constraints of the code base.
Maybe I'll have time to go into more details later but for now I'll say that there are lots of specific things a senior developer should know to do in given situations.

If I ask someone to describe/build a data pipeline I expect a senior engineer to cover how failures/retries are handled - even if I don't mention it.

Again, I'm not comparing this comment to Suzzer because I don't know enough details. But it's totally fair to expect a candidate to fill in certain details without being explicitly asked.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 12:53 PM
Quote:
Originally Posted by jjshabado
Maybe I'll have time to go into more details later but for now I'll say that there are lots of specific things a senior developer should know to do in given situations.

If I ask someone to describe/build a data pipeline I expect a senior engineer to cover how failures/retries are handled - even if I don't mention it.

Again, I'm not comparing this comment to Suzzer because I don't know enough details. But it's totally fair to expect a candidate to fill in certain details without being explicitly asked.
Yes but if you hand-picked a developer to interview with a certain department because they said they liked to work on new blue-sky technologies and thought they had a knack for it (direct quote by me: "before best-practices have even been written yet"), would you then reject them out of hand for not being a subject matter expert in the field you directed them to?

Basically I don't think this manager is technical at all and he's relying on one engineer who may have a very particular way of doing things to assess overall programming ability - based on a very specialized task.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:05 PM
If anyone wants to see, here's the assignment and my response (assignment is in specs folder). https://www.dropbox.com/s/sru561o0px...nment.zip?dl=0

I'll take it down pretty soon so get it while it's hot.

The password on the zip file is fill in the blank "In one of the funniest threads in 2p2 history, OP was miffed that his roommate had put a __________________ in his living room." If you don't know ask your homies, not answering PMs.

Yes obviously the butt still hurts a little today.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:17 PM
seriously have no clue how gizmo remembers all these specifics

at least i was in the zip code of the right answer
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:26 PM
WTF how could you have a 2006 join date and not know that?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:30 PM
http://www.newsday.com/news/health/y...ood-1.10347377

as I say, i had the right sort of answer, just not the exactly specific answer. So if the answer was 'sperm whale', I would have guessed 'orca'.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:35 PM
Your thing is fine suzzer. They probably dinged you because of semantics and structure, stuff like putting style tags after html, no doctype, etc. But it works fine and its easy to understand i.e. it should have been good enough. Its just an interview and I would have had a hard time putting in more effort than you did.

Though I guess if I really wanted the job I would have gone all out with modern stuff like babel/gulp/sass/node etc - this kinda says "hey I know jquery". Hard to say.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:38 PM
The funny thing is this is by far the most I've ever worked with jQuery. Much google-fu going on while I was developing. But they mentioned it was ok so I just figured I'd use it. The CSS also took a couple of hours because my CSS sux.

Oh yeah and that's not what I got dinged on. I will post the dinging after a day or two when people have had a chance to look at the assignment.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:49 PM
I definitely would have used express or connect to serve a webserver and then make an ajax call to the resource with error handling though.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 01:52 PM
They know I am "the node guy" at my company. I figured it goes w/o saying I know how to do that. I thought they'd like the simplicity of my approach. I get the feeling Sili Valley might be rife with code show-offs vs. devs like me who value simplicity above all else.

Like I mentioned above, we hired a major code show off hotshot contractor to develop a really complicated portion of the site that we were just too swamped to do ourselves. 2 years later and that thing is still basically a grey box that no one wants to touch. I call my debugging strategy with it "throwing dye in the water". We'll probably just start all over from scratch at some point when we get time.

A lot of you have seen my node framework. I went to great lengths to try to make that powerful, yet simple and intuitive for a framework developer to pick up. If I leave this company I really don't think I'll be leaving them in the lurch on my framework. I guess it's possible it might just seem simple to me though because I lived and breathed it for a couple years.

Last edited by suzzer99; 04-29-2015 at 02:00 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 02:00 PM
@Suzzer - I feel your pain and I empathize with your frustration. The whole process is cruel.

Out of curiosity, most of the software devs here seem to be in there late 20's, early 30's. Do you all think there is something to devs in their early 20's and 30's being negatively disposed towards a dev in their 40's interviewing for a new position. I mean say a candidate in their 40's is interviewing for a job and the interviews are being conducted by people in their late 20's and early 30's, how many do you all think would have a bias against someone much older?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 02:05 PM
I know we don't at my company. My company is a little different though because we almost always bring in new devs as contractors, then try to get them to convert if they're really good. So we cast a pretty wide net and say yes to anyone who seems like they have some promise. Maybe if the job market softens and we start getting deluged with devs with promise we'll have to change our approach.

I really think that's a much better system. I know damn well I'd be a top-notch dev for either of those two places that rejected me. They're really self-selecting for a very specific kind of dev experience when that dev may not even be very good at thinking on their feet. They're missing out on potential rock stars.

Like I said I think X had every reason to believe I was in my 30s. But there is the joke in Sili Valley about even that being old. Not sure how much truth there is to it.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 02:23 PM
I'm confused, if you're the "node guy" i.e. not a dedicated front end developer and it sounds like you aren't since you don't know jquery well, why did they give you a front end exercise? What were you interviewing for? I'd be ticked too if I was interviewing for a job to be a lead for x technology and I got a code exercise that didn't even use anything close to it.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 02:38 PM
Well the original contact was by the head of the UI department - let's call him Sparky. His idea was to put me on the A/B team, which tests out different features on batches of users. I'm not 100% sure what they do in relation to the primary site development, but it's definitely web-related and they are converting to node.

Then I said to Sparky that I really liked working with node and if they were doing interesting things with node that I'd hope to at least be a part of that in some way. So I talked to their "node guy" and felt like that went pretty well. This is actually a totally different department not under Sparky, so I was impressed that he would hand me off to another department. That would never happen at my current company where things are extremely silo-ed. If you go work for another department you might as well be working for another company.

But then I told Sparky that while I mentioned node, I meant what I said literally. I didn't really have to be working with node full time, just hoping to be a part of it. I got the feeling from the hand-off that wouldn't be too hard to arrange. Maybe some kind of "node council" or something.

So then I told Sparky I was really into UX, and I liked and seemed to always get thrown into new technologies "before best practices have been written yet", but still manage to be productive. Basically I was just throwing out what I thought my strengths and interests were and see what he thought.

That was when Sparky came up with the device team idea. I talked to an engineer on that team and had a tech screen, which I thought went well. I got to ask him what they worked on and it sounded pretty cool. He said sometimes they get cardboard-box prototypes they need to get X working on. That sounded fun.

So then they gave me the take home exercise with the instruction in the assignment you saw and this email:

Quote:
Though [boss of device group, under Sparky] is out, we decided to move forward into the next round. We ask interviewees to complete a take-home exercise to implement a rudimentary sample TV UI as the next step for evaluation. I've attached the exercise.

The purpose of the exercise is to help us get a sense of your architecture skills, and gives you a chance to show off what you can do when you aren't at a whiteboard with two interviewers staring over your shoulder. Keep in mind that you should approach the take-home with the idea that requirements and features are ever-changing, so show us how you build with that flexibility in mind.

Let me know if you have any questions.
And the rest is history. So yeah, they gave me a very specific SPA exercise when I never once billed myself as being a super-expert in that. I do have extensive experience developing and designing a Sencha mobile SPA site for our company. It's just been a couple years since I worked on it.

I feel like either I was set up to fail or there were some massive communication breakdowns somewhere. I never once heard from the boss of the device group and I think Sparky had to fill in for him on this, which might have contributed to the problem. And there could be some weird political **** going on, who knows.

Last edited by suzzer99; 04-29-2015 at 02:57 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 02:51 PM
I did also have this exchange for clarification:

Quote:
suzzer wrote:
Hey one quick question on this line: "How would your key handling accommodate dozens more UI components, like episode selection and playback controls?"

I am assuming these controls would activate when a movie is selected. So instead of just hitting Enter, there are other keys you could use to do things like launch some kind of episode picker or start playing immediately. Just so I can visualize I guess these would be indicated by some kind of controls ribbon that appears below the movie grid - or possibly on the movies themselves?
Quote:
engineer wrote:
Currently, we implement this behavior by making movie selections open a details page. Within this page, you can start playback (which includes playback controls) or open an episode selector, among other things. Just to make sure its clear, you don't need to implement that; rather, those questions are meant to give you a hint of what types of things you might be asked about after submitting your solution.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 02:53 PM
Quote:
Originally Posted by jjshabado
If I ask someone to describe/build a data pipeline I expect a senior engineer to cover how failures/retries are handled - even if I don't mention it.
What specific quality does this screen for?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 03:00 PM
The ability to build **** without me having to teach every important concept out there. The ability to be hired and quickly take the lead on important projects.

It also shows how seriously I should take their stated experience. Someone claiming to have done significant work on production data pipelines that doesn't address these things at all is probably exaggerating.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 03:08 PM
Quote:
Originally Posted by suzzer99
So yeah, they gave me a very specific SPA exercise when I never once billed myself as being a super-expert in that. I do have extensive experience developing and designing a Sencha mobile SPA site for our company. It's just been a couple years since I worked on it.
I think it's impressive you shmoozed your way deep into the interview process for a senior front end dev position at an elite company despite not knowing jquery. Well done imo.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 03:22 PM
Quote:
Originally Posted by jjshabado

It also shows how seriously I should take their stated experience. Someone claiming to have done significant work on production data pipelines that doesn't address these things at all is probably exaggerating.
what's a production data pipeline?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
04-29-2015 , 03:23 PM
Quote:
Originally Posted by jjshabado
The ability to build **** without me having to teach every important concept out there. The ability to be hired and quickly take the lead on important projects.
I just googled "how to build a data pipeline" and the first hit (from slide share, apparently banned here) doesn't mention any retries or failures. You think the author doesn't have the ability to build **** without you having to teach every important concept?

Quote:
It also shows how seriously I should take their stated experience. Someone claiming to have done significant work on production data pipelines that doesn't address these things at all is probably exaggerating.
But production data pipelines address a lot more things than can be quickly recalled and summarized in an interview. I'm comfortable saying that even though I don't even know exactly what you mean by a data pipeline. It's very easy for me to imagine some engineer asking you a similar question, you come up with a very good answer, but the interviewer going, but in a production data pipeline, you'd also have to think about x, y, and z, how come you didn't mention that, you need me to hold your hands or something?

Why not ask an actual technical question that tests their knowledge, not mere ability to mention something without you bringing it up? That way, you can actually test their ability to understand and apply concepts, not merely recall them.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

      
m