The technology stack is a grouping of technologies that work together to solve a certain set of problems. This stack is normally composed of languages and/or frameworks in different application layers:
Examples of technology stacks include: The LAMP stack (Linux, Apache, MySql, PHP), LEMP (Linux, Nginx, MySql, PHP), MEAN (Mongo, Express, Angular, Node), ELK (ElasticSearch, Logstash, Kibana), etc.
A full stack developer is one who is intimately familiar with a known technology stack and can program within any of its layers using the technologies native to that stack. To learn a little more about the profile of the full stack developer, read this post I wrote on the topic.
Ninja Developers don’t limit themselves to just one programming language or one technology stack; they are ‘developer polyglots.’
The Ninja has a base programming language in which he is an expert, but he’s comfortable using any other language. He knows how to navigate the various stacks in order to solve whatever technical challenge he has.
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 such as 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 whatever problem she must solve.
The Ninja Developer is an advanced programmer who is in high demand in the labor market.
Most 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.
Though the Ninja Developer has broad knowledge rather than deep expertise in one or two areas, gaining knowledge across these knowledge domains takes years of practice and learning. There is no such thing as a Junior or Semi-Senior Ninja Developer.
Today the average computer engineering or MIS student graduates without the knowledge required to reach this level. To become a Ninja Developer you’ve got to go through at least four years of college, and 5 to 10 years of on-the-job practice.
A Ninja Developer could be defined as a full stack developer who can work within various technology stacks – a skillset that is in increasing demand and very well compensated!
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 can’t learn this in college, but that’s because the university is more of a trigger where you learn how to think and how to learn.
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.