As an example I want to switch from C#/.NET to Scala/Jvm. I’m working as a self-employed and I’m free to choose my favorite language/platform. Having more than 8 years of experience in C#/.NET leads me to have lots of reusable codes, libraries and framework. I can work on my projects and ideas without thinking about language so I’m focused on what I’m doing.
Why should I do such migration? Because;
- Scala is open-source and innovative
- Scala runs on JVM which is cross-platform that decreases costs and some risks
- Scala has all C# feature (with something more)
- Benefit of Java comminuty
- More open-source libraries in Java platform
- Doing open-source in .NET is a little harder and doesn’t get attention as it does in Java or other plaforms.
Is it OK to manage such a big risk and learn a new language/platform (in this case, Scala, Play framework, etc.) and use it in at least a small commercial project to find out if it’s suitable?
2
I wouldn’t use an environment that’s totally new to me in a commercial situation, as you don’t know the pitfalls of the language and frameworks. This will cause your estimates to be grossly incorrect, as you need more time to find solutions to problems that are new to you.
If your customer is fine with that, go ahead. Otherwise I’d try to convert an existing .NET application to Scala in my own time.
3
Not many customers will be happy for you to be learning at their expense. They may have given you free reign to pick, but be assuming that whatever you pick, you are an expert in.
I am self employed as well, and frankly, the only consideration for me is whether I will be able to find new contracts using my skillset.
Dropping my bread and butter stack to learn a new one makes sense if the old one is becoming obsolete and there is less and less work available doing it. And even then, I may have to pitch myself at a lower level to get work in the new stack.
That being said, older stacks are more niche and come with higher rewards, but you need to find the balance between there suddenly being no work, and your skills being out of date.
At the risk of teaching grandma to suck eggs, you’ll of course have to learn this in your own time. Unless you have some very understanding customers, they’re unlikely to give you the time (or money) to develop new skills at your own pace for your own professional gain.
As a former contractor/freelancer myself, there is a definite benefit of coding in a language where expertise is freely available. My freelancing price structure was $X for development and doubled if they wanted the source.
I was brought in on one C# freelance project specifically because the previous incumbent was writing their software in an arcane language (knowing that expertise wasn’t readily available) and fleecing the client for the simplest updates.
As long as the customers are happy with solution, it does not matter which platform you are using or planning to switch to.
It is very important to choose tools and appropriate development platforms that will deliver the solution. One of the most important phase of the system requirement analysis is to choose the right/available and familiar tooling to tackle the project.
However, be aware that totally new development platform and tooling does require upfront time investment.