What is a Ninja Developer?

(Original publication in Spanish at Softtek's Latam Digital blog)

Ninjas, or Shinobi (in Japanese) were a military unit in Japan trained in non-traditional forms of warfare. Today, this ancient term is applied to a type of custom software developer: the Ninja Developer.

To best explain what this means, we will:

  1. Review what is a technology stack
  2. Describe what full stack developers do 
  3. Explain how Ninja developers take full stack development to the next level
  4. Provide real world context

Que-es-un-Ninja-Developer-047574-edited.png

Technology Stack

A technology stack is a grouping of technologies that work together to solve a certain set of problems. It is normally composed of programming languages and frameworks for development within different application layers, such as front-end (client side), back-end (server side), database, and operating system.

Here are some examples of technology stacks:

  • The LAMP stack (Linux, Apache, MySql, PHP)
  • LEMP (Linux, Nginx, MySql, PHP)
  • MEAN (Mongo, Express, Angular, Node)
  • ELK (ElasticSearch, Logstash, Kibana)

Full Stack Developers

A full stack developer is intimately familiar with one known technology stack and can program within any of its layers using the technologies native to that stack. To learn more about the profile of the full stack developer, read this post I wrote on the topic.

Why are they called Ninja Developers?

Ninja Developers don’t limit themselves to just one programming language or one technology stack; they are ‘developer polyglots.’

The Ninja is an expert in a particular programming language, but is comfortable using any other language. They know how to navigate the various stacks in order to solve whatever technical challenge they come across.

And as far as being polyglots, Ninja Developers can effectively handle languages as diverse as Lisp, Haskell, Scala or Clojure, and have mastered static languages such as JAVA, Groovy and C++.

They also deftly handle dynamic programming languages such as JavaScript, Ruby, Python and PHP, and believe it or not, they’re conversant with mobile application development languages such as Android, Swift and Objective-c; game development languages like Lua (c); asynchronous languages such as Nodejs; and statistical modeling languages such as R, which is widely used in big data projects.

In terms of persistent data, Ninja Developers can easily navigate relational databases such as NO-SQL (MongoDB, Cassandra, New SQL, etc). And if that weren’t enough, they have the soundness of judgment to choose the best technology for the problem at hand.

The Ninja Developer in the working world

Organizations seek the most talented professionals for the lowest possible salary, but the type of knowledge a Ninja Developer possesses comes with a steep price tag. That’s because they’re essentially full stack developers who can work within various technology stacks – a skillset that is in increasing demand and very well-compensated!

Though the Ninja Developer has broad knowledge rather than deep expertise in one or two areas, gaining knowledge across the aforementioned skill-sets takes years devotion. There is no such thing as a Junior or Semi-Senior Ninja Developer; you either are one, or you aren’t… yet.

Today the average computer engineering or MIS student graduates without the knowledge required to reach this level. To become a Ninja Developer, a minimum of 4 years of college and 5-10 years of on-the-job practice is a start.

If you’re a developer and you still have a ways to go before becoming a Ninja Developer, don’t worry, just get to work!

You might know ‘everything’ today, but that knowledge will become obsolete in two years. In the software profession you’ve got to keep sharpening your skills. You must become a perpetual learner.

I look forward to hearing your opinion.

Learn about Softtek's Development Services and client success cases here