I enjoyed writing Scala more than I enjoy writing Python, but there are a few undeniable advantages that Python holds over Scala. The motivation to port from Scala to Python was to avoid the lengthy build process that had been slowing down development to a crawl. There may have been other ways to alleviate this, but by the time the port was completed, it took a good 15 - 20 minutes to get the build machine to compile and package the entire project so it could be deployed to production. At this time rapid fixes were critical.
Also, the team as a whole prefers Python to Scala... I took pleasure in learning how to express my code in increasingly functional and compact ways, but my coworkers found struggling with the type system to be too much of a headache. In particular, there are rough edges when you are integrating Scala code with Scala types and data structures with Java code with Java types and data structures. In any case it will be easier to find programmers who write in Python than those who might write Scala.
Scala gave me more personal pleasure to write in, but Python isn't bad either. I miss the type system and the many classes of errors it could help prevent at compile time, but I appreciate being able to change Python code and put it to the test immediately. The loss of expressiveness is probably made up in part by being forced to write code that is more easily read. I still hope I will be able to find a job writing in a functional language in the future...
JRebel lets you change a running Scala program without having to restart the appserver and integrates well with IDEs. I find it's easily worth its price in the amount of productivity it adds when doing Scala web development.
Great response. How many LOC was your project that you got that amount of slowdown? Would you say it was the primary reason even over some developers struggling with the type system?
I'm a huge Scala fan but even after a year of hobby programming here and there I feel like a beginner...
I could pull up the LOC, but it honestly wasn't the Scala compilation that was the true issue. The true issue was that the project was built with maven and it had a tremendously large number of dependencies. If all the Scala in the project had been converted to Java, the build still would have been monstrously slow. So the port was more of an escape from the JVM than an escape from Scala - and yes, the build times were the primary reason for the port. As for the type system... not a single other person left on the team misses Scala but me. (The primary Scala evangelist had been let go for unrelated reasons)
Also, the team as a whole prefers Python to Scala... I took pleasure in learning how to express my code in increasingly functional and compact ways, but my coworkers found struggling with the type system to be too much of a headache. In particular, there are rough edges when you are integrating Scala code with Scala types and data structures with Java code with Java types and data structures. In any case it will be easier to find programmers who write in Python than those who might write Scala.
Scala gave me more personal pleasure to write in, but Python isn't bad either. I miss the type system and the many classes of errors it could help prevent at compile time, but I appreciate being able to change Python code and put it to the test immediately. The loss of expressiveness is probably made up in part by being forced to write code that is more easily read. I still hope I will be able to find a job writing in a functional language in the future...