Open Side Menu Go to the Top
Register
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** ** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

12-25-2014 , 02:00 AM
Quote:
Originally Posted by suzzer99
Btw we've had two more prospective JavaScript devs miserably fail the easy part of the sudoku (as we call it) exercise: Create an object that represents an n*n grid, with each cell containing a random integer from 1 to n*n. The second part involves rendering it in angular.

Like they couldn't even build the grid, much less populate it with random integers. One guy made 2 1d arrays (which he called vertArray and horizArray) and was putting random numbers in each. The other guy I gave it to as a homework assignment and he came back with some giant object with a bunch of methods that is such a weird misinterpretation I have no idea what he was even thinking. He had nothing random anywhere in it, nor did he ever build a grid.

It's a seller's market out there. If any of the crack JS/CSS devs it are in LA (or you know any), and looking for a job - let me know.
I can't think of the last time I heard someone say "JS dev" that didn't include some sideways remark about "some kid who started programming 3 months before getting the job." Probably because I never heard it.

I was under the impression that Angular is "bloated." Considering it doesn't have a built in function called yoGoogleAngularMakeMeAnNxNSizedSodukuPuzzleGridPre filledWithRandomNumbersFronNToNasNsizeOFMySodukuPu zzle(n) makes me think HN is selling a fish.

In all seriousness, what is your thoughts on Angular 2.0. Are you guys going to go for broke and upgrade when it gets here?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 02:08 AM
Quote:
Originally Posted by suzzer99
I mostly agree with this. But I will say it's nice to see schools at least try to teach code formatting. No developer worth a crap has messy code (that I've ever met).

Sometimes we get offshore developer code with all kinds of random extra blank lines and it's pretty ugly. If I put two blank lines it's rare and for a reason - to separate logical blocks. Never 3.
fwiw i have no problem with style guidelines. it's the idea that it's "wrong," and not framing that wrongness properly in the hierarchy of Things That Are Important that I object to. If the professor made it known policy at the beginning of class that we adhere to style X, and sorry, i know it's nitpicky, but you will lose points for not following style X, and hey, style is trivial to get right, you can even set up a ctrl-I hotkey to do it for you, but it still matters, like spelling in an essay and using spell correction -- that would all be cool with me. i gather from alobar's post that's now how it went down.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 04:56 AM
Quote:
Originally Posted by suzzer99
Btw we've had two more prospective JavaScript devs miserably fail the easy part of the sudoku (as we call it) exercise: Create an object that represents an n*n grid, with each cell containing a random integer from 1 to n*n. The second part involves rendering it in angular.

Like they couldn't even build the grid, much less populate it with random integers. One guy made 2 1d arrays (which he called vertArray and horizArray) and was putting random numbers in each. The other guy I gave it to as a homework assignment and he came back with some giant object with a bunch of methods that is such a weird misinterpretation I have no idea what he was even thinking. He had nothing random anywhere in it, nor did he ever build a grid.

It's a seller's market out there. If any of the crack JS/CSS devs it are in LA (or you know any), and looking for a job - let me know.
I would fail this on the spot too. While reading my only thought was.. wtf is an n*n grid? My second thought was.. wtf does that have to do with js/angular?

I had to google it. If your candidates had the opportunity to do that, there's obviously no reason they should fail.

After years of JS/CSS/UI/UX my brain works backwards. If you could reverse the order of the tasks (UI first**, data second), I think more people would understand what you're looking for.

I'd assume that this is a pretty common "problem" with front end web guys.

**this alone would weed out a decent amount of people
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 09:37 AM
suzzer, have you thought about adjusting your test to be more "real life" for a front end dev? Such as: Loop over this data that you receive from an API end point and then display it evenly over 2 columns.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 01:45 PM
like they couldn't populate an array with arrays inside of it, offline/not whiteboard? Did they get as far as Math.random and Math.floor?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 02:01 PM
Quote:
Originally Posted by txpstwx
I would fail this on the spot too. While reading my only thought was.. wtf is an n*n grid? My second thought was.. wtf does that have to do with js/angular?

I had to google it. If your candidates had the opportunity to do that, there's obviously no reason they should fail.

After years of JS/CSS/UI/UX my brain works backwards. If you could reverse the order of the tasks (UI first**, data second), I think more people would understand what you're looking for.

I'd assume that this is a pretty common "problem" with front end web guys.

**this alone would weed out a decent amount of people
Well we give them a little more help I guess. I know the in-class guys understand the problem as we draw it on a whiteboard or they draw it based on our description. But the homework guy obviously didn't get it from my description.

So there's always a more detailed description. No one ever gets just the print description I gave above. But really "n*n grid" is that confusing?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 02:10 PM
Quote:
Originally Posted by Shoe Lace
suzzer, have you thought about adjusting your test to be more "real life" for a front end dev? Such as: Loop over this data that you receive from an API end point and then display it evenly over 2 columns.
That's basically the second half of the problem. The first is to create the object instead of just have it fed from an API. We want to make sure they have good abstract thinking skills and can solve problems they don't immediately recognize as familiar.

But the funny thing is we had no idea just the object creation alone would be his hard for some. Our CSS guy threw in a hard wrinkle with the unique integer part. But guys are failing even before that. How hard is it to know to create an n*n 2d array or an array of arrays? (functionally the same thing)

We've had 3 guys solve the whole thing so far. Hired 2 of them and they've been awesome developers. The 3rd failed his drug test.

And by "solve" I mean just create the grid object using nested for loops, then populate the cells Math.random and some way to keep track of the integers already used. No one has come close to the elegant solution gaming_mouse and some others came up with itt. http://forumserver.twoplustwo.com/19...l#post42311445

Last edited by suzzer99; 12-25-2014 at 02:17 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 02:31 PM
Quote:
Originally Posted by Grue
like they couldn't populate an array with arrays inside of it, offline/not whiteboard? Did they get as far as Math.random and Math.floor?
They get a whiteboard and we make sure they draw out the correct problem.

The in-person guy did get Math.random. The homework guy didn't. But like I said he really misinterpreted the exercise. I'm going to give him another chance but I'm still waiting to hear back from the other guys who interviewed him to see if we're even interested. I'm not going to make him do more work for no reason.

But again, think about what the in-person guy was doing. He created two arrays at the top of the code block - "horizArray" and "vertArray" and was populating each with random numbers. One inside a for loop, and the other inside a nested for loop. So he's populating one 1d horizArray and re-populating the same vertArray n times. I don't care how badly you misinterpret the problem, that's some really muddled thinking.

And this guy came highly recommended by another developer - as a JS-wiz (o_O) w/o much CSS . Maybe he's a great programmer working with frameworks and staying "inside the box". But we have an endless supply of infosys devs who can do that.


Here's the homework guy's misinterpretation of the problem. I have no idea what's going on here (I know he comes from a Java background, which isn't necessarily a bad thing):

Code:
/**
	Mutable sqaure type, contains only inuque elements. 
	Depending on the usecases type could be implemented as 
	immutable by removing add methods.
**/
var  UniqueSquare = function(n) {
	//Original idea was to use set (JS object), however it has the same issues 
	//specifying unique order, so decided to go with an array (which maintains order,
	// but is private) and adding public methods to guarantee data consistency (data is unique).
	// It's also easier to use the result (getSquare) in UI templates 
	//(probably AngularJS as well).
	var elements = [];
	var contains = function(element) {
		return ~elements.indexOf(element);	
	};

	return {
		add: function(element) {
			if (elements.length < n*n && !contains(element)) {
				elements.push(element);
			} else {
				// In case it's critical to ensure data is consistent, 
				//depending on use case might be ignored
				if (elements.length >= n*n) {
					throw "OutOfBoundaryException"; 
				}
				if (contains(element)) {
					throw "Element has already been added"; 
				}
			}
		},
		/**
			Adds mutable capabilities (allows to change data), 
			could be overloaded, but's left it for simplicity
		**/
		setByPosition: function(element, position) {
			if (position < n*n && !contains(element)) {
				elements[position] = element;
			} else {
				if (position >= n*n)
					throw "OutOfBoundaryException";
				if (contains(element)) {
					throw "Element has already been added";
				}
			}
		},
		/**
			Adds mutable capabilities (allows to change data), 
			could be overloaded, but's left it for simplicity
		**/
		set: function(element, x, y) {
			this.setByPosition(element, x*n + y);	
		},
		/**
			Read only data to be used by UI templates to display it.
		**/
		getSquare: function() {
			var result = [];
			// result / source data also could be modified to store position (e.g [{value: 0, x: 0, y:1},...])
			// hdepends on the use case (it's always can be easily calculated).
			var data = elements.slice(0);
			while (data.length > 0)
    			result.push(data.splice(0, n));
    		return result;
		}
	};
};


var x = new UniqueSquare(2);
x.add(3);
x.add(2);
x.add(4);
x.add(5);
x.getSquare();
x.set(6,1,1) // if we need to modify the Square
x.getSquare();

Last edited by suzzer99; 12-25-2014 at 02:51 PM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 02:40 PM
Quote:
We've had 3 guys solve the whole thing so far. Hired 2 of them and they've been awesome developers. The 3rd failed his drug test.
Aren't you in California or something? Would figure drug testing was unconstitutional out there.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 02:53 PM
Nope. And this guy was only going to be a contractor through another vendor. And he had a medical marijuana card. Ridiculous.

However, the vendor ended up placing him somewhere else, and he flaked out after a couple months. He was a great dev though - and our work environment is pretty awesome, so he might have liked it with us.

But maybe there is something to this drug testing thing. If nothing else if you can't get your **** together to quit smoking weed for a few weeks when you're looking for a job, that could be a red flag.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 02:56 PM
Maybe this sudoku thing somehow favors visual thinkers over other kinds of thinking. I know I can't make any sense of a 2d array in my mind w/o picturing a visual grid. Also can't think of a visual grid w/o thinking of a 2d array or some kind of ordered collection of collections.

I do know all the really good devs have never had a problem with it.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 03:03 PM
I envision containers that each contain a bunch of things, or containers of containers of containers if you're going a level further.

Actually find that easier when implementing code than thinking about a grid
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 04:06 PM
Im rather new to github and I have a few questions. I want to become a better javascript coder, and the best way is to obviously code more. Now, how do I go about contributing to some projects on github?

Do I attempt to fix issues on some repos? Is their a website or forum I can look at for projects that need help?

Thanks
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 04:21 PM
Think the best way to get started on github is open a repo and start pushing up projects.

Feels really good when a project gets a star.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 04:25 PM
suzzer, I have no idea why someone would discourage you from giving that test. It isn't that difficult. I am surprised that javascript doesn't have a randint() method though.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 04:48 PM
I have a repo with 18 stars and I have no idea how. It is a jquery plugin though..
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 06:27 PM
Quote:
Originally Posted by daveT
Think the best way to get started on github is open a repo and start pushing up projects.

Feels really good when a project gets a star.
So start something from scratch(Just want to be sure..)?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-25-2014 , 08:39 PM
Quote:
Originally Posted by suzzer99
Here's the homework guy's misinterpretation of the problem. I have no idea what's going on here (I know he comes from a Java background, which isn't necessarily a bad thing):
Looks like he flattened out the matrix and made getters/setters to access the element so matrix[2][3] in a 5x5 matrix is at index 2*5+3. In his getSquare method he builds the proper array of arrays and returns it.

I guess he did this to simplify the check for identical elements when using the setter.

Maybe ask him to make a UniqueSquareFillerFactory to go along with it.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-26-2014 , 12:20 AM
[rant]Having devs develop code on a whiteboard is quite different than how the typical dev actually develops code. I am a really sloppy writer so I'd be in trouble if I had to develop code on a whiteboard a lot. I am grateful for workstations and touch typing. I've actually read advice that recommends that devs going to interviews should practice before hand solving programming problems on a whiteboard so they can manage the whiteboard real estate provided well. I think that is actually good advice even though it has nothing to do with your programming abilities. Then we have the issue of the height of the person vs. the height the white board in where it is positioned. For instance if a whiteboard is positioned too high relative to a persons height then that person doesn't get to use all the writing space available. Anyway at the end of the day, using a whiteboard to have a candidate solve a programming problem in real time isn't even necessary it is just lazy.[/rant]
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-26-2014 , 07:51 AM
Hopefully employers start feeling the same way. I know my first instinct when asked to start designing a program or writing code on the spot is to immediately freeze up and forget how to do anything at all.

Which is, of course, strictly at odds with the high quality of work I've done over the last few months. But hoops gotta be jumped thru, I guess.

Small aside, hope you've all had some good holidays. Seems as good a time as any other to once again thank everyone here for their contributions, their time and energy, their help and their encouragement.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-26-2014 , 08:02 PM
For my xmas/new years vacation I have set a goal of getting at least loosely familiar with two technologies:
- PhoneGap/Cordova
- Docker (and after watchng a video maybe go into AWS/Elastic Beanstalk and combining the tow etc...seems like a lot of stuff though)

Read up a bit on both, finally have my Android SDK up to date again and after thinking my USB on my phone was broken for a short time (emulators are just lol-slow) but eventually figuring out it was the cable I managed to get the default HelloWorld app to run on my phone. Great success.

Tomorrow I'll actually try to write some sort of app and also work through some docker docs and play with that.

My two nontech goals:
- Flesh out a startup idea I had: Gone through the Lean-* mumbo-jumbo, created a canvas, thought about everything for a bit and am ready to talk to some people and figure out if they really have this problem etc.
- Improve my "design workflow": I only know what I want to do. Buy Balsamiq (Pencil was meh-ish), mockup some stuff for the idea above (click prototypes) eventually and I think I'll go straight to HTML/CSS/JS after that. Would be very interested on any feedback from frontend devs.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-26-2014 , 11:32 PM
Quote:
Originally Posted by daveT
Think the best way to get started on github is open a repo and start pushing up projects.

Feels really good when a project gets a star.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-27-2014 , 12:41 AM
Quote:
Originally Posted by adios
[rant]Having devs develop code on a whiteboard is quite different than how the typical dev actually develops code. I am a really sloppy writer so I'd be in trouble if I had to develop code on a whiteboard a lot. I am grateful for workstations and touch typing. I've actually read advice that recommends that devs going to interviews should practice before hand solving programming problems on a whiteboard so they can manage the whiteboard real estate provided well. I think that is actually good advice even though it has nothing to do with your programming abilities. Then we have the issue of the height of the person vs. the height the white board in where it is positioned. For instance if a whiteboard is positioned too high relative to a persons height then that person doesn't get to use all the writing space available. Anyway at the end of the day, using a whiteboard to have a candidate solve a programming problem in real time isn't even necessary it is just lazy.[/rant]
I'm functionally ******ed when it comes to drawing things or hand-writing legible code that fits within confined spaces. Still I've never had an issue with using a whiteboard during a job interview. We aren't asking them to create a Picasso. More like stick figure and smiley faces.

A whiteboard helps everyone in the room see what's going on in a way that would be confining on a computer screen. We're just as interested in the candidate's thought process and how they reason through a problem as we are in the final outcome. A whiteboard gives us the best window into what's going on inside their head imo.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-27-2014 , 12:46 AM
My biggest goal right now is to get my node framework up on github. I had a breakthrough on my flight as to how I need to break it up to make sense. I was wrestling with it being too specific to our needs. I figured out I need to break it up into two repos--a core framework and an implementation that uses an API back end.

All the framework will do is discover and initialize the components (which registers their routes with express). It doesn't care what any of the properties of the components are (except route(s) and route verb(s)), nor how they get their data.

NOW I JUST NEED TO DO IT AND STOP PROCRASTINATING GODDAMMIT.

$100 to the first person who references this post if I don't have something up on github within a month.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-27-2014 , 04:07 AM
Quote:
Originally Posted by clowntable
For my xmas/new years vacation I have set a goal of getting at least loosely familiar with two technologies:
- PhoneGap/Cordova
- Docker (and after watchng a video maybe go into AWS/Elastic Beanstalk and combining the tow etc...seems like a lot of stuff though)

Read up a bit on both, finally have my Android SDK up to date again and after thinking my USB on my phone was broken for a short time (emulators are just lol-slow) but eventually figuring out it was the cable I managed to get the default HelloWorld app to run on my phone. Great success.

Tomorrow I'll actually try to write some sort of app and also work through some docker docs and play with that.

My two nontech goals:
- Flesh out a startup idea I had: Gone through the Lean-* mumbo-jumbo, created a canvas, thought about everything for a bit and am ready to talk to some people and figure out if they really have this problem etc.
- Improve my "design workflow": I only know what I want to do. Buy Balsamiq (Pencil was meh-ish), mockup some stuff for the idea above (click prototypes) eventually and I think I'll go straight to HTML/CSS/JS after that. Would be very interested on any feedback from frontend devs.
Why are you interested in Phone gap/Cordova? From my limited experience, it's a pain to develop in, and it doesn't match the smoothness of native apps. I've heard Xamarin is much better for cross platform.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote

      
m