Hello Everyone, My name is Keshav, and I work as ...
# server
k
Hello Everyone, My name is Keshav, and I work as a Senior Software Developer at Winsupply Inc. I have recently proposed using Kotlin for a new application that our organization plans to develop from scratch. Currently, our architect and all the developers are comfortable with Java and existing tools such as Checkstyle and Sonar. I suggested that with only minor adjustments, we can continue to develop in Kotlin alongside Java. I have already built a part of the application in Kotlin and demonstrated how clean and easy it is to write Kotlin code. My team responded positively and is eager to continue using Kotlin for this application, at least for now. I also have a meeting scheduled with our architect to confirm the official use of Kotlin for the new project. I am looking for assistance in establishing project setup guidelines for REST API development using Spring Boot and Kotlin.
j
Have you considered perhaps moving away from java things? You could consider #C0A974TJ9 or #C5AL3AKUY - you may find they they offer some significant advantages. Kotlin can be "java with nicer syntax and null safety" or you can embrace it and get a whole different experience.
👍 5
k
do you think it is good idea to change language and framework that are developers confortable with at the same time?
j
As you ask, yes. Else you'll just end up doing the same stuff and not be able to take real advantage of the lovely object-functional approach.
👍 1
t
Same, in our company Kotlin was allowed as long as Spring was used. This makes it easier for other Java developers to get into the project since they only need to learn a new language and not a new ecosystem. And Kotlin just being used as a better Java is still a big win imo.
(As in, I once heard the saying, "anything worth doing, is worth doing badly", meaning, if the full Kotlin experience is great, then just using it as a better Java is still pretty good)
j
Ah,I was suggesting dropping spring when picking up.kotlin. why hold on to all the legacy!! - it is surprising how costly it is.
k
Dropping Spring is significant because it serves as the primary framework for our projects. Transitioning to a new framework, especially when our developers are new to Kotlin, could cause resistance and potentially lead to the rejection of my proposal, even if Kotlin isn't explicitly mentioned. Currently, the company employs a large majority of Java developers, a smaller group of RPG developers, and a diverse collection of front-end developers. As @Ties pointed out, I plan to propose using Kotlin with Spring Boot. Since our developers already meet regularly to ensure clean code, and given that Kotlin follows clean code principles, I believe it is a worthwhile alternative to Java.
l
There are some things that you can do in Kotlin that doesn't play super well with Java though. Like inline classes. They can be quite useful in specific circumstances, but accessing them from Java is a bit of a mess.
👍 1
That's really only a problem for module-to-module facing API's though, so perhaps it's not something one has to worry about.
k
Unfortunately, the proposal got rejected because of 2 reasons, Need another 2 weeks for new developer to start working on this project, and major reason being Here's the exact message the architect put: "Here's the information for the TIOBE Index I mentioned in the meeting. The discouraging part is that Kotlin was explicitly called out negatively due to its fall. https://www.tiobe.com/tiobe-index/" I know it shouldn’t be the only metric for making strategic decisions, but I Cannot believe an organization would make a decision based on the popularity metric, open to hearing your thoughts
kodee sad 1
j
It shouldn't be any part of the decision process really. You should consider applicability of the language and artifacts to the solution and regulatory space, the difficulty / ease of transition including integration with existing products, software tooling and process, expected benefits and problems, time to become skilled in new language & likelihood of messing things up, availability, status and cost of tooling and relevant libraries, staff availability and remuneration, and not a chart that based on an Internet search. Perhaps you should have chosen scratch or assembler? Given that the output is actually the same - it is a jar file that runs under a jvm - with perhaps increased file size - maybe an architect isn't the right person to make a decision?
l
Generally when deciding on a technology to use, the best assumption you can make is that whatever system you look at, assume that its lifetime will be roughly 2x what it already is. So if a system is 1 year old, assume it'll be obsolete in 1 year. If you choose to use Kotlin, make the assumption that it'll be relevant for another 13 years. If you're building a large system, that might not be stable enough.
b
Dropping Spring might be just too much to start with and certainly too early. Give your team some time to get confident with Kotlin before replacing foundational framworks like spring (boot). It’s important to have everyone onboard for such transitions and not everyone has the same pace. I do think you should explore Kotlin frameworks to increase exposure and learning opportunities. What our team did - as part of transition to Kotlin - is to start using Kotest as alternative to Junit. Similarly we introduced http4k as http client. We’re 2y down the road now and we started our first project with Ktor instead of Spring Boot.
t
@Keshav Lingala Sorry to hear that your proposal for using Kotlin was declined! In case there still will be room for a future Kotlin project, you can refer to other indexes, and in most of them, Kotlin is comfortably top-20: IEEE, at 17: https://spectrum.ieee.org/top-programming-languages-2024 Redmonk, at 14: https://redmonk.com/sogrady/2024/09/12/language-rankings-6-24/ GitHub, at 15: https://innovationgraph.github.com/global-metrics/programming-languages