views:

126

answers:

3

This is a followup question to the Pro JavaScript programmer interview questions (with answers).

What is considered professional and industrial standard for a professional browser side Java Script developer when it comes to his workshop configuration, and maybe from-concept-to-shipment process?

What are the most popular IDE's, utilities and probably libraries, not limited to the free ones. These that can help cut development time (eg. IDE), help with achieve better quality (eg. unit testing tools), reliability and maintainability.

I'm looking for a baseline to which I could compare potential candidates based on their ability to keep their tools sharp and workshop efficient (pro's should invest time&money in good tools, right?).

A: 

i've been doing pretty heavy JS development for a the last year and a bit and there's a frightening lack of good tools for js. particularly on the IDE front.

I was using Spket, but it broke when upgrading to vista and is unusable. the very idea of code-completion in the js world is out the window unless you want to get into eclipse based IDE's which I don't.

as for the baseline you're discussing. the baseline you're concerned with is code quality. tools are just that. they increase/decrease productivity but a developer with all the best tools and no experience will still write poorly.

ruzz
A: 

I don't know "what is considered professional and industrial standard" but I use Aptana Studio 2 for an IDE for JavaScript, CSS and JSP/HTML. It's not perfect - navigation to highlighted objects could be better, for example - but it's robust and predictable and because its based on eclipse it feels 'right' to me.

For javascript/animation libraries I use prototype.js and scriptaculous because they are cleanly coded and (to my mind) intuitive. Others use JQuery and mootools and are very happy with those choices too - so any of those 3 will work.

plodder
Do you use some minifing tools? Debugger? Unit testing?
WooYek
firebug / webkit developer tools / IE developer tools for debugging, YUI for minifying, YUI for unit tests + homegrown unit test jsps for visual testing
plodder
+3  A: 

Libraries/Frameworks

What libraries people use is very much a matter of preference. I was very fond of Prototype back in the day, but have made the switch, as so many others, to jQuery, since that seemed to be what was most desired by employers.

If you've got a project up and running that is based on some javascript framework, you want to make sure that the person you're hiring is proficient in that particular framework, regardless of whether or not it is "the best one" for the task, because you do not generally want to mix several javascript frameworks. If, on the other hand, you're a startup, you're more at liberty to go with whatever library your developer prefers.

Judging developer skill by library preference would be a real challenge. On one hand, jQuery is quite the new library on the block, so an impressive jQuery proficiency would be a sign that the developer has had the will and ability to quickly adapt to a new framework. On the other hand, jQuery is very easy to get started with, so a basic level understanding of jQuery doesn't really mean anything, and I've seen a lot of people who can use jQuery, but with no real understanding on how plain javascript works. I would really advise against drawing conclusions based on library preference.

IDE

As others have pointed out, it's hard to find an excellent javascript IDE. I'm from the .NET world so Visual Studio is the obvious IDE choice for me, since it's really well adapted to .NET programming needs. You'll find that a lot of really good javascript developers are not only javascript developers, and as such, their choice of IDE might not be based purely on what's good to write javascript in.

For what it's worth, Visual Studio 2010 has some real innovative intellisense for javascript. It has native intellisense for jQuery, and it also understands dynamically created variables (if you write for(var i = 0; i < 10; i++) window['myVar'+i] = i;, and later in your code starts typing myV..., intellisense will pop up suggestions myVar1, myVar2, etc...). VS2010 is only a release candidate, though, and Visual Studio 2008, which is the latest final release is terrible when it comes to javascript.

I would see a developer running release candidates as something positive, though =)

Tools

It cannot be stressed enough how much javascript development is facilitated by Firebug for Firefox. I definitely think that the developer should mention Firebug or Chrome developer tools, for debugging purposes.

Another tool it'd be great if the developer used would be PageSpeed for Firefox, which is an excellent way of inspecting what javascript functions can be deferred until after page load, for instance. This one definitely isn't a deal breaker, though.

I think the developer should be able to explain what JS Lint is, although there's no need for a proficient javascript developer to use it in everyday development, so it's not alarming if the tool isn't mentioned; it's just a good thing if the interviewee can explain what it is, if you actively ask about it.

As for minifying, I don't think that this should be a task that js developers should have to worry about. Minifying and script combining should be an automated deployment task, or an on the fly serverside task.

David Hedlund
Thx for the insights :). In regard of deployment (eg. minifying), I consider such tasks as a developer tasks. I once read that: "Developers are paid to ship not to program" - I 100% agree. Because of that I would like to hire someone that understands all the implications of his work, up to deployment, and even further into solution life cycle (optimization, maintenance and solution retirement).
WooYek
@WooYek: I'll agree that it's a developer's task, but I wouldn't say that it's the plain-js-developer's task, as an efficient implementation of this will not require writing any javascript code. If you want an all-round-developer to write serverside code as well as clientside code, javascript should probably be peripheral at least to choice of IDE. The js-centricity of the questions lead me to believe that you were looking for an isolated JS dev role.
David Hedlund