惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志
S
Secure Thoughts
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tenable Blog
T
Tailwind CSS Blog
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
Webroot Blog
Webroot Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Cloudflare Blog
T
Threat Research - Cisco Blogs
V
Visual Studio Blog
Jina AI
Jina AI
V
V2EX
I
InfoQ
Latest news
Latest news
P
Proofpoint News Feed
T
Threatpost
Engineering at Meta
Engineering at Meta
P
Proofpoint News Feed
美团技术团队
The Register - Security
The Register - Security
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
Cloudbric
Cloudbric
Microsoft Azure Blog
Microsoft Azure Blog
C
Cisco Blogs
U
Unit 42
Microsoft Security Blog
Microsoft Security Blog
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
TaoSecurity Blog
TaoSecurity Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Recent Commits to openclaw:main
Recent Commits to openclaw:main
W
WeLiveSecurity
博客园 - 司徒正美
T
The Exploit Database - CXSecurity.com
小众软件
小众软件
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
N
News and Events Feed by Topic

Kotlin : A concise multiplatform language developed by JetBrains | The JetBrains Blog

Kotlin Turns 15: Celebrate the Kotlin Effect - The JetBrains Blog Introducing the Kotlin Benchmark for AI Coding Agents - The JetBrains Blog In Conversation With the Golden Kodee Winners - The JetBrains Blog Kotlin Comes to BlueJ - The JetBrains Blog Kodee’s Kotlin Roundup: Kotlin Turns 15, Kotlin 2.4.0, and the Kotlin Toolchain - The JetBrains Blog Kotlin Notebook Sunset - The JetBrains Blog Kotlin Toolchain 0.11: The Next Step for Amper - The JetBrains Blog Kotlin 2.4.0 Released | The Kotlin Blog Koog 1.0 Is Out: Stable Core, Better Interop, and Multiplatform Observability | The JetBrains AI Blog KotlinConf’26 Keynote Highlights: Advances in Language Design, Tooling, AI-Driven Workflows, and Multiplatform Development | The Kotlin Blog Introducing a Security Support Policy for the Kotlin Standard Library | The Kotlin Blog Official Kotlin Support for Visual Studio Code Is Now Available in Alpha | The Kotlin Blog Built for Productivity: What the Data Finally Shows About Kotlin | The Kotlin Blog A New Default Project Structure for Kotlin Multiplatform | The Kotlin Blog Help Shape the Future of Kotlin in the Age of AI | The Kotlin Blog Compose Multiplatform 1.11.0 Is Now Available | The Kotlin Blog The Road to Name-Based Destructuring | The Kotlin Blog JetBrains 推出的 Kotlin 专业认证现已登陆 LinkedIn Learning | The Kotlin Blog Kotlin Ecosystem Mentorship Program: Results and Winners | The Kotlin Blog Kodee’s Kotlin Roundup: Golden Kodee Finalists, Kotlin 2.4.0-Beta2, and New Learning Resources | The Kotlin Blog Next-Level Observability with OpenTelemetry | The Kotlin Blog 如何避免使用 JPA 和 Kotlin 时的常见陷阱 | The IntelliJ IDEA Blog Kotlin Professional Certificate by JetBrains – Now on LinkedIn Learning | The Kotlin Blog Helping Decision-Makers Say Yes to Kotlin Multiplatform (KMP) | The Kotlin Blog Introducing Koog Integration for Spring AI: Smarter Orchestration for Your Agents | The JetBrains AI Blog KotlinConf’26 Speakers: In Conversation With Lena Reinhard | The Kotlin Blog Kodee's Kotlin Roundup: Kotlin 2.3.20, Interview With Josh Long, and More | The Kotlin Blog Amper 0.10 – JDK Provisioning, a Maven Converter, Custom Compiler Plugins, and More | The Amper Blog KotlinConf’26 Speakers: In Conversation with Josh Long | The Kotlin Blog KotlinConf 2026: Talks to Help You Navigate the Schedule | The Kotlin Blog Google Summer of Code 2026 Is Here: Contribute to Kotlin | The Kotlin Blog Kotlin 2.3.20 Released | The Kotlin Blog Introducing Tracy: The AI Observability Library for Kotlin | The Kotlin Blog 15 Things To Do Before, During, and After KotlinConf'26 | The Kotlin Blog Java to Kotlin Conversion Comes to Visual Studio Code | The Kotlin Blog Kodee’s Kotlin Roundup: KotlinConf ’26 Updates, New Releases, and More | The Kotlin Blog Building Modular Monoliths With Kotlin and Spring | The Kotlin Blog
The History of Kodee, Kotlin’s Mascot - The JetBrains Blog
Olga Vorobev · 2026-07-09 · via Kotlin : A concise multiplatform language developed by JetBrains | The JetBrains Blog

JetBrains Research

Research is crucial for progress and innovation, which is why at JetBrains we are passionate about both scientific and market research

Kotlin Research

Olga Vorobeva Nadia Lokot

A few years back, the Kotlin team figured it was time their programming language had a mascot – something fun and friendly to make developers feel more at home. After all, so many other programming languages have their own characters – Gofer, elePHPant, Dart’s Dash, or Rust’s Ferris, for example.

Bringing Kodee to life wasn’t just a design challenge; it was a deeply collaborative effort by the Kotlin Marketing team, together with the Design and Strategic Research teams at JetBrains. The project’s goal was to create a mascot that truly resonated with the developer community. To do that, Strategic Research team leaned into a structured approach: gathering feedback through surveys, analyzing user sentiment, and facilitating a focus group to uncover the values and traits developers wanted to see. 

What follows is a behind-the-scenes look at how thoughtful research and creative iteration turned a simple idea into a beloved mascot.

First iteration of the Kotlin mascot

The mascot project was initiated and driven by the Kotlin Marketing team. The first design concept was the result of a thoughtful and detailed creative process in which Kotlin designers explored everything from the character’s shape and traits to its personality. The initial idea was to introduce a robot companion that subtly echoed the Kotlin logo – one that was helpful and approachable by nature, with a screen for a face. A reliable sidekick, always ready to lend a hand!

Preliminary sketches of the Kotlin mascot

Following its release, the character received mostly positive feedback. However, a few social media channels and online forums made it clear that the character hadn’t quite clicked with some members of the Kotlin community. However, a few social media channels and online forums made it clear that the character hadn’t quite clicked with some members of the Kotlin community. This is where the Kotlin Marketing and Strategic Research teams partnered to validate the direction, and the researchers launched a mixed-method project to better understand community sentiment and shape the next iteration. Here, user feedback was indispensable. We started by scouring the internet to get a general idea of how the community felt about the mascot. This allowed us to make a few initial adjustments. At the same time, we realized we needed to dig deeper, so we moved on to the survey phase.

Survey feedback gathering

The Strategic Research team organized a feedback round to learn more about developers’ feelings about the character. We wanted to understand not just what people liked or disliked about the mascot, but also the reasons behind their sentiments. And the clock was ticking. With barely more than six months remaining before KotlinConf 2023, starting everything over from scratch (naming, production, etc.) wasn’t an option. Moreover, a lot of Kotlin users had already been vocal about liking the first variant, and it didn’t seem fair to totally replace a mascot that had already won the hearts of so many in the community.

We kicked things off with a survey. As researchers, we’re used to getting responses that only express broader emotions (“It’s bad”, “I don’t like it”, etc.), so this time we designed the questions to help guide responses toward more specific insights. The survey included a mix of:

  • Projective questions like “What specific mascots of other brands do you consider ‘good’ or ‘bad’?” 
  • Associative questions like “What comes to mind when you see this character?”
  • Direct prompts like “What specifically don’t you like about this mascot, beyond just ‘I don’t like it’ or ‘It’s just bad’?” 

Feedback round 1: Results

We went into this knowing that opinions would differ. After all, you can’t please everyone. But our goal was merely to find overarching patterns in the feedback – and in this regard, we succeeded.

The most frequent concerns participants expressed were that the character:

  • Didn’t feel charming or cute (which is typically expected from a mascot). 
  • Came across as too plastic and robotic. 
  • Lacked expression and personality. 
  • Had some visual quirks that bothered people (for example, the proportions, the oversized eyes, a missing mouth, and the color palette).

Second iteration of the Kotlin mascot

Next, we asked the design team to create three quick concept drafts – no deep detailing, just enough to capture the overall impression while reflecting the feedback we’d gathered. 

Each of the three sketches went in a different direction. One leaned into a more human-like but still robotic style; another took a more animal-like approach; and the third refined the original concept, adjusting its features based on the feedback we’d received. 

The three mascot variants

Each draft gave us a fresh angle to consider, helping us explore what felt most relatable and visually appealing to the community.

After their changes, three things were clear: 

  • The proportions felt more natural.
  • The character’s personality had begun to shine through. It was no longer just a silent silhouette.
  • Its emotions had become more expressive.

The designers also made sure the color palette would work well with a wide range of different backgrounds, making the mascot more versatile. The Kotlin team intended to use the character in a wide variety of ways, so it had to fit naturally into any digital and real-life context and had to align with the general Kotlin brand design guidelines.

Focus group feedback

We planned to present the drafts during a guided focus group session, which would give participants the chance to share deeper feedback and help us choose the most promising direction to take things in. The idea for this focus group came from one of the researchers’ backgrounds in urban anthropology and spatial development. A widely adopted approach in this field is participatory design, in which users of a space share their perspectives on how public areas should be shaped and experienced.

To keep the process productive, we carefully applied the principles of cognitive interviewing to uncover the implicit expectations and mental images of the participants. Some participants actually requested a preview of the drafts in advance, but we had to decline, so as to ensure we were getting a totally “fresh” reaction from every single session participant.

We kicked the session off by dividing everyone into smaller groups to ensure every voice could be heard. The first task was to define the core values, keywords, and associations the Kotlin mascot should reflect. What key traits did the participants identify? They said it should be friendly and supportive, a little mischievous, and clearly tech-savvy. Participants also emphasized that the character should feel helpful and be something they’d be proud to show off. 

To guide the evaluation process, we set up a Miro board where participants could assess each mascot variant against the criteria they had established earlier in the session. The board was structured to reflect the key traits – like friendliness, tech-savviness, and a touch of playfulness – and allowed each group to visually map how well each character draft aligned with those values.

This setup worked out as we expected: it made it easy to compare impressions across groups, highlight areas of consensus, and spot where a particular variant might fall short. Moreover, we visualized and mapped all the individual “mental images” of the character and managed to get all the participants to agree on those “personality traits”. This helped us gather structured, actionable feedback about the mascot’s appearance for the design team in a collaborative and engaging way. 

Miro board where participants evaluated mascot variants according to criteria they developed

In the end, the refined version of the original character came out on top. By modifying its features based on community feedback – adding warmth, personality, and visual balance – we managed to strike the right chord with participants. The design stayed true to the initial concept while evolving into a more relatable mascot.

And the winner is…

Kodee toy specifications

After that, designers spent some time refining the final version and aligning it with the feedback from the session. It took a few rounds to make sure everything was just right – from visual details to brand alignment. Once the design felt solid, Kotlin Marketing led the stakeholder approval process, aligning teams around the refined direction before moving into production.

Eventually, the mascot was officially approved and ready to meet the world. And then came the final piece of the puzzle: the mascot’s name. 

Naming the Kotlin community’s mascot

Naming the mascot turned out to be one of the most creative and surprisingly tricky parts of the process. We were looking for a name that felt tech-savvy and in line with Kotlin’s spirit, while also carrying a sense of warmth and approachability. Striking that balance wasn’t easy.

To generate new ideas, the mascot working group split back up into teams so that each team could have a brainstorming session and work on the problem from their own angle. The Strategic Research team even used ChatGPT (a fairly novel strategy in early 2023!) to refine the list of options and bring it more in line with the focus group feedback we’d collected. Meanwhile, the Kotlin Marketing team also consulted the Twitter community (now X), and the response was incredible: we received hundreds of thoughtful, fun, and clever suggestions. 

After much deliberation, the Kotlin team narrowed it down to a short list of appealing options. To avoid copyright clashes or intercultural confusion, we invited JetBrains Localization team and Copyeditor team to check how each option might be received among people from various cultural and linguistic backgrounds. After this analysis, we landed on three finalists: Kodee, Milo, and Lilo. Picking one was no small feat. Milo was nice, but had no obvious relation to Kotlin. One key reason it edged out Lilo was flexibility. In many languages, “Lilo” would call to mind a shade of purple or violet. But since the mascot’s look was bound to evolve over time, we thought it was best not to use a name that was tied to a physical trait. Ultimately, the Kotlin team landed on Kodee, a playful nod to coding that felt right at home in the Kotlin ecosystem. 

And just like that, Kodee was born – ready to meet the world, be animated in presentations, and featured on pins.

Multiple versions of Kodee

The response to the new version of Kodee was overwhelmingly positive. Developers loved the refreshed design and personality, and it quickly became a recognizable part of the Kotlin identity. 

Today, Kodee takes many forms, from expressive emojis and animated stickers to physical merchandise like plush toys. It’s not just a mascot anymore – it’s a friendly face that brings the Kotlin community together across platforms and events.

Different versions of Kodee, including plush, Lego, and life-sized forms

Recently, Kodee has started resonating beyond the developer community. Earlier this year, the character was presented at Pictoplasma in Berlin, one of the world’s leading conferences dedicated to character design, storytelling, and contemporary visual culture. Introducing Kodee to an audience of designers, illustrators, and character creators demonstrated that the mascot can connect with people not only as a product symbol, but also as an independent character with its own identity and story. For us, this was an exciting milestone in Kodee’s evolution and a reminder that well-crafted characters can build bridges between different creative communities.

Kodee’s story at Pictoplasma in Berlin, plush Kodee shown on the screen

Conclusion

Kodee’s journey from concept to community icon reflects a cross-functional effort by the Kotlin Marketing team in close collaboration with Design, Strategic Research, many other JetBrains teams, and the Kotlin community. What began as a simple idea for adding warmth and personality to the programming language evolved into a vibrant character shaped by feedback, creativity, and shared values. 

The greatest recognition for our mascot project came from the Kotlin community itself: Kodee was wholeheartedly adopted, creatively reinterpreted, and enthusiastically reproduced in countless ways, from digital artwork to handmade clay figures. It really became a character that Kotlin developers are proud to show off – one of the essential requirements for the mascot, as described by our focus group participants.

With its expressive design, tech-savvy charm, and playful spirit, Kodee now stands out as more than just a mascot: it’s a symbol of Kotlin’s inclusive and developer-friendly culture, ready to grow alongside the community it represents.

Kodee and its leading researcher, Olga Vorobeva

Many thanks to all teams involved:

Researchers: 
Leading researcher – Olga Vorobeva
Naming – Yanina Ledovaya, Sofia Kulikova
Focus group designers and facilitators – Olga Vorobeva, Yanina Ledovaya, Raisa Kanischeva, Evgenia Igolnikova, Sofia Kulikova

Designers:
Main designer / Kodee’s “mother” – Tina Prokhorova
Positions and situations of the characters – Arina Kovrizhkina
Preliminary 3D version and animation – Kirill Malich
Final 3D version – Alexey Salmin
Final animation – Alena Sulza, Anastasia Ibragimova

Kotlin team representatives:
VP of Product – Egor Tolstoy
Kotlin Marketing Team Lead – Ekaterina Volodko 
PMM – Maria Krishtal
PMM – Ksenia Shneyveys
And other Kotlin team members who were always eager to help, brainstorm, and give feedback.

Subscribe to JetBrains Research blog updates

Discover more