How should I pick a web application software engineer?

The (permanent) position is to rewrite the client of an existing desktop client server application. The pages will not be generated dynamically on a server, but the server will expose a full API in whatever way is needed, for example JSON RPC calls, and can make static files available. It will replace a client that people have to download and install, so requiring a decent browser with reasonable settings (e.g. JavaScript enabled) is fine. Almost all use cases are for a desktop P.C. It will not be accessible to search engines (it is an enterprise application).

We can go so far as to write the whole thing in a single page, but don't have to. It would pretty much all be written by the web application software engineer in question. The exact open source libraries to use is also up to the engineer, within reason.

I'm specifically looking for advice on what qualifications to look for/verify in an interview, since picking a web application software engineer in general is just too broad a topic.

Edit - The position would be purely in-browser JavaScript programming (and be responsible for HTML and CSS) - other developers would develop the server but this position could request facades over the API. There is no Ruby, ASP, JSP, etc. because the web server layer is very thin and just translates calls to the business layer API and returns them as JSON (or whatever, but JSON seems easiest).

  • FYI - This is not a duplicate of programmers.stackexchange.com/questions/105114/…, which was fairly specific to e-commerce sites and was more specifically asking if the key question should be: "Have you by yourself, or with one or two partners, ever brought a product to market? I don't care if it succeeded or failed, but tell me about it." – psr Sep 2 '11 at 21:48
  • I fixed the title in the question you linked, as the question being asked is quite specific. Unfortunately, this one isn't. From the faq: Your questions should be reasonably scoped. If you can imagine an entire book that answers your question, you’re asking too much. – Robert Harvey Sep 2 '11 at 21:58
  • If I limit it to this case is it then not generally useful? – psr Sep 2 '11 at 22:03
  • What is your most pressing concern? I can give you generalizations, like don't be overly concerned about what TLA's the person has on their CV. Based on the position you described, they need to be a problem solver, and a bit of a jack-of-all-trades who understands more than just building CRUD apps. If they have these qualities, they can handle the technology-specific problems you throw at them. It also depends on whether this is an ongoing, full-time position or a temporary contract. – Robert Harvey Sep 2 '11 at 22:06
  • Really, how to hire a web application software engineer. Specifically, I suppose what qualifications to look for/test in interview – psr Sep 2 '11 at 22:09

As a web developer who mainly works on enterprise apps dealing with legacy systems, I can offer a few suggestions as to what makes me successful, and hopefully that will help.

I'm not sure whether you're looking for a temporary/consultancy situation to provide you with one app, or an FTE to develop and maintain this long-term, but these should apply in either case, I think.

  • I primarily use Ruby. This makes rapid prototyping very fast and easy, and Rails makes it simple to bootstrap a new project. Now, I don't know what your environment is like, whether you have institutional mandates re languages, platforms, tooling, but if you can hire a developer who is proficient in a modern, flexible language/framework that makes writing DSL's to deal with foreign API's relatively quick and easy, that's a plus. Basically, any of the languages with the Lisp-nature will be superior in this regard. Also, hiring someone proficient in a language with good ecosystem of open-source libraries to deal with common abstractions is a must.
  • If you can find someone used to dealing with legacy systems and abstracting their idiosyncrasies, that's rare and you should explore it. Most devs are used to building projects from the ground up (or getting brought in to maintain existing projects) and building something new to interface with something old takes a certain... not skill set, per se, but approach.
  • When you say "the server will expose an API in whatever way is needed," that's rather vague, but I'm guessing you mean there are existing developers who can implement the API on the server? I would make it clear that the position will involve working with those developers to specify the API. If you can give an example of the type of interaction required, and ask the candidate their initial thoughts about how to implement it, that might be telling. I think the fact that your initial thought was JSON RPC shows you are leaning in the right direction, so watch out for anyone who has visions of complex XML and XSLT interactions.
  • If you can expect decent browser JavaScript support, look for someone experienced with JS frameworks like Backbone.js, JavaScriptMVC, etc. You could in that case do the entire app (basically) in-browser and maybe serve it with Node.js or something... so look toward good JS devs. If they say they prefer to write their JS in CoffeeScript, they're probably even better JS devs.

Just some thoughts from my experience in the trenches, but if my department were hiring a new developer, this is what I would tell them to look for.

I wish my department had the budget for another developer...

| improve this answer | |
  • The server exists and other developers (than the new developer) will make the API happen. Won't touch legacy system or be responsible for idiosyncrasies - others will do that, though this developer could ask for specific facade. No ruby, because no dynamically generated pages - and this developer would be pure in-browser JavaScript coding (responsible for HTML and CSS as well). If we do not ultimately hire another developer I will actually do it myself in Backbone.js using JSON RPC, so thanks for a little validation. – psr Sep 2 '11 at 22:18

Note: This is simply my opinion, so don't throw the kitchen sink at me ;)

I think you're munging the names of two distinctly different positions (which can be a little confusing).

Software Engineer: An engineer. One who is strong at solving abstract problems that aren't necessarily tied to any specific platform. Strong knowledge of design patterns, algorithms (both known algorithms as well as algorithm design and analysis), some strength in linear algebra and maybe some calculus. When hiring a software engineer in the past, I haven't been as worried about their specific domain knowledge as their ability to solve complex problems.

Web Application Developer: Someone who knows the ins and outs of building web applications. Understands server vs client-side architectures and how to effectively communicate between the two. Is familiar with W3C standards, both completed and WIP states. Understands how databases work and how to optimize when necessary (query optimization, database caching, indexing, etc). Also understand different mechanisms of caching and other ways to optimize their applications. Also understands semantic conventions.

There are probably a few things there that I'm missing that I might fill in as I think about 'em.

From the description of what you're looking for, it sounds to me like you're not looking for a software engineer at all; you're looking for a web application developer.

So, first thing I would do is narrow down who you're looking for and what expertise you're expecting from a candidate. Might help you quite a bit.

| improve this answer | |
  • See programmers.stackexchange.com/questions/45681/… - writing a job requirement for a web application developer. That's where the name is from. I want a web application developer to work purely on the browser end of things (as I already stated). So no DB stuff is relevant. Software Engineering skills would be. – psr Sep 3 '11 at 1:06
  • Really? You'd want someone working on a web system that doesn't understand database and server-side stuff?? Eesh. – Demian Brecht Sep 3 '11 at 1:11
  • Not to mention.. It's not too often that a client-side web app developer is going to need to know this like how to traverse a tree breadth first, or how to determine what the worst case running time is for a given algorithm or implement a cryptosystem. Just saying. Having said that, if you're hiring for Google or Amazon, I may retract that remark. – Demian Brecht Sep 3 '11 at 7:27

Not the answer you're looking for? Browse other questions tagged or ask your own question.