About Javascript

Javascript (not to be confused with Java) is a high-level programming language, which is one of the core technologies of the World Wide Web. It has been standardized in the ECMAScript specification, and it is natively supported by all modern web browsers.

Due to the part it plays in web programming, Javascript is one of the most prolific programming languages of all time. But programming for the web is not all it is used for. Over the years, it has also found a place in

  • mobile development with React Native
  • browser extension development for Chrome, Opera, Safari…
  • Apple Dashboard Widgets, Microsoft Gadgets, Yahoo! Widgets, Google Desktop Gadgets…
  • some NoSQL databases like MongoDB
  • PDF files with Adobe Acrobat and Adobe Reader
  • scripting for the Adobe Creative Suite, OpenOffice, LibreOffice, Unity…

And this is not even an exhaustive list.

It is undeniable that Javascript has made a great impact, and it is still on the rise. Github statistics show it to be the language with the most active repositories and total pushes, and with new standards being continuously developed and adopted (ES2015, ES2016, and the currently in-progress ES2017), Javascript is shaping up to be a strong contender for the place of the most versatile language of the future.

So, is Javascript the right thing for you?

The Stack

As mentioned before, Javascript can satisfy virtually all needs of a modern web application. The most commonly known Javascript stack is MEANMongoDB, Express, AngularJS, Node.js —, but there are, of course, many other options.

Our developers are highly proficient in several stack configurations, but the one that is most commonly requested by our clients and which has shown to have great potential and flexibility is:

Back-end — Node.js + Express

Node.js is a Javasript runtime based on Chrome’s V8 Javascript Engine, which brings Javascript from the browser to the server. It is event-driven and non-blocking. Node.js, does not support threads, but can make use of multiple processors by spawning child processes and with its clustering support.

It is most commonly used with Express, which is a fast and efficient routing solution with an incredible number of existing middlewares for just about anything you might ever need to include in your application.

Front-end — React + Redux

React is a Javascript library created by Facebook, which is used for building graphical user interfaces for the web. It takes the place of the V — View — in the common Model-View-Controller pattern, and can work very well combined with the Redux state manager, or even coupled with a front-end framework like AngularJS.

Mobile — React Native

React Native is a way for building full-fledged mobile apps in Javascript. It works on both Android devices and iPhones, and even offers some benefits over platform-native languages, like absence of constant recompiling of code, instant reloading, and hot reloading which includes new code but preserves the current state in the application. While not perfect for applications that require every last atom of device power for maximum performance, like power-hungry games, it is well-suited for most common uses.

Database — MongoDB

MongoDB is a NoSQL database system that uses JSON-like documents with schemas. Javascript can be used in its queries, which, together with the document format, means that it plays very well with any Javascript application. MongoDB can run over multiple servers, as it uses sharding for horizontal load balancing, and has built-in replication systems, which provide automatic fall-back to replicas in case of primary source failure.

Technology

Main differences from other languages

Prototypal inheritance

While the ES2015 standard brought the class keyword to Javascript, these classes are not an implementation of the classical inheritance, but rather just syntactic sugar for Javascript’s actual inheritance model — prototypal inheritance.

Simply put, prototypal inheritance differs from classical inheritance in the sense that while classical inheritance uses “blueprints”, i.e. classes, from which objects are instantiated, in prototypal inheritance, such blueprints do not exists. In Javascript, objects inherit directly from other objects, which thus become prototypes of the former.

This also means that Javascript uses prototype chains instead of extended classes, and that it does not support multiple inheritance at the same hierarchical level of the parent. A very common pattern to achieve most benefits of multiple inheritance while avoiding some pitfalls thereof, however, is concatenative inheritance.

Functional

Javascript is a multi-paradigm language. It can be used to write both Object-Oriented or Functional code. This is possible because functions are 1st class citizens in Javascript, which means they can be used and passed around as any other value could be. This is aided by the concepts of lexical scope and lexical closures, which enable internal function state preservation even after execution of the outer scope(s) finishes.

Asynchronous

Where most other mainstream languages rely on multi-threading, Javascript instead relies on the internal Event-Loop and uses web workers and child processes to make use of multiprocessor systems. This allows Javascript to avoid many common problems arising from bad thread handling without major performance sacrifice. The asynchronicity also prevents IO-blocking, which is especially crucial in web browsers, where a blocked UI thread could completely ruin the UX.

Variadic functions

Where most languages demand one specify the exact number and often type of function parameters, Javascript allows for passing a smaller or greater number of parameters to functions than explicitly specified. This is highly useful when needing to “pre-load” a function with e.g. just the first two parameters, which binds back to Functional Programming concepts.

Conclusion

Javascript is one of the most widespread programming languages on the planet and will definitely remain so for quite some time. With its domination of the web and rising popularity in mobile development, we would be remiss to not advise you to take it under serious consideration as the language for your project. Our Javascript experts will be happy to talk to you and are certain to alleviate your doubts about it, as they are veterans honed by “Javascripting” at household names like Fox, Twitter, Riot Games etc.

We are looking forward to helping you bridge the gap between your plans and the future reality, so do not hesitate and let us know, how we can be of assistance!


Guide to JavaScript Interviewing

It’s the 21st century and web users expect full-featured, responsive web applications with intuitive interfaces.

JavaScript helps you create such web applications.

But how?

Generally, great products are made of good code and good code is written by good developers.

So, one sure way to create a great product is to hire a good developer.

However, identifying a good developer amongst a pool of job applicants can be taxing.

Whether you’re looking to hire a front-end designer, a node.js back-end engineer or a full-stack JavaScript generalist, this guide contains interview techniques that can help you do just that.

Good coding relies on more than just the knowledge of a language syntax. You need someone who can turn your wildest dreams into reality, bring new ideas to the table and create stuff people love.

How can you tell this about a stranger by spending 20-30 minutes with them in a conference room or on Skype?

1. Explore their JavaScript Expertise

Rather than testing the applicant’s general coding knowledge, you should focus on their JavaScript chops.

This helps you judge their abilities.

Here’s a quick way to explore:

Ask a simple JavaScript-related question.

Based on the answer, ask a slightly more detailed one, and continue digging in until you reach the candidate’s limit.

Nevertheless, if an applicant has good general experience beyond JS, that’s even better.

2. Get Them to Critique Something

After testing their JavaScript expertise, go a step further to get them to review something—especially a JavaScript-based technology.

Here, you should look to see if:

They get the method signature right

Their algorithm is reasonable

They can explain its workings

They can give some pointers for improvement

They can find common line-break issues and so on.

3. Ask Them to Perform a Quick Task

But when doing this, be careful. The task shouldn’t necessarily be about solving some puzzles or problems.

It’s better to judge using functional code as opposed to abstract modular puzzles with no connection to the actual job in question.

The task should be simple, but practicable in relation to the job.

Whatever it is, don’t ask the candidate to write a code on paper or whiteboard.

The traditional whiteboard coding exercise is a poor indicator of actual coding prowess and a terrible strategy for recruiting devs.

People don’t write code on paper or whiteboard, they do it with computers using macros, context-sensitive help, auto-completion, and indexed API documentation.

If you think it’ll take time for candidates to create something during the interview, then it might make sense to ask them to do so before the interview and bring the code on a notebook PC.

But even then, do not rely totally on the code example. Instead, follow point #4 below to boot.

4. Ask to See Their Work

Most applicants will come prepared for point #3 above—performing a quick task.

And if you base your final judgment on how awesome they were at that, you might end up hiring an incompetent developer.

So before or after the interview, take a few moments to look into the candidate’s code portfolio. It could be open-source or hobby projects.

Review and discuss the design, coding style, and decisions that went into it.

If you like the projects, ask the specific features and functionalities the applicant created.

For example, did the person create the product from scratch or started working on existing code?

Looking at actual code tells you much more than having candidates write rushed-over, contrived five-liners they already crammed.

It tells if someone is good realistically, and not just at the interview.

Wrapping up

To wrap up, here are a few hints to help you even more:

To identify a good JavaScript developer, you have to know JavaScript yourself and know what questions to ask. Otherwise, you won’t understand what applicants present and may end up embarrassing yourself. I recommend getting help from someone who knows JavaScript.

Developers aren’t all the same. A reasonable question depends on the candidate’s expertness.

Discourse is important. So, find a way to engage a conversation.

Finally, the developer’s personality is just as important as their professionalism, because one bad dude can destroy an entire team forever.

Hire Dedicated
Javascript Developers

X-Team is a development company of motivated Javascript programmers, architects and consultants from around the world. We provide our developers to companies that need help outsourcing their software projects with top Javascript developers.

Hire Javascript developers now

Trusted by the world’s leading brands since 2006

Top Javascript Developers of May 2017

Hire dedicated Javascript developers who are motivated to always be growing and moving forward.
Check out how a few of our Javascript programmers have grown recently:

  • Andrew Stratu
  • Andrew Stratu
  • completed "Advanced SVG Animation" course on FrontEndMasters.com
  • attended SmashingConf in Barcelona with 15 other X-Teamers.
  • read "SurviveJS - React", a top resource on mastering React.
  • Gianluca Esposito
  • Gianluca Esposito
  • completed "Building React Applications with Idiomatic Redux" course on Egghead.
  • attended ReactEurope in Paris with 10 other X-Teamers.
  • submitted a pull request to GatsbyJS, a React static site generator.
  • Szymon Michalak
  • Szymon Michalak
  • completed the Webpack course on Egghead.
  • attended SmashingConf in Barcelona with 15 other X-Teamers.
  • read "SurviveJS - React", a top resource on mastering React.

Recent Javascript posts

JavaScript Trends to Watch in 2017

Redux creator Dan Abramov asked his massive audience of JS devs on Twitter what the most interesting things in the JS world are. I condensed the huge list of responses to the most popular ones here. It's a very interesting look into the future of JS over the next year.

Reactive Programming with Cycle.js

The following tutorial contains an overview of Material Design UI components with example code for including and customising them in your application. All of them can be used independently from others, so you can treat every section as a reference guide.

Introduction to ReactiveX on Android

Reactive programming is the new cool kid in JavaScript town. The simple premise of reacting to changing environment is met with beauty of functional programming. Despite its popularity there aren’t many examples on how to apply it in everyday work.

Include JavaScript Libraries in an Ionic 2 TypeScript Project

Angular 2 and Ionic 2 are very new developer frameworks. Although not as new, the TypeScript language has been getting a lot of attention as the recommended way to develop with Angular 2 and Ionic 2. TypeScript is a superset to JavaScript that turns it into a typed language. Code is written as TypeScript and then compiled into JavaScript.

Setting Up JavaScript Testing Tools for ES6

Using ES6 (and even far future versions like ES7!) is becoming very easy these days – just set up Babel, and you’re off to the races. If you’re only writing code for NodeJS, you might even get away without Babel, as the native ES6 support is getting very good.

Scale your
development team

We help you execute projects by providing trusted Javascript developers who can join your team and immediately start delivering high-quality code.

Hire Javascript Developers
Hire Javascript developers