Does developers' productivity differ by language?
I think the reason is more about the shift towards webbased and mobile application then the language itself.
It's about using the tools for the job they were intended for. You're not going to create a windows app in PHP ( even though it's very much possible ) and you're not going to create a web application in Java.
It's not that either language is less suitable, or better, but it's about what they are intended for and what they excel at.
Despite all the hate it receives from the more traditional developers ( Java, C, C++ etc... ) there is no denying that PHP is at the top of the foodchain in that area. NodeJs is moving into that terrain though, and Ruby on rails fills a nice niche, .Net is also very big among enterprise level applications and is the biggest within certain sectors.
Java is barely used these days within that sector ( despite being one of the biggest players in many other sectors like Android ).
What are startups doing these days ? Mostly webbased stuff. One of the current "hip" thing is a combination of a Javascript frontend, several serverside backends ( PHP, NodeJs mostly ) running through stateless microservices, perhaps with mysql, or some other database, or several data layers.
It's all in the cloud, scalable, multi-tennant etc etc... That's what's popular, that's where the money is, so that's where the startups will try to make their start.
Enfin, it's a whole different ecosystem and Java has yet to find it's place there. In my experience ( I started out as a Java dev ), like Bill O'Neil mentioned, within the Java community there exists an unwillingness to look outside of the established methods. There isn't enough going on ( yet! ) within the Java community to "get on the bandwagon" so to speak, and if that doesn't change Java will eventually become obsolete.
I don't think it will come to that, though. Java is still very viable and if a large enough group ( or several smaller groups ) actively work towards expanding the ecosystem ( new frameworks for example ) then we'll see an increase in Java developers in the near future.
In my honest opinion its because Java programmers are too lazy to learn their own eco system. I have been working with Java for 7+ years and id say maybe 10-20% of Java devs I have worked with have a good grasp of the basics such as Logging and dependency management (maven / gradle). The reason projects take so long to set up is because very few Java devs actaully spend to time to learn how to build their own projects from scratch. Most join a company follow whatever their setup is and thats that.
Ruby / node / python are tailored towards hobby developers and more often set up from scratch. A good java dev who understands their tools can set up a new Java server just as fast as a node / express server. The problem is most Java devs are lazy and just don't spend any time learning the basics.
You can also compare frameworks for instance Flask is probably much easier to get started with than Django in python but it doesn't do as much. In ruby sinatra would be eaisier to get started with than Rails. Node compares more to sinatra and flask than a larger framework. The Java ecosystem is mostly massive very old frameworks. However, there are plenty of lightweight ones as well which are starting to gain popularity. When you look at Scala and Kotlin using lower level frameworks why shouldn't we just do the same with Java?
Startups want to build the product with minimum efforts and as fast as possible, and surely java is not built for that.
You can write a working prototype of same project with Node and MongoDb in 7 days while same can take more than 15 days is build with Java and Postgre.
Language expertise does matter but, till some extent. Languages like Node JS eliminates a lot of Boilerplate (Or Not so necessary) code required for JAVA applications (POJO's, Un-necessary class declaration ) which requires a lot of time and can reduce development time considerably.
For instance : Setting up a Spring project from scratch can take much more time then setting up a Node or PHP project.
I think every company has a clear reason behind why they picked what they picked. They go for a particular tech over which they've in house expertise in. For example, Zeta in Bangalore, which is a booming startup uses Java for their backend. Let's say someone started their career in Java and been at it for a reasonable amount of years, they're probably going to pick it when they themselves begin a project or a company.
At Shippable, my previous job, we used MongoDB in production for two years and later moved to SQL. A key reason being we had a world class expert in SQL and we did realize that our bug count did come down and innovated faster once we designed our schema right. We didn't design the MongoDB schemas correctly because, we perhaps just started out with it by reading the docs.
At Hashnode, we have people who can do anything with MongoDB, given the experience we have in the team on it and hence, have gone with it.
It really is a matter of what people are used to and what they're comfortable with. So, if you still see Java not being used as much as you would like, it probably means that the number of people who are experienced with Java is on the decline. Let's face it, JavaScript can do anything for you and is a lot easier to pick up than Java (Java I believe has a steep learning curve).
My guess: it's not cool anymore.
Secondary to that, startups are typically doing mobile first these days, and Java doesn't lend itself well to that. That's a bit ironic since Android is essentially Java, but that's just Android. It doesn't cover iOS or Windows Phone (yeah, that's still a thing.)
Does developer's productivity differ by language?
Defiantly, You can build e-com/Social with CMS in few hours. But at same time if you want to build it with native technology it's take lots of time and resource.
So finally, as startup build your product with minimum resource and money. Idea is only 25 % finial execution is the key of your success.
Enjoy you journey.
Gaurav Dadhich
In my humble opinion, these are some of the reasons: