RFC 0042: Adoption of Emoji-Based Identifiers in Swift


LLMs are here to help you achieve your goals with bland writing style, proper grammar and a ton of emojis. It doesn’t really matter if your goals are downright insane. To illustrate it, I gave the following prompt to Gemini 3.6: “Write a RFC proposing the usage of emojis in function and variable names in a Swift codebase. Stress the expressiveness of emojis, the need to appeal to young developers, and the good support of language and IDEs. Plan a rollout where a task force is created to convert the main function names to emojis”. The result is pure comedy:

RFC 0042: Adoption of Emoji-Based Identifiers in Swift

Status: Proposed
Authors: Architecture Working Group
Target Audience: All Swift Engineering Teams

Summary

This RFC proposes standardizing the use of Unicode emojis for function and variable identifiers across all Swift codebases. Leveraging Swift’s native Unicode syntax support, this initiative aims to increase code expressiveness, modernize team workflows, and make our engineering culture more attractive to modern, early-career developers.

Motivation

  • Enhanced Semantic Density: Emojis compress complex operations into instantaneous visual metaphors. A method named 🧹() conveys intent significantly faster than purgeTemporaryCacheFiles(), reducing visual noise during pull requests and code reviews.
  • Recruitment & Next-Gen Appeal: Early-career and Gen Z developers thrive in visual-first communication environments. Aligning our codebase syntax with modern digital expression reduces barrier-to-entry friction and positions our team as progressive industry innovators.
  • First-Class Tooling Support: Swift natively treats Unicode characters as valid identifiers. Xcode, SourceKit-LSP, and VS Code support emoji auto-completion, inline search, and refactoring out of the box without requiring custom compiler plugins.

Proposed Naming Conventions

Legacy Identifier Proposed Emoji Standard Category / Scope
fetchRemoteData() 📥() Network operations
saveToDatabase() 💾() Local persistence
isAuthenticated 👤🔓 Boolean status flags
calculateTotal() 🧮() Business logic & math
struct 🛒Manager {
   var 💰Total: Double
   
   func 💳(amount: Double) -> Bool {
       // Execute payment transaction logic
       return true
   }
}

Rollout Strategy

Phase 1: Style Guide & Linter Configuration (Weeks 1–2)
Publish the official Emoji Naming Dictionary in our repository documentation. Update SwiftLint rules to permit supported Unicode ranges while flagging ambiguous multi-meaning emojis.

Phase 2: Task Force Formation (Weeks 3–4)
Establish the Emoji Migration Task Force (EMTF), composed of cross-functional engineers. The task force will audit core modules and establish conversion scripts for automated refactoring.

Phase 3: Core Entry Point Refactoring (Weeks 5–8)
The EMTF will execute a targeted migration converting main application entry points and core function names across primary modules:

  • main()🏁()
  • initializeApp()🚀()
  • handleFatalError(_:)🔥(_:)
  • shutdown()🛑()

Phase 4: General Adoption (Weeks 9+)
Deprecate traditional text-based naming conventions for all new feature development.

I followed up asking whether that’s a good idea, and it told me “In practice, no—it is a terrible idea for a production codebase” which is what any sane person would have told me before writing the RFC, not after. This is a huge gap to be filled if LLMs want to steal any jobs.

In a less satyrical example, I recently started automating some tasks via Claude skills and I wanted something to schedule agents. I asked Claude and it proposed a somewhat credible solution using GitHub actions, Docker containers and some duck tape. When I asked whether there was a solution, ideally open-source, that I could use instead of rolling out my own, it gladly pointed me to 3 options.

Anything that’s capable of cranking out a serious-looking RFC for a completely crazy proposal in seconds is obviously a very powerful tool. One that will do that without questioning you is still just a tool, not a sentient being you can offload your thought process to. Don’t confuse the two and you’ll be fine.