It’s a common situation: while presenting a development platform which is not so mainstream as JSF or EJB questions like “where will I find people who knows how to use it?” or “nobody uses it, so why should I?” emerge. You know what? I think these are great examples of situations in which good strategies are simply thrown away. Let me tell you why.
The main argument that I see against alternative development platforms – such as Grails, Play and many others – is the fact that since they are not so popular (at least not here in Brazil) or “industry standards” they don’t contribute for the team competitiveness. Well: let’s think for a while about the meaning of the word “competitive”.
If you compete with someone the main goal is to be ahead of your competitor, not behind nor beside: just ahead. Some people may say that if you use the same weapons you achieve competitiveness, but you know what? If you always use the same tools as your oponents you are actually getting at most the same level.
When you bring something new to the table one of the first reactions will be rejection. People tend to prefer what they already know. It’s human nature. Here are some common arguments.
(this is an awesome video of Carly Fiorina about it: http://www.youtube.com/watch?v=w3IbKbDhfKw)
“Where are we going to find skilled programmers for that?”
If the tool doesn’t show good documentation, this may be a valid statement, but if it does not? Well, on this case, at least in my opinion, we can say that the main asset of any member of the team is basically being thrown away: people can learn and usually like it.
And you know what? I think this kind of situation is perfect to test your teammates: you know a good developer when it faces a new challenge.
“This is not a industry standard”
An industry standard obviously have a lot of advantages like higher compatibility and so on, but does strictly adhering to an industry standard means using exactly the same tools as your competitors? Take the JVM as an example: we can say today that it is an industry standard, but does that mean that I should only code in Java? Not at all! Compatibility does not mean being equal, but actually iterate with it.
“Who will pay me to work with this?”
Well: for me this is the saddest argument. It’s ok to be a specialist on a given technology, but again this line of thought forget one of the greatest values of the human being which is it’s capacity to learn. And let’s be honest: unless it is a ultra secret technology internally created, at least SOMEONE in the world had already tried it and probably will want to share it’s experiences about it.
If you are a developer and want to differentiate yourself from competition you need secret weapons. I call secret weapon all those technologies/knowledges that are ignored by most of your competition because are not “industry standards” or “widely used”. In a market dominated by development of CRUD systems, for example, in which most of the companies use something like JSF, alternatives like Grails, Ruby on Rails, Play and many others are excelent weapons because of the productivity they provide.
Another great example of secret weapon (now not so secret) are NoSQL databases. As I mentioned on another post, they bring to a world dominated by the relational thinking “new” notations which help us to achieve better results and, doing so, differentiating our work from what is being done by our competitors.
Secret weapons are not just for market share, but also for personal growth. Let me give you an example: Lisp. Before all this recent hype about functional programming I started to learn this language just for fun and was one of the best investments I have ever done. I learned A LOT with it and when new languages like Scala and Clojure started to show up everything was really easier for me. And you know what is really interesting? I never used Lisp on any job.
When you start to learn and use secret weapons you gain a competitive edge against your peers because your cognition is improved: there are more dots to connect now, so better solutions usually will emerge from it.
Secret weapons are not a luxury, but a necessity. The argument that you should use only what is most widely used is meaningless because it totally ignore the fact that people can learn new stuff.
Of course, you know your secret weapon is a valid one only if you can show enough arguments to your audience so that they can overcome the fear of change and opt for it.