Sunday, January 5, 2014

Code school hatesplosion.

First off, little introduction into what is what. "Code School" is a nice web site that provides you with video lectures and auto-validated test problems on several IT subjects regarding web-development. They have free "take-a-tour" courses and the rest of their content is available for subscription fee.

I must say, while their topics are by no means comprehensive and "full in-depth" analysis, they do provide their clients with good foundation on basics of things like HTML, Javascript and CSS.

Now, few weeks ago I joined the club and became a member of "Code School", eager to get me some of that sweet knowledge. I obtained several great new insights into nature of technologies behind WWW, and enjoyed most of the courses, but some other courses they provide were... not so well composed. :(

There was one so BAD in particular, I exploded into a raging rant after I finally managed to finish it. Naturally, the "Code School" team did not post my review, heheheh. Their entrepreneurial prowess vastly exceeds their integrity, it seems.



Now, the piece itself for those of you who enjoy a good flaming (I kept original submitted syntax for historical sakes). Oh, btw the course in discussion is JS road trip part 3.

Of all the courses I've seen so far on Code School, this one is definitely THE shittiest one.

It collects all the annoying bits of previous courses, and then unloads on top of them some of its own distinct 'flavour'.

Let have a looksy then, shall we?

First off, I must say I am not phased with general quirkiness of the teaching material. I can do fine with promises of "Javascript right up my alley" (!?) in the jingle or the host 'woohoo'-ing a ton during levels 2-3. Some minor typos now and then are also understandable. Its OK.

What is not OK is to put your students through cruel game of guessing you call 'challenges'. This shit is all kinds of irritating. I made a fucking list for you.

1. The interactive syntax checker. Oh this little annoying bleeding red twat! Not only does it pop up and moves your code around as you edit it, the nasty thing steals input focus for a split second. So if you try to paste some string literal, typing ["] [Ctrl-V] ["] in fast sequence, the closing quote gets eaten. And surely the ass-hat will immediately complain how it is "missing", the jerk.

2. On top of that, since it is popping midway line editing (yes, you bloody scum, I know the semicolon is missing, I did not finish the line yet! stfu already), sometime if you move your cursor with mouse click you incidentally click the pop-up. I was NOT AMUSED, when I wanted to edit my text with mouse-click and [Backspace], and the checker decided to jump at me that very moment, so I landed my click on the freaking devil's box and consequent [Backspace] sent my browser to the previous page. Yeah, I lost all my input progress for that challenge, of course.

Well, enough of the syntax checker rant. Lets talk about challenges' auto-judge and its many... eccentricities.

3. Single quoted string literals are apparently illegal. What the fuck?

4. So are single-line loop statements. I spend 20 minutes to figure out why is my perfectly good piece of code not accepted. Apparently, the Artificial Idiot requires for(...){} loops to have curly brackets ALWAYS. Even if the looped part consists of a singular statement.

5. In one of the challenges on level 3 my code was not accepted, until I wrapped "+" operator (concatenation) in spaces. It was a particularly big compound string for alert() function, with many variable expressions mixed in. Another 30 minutes of my life spent on looking for 'mistake' that was not there. 

If you think the aforementioned twists are somewhat inconvenient, stay with me, the deeper we go down the rabbit hole,  the thicker craziness gets.

6. A typical challenge requires you to accept certain inputs and name results a certain way, as clearly stated in the challenge text. But what you don't know and can't possibly know until you "buy the answer" is that you absolutely must name your internal intermediate variables exactly as expected of you.

6.1. For example, a variable containing a string result of iteration of some array MUST be named 'list'. If you take a valid answer and rename this internal intermediate variable to something more sensible, say 'rangers_names', your answer won't be accepted.

6.2. Same applies to for( ; ; )  looping variable. It must have a name of single letter. Why? Just to mess with you, that's why. After all, who in the hell would like to name it 'ranger_index' when there are perfectly good names like 'i' or 'j'?

6.3. To add to your suffering, some of the counters later on must have unique predefined names, like 'numToBreed'. Of course it wouldn't be a proper Code School challenge if this was hinted in any way in challenge text. Nope. You got to click through all the hints and buy the answer to figure it out.

But let's assume you are no stranger to suffering and you battled through the early levels and their pesky challenges, losing little bits of your faith in mankind every time you are forced to submit code gems like

  if( ...conditions... ){
    return true;
  }
  return false;

to advance.

Do you think you yourself high? Do you think nothing can put you down now?
BWAHAHAAHahahahaha!
The Code School team is stepped up their game as well!
Welcome to the levels 4 and 5!
On the levels before they tried to beat you by omitting relevant pieces of information. But your apparent psychic abilities force their hand. Gloves off! Now it is time to blatantly lie.

7. Challenge 17 of level 4 asks you to construct a function named 'listSpears'. Little do you know, that you won't progress, unless you name it 'listGuns' instead. What?!

8. Challenge 9 of level 5 asks you to transform your 'genericPost' object to a constructor function, they even provide you with a code for 'genericPost' from the challenge before, how nice. Alas, all your efforts will be in vain, as your code will not validate as correct, for they forgot to mention that 'connectionsTo' property must be renamed to 'connectionTo'. Can you spot the difference right on?

All in all, I am glad this nightmare is over. Badge well earned.

No comments:

Post a Comment