Kotlin developer salary

How much Kotlin developers earn in Russia? 
01 June 2017   1675

The Russian labor market for Kotlin coders is small. In May, companies offered only 98 jobs.

Kotlin

Statically-typed programming language that runs on the Java Virtual Machine and also can be compiled to JavaScript source code

The number is really small if you compare it with the number of vacancies for JavaScript developers which was almost 700.

The largest number of vacancies are in Moscow, St. Petersburg and Novosibirsk. Developers who own more common technologies can find work in almost any region of the country, which can not be said about Kotlin programmers. Jobs are available only in 16 regions.

kotlin Vacancies mapVacancies map

Wage level is led by Novosibirsk. In this region, JetBrains, which develops the language of Kotlin, is looking for employees actively.

Kotlin salary level graphKotlin salary level graph

Technology is young and naturally employers do not indicate that they are looking for developers with experience more than six years. 65.4% of vacancies are addressed to developers with experience up to 3 years. 34.6% of vacancies are addressed to the coders with an experience of 3 to 6 years. As is the case with Go coders, the average salary in the country has not fall under the mark of 100000 rubles even for developers with experience of up to 3 years. This, in spite of a small number of vacancies, speaks of the demand for specialists of the technology itself.

Diagram of kotlin vacancies, sorted by experienceDiagram of vacancies, sorted by experience

JetBrains to Roll Out Kotlin/Native 0.8

Version 0.8 of Kotlin/Native brings new features and bug fixes
13 July 2018   279

The project team of Kotlin / Native introduced the release of version 0.8. Corrections and additions have concerned the security of multithreaded programming, the expansion of library functionality and support for iOS devices. As always, alot of bugs are fixed.

Parallelism

Implemented the concept of object freezing

object Config {
  var width: Int = 10
  private set
  init {
    val file = fopen("config.txt", "r")
    if (file != null) {
              try {
              val buffer = ByteArray(2 * 1024)
                 while (true) {
                 val nextLine = fgets(buffer.refTo(0), buffer.size, file)?.toKString()
                 if (nextLine == null || nextLine.isEmpty()) break
                 val records = nextLine.split('=')
                 if (records.size != 2) continue
                 val key = records[0].trim()
                 val value = records[1].trim()
                 when (key) {
                         "width" -> width = value.toInt()
                            }
                          }
                        }
             } finally {
                fclose(file)
                    }
         }
}

This code considers the configuration file and will later receive the Config.width property. 

The Config file itself is divided for any number of threads or vorkers. After publication, the object is frozen and any attempt to change it will result in an exception (InvalidMutabilityException).

The second peculiarity of parallelism in the Kotlin / Native project is indivisible values and references. Let's add an image:

object Config {
private val icon_ = AtomicReference()
val icon: Image
get() = icon_.get()!!
fun updateIcon(file: String) {
val imageData = Image(file)
icon_.compareAndSwap(icon_.get(), imageData.freeze())
}
}

All information about the icon in the AtomicReference is frozen. Any changes are indivisible and similar information is visible to each client.

Kotlin Libraries

Starting v 0.8, the standard library (kotlin. *) is compatible with other platforms. Standard number generator and the function of mixing the collections are designed to eliminate the use of sharpened for a specific platform API. As an experiment, the project supports other libraries, for example, kotlinx.coroutines, kotlinx.serialization, and also the Ktor HTTP client.

Changes for iOS devices

Fixed issues with the publication in the App Store and the initialization of the platform. Support for the 32-bit ARM architecture of iOS processors, which allows using Kotlin / Native on older devices from Apple added.