Software Developer (Kotlin Analysis API)

At JetBrains, code is our passion. Ever since we started, back in 2000, we have been striving to make the strongest, most effective developer tools on earth. By automating routine checks and corrections, our tools speed up production, freeing developers to grow, discover, and create.

The Kotlin Analysis API team develops a code analysis engine used in the Kotlin IntelliJ IDEA plugin. We share a significant part of the logic with the Kotlin compiler, and it allows us to provide consistent error checking and get support for new language features automatically.

However, it does not mean that simply calling any old compiler API is sufficient. There are numerous differences in behavior between the compiler and the IDE:

  • While the compiler only deals with a single module at a time, the IDE provides cross-module resolution.
  • The IDE should handle syntactically incorrect or incomplete code gracefully.
  • In the IDE, there may be several jobs that request code analysis in parallel.
  • Code insight features, such as Find Usages, require partial code analysis to be performant.
  • And so on.

Handling all of these differences robustly and efficiently is the responsibility of our Analysis Core team.

Previously, we faced numerous issues with calling the Kotlin compiler from the IDE directly. So, in K2, we encapsulated all work with the compiler into the Kotlin Analysis API library. Not only did it allow us to have a stable resolution API surface for the Kotlin IDE plugin (and third-party plugins that depend on it), but also to build a command-line implementation to be used in tools, such as Dokka, Kotlin Symbol Processing, and various lint tools.

Our near-term goals: 

  • Strengthen the core of the Analysis API to ensure code analysis works smoothly, even with broken code.
  • Optimize performance and memory usage in the IDE.
  • Improve the user-facing API so that the Analysis API feels convenient, reliable, and enjoyable.
  • Stabilize the Analysis API Standalone and make it a natural part of the Kotlin ecosystem.

We would be happy to have you on our team if you:

  • Have 5+ years of experience in Kotlin or Java.
  • Know how compilers/IDEs work in general.
  • Strive to write robust, maintainable, and testable code.
  • Can find your way in an unfamiliar codebase, such as the Kotlin compiler.
  • Are not afraid to debug sophisticated problems.
  • Write and speak English proficiently.

We would be especially thrilled if you have experience with language support development for IntelliJ IDEA or have worked on some other code analysis tool. Solid knowledge of Java concurrency would also be a huge bonus.

Team

Kotlin IDE

Locations

Remote friendly (from the locations listed below)
Armenia (Yerevan)
Cyprus (Limassol, Paphos)
Czech Republic (Prague)
Poland (Warsaw)
Serbia (Belgrade)

Share this job

Benefits and perks

Depending on office facilities and local market rules

  • Fascinating work in a friendly team.
  • A flexible working schedule.
  • Excellent opportunities for professional and personal development, including travel to professional conferences worldwide, access to the LinkedIn Learning platform.