More node.js Observations

I went on a 2nd interview at the startp that was using node.js.  This was a more technical interview.  I was not impressed with node.js.

Here’s an amusing excerpt.

FSK: Have you ever used node.js before this project?
Fool: No.
FSK: Why did you pick node.js?
Fool: It’s the latest trendy thing!

That’s the wrong answer.  “It’s the latest hot trend!” is never a valid reason for choosing a language or framework.

Essentially, he had bet the success or failure of the startup on node.js.  He didn’t see the risk.  “Using the latest trendy thing is never a mistake!”  Unfortunately, I’ve been around the block a few times, and know better.

He had the “abused productive” personality type and should have known better than to be fooled by hype.  However, the psychopath-in-training “idea guy” may have emotionally bullied him into using node.js.  It’s extremely pathetic that someone with an MIT CS PhD doesn’t actually write code, because it’s “beneath him”.  If you have a CS PhD, you should be able to make version 1.0 by yourself in a month.  If you can scam other people into paying you to be their “idea guy”, then why not, if you can get away with it.  It’s pathetic that someone would try than and that people are dumb enough to fall for it.

He also pointed out that node.js is unstable.  Some node.js libraries are good and some suck.  You don’t know until you try them.  That’s a big negative.  That’s why you don’t use the latest trendy thing.  There also are a lot of big new node.js language features coming soon.  Why are you using an incomplete language/framework?

He was a former Rails user who upgraded to node.js.  That puts him into the idiot category.  I’m very concerned that node.js gets its users based on hype and not merit.  There are plenty of idiot VCs willing to bankroll stupid things.  If you throw enough money and people at something, you might get it to work, even if it’s a stupid plan.  Just because a lot of people use something, doesn’t prove it doesn’t suck!

There’s also a self-selecting community.  When you have a bunch of people who are dumb enough to chase the latest trend, then the competent people tend to stay away.  The idiots give each other positive feedback and it becomes sustainable, even though it sucks.

He also said “Rails changed a lot since 3 years ago.  It’s a lot better now.”  PHP only has minor changes and enhancements and bugfixes, compared to 3 years ago.  Is that an argument in favor of PHP or Rails?

I see why node.js is attractive to idiots.  At some point, they picked up some javascript, and now want to use javascript for everything.  Once an idiot learns a little about one programming language, they don’t want to bother learning others.

He had been working on the website for a month.  He had two barely-implemented pages.  I could have made something better in one day with PHP/LAMP.  It was pathetic how little he had successfully implemented, but I didn’t say that.

There was another hilarious moment.  One page had a bug, and the entire server crashed!  If you use node.js and have an unhandled exception, the entire server crashes!  In PHP, if you have a bug on a page, then only that page fails.

I prefer to have an obvious crash when there’s a bug.  First, that gives 100% definite feedback of the error.  Second, you don’t want the server continuing in an indeterminate state.  If you catch the exception, ignore it, and keep going, then all sorts of crazy stuff can happen.  “The entire server crashes if there’s a bug!” is a huge argument against node.js.

He had a ton of code, for very little actual working website.  That was disappointing.  With node.js, you’re forced to clutter things up with callback functions everywhere.

When you’re writing framework-compliant code, it creates the illusion that you’re working when you’re really just wasting time, due to the cost of your stupid framework/language choice.

I’m mostly convinced that frameworks are only attractive to idiots.  It gives them the illusion of accomplishing things when they’re really wasting time.  On the other hand, a lot of potential employers reject me, because I don’t have experience in the specific framework they’re using.

Here are some buzzwords he was spewing.  Here’s a tip.  If you hear someone religiously citing these things, it’s an indication that they’re cluless.

  • RESTful design
  • “architecture”
  • test driven development
  • model/controller/view

Model/controller/view is a fancy name for an obvious idea.  The problem comes when you start using a framework.  You have to generate framework-compliant code, in addition to your application logic.  No matter what framerwork you use, at some point you have to write the code for your specific application.  When you use a fancy framework, you can spend a lot of time on the framework, without spending time on important things.  For node.js, the callback function style is a huge overhead.  It also leads to a spaghetti mess.

He probably was using the psychopath-in-training “idea guy” as his role model for how an intelligent person should behave.  That’s how intelligent people get converted to the dark side.  I’ve seen evil people pretending to be intelligent.  This is the first time I noticed an intelligent person trying to act evil, because he had picked an evil person as his role model.  He probably was thinking “If only I could be as cool as that useless ‘idea guy’!”  As a gullible intelligent person, he’s easy pickings for psychopaths.  A psychopath would be eager to hire that idiot, to help implement their vision.  He’s nonthreatening to someone who’s faking it.  He’s an intelligent person trying to be a better liar, but he has the wrong personality type and will never be a world-class liar.  I can see that as a lucrative market niche, “intelligent but easily manipulated”, but I’d never do that.

I should have offered a challenge.  “I’ll get more implemented by myself in PHP in a week, than you’ve done in a month of node.js.”  However, he probably would have been offended and refused to hire me, if I said that.

Those people actually seemed less clueless than the other startups I interviewed at.  At least they were paying cash instead of equity-only.  However, using node.js seemed to be stupid.  He might get it to work, but I don’t see it ever being as nice as what I could do in PHP in much less time.  If I were investing my own capital in their startup, I’d be seriously concerned about their ability to build a good website *AND* also their ability to attract customers, even if they did have a working website.

Even if they get something that sort of works, that doesn’t prove that using node.js was a good idea.  There was a very high effort-to-results ratio.

Node.js definitely seems to be about hype, more than substance.  I was not impressed.  However, I’d still take the job, if offered.  I doubt they would hire me, because it was too obvious to me that node.js sucked.  It’s probably a bad idea to work for another doomed startup, so it isn’t much loss.

12 Responses to More node.js Observations

  1. I run my own software business. My first website was hosted on an old desktop computer running FreeBSD and Apache. I’m sure I had that running for a month or so. It was fun installing everything myself. FreeBSD has a sophisticated package management system. It will automatically download, compile and build all dependencies needed for functionality. Eventually I moved to a hosting company as I didn’t have the bandwidth.

    I’m surprised I managed to sell anything at first given my crude first website. Over time my website’s appearance has improved. At the time I had powerful software head-and-shoulders above anything else and I suppose my crude website didn’t put people off.

    A few years ago I went for an interview at a start-up company funded entirely by venture capital. In fact it was run by two ex-bankers. Obviously their idea never caught on or I would have heard of them by now. But when I saw them they had been going for months and months and they still didn’t have their website running yet. They had about 2 contract employees and they had contracted the development of their style sheet to an external company. When I turned up for the interview they were saying they couldn’t get the style sheet to work with the website their contract employee had produced.

    I suppose they were a bunch of idiots. I’m just one person and I managed to get a website up and running installing everything from scratch in the beginning.

    • Amusingly, they posted another job ad immediately after the interview. It read almost exactly like a transcript of the intreview. For example, they added “Must have experience with test-driven development.”, after I said that it seemed like a waste of time.

      I try to be impartial. Are you saying that I’m acting stuck-up? Well, these people were somewhat clueless and their startup is probably doomed.

      I try to be polite. Anyway, it’s pointless to waste time with fools. Disappointingly, almost all interviewers seem clueless!

      • It did seem a little stuck up. Our job as developers is also to work well with clients and other people even if they do suck. I agree walking away was best, but also perhaps learning to work with them and convince them would be better. The PHP in a week for example was good but who wants to work for free for a week.

        • I disagree with “work with clients, no matter how much they suck”. Picking non-sucky clients is important.

          It isn’t an absolute communist dictatorship. If prospective employers seem clueless or douchebags, then I can turn them down.

          I’ve learned the hard way. If you work for scum and clueless people, it’s a lot of headache. It you work for honest and intelligent people, it’s much easier.

          Here’s an example. At my last job, I made a small mistake. My boss said “That’s OK, FSK. Fix it and recalculate the results.” At my job before that, my boss would say “OMFG!!! That proves that FSK is completely unqualified, because he made a small error!” He had already decided that he wanted to fire me, and was looking for excuses. It’s not worth it, to work for scum and idiots. Obviously, if you’re doing anything nontrivial, you will occasionally make small errors.

          Certainly, if they said “FSK, we’ll pay you $500/hr!”, I’d probably do almost anything. For the salary scale I’m in, there’s no reason for me to work for evil abusive people or clueless people. Clueless people tend to also be abusive, or have abusive partners.

          I’m a huge bargain for my market value. I’m at the top end of the ability scale, with productivity 10x or 100x higher than most. Most people would rather have someone clueless that they could push around. Idiots actually select against highly skilled people, because they had bad experiences working with intelligent people in the past, when intelligent people questioned their stupid ideas.

          A lot of the frameworks and methodologies are set up to maximize productivity from mediocre people.

          Even my sister thought that “test driven development” was stupid. Why would you write the tests before writing the website? The idiot has the illusion that he’s working, when he’s writing a bunch of tests.

          Another example is the stupid programming tests. I do them anyway, but it’s usually a waste of time. It reflects poorly on the prospective employer, when they give me a stupid test.

          Another example is clueless headhunters. If the client is using a stupid headhunter, that reflects poorly on the client.

          I did go on some good interviews. There was the interview where it was three people simultaneously rather than separately. They gave me a favorable impression, but no offer yet. I also went on a decent interview at a large financial corporation. They would be my #2 choice of the places I’ve interviewed this cycle.

          Annoyingly, most prospective employers reject you by failing to ever get back to you. An explicit rejection is rare. I keep sending out resumes until I get a decent offer.

          Surprisingly, the startups tend to be more sleazy than the large financial institutions! You would think that startups would be based on merit. In my experience, it’s clueless people and scumbags with VC connections.

          All you can do is go on lots of interviews, and hope you find someone with a clue. It’s hard, because there tends to be an evil person on every hiring committee.

          Ironically, unemployment insurance gives me an incentive to be picky. If a job is part-time or for much less than my former salary, I shouldn’t consider it, because I’d be giving up the unemployment benefit.

          In this specific case, the startup seems doomed. They had a mediocre idea, but might make it work with a brilliant website. Unfortunately, the nontechnical cofounders partnered with the wrong people. The useless “idea guy” MIT PhD is a huge productivity drain. The guy who decided to bet the startup on node.js had produced nothing in a month of work.

          I wouldn’t do it for free for a week. If they do make me an offer, I’ll suggest giving me a chance to do a PHP version for a week or two. If I succeeded at that, then the other cofounders might seriously consider dumping their current CTO and going with me. Therefore, he will advise against hiring me, because I’d be a better CTO than him. I don’t expect an offer from them. I’ll look at their website in a year or two. They should have failed by then.

          • “Even my sister thought that “test driven development” was stupid. Why would you write the tests before writing the website? The idiot has the illusion that he’s working, when he’s writing a bunch of tests.”

            Dude, you have no idea what are you talking about… have you ever try to really read about TDD and the concepts? Do you ever worked on any bigger not-trivial project within a big team and had to support your product for longer period of time?

          • Test driven development and excessive automated tests are a waste of resources. The coworkers at my current job have me wondering sometimes. They can barely implement anything without breaking something else on the site. I’m there 2 days a week, and I look at every page each time. They break more things than get new things finished. I can see how, if you’re clueless, automated testing can avoid some problems, but then you’re doomed anyway.

          • “They can barely implement anything without breaking something else on the site”

            HOW is it possible if they have tests? I really do not understand how you can even see they had something broken…
            Unless, you have no CI on place and people commit all shit they just have on their EOD not running any tests prior to that. This is really bad practice and terrible teamwork – to spoil work of the other teammates. I would either made a revolution in such ‘project’ or just change the job.

            Also, I don’t understand what you mean by ‘excessive tests’. Writing good tests is not trivial problem. If you’re feeling these tests they/you write are ‘excessive’ – maybe they are not testing anything important? The idea is to have a good ‘test harness’ to protect existing functionality from breaking in case of e.g. refactoring. This is critical for long-term projects for and big teams. This stuff really saves lots of time and effort (money!) in longer scope.

          • Actually, there are no tests. It’s just me clicking around and noticing that stuff that worked a week ago is now broken. I gave up reporting bugs. About 10% of the time, the site fails completely on page load.

            They don’t even unit test, i.e. “Test that the thing I just wrote works.” or “Test that the thing I just wrote didn’t break anything on the same page.”

            Given their gross incompetence, I see how a lot of automated tests would reduce the risk of them tripping over their own drool. However, if it’s that bad, it’s hopeless anyway. I don’t see them allocating a lot of time for automated tests when they’re already ridiculously behind schedule.

            They are making a lot of other mistakes. They are using angular.js, which I now see is a turd like Ruby on Rails, but that’s the subject for another post. Based on my experience and personal productivity, finishing one “screen” every 3 days is a reasonable rate of progress if I was working solo using my choice of tools. They’re doing one “screen” every two weeks, and they have a 4 person team.

            I’m just working there, and I’m not the CTO. So I’m watching the disaster, but powerless to do anything about it. My part of the project works. I’m doing financial calculations in plain Javascript (nothing fancy). They’re working on the rest of the site.

            Calculations that I know would take less than a millisecond in C are taking 1000-2000 milliseconds in Javascript, even in Chrome/V8. That’s why I question why anyone would want to use Javascript as a server-side language. Even worse, I rewrote fragments of the other programmers’ code (still in Javascript, same language as them), and got a 30x-100x performance improvement. I haven’t looked at much, but I am concerned.

            Actually, the CTO is above-average compared to the others I’ve worked with, but he’s totally architected/designed them into a corner. The rank-and-file workers are competent, but horribly mismanaged. As usual, the CTO is deflecting the blame to the subordinates (other than me), even though he caused it with his bad decisions. Naturally, the CTO can’t admit he made a mistake and that things are headed in the wrong direction.

            They have an MVP (more of an MVPOS) that sort of works, but is slow and buggy. For a startup like theirs to succeed, they need a great product, but their actual website is mediocre and barely functional. They actually have a business plan that I don’t laugh at when they explain it, but they’d need a great website and to do a great job recruiting customers, to succeed. Right now, I see them blowing through their funding and then failing.

            I’ve been slacking on my posting recently. I should finish off my “Angular.js Sucks!” post so it can start a flamewar like the node.js posts. I learned jQuery recently, and like it. I don’t see how angular.js is an improvement. Like Ruby on Rails, angular.js adds a lot of overhead, as you write framework-compliant code in addition to your actual business logic. They’re using Git, so I’m also working on a “Git Sucks!” draft. I’ve had enough with detached head state, rebasing, and refloging.

            “Find a new job!” isn’t as easy as it sounds. I already decided to start actively looking, but there probably won’t be any progress until January.

  2. Your angry rant seems to have little to do with Node and more to do with disliking other programmers / business people. Are you sure that you aren’t the sociopath? Sounds like you have trouble understanding the actions / emotions of others.

    • No, Philipp Dunkel is real. Such clueless evil people are typical of node.js and Ruby on Rails supporters. (He actually looks like the Rails advocate from that old job. He also uses a Mac, which is another strike against him.)

      That is pretty funny. Philipp Dunkel was so obviously evil that someone thought I made him up to discredit the people promoting node.js.

      This is exactly the personality opposite I was talking about, “abused productive” vs. psychopath. I claim that Philipp Dunkel is a psychopath and he claims I’m evil. An evil person can go very far in a world where everyone is insane. The evil people get the illusion that they’re a genius, when they’re really criminally insane like Bernard Madoff.

      I found the thread where they were discussing this post.

      The title “realfreemarket spewing node.js hate” was amusing. I wrote two posts on the subject. This post is already more than a month old. I’ve moved on to other things, but a good flamewar is always amusimg. My current ASP.NET and VB.NET experience should be worth more than the node.js experience would have been, especially if I don’t want to work for idiots. Maybe my current employer will really appreciate me and I’ll be their awhile.

      Yes, I do have a new job. Yes, they are getting good value. Here’s something that happened today. They had the indexes on their database set up wrong. I explained it to them and now their website isn’t slow.

      They had a bad experience hiring someone clueless like the node.js advocates. They nearly wrecked the company. So, they are appreciating someone competent.

      Back to node.js, it’s nothing but name calling.

      FSK: Using node.js is a bad idea and here’s why …
      Philipp: FSK is an idiot.
      FSK: You’re an idiot.

      There is no meeting of the minds. It’s just a name-calling contest.

      I do have specific criticisms of node.js, which nobody ever answered.

      In these days of multi-core servers, why would anyone make a single-threaded-only server? You can spawn child processes with node.js, but then you lose the benefits of node.js in the first place. Why would I manually manage child processes and threads, when the OS can do it for me?

      Someone said “Node.js has a package manager! Therefore it’s awesome!” A package manager isn’t anything special. I’ve used CPAN (Perl), apt-get (ubuntu). I haven’t used PEAR (PHP) or the one for Rails. Also, many node.js packages aren’t that good, because it’s all new.

      Callback functions lead to an ugly mess, if you’re doing anything nontrivial.

      I’d rather let the OS handle scheduling for me, rather than do it all myself in my code.

      In node.js, you have to use self=this, to preserve the current class for when the callback is called. That’s a mess.

      In node.js, if you have a bug anywhere, the entire server crashes.

      Node.js might work for small simple services. It would be a disaster for anything complicated.

      I did look at the node.js documentation. It wasn’t very helpful. It was very similar to the Rails documentation.

      Some people said “We’re at a funded startup and FSK isn’t. Therefore, FSK sucks.” There are plenty of VCs willing to fund something stupid. Chasing hype actually helps get VC money. If you say “We’re using ASP.NET!”, then the VC will say “Boring! Next!” If you say “We’re using node.js! It’s the hot trendy thing!” then the VC will say “How much money do you want?!”

      Philipp Dunkel’s website sucked. I tried to paste it into Google Translate, but Google Translate chocked on his node.js port redirecting.

      I don’t waste time trolling node.js or Rails discussion groups and tell them they’re wasting there time. Why are you wasting time posting here and calling me names? If I’m such an idiot loser, then how pathetic does that make you for wasting time posting here?

      If you genuinely have something good, it doesn’t matter if people criticize it. If you called my employer and pointed out that they should fire me, they would laugh at you.

      If you’re running a con, you don’t want anyone criticizing you at all. You don’t want anyone saying anything negative, because that ruins your scam.

      If I say “The emperor is naked!”, you respond “FSK has a vision problem!” At this point, it’s just a name-calling contest. There’s no further progress to be made.

      Fact is, this post is now #2 in Google for “node.js sucks”! That’s quite an accomplishment. I hope I help a few other intelligent people avoid wasting their time.

      In another comment, someone said that he decided against learning node.js, after I pointed out the flaws. I helped someone, even if everyone else who reads this post is offended.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>