(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 we are applying this ancient term to a type of custom software developers: The Ninja Developer.
But before describe what a Ninja Developer is, let’s review a few concepts.
The Technology Stack
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:
- Operating System
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.
Full Stack Developers
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.
What does this type of developer do to deserve the title of "Ninja"?
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++.
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.
The Ninja Developer in the working world
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.
I look forward to your opinion.
Learn about Softtek's Development Services and client success cases here.