Bachelor's of Science - Computer Science Major. 13+ years of experience in aviation maintenance. Taught 2300+ college level hours for airframe, powerplant, and general aviation maintenance courses.
Peter, I wish I could heart this comment 10 times over. Not only did you make me realize how tunnel-visioned I was with my view of Kotlin (as the only course I am familiar with that contains Kotlin is for Android App Development) you made me see that it is a spiritual successor to Java. How could I have been so blind! Also, you answered a question I just asked my self while I was working on a script in Python. I asked myself "Why hasn't someone created a Python-style language that has all the qualities that Java or C# has by not being dynamically typed?" and as I read your reply it clicked! Thanks!
Absolutely, brother! I'd even go as far to say as they took the best of Java, Python, Swift, JavaScript, Lodash and probably a dozen other languages/libs, thought long and hard about it put together a true joy of a language to use. The static analysis checks enforced by the compiler are magic in a bottle.
I think the optics/PR issues on this one run deep. From the get-go, it was designed (and has always been) as a truly general-purpose language but given its first widespread use was for Android, you have to think about the competing mobile languages at the time: Objective-C = for mobile only, Swift = for mobile only so it was only natural for the masses to assume: Kotlin = for mobile only.
To complicate things, Java is clearly showing its age and the dev community is (rightly so) critical of its verbosity. There's still a sizable minority of people holding onto the dated and no-longer-valid sentiment that the JVM is slow because they tried it in 2000 and it was slower than C++ and never checked back in 20 years later now that it's fast, more usable, has gotten onboard with functional programming, made web programming and threaded programming vastly easier, yada yada. And since Kotlin is JVM, they might even think it's slow. Even those that knew Kotlin was general purpose may have had mixed-to-poor past experiences w/ Scala, Groovy, Clojure and had given up on alternative JVM languages entirely--relegating Kotlin to "just another clunky/weird JVM language" before even trying it. (Honestly, who's to blame them.)
Real-world numbers are showing that on average a project converted to Kotlin is 30% as many lines as its Java couterpart. When you really embrace its idioms, it's more like 20%.
Those that are waking up are discovering that "Wait, you mean to tell me I can still call any of the super-useful millions of 3rd party Java libs...in an expressive, compact syntax...that's head-and-shoulders safer than any of the languages that influenced it...is immensely readable/elegant...still gets the benefits of the most sophisticated garbage collector...use Spring Boot or a bunch of other microframworks...iteratively mix it in to my existing Java projects...convert my legacy projects to it...use the gradle build system with my gradle files written in Kotlin...write my own DSLs...be as object-oriented or as functional as I want...execute fast...execute elegantly in parallel or async...execute anywhere...have my build fail unless my entire AST is type-safe and null-safe...have first-class support from IntelliJ because Jet-brains wrote the damn thing...use all the advanced built-in Java data structures.............Hot damn, this is slick AF".
Bachelor's of Science - Computer Science Major. 13+ years of experience in aviation maintenance. Taught 2300+ college level hours for airframe, powerplant, and general aviation maintenance courses.
You sold me. When I get to the point I am comfortable with Python and can solve some medium / hard questions on sites like algoexpert or hackerrank and think up an application / develop it then I will pick up Kotlin. Maybe 6 months to a year! Depending on how much I work at learning / retaining.
One gotcha with Kotlin is that because it's developed by JetBrains, which is a Czech company with a lot of developers in Russia, it's a no-go for US Defense or Federal Government software. This is not, on its own, a reason not to learn it. But since I noticed that you currently work with the US Air Force, and that experience might be beneficial to you getting Defense contract or Government jobs, you should know that you're not going to find a posting for a Kotlin developer there.
Bachelor's of Science - Computer Science Major. 13+ years of experience in aviation maintenance. Taught 2300+ college level hours for airframe, powerplant, and general aviation maintenance courses.
Interesting. I didn't know that. I thought Kotlin was developed and supported by Google. After I retire from the military in my current trade idk if I'd want to continue in that line of work in a new field you know? I joined the military fairly young and you give up a lot of freedoms working for the DoD and FAA. Though the grass is always greener on the other side and I'm sure you give up a lot of freedoms working for any corporation.
CTO, Developer, Sysadmin, Network Admin, currently using Clarion on Windows, Drupal for websites, and picking up Ansible for sysadminning. Yes, I wear many hats, why do you ask?
Location
Marietta, Ga
Education
Asbury College, BA in Bible with Computer Science minor
Work
CTO/Developer/Sysadmin/Network Admin at Accelerated Design, Inc
Peter, I wish I could heart this comment 10 times over. Not only did you make me realize how tunnel-visioned I was with my view of Kotlin (as the only course I am familiar with that contains Kotlin is for Android App Development) you made me see that it is a spiritual successor to Java. How could I have been so blind! Also, you answered a question I just asked my self while I was working on a script in Python. I asked myself "Why hasn't someone created a Python-style language that has all the qualities that Java or C# has by not being dynamically typed?" and as I read your reply it clicked! Thanks!
Absolutely, brother! I'd even go as far to say as they took the best of Java, Python, Swift, JavaScript, Lodash and probably a dozen other languages/libs, thought long and hard about it put together a true joy of a language to use. The static analysis checks enforced by the compiler are magic in a bottle.
I think the optics/PR issues on this one run deep. From the get-go, it was designed (and has always been) as a truly general-purpose language but given its first widespread use was for Android, you have to think about the competing mobile languages at the time: Objective-C = for mobile only, Swift = for mobile only so it was only natural for the masses to assume: Kotlin = for mobile only.
To complicate things, Java is clearly showing its age and the dev community is (rightly so) critical of its verbosity. There's still a sizable minority of people holding onto the dated and no-longer-valid sentiment that the JVM is slow because they tried it in 2000 and it was slower than C++ and never checked back in 20 years later now that it's fast, more usable, has gotten onboard with functional programming, made web programming and threaded programming vastly easier, yada yada. And since Kotlin is JVM, they might even think it's slow. Even those that knew Kotlin was general purpose may have had mixed-to-poor past experiences w/ Scala, Groovy, Clojure and had given up on alternative JVM languages entirely--relegating Kotlin to "just another clunky/weird JVM language" before even trying it. (Honestly, who's to blame them.)
Real-world numbers are showing that on average a project converted to Kotlin is 30% as many lines as its Java couterpart. When you really embrace its idioms, it's more like 20%.
Those that are waking up are discovering that "Wait, you mean to tell me I can still call any of the super-useful millions of 3rd party Java libs...in an expressive, compact syntax...that's head-and-shoulders safer than any of the languages that influenced it...is immensely readable/elegant...still gets the benefits of the most sophisticated garbage collector...use Spring Boot or a bunch of other microframworks...iteratively mix it in to my existing Java projects...convert my legacy projects to it...use the gradle build system with my gradle files written in Kotlin...write my own DSLs...be as object-oriented or as functional as I want...execute fast...execute elegantly in parallel or async...execute anywhere...have my build fail unless my entire AST is type-safe and null-safe...have first-class support from IntelliJ because Jet-brains wrote the damn thing...use all the advanced built-in Java data structures.............Hot damn, this is slick AF".
You sold me. When I get to the point I am comfortable with Python and can solve some medium / hard questions on sites like algoexpert or hackerrank and think up an application / develop it then I will pick up Kotlin. Maybe 6 months to a year! Depending on how much I work at learning / retaining.
One gotcha with Kotlin is that because it's developed by JetBrains, which is a Czech company with a lot of developers in Russia, it's a no-go for US Defense or Federal Government software. This is not, on its own, a reason not to learn it. But since I noticed that you currently work with the US Air Force, and that experience might be beneficial to you getting Defense contract or Government jobs, you should know that you're not going to find a posting for a Kotlin developer there.
Interesting. I didn't know that. I thought Kotlin was developed and supported by Google. After I retire from the military in my current trade idk if I'd want to continue in that line of work in a new field you know? I joined the military fairly young and you give up a lot of freedoms working for the DoD and FAA. Though the grass is always greener on the other side and I'm sure you give up a lot of freedoms working for any corporation.
You may be conflating Kotlin with Go, which was developed and supported at Google.