行业动态
blog.jetbrains.com ·
@Dominika Stankiewicz
Python 与 Go 实用对比:来自 JetBrains 2026 开发者生态调查的发现
JetBrains 官方博客基于 Developer Ecosystem 2026 调查(28,945 份回复,2026 年 5–7 月)及对 7 名从 Python 迁移到 Go 的开发者的访谈,从语言设计、性能、工具链、开发者画像和迁移经验等维度对比 Python 与 Go。文章称 Python 侧重表达力与快速迭代,Go 侧重显式、标准化和跨团队可维护性,在并发与云基础设施场景表现更强;Python 在机器学习、数据科学和科学计算上仍占优。文中提到 Go 开发者更偏基础设施且更资深,Go 很少是入门语言;在构建 AI 集成方面,Go 开发者与 Python 开发者比例接近(46% vs 44%),多数团队同时使用两种语言。
AI推荐理由 JetBrains 官方博客基于其 Developer Ecosystem 2026 调查(28,945 份回复,2026 年 5–7 月)对比 Python 与 Go,给出具体数据点(如 Go 与 Python 开发者构建 AI 集成的比例 46% vs 44%),并附 7 名从 Python 迁移到 Go 的开发者的访谈。信息密度较高、来源为官方调查,但属语言对比类内容,对 AI/模型/Agent 的直接增量有限,且调查数据为自报口径。
62
正文
Two things are true about Python: It’s the most popular programming language in the world, and it’s the most common companion language for Go developers. How do we know that? From the Developer Ecosystem 2026 survey by JetBrains. But we also know a lot more about the developers who use these two languages – both from quantitative data from different surveys, as well as qualitative data from our interviews with professionals who switched from Python to Go. In this article, we share findings from these sources, going well beyond the simple syntax comparisons you will usually find. We will look at how the two languages differ, what the surveys tell us about the people who use them, and what our interviews say about the trade-offs between Python and Go, so that if you’re considering making the leap, you don’t have to dive in blind. TL;DR The article compares Python and Go across language design, performance, tooling, developer profiles, and migration experiences. Python favors expressive code and rapid iteration; Go favors explicit, standardized code that is easy to maintain across teams. Go excels in raw performance and concurrency, and is widely used in cloud infrastructure. Python remains stronger for machine learning, data science, and scientific computing. Go developers are typically more infrastructure-focused and more senior. Go is rarely someone’s first language, whereas Python is very beginner-friendly. Python leads in building AI models, yet Go developers create AI integrations at nearly the same rate: 46% vs 44%. Moving to Go rarely means abandoning Python. Most teams use both, with Go for services and infrastructure and Python for AI and data workloads. A note about the data Unless stated otherwise, all survey figures come from the JetBrains Developer Ecosystem Survey 2026 (28,945 responses, fielded May–July 2026). We compare two groups: developers who selected Go among their primary languages (1,836) and developers who selected Python (11,298). The groups overlap, with 619 respondents selecting both languages. Therefore, every gap below is a conservative estimate of the real difference. Some questions were shown to only a part of each group, so bases are provided for reference. The qualitative material comes from interviews with developers who moved production workloads from Python to Go. We conducted the interviews between April and May 2026 and included seven participants who began using Go within the past year. Python vs Go – languages compared Core philosophy On paper, Python and Go sound like they’d get along. Python lays out the core principles in the Zen of Python: Simple is better than complex, readability counts, there should be one obvious way to do it, etc. Go, as per Effective Go, “focuses on simplicity, reliability, and efficiency”, and is “specifically designed to make it easy to build software at scale”. In practice, Python often optimizes for the person writing the code, offering multiple ways to say the same thing. Go optimizes for the person (or, nowadays, possibly the agent) reading someone else’s code two years later, so it picks one way to say most things and makes you spell it out. The goal is for all Go code to look like other Go code. We point this out right at the beginning, because however similar these two philosophies look, this difference in approach underlies almost all the other language design differences that follow. Ease of use and learning curve Python is arguably one of the easiest programming languages to learn among those widely used in production. The syntax resembles natural language, the core set of constructs is small, and beginners can focus on programming ideas instead of language mechanics, leading to less frustration and faster results. Surveys consistently show Python to be one of the most popular programming languages (if not the most popular). In 2026, 10% of Python developers have been coding for less than a year, 23% are students or working students, and 19% hold junior positions, showing the language has a strong early-stage user base. Python’s popularity among early learners is almost self-perpetuating. Initially, the language was well-suited to introductory courses and learning materials largely because it lets beginners print “Hello, world” with little ceremony, bypassing much boring theory in favor of real outputs. It also has the added benefit of being a generalist language that can handle a variety of use cases. Later, the sheer number of introductory courses and learning materials made it a natural choice for anyone who wanted to pick up programming but didn’t know where to start. It’s not the same case with Go. In fact, you would be hard-pressed to find courses that teach you programming through Go. There are two reasons for that. First, Go 1.0 was released in 2012, long after Python had already become firmly embedded in CS curricula. The other is that Go solves problems that beginners don’t have. Explicit error handling, static types, and interfaces, which we’ll discuss later, all pay off across a large codebase maintained by a team over years. Go also has a much narrower set of implementations than Python, which makes it even less appealing for beginners. That said, Go was also designed to be easy to learn, but for a different reason: Any large team should be able to onboard a new engineer quickly. Many Go developers will say that if you already know general programming concepts, you can become productive in Go in a matter of days or weeks. Developers we talked to said that Go “feels as easy to write as Python” and that it “strikes a good balance between Python’s simplicity and Java’s explicit nature”. Syntax and readability When you read Python, you can often follow it even without programming experience, because it reads relatively close to English. Python is dynamically typed, so type declarations are optional, though in practice, many companies and large codebases now write Python with type hints throughout, checked by tools like mypy or Pyright. Most of the ecosystem follows the formatting conventions set out in PEP 8, but they are still optional, and so some teams diverge from them. Go, by contrast, is explicit and deliberately limited, which contributes to the cross-team readability we mentioned. It is statically typed, which makes it noticeably more verbose than Python. That was the main syntactic complaint raised by the developers we interviewed. Formatting in Go is not a matter of preference: gofmt will shape your code into the canonical form, whether you like the conventions or not. One syntactic difference that developers consistently pointed out as a big adjustment when moving from Python to Go was error handling. Python lets you push failure handling to the edges of a function with try / except. Experienced Go developers clutch their pearls at the sight of that. # Python: handle failure where it is convenient try: profile = get_user(user_id) except UserNotFound: return render_404() // Go: handle failure where it happens profile, err := getUser(userID) if err != nil { if errors.Is(err, ErrUserNotFound) { return render404(w) } return fmt.Errorf("get user %s: %w", userID, err) } The Go version is longer, and in a large handler, developers will find themselves writing the if err != nil boilerplate ad nauseam. In return, they get control flow with no invisible jumps: Every path a value can take is explicit. Both approaches come with trade-offs. Type system Python’s dynamic typing checks types at runtime. This gives developers flexibility in writing and can speed up iteration, but it also means some type errors only show up when the code runs. The flexibility extends to the object model, which relies on duck typing: The code cares less about what an object is than what it can do. The developers we interviewed said they sorely missed duck typing, as it makes testing and mocking more difficult in Go. Go checks types before the program runs. This results in fewer type-related failures reaching production and makes refactoring safer, but also causes code verbosity, as we touched on earlier. Object model and polymorphism Python is object-oriented in the way that most developers first learn the term. Everything is an object, and classes inherit from other classes (several at once, if you insist). Polymorphism works in two ways: down the class hierarchy when a subclass overrides its parent’s method, and sideways through duck typing, where anything with a read() method can be handed to code that expects a file. Go has none of that hierarchy. There are no classes, no inheritance, and no way to declare that one type is a subtype of another. Instead, structs have methods attached to them, as well as interfaces that types satisfy implicitly without ever naming them. # Python: the implementation announces its role class Store(ABC): @abstractmethod def get(self, key: str) -> bytes: ... class RedisStore(Store): def get(self, key: str) -> bytes: ... // Go: the consumer declares what it needs; RedisStore never mentions Getter type Getter interface { Get(key string) ([]byte, error) } func handleRead(g Getter, key string) ([]byte, error) { return g.Get(key) } Notice how the dependency runs. In Python, RedisStore inherits from Store, so the abstraction sits with the implementation. In Go, handleRead declares the one method it actually calls, and RedisStore never learns that Getter exists. That’s why Go developers say to “accept interfaces, return structs”, and that’s why interfaces stay small – io.Reader and io.Writer have a single method each. Performance and speed Go follows a traditional compilation model, producing a native binary. Python, on the other hand, takes a hybrid approach: Source code is compiled to bytecode, which the interpreter then executes. As most compiled languages do, Go wins in terms of raw speed. You can compare the patterns across latency, throughput, and startup time on The Computer Language Benchmarks Game. Microbenchmarks like these don’t really translate directly to real workloads, and we wouldn’t be surprised if you made nothing of them. Our interviewees told us what the difference meant in production for them: One team migrated to Go after cold starts on AWS Lambda in Python exceeded 10 seconds; another measured a tenfold improvement in request times after rewriting their Python service in Go. But raw language speed matters only when your service is actually compute-bound or latency-sensitive, and plenty of services are neither. Equally importantly, the Python interpreter is not slow where it counts most for one of its largest user bases. In machine learning, data work, and numerical computing, libraries like NumPy and PyTorch offload expensive operations to optimized native code, making interpreter overhead much less relevant. When we asked migrating developers where they decided to keep Python code, they confidently listed all AI and ML workflows – LLMs, chatbots, RAGs, and model training. Memory management Memory management is another important part of the performance discussion. Both languages manage memory for you, but differently: Go uses a tracing garbage collector, while CPython uses reference counting alongside a cyclic garbage collector. This affects what developers can fine-tune and what they need to design around. Go’s GC runs concurrently with the program and is designed to minimize stop-the-world pauses. Developers can tune this behavior: GOGC and GOMEMLIMIT set the pacing, and the memory profile (heap and allocs) tells you when a service allocates too hard. In CPython, an object is typically freed the moment its last reference disappears. Memory use is predictable, and pauses are rarely worth measuring, but the cost is spread across every operation, and there’s little to room tune it. Concurrency and parallelism Even though both languages support concurrency, developers we talked to cited better concurrency as the reason why they switched from Python to Go. Goroutines are central to Go’s design. They are lightweight threads managed by the runtime. They are cheap to create, carry little overhead, and scale to thousands of concurrent operations. The runtime handles the scheduling, which makes the model simpler than in Python – there is no separate async/await syntax, so a function is just a function. However, if you start to spawn goroutines without controlling their lifecycle, you’d better be ready to deal with race conditions, leaks, and deadlocks before long. The other half of the concurrency model in Go are channels – typed conduits that pass values between goroutines and synchronize them. Instead of guarding shared state with a lock, Go can pass the value to whichever needs it next. A select statement waits on several channels at once, which is how Go expresses timeouts, cancellation, and fan-in using built-in language constructs. These very same primitives also produce common Go bugs: goroutine leaks and more deadlocks. Meanwhile, Python relies on standard libraries, single-threaded event loops, and sub-processes to work around interpreter constraints. It offers threading, but in CPython, the global interpreter lock (GIL) has historically prevented threads from running Python bytecode simultaneously, making it ineffective for CPU-bound parallelism. For I/O-bound concurrency, there is asyncio, and for real parallelism there is multiprocessing, but that adds memory overhead and requires inter-process communication. It’s worth noting that the GIL itself is no longer a necessity – starting with Python 3.13, PEP 703 introduced an officially supported free-threaded build, and 3.14 continues that work. Most production code still runs with the GIL in place, but with each new release, the claim that “Python can’t do real threading” is becoming less true. # Python: async/await, and the coloring that comes with it async def fetch_all(urls): return await asyncio.gather(*(fetch(u) for u in urls)) // Go: ordinary functions run concurrently var wg sync.WaitGroup for _, u := range urls { wg.Add(1) go func() { defer wg.Done() fetch(u) }() } wg.Wait() The approach to concurrency gives Go much of its practical advantage in high-throughput services, and having experienced both, our interviewees praised Go for being “async by default” and better suited for high-concurrency components, and they described it as having a superior concurrency model that’s highly performant and appealing for real-world use cases. Libraries, frameworks, and IDEs Go’s self-contained ecosystem Go was never built as just a programming language, but as an ecosystem. As the Go team puts it, the goal was “an end-to-end platform with tooling all around the software development lifecycle” (Google for Developers), with formatters, test frameworks, dependency management, and security tools included in the toolchain, alongside a standard library that’s comprehensive enough to make external frameworks optional, if not irrelevant. The Developer Ecosystem 2026 survey shows how successful the Go team has been in achieving that goal. For example, among Gophers, the standard html/template and text/template library packages are used by 31% and 22% of developers respectively, whereas the only other significant alternative – templ – is used by 11%. Almost half of Gophers either don’t write unit tests or don’t use testing frameworks: 14% don’t write unit tests at all, and 35% don’t use frameworks for testing – the testing package provides everything they need in that regard. Others may also reach for tools such as Testify (31%) or GoMock (25%). The remaining libraries are far less popular. For web development, 46% of developers use the standard net/http library, compared to 48% who use Gin. This proves that where a third-party framework exists, it doesn’t compete with the many other frameworks, but only with the standard library. Oftentimes, it loses. .jb-pvg{--jb-pvg-go:#007d9c;--jb-pvg-py:#6b57ff;--jb-pvg-t:#19191c;--jb-pvg-mu:#6b6b73;--jb-pvg-li:#d9d9e3;color:var(--jb-pvg-t);font:inherit;margin:32px 0}.jb-pvg *{box-sizing:border-box}.jb-pvg-panel{background:#fff;border:1px solid var(--jb-pvg-li);border-radius:8px;padding:24px}.jb-pvg .jb-pvg-eyebrow{color:var(--jb-pvg-mu);font-size:12px;font-weight:700;letter-spacing:.08em;line-height:1.4;margin:0 0 6px;text-transform:uppercase}.jb-pvg .jb-pvg-title{color:var(--jb-pvg-t);font-size:20px;font-weight:700;line-height:1.3;margin:0}.jb-pvg .jb-pvg-q{color:var(--jb-pvg-mu);font-size:14px;line-height:1.5;margin:6px 0 0}.jb-pvg-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:16px 0 0;color:var(--jb-pvg-mu);font-size:13px;line-height:1.4}.jb-pvg-key{display:inline-flex;align-items:center;gap:6px}.jb-pvg-key:before{content:"";display:inline-block;width:12px;height:12px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-key-py:before{background:var(--jb-pvg-py)}.jb-pvg-rows{margin:12px 0 0;padding:0}.jb-pvg-r{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:4px 16px;align-items:center;padding:7px 0;border-top:1px solid #ececf2}.jb-pvg-r:first-child{border-top:0}.jb-pvg-l{min-width:0;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.jb-pvg-m .jb-pvg-l{color:var(--jb-pvg-mu)}.jb-pvg-s{color:var(--jb-pvg-mu);margin-left:2px}.jb-pvg-bs{display:grid;gap:3px;min-width:0}.jb-pvg-ln{display:flex;align-items:center;gap:8px;min-width:0}.jb-pvg-b{display:block;flex:none;width:calc((100% - 56px) * var(--w));height:10px;min-width:2px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-bp{background:var(--jb-pvg-py)}.jb-pvg-z{min-width:0}.jb-pvg-m .jb-pvg-b{opacity:.5}.jb-pvg-v{flex:none;min-width:44px;font-size:13px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}.jb-pvg-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.jb-pvg-collapsed .jb-pvg-x{display:none}.jb-pvg .jb-pvg-toggle{display:inline-block;margin:12px 0 0;padding:6px 12px;background:#fff;border:1px solid var(--jb-pvg-li);border-radius:6px;color:var(--jb-pvg-t);font:inherit;font-size:13px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-toggle[hidden]{display:none}.jb-pvg .jb-pvg-toggle:hover{border-color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-toggle:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:2px}.jb-pvg .jb-pvg-note{color:var(--jb-pvg-mu);font-size:12.5px;line-height:1.5;margin:14px 0 0}@media (max-width:560px){.jb-pvg-panel{padding:18px}.jb-pvg-r{grid-template-columns:minmax(0,1fr)}.jb-pvg .jb-pvg-title{font-size:18px}}.jb-pvg .jb-pvg-tabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:16px 0 0;padding:0;border-bottom:1px solid var(--jb-pvg-li)}.jb-pvg .jb-pvg-tabs[hidden]{display:none}.jb-pvg .jb-pvg-tab{margin:0 0 -1px;padding:8px 12px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--jb-pvg-mu);font:inherit;font-size:14px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-tab:hover{color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-tab[aria-selected="true"]{color:var(--jb-pvg-t);border-bottom-color:var(--jb-pvg-t);font-weight:700}.jb-pvg .jb-pvg-tab:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:-2px}.jb-pvg-card+.jb-pvg-card{margin-top:24px;padding-top:8px;border-top:1px solid var(--jb-pvg-li)}.jb-pvg-tabbed .jb-pvg-card+.jb-pvg-card{margin-top:0;padding-top:0;border-top:0}.jb-pvg-card[hidden]{display:none}.jb-pvg .jb-pvg-ctitle{color:var(--jb-pvg-t);font-size:16px;font-weight:700;line-height:1.35;margin:16px 0 0}@media (max-width:560px){.jb-pvg .jb-pvg-tab{padding:8px 10px;font-size:13px}} Go developers Libraries and frameworks Go developers use Template enginesTestingWeb frameworks Template engines used for Go development Which template engines do you use for Go development, if any? None52% html/template31% text/template22% templ11% gomponents5% pongo24% Plush1% Other2% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Respondents who answered the Go section (n = 1,529). Multiple answers allowed. Testing frameworks and mock libraries in Go Which testing frameworks or mock libraries do you regularly use, if any? I write unit tests but don’t use any frameworks35% Testify31% GoMock25% I don’t write unit tests for Go14% Ginkgo7% go-sqlmock6% Godog5% Gomega3% GoConvey1% Other2% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Respondents who answered the Go section (n = 1,518). Multiple answers allowed. Go web frameworks in regular use Which Go web frameworks do you regularly use, if any? Gin48% net/http46% gorilla/mux15% go-chi/chi15% Echo13% Fiber13% None12% Beego5% Buffalo2% Revel1% Other5% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Respondents who answered the Go section (n = 1,519). Multiple answers allowed. Python’s broad ecosystem Python’s ecosystem works the other way around. The Python Package Index (PyPI) is vast and mature, and where the standard library stops, several strong alternatives tend to compete. Take web frameworks, for example. Half of Python developers use FastAPI, and Django (31%) competes closely with Flask (30%). The data science landscape is more fragmented, and developers use those libraries simultaneously: 69% use NumPy, 68% use pandas, 50% use PyTorch, 49% use Matplotlib, etc. With Python, there’s often no clear leader, and choosing the right framework or library is part of the job. .jb-pvg{--jb-pvg-go:#007d9c;--jb-pvg-py:#6b57ff;--jb-pvg-t:#19191c;--jb-pvg-mu:#6b6b73;--jb-pvg-li:#d9d9e3;color:var(--jb-pvg-t);font:inherit;margin:32px 0}.jb-pvg *{box-sizing:border-box}.jb-pvg-panel{background:#fff;border:1px solid var(--jb-pvg-li);border-radius:8px;padding:24px}.jb-pvg .jb-pvg-eyebrow{color:var(--jb-pvg-mu);font-size:12px;font-weight:700;letter-spacing:.08em;line-height:1.4;margin:0 0 6px;text-transform:uppercase}.jb-pvg .jb-pvg-title{color:var(--jb-pvg-t);font-size:20px;font-weight:700;line-height:1.3;margin:0}.jb-pvg .jb-pvg-q{color:var(--jb-pvg-mu);font-size:14px;line-height:1.5;margin:6px 0 0}.jb-pvg-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:16px 0 0;color:var(--jb-pvg-mu);font-size:13px;line-height:1.4}.jb-pvg-key{display:inline-flex;align-items:center;gap:6px}.jb-pvg-key:before{content:"";display:inline-block;width:12px;height:12px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-key-py:before{background:var(--jb-pvg-py)}.jb-pvg-rows{margin:12px 0 0;padding:0}.jb-pvg-r{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:4px 16px;align-items:center;padding:7px 0;border-top:1px solid #ececf2}.jb-pvg-r:first-child{border-top:0}.jb-pvg-l{min-width:0;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.jb-pvg-m .jb-pvg-l{color:var(--jb-pvg-mu)}.jb-pvg-s{color:var(--jb-pvg-mu);margin-left:2px}.jb-pvg-bs{display:grid;gap:3px;min-width:0}.jb-pvg-ln{display:flex;align-items:center;gap:8px;min-width:0}.jb-pvg-b{display:block;flex:none;width:calc((100% - 56px) * var(--w));height:10px;min-width:2px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-bp{background:var(--jb-pvg-py)}.jb-pvg-z{min-width:0}.jb-pvg-m .jb-pvg-b{opacity:.5}.jb-pvg-v{flex:none;min-width:44px;font-size:13px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}.jb-pvg-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.jb-pvg-collapsed .jb-pvg-x{display:none}.jb-pvg .jb-pvg-toggle{display:inline-block;margin:12px 0 0;padding:6px 12px;background:#fff;border:1px solid var(--jb-pvg-li);border-radius:6px;color:var(--jb-pvg-t);font:inherit;font-size:13px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-toggle[hidden]{display:none}.jb-pvg .jb-pvg-toggle:hover{border-color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-toggle:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:2px}.jb-pvg .jb-pvg-note{color:var(--jb-pvg-mu);font-size:12.5px;line-height:1.5;margin:14px 0 0}@media (max-width:560px){.jb-pvg-panel{padding:18px}.jb-pvg-r{grid-template-columns:minmax(0,1fr)}.jb-pvg .jb-pvg-title{font-size:18px}}.jb-pvg .jb-pvg-tabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:16px 0 0;padding:0;border-bottom:1px solid var(--jb-pvg-li)}.jb-pvg .jb-pvg-tabs[hidden]{display:none}.jb-pvg .jb-pvg-tab{margin:0 0 -1px;padding:8px 12px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--jb-pvg-mu);font:inherit;font-size:14px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-tab:hover{color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-tab[aria-selected="true"]{color:var(--jb-pvg-t);border-bottom-color:var(--jb-pvg-t);font-weight:700}.jb-pvg .jb-pvg-tab:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:-2px}.jb-pvg-card+.jb-pvg-card{margin-top:24px;padding-top:8px;border-top:1px solid var(--jb-pvg-li)}.jb-pvg-tabbed .jb-pvg-card+.jb-pvg-card{margin-top:0;padding-top:0;border-top:0}.jb-pvg-card[hidden]{display:none}.jb-pvg .jb-pvg-ctitle{color:var(--jb-pvg-t);font-size:16px;font-weight:700;line-height:1.35;margin:16px 0 0}@media (max-width:560px){.jb-pvg .jb-pvg-tab{padding:8px 10px;font-size:13px}} Python developers Frameworks and packages Python developers use Web frameworksData science Web frameworks used with Python What web frameworks / libraries do you use in addition to Python? FastAPI50% Django31% Flask30% None28% Other3% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Respondents who answered the Python section (n = 4,276). Multiple answers allowed. Data science packages used with Python What data science packages do you use in Python? NumPy69% pandas68% PyTorch49% Matplotlib48% scikit-learn35% OpenCV32% TensorFlow30% SciPy29% Seaborn20% Keras15% None14% XGBoost13% Polars8% Other1% Show fewer options Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Respondents who answered the Python section (n = 4,277). Multiple answers allowed. IDEs & editors When it comes to editors, we see a similar pattern unfold. Go has an excellent language server, which makes general-purpose editors a viable alternative to a Go-specific IDE. When asked which IDEs or editors they use for Go development, 49% reported using GoLand, while 48% reported using VS Code. .jb-pvg{--jb-pvg-go:#007d9c;--jb-pvg-py:#6b57ff;--jb-pvg-t:#19191c;--jb-pvg-mu:#6b6b73;--jb-pvg-li:#d9d9e3;color:var(--jb-pvg-t);font:inherit;margin:32px 0}.jb-pvg *{box-sizing:border-box}.jb-pvg-panel{background:#fff;border:1px solid var(--jb-pvg-li);border-radius:8px;padding:24px}.jb-pvg .jb-pvg-eyebrow{color:var(--jb-pvg-mu);font-size:12px;font-weight:700;letter-spacing:.08em;line-height:1.4;margin:0 0 6px;text-transform:uppercase}.jb-pvg .jb-pvg-title{color:var(--jb-pvg-t);font-size:20px;font-weight:700;line-height:1.3;margin:0}.jb-pvg .jb-pvg-q{color:var(--jb-pvg-mu);font-size:14px;line-height:1.5;margin:6px 0 0}.jb-pvg-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:16px 0 0;color:var(--jb-pvg-mu);font-size:13px;line-height:1.4}.jb-pvg-key{display:inline-flex;align-items:center;gap:6px}.jb-pvg-key:before{content:"";display:inline-block;width:12px;height:12px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-key-py:before{background:var(--jb-pvg-py)}.jb-pvg-rows{margin:12px 0 0;padding:0}.jb-pvg-r{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:4px 16px;align-items:center;padding:7px 0;border-top:1px solid #ececf2}.jb-pvg-r:first-child{border-top:0}.jb-pvg-l{min-width:0;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.jb-pvg-m .jb-pvg-l{color:var(--jb-pvg-mu)}.jb-pvg-s{color:var(--jb-pvg-mu);margin-left:2px}.jb-pvg-bs{display:grid;gap:3px;min-width:0}.jb-pvg-ln{display:flex;align-items:center;gap:8px;min-width:0}.jb-pvg-b{display:block;flex:none;width:calc((100% - 56px) * var(--w));height:10px;min-width:2px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-bp{background:var(--jb-pvg-py)}.jb-pvg-z{min-width:0}.jb-pvg-m .jb-pvg-b{opacity:.5}.jb-pvg-v{flex:none;min-width:44px;font-size:13px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}.jb-pvg-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.jb-pvg-collapsed .jb-pvg-x{display:none}.jb-pvg .jb-pvg-toggle{display:inline-block;margin:12px 0 0;padding:6px 12px;background:#fff;border:1px solid var(--jb-pvg-li);border-radius:6px;color:var(--jb-pvg-t);font:inherit;font-size:13px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-toggle[hidden]{display:none}.jb-pvg .jb-pvg-toggle:hover{border-color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-toggle:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:2px}.jb-pvg .jb-pvg-note{color:var(--jb-pvg-mu);font-size:12.5px;line-height:1.5;margin:14px 0 0}@media (max-width:560px){.jb-pvg-panel{padding:18px}.jb-pvg-r{grid-template-columns:minmax(0,1fr)}.jb-pvg .jb-pvg-title{font-size:18px}}.jb-pvg .jb-pvg-tabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:16px 0 0;padding:0;border-bottom:1px solid var(--jb-pvg-li)}.jb-pvg .jb-pvg-tabs[hidden]{display:none}.jb-pvg .jb-pvg-tab{margin:0 0 -1px;padding:8px 12px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--jb-pvg-mu);font:inherit;font-size:14px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-tab:hover{color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-tab[aria-selected="true"]{color:var(--jb-pvg-t);border-bottom-color:var(--jb-pvg-t);font-weight:700}.jb-pvg .jb-pvg-tab:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:-2px}.jb-pvg-card+.jb-pvg-card{margin-top:24px;padding-top:8px;border-top:1px solid var(--jb-pvg-li)}.jb-pvg-tabbed .jb-pvg-card+.jb-pvg-card{margin-top:0;padding-top:0;border-top:0}.jb-pvg-card[hidden]{display:none}.jb-pvg .jb-pvg-ctitle{color:var(--jb-pvg-t);font-size:16px;font-weight:700;line-height:1.35;margin:16px 0 0}@media (max-width:560px){.jb-pvg .jb-pvg-tab{padding:8px 10px;font-size:13px}} Go developers IDEs and editors used for Go development Which IDEs or editors do you use for Go development? GoLand49% Visual Studio Code48% Zed14% Cursor14% Neovim10% IntelliJ IDEA8% Vim4% Visual Studio4% Sublime Text2% Emacs1% Windsurf1% Atom<1% Other4% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Respondents who answered the Go section (n = 1,529). Multiple answers allowed. One reason is how much of Go’s surrounding ecosystem developers can access without having to assemble it themselves. GoLand installs with a test runner, debugger, coverage, and profilers wired into the toolchain. The analysis runs across the whole project, rather than only the open file. Interprocedural nil checks and unhandled-error inspections can catch the mistakes a Python developer might otherwise only see at runtime. Suffice it to say, Alan Donovan of the Go team has also described traditional IDEs like ours as setting “the gold standard” for refactoring because of their tight integration between the analysis logic and the user interface. Try GoLand .jb-pvg{--jb-pvg-go:#007d9c;--jb-pvg-py:#6b57ff;--jb-pvg-t:#19191c;--jb-pvg-mu:#6b6b73;--jb-pvg-li:#d9d9e3;color:var(--jb-pvg-t);font:inherit;margin:32px 0}.jb-pvg *{box-sizing:border-box}.jb-pvg-panel{background:#fff;border:1px solid var(--jb-pvg-li);border-radius:8px;padding:24px}.jb-pvg .jb-pvg-eyebrow{color:var(--jb-pvg-mu);font-size:12px;font-weight:700;letter-spacing:.08em;line-height:1.4;margin:0 0 6px;text-transform:uppercase}.jb-pvg .jb-pvg-title{color:var(--jb-pvg-t);font-size:20px;font-weight:700;line-height:1.3;margin:0}.jb-pvg .jb-pvg-q{color:var(--jb-pvg-mu);font-size:14px;line-height:1.5;margin:6px 0 0}.jb-pvg-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:16px 0 0;color:var(--jb-pvg-mu);font-size:13px;line-height:1.4}.jb-pvg-key{display:inline-flex;align-items:center;gap:6px}.jb-pvg-key:before{content:"";display:inline-block;width:12px;height:12px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-key-py:before{background:var(--jb-pvg-py)}.jb-pvg-rows{margin:12px 0 0;padding:0}.jb-pvg-r{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:4px 16px;align-items:center;padding:7px 0;border-top:1px solid #ececf2}.jb-pvg-r:first-child{border-top:0}.jb-pvg-l{min-width:0;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.jb-pvg-m .jb-pvg-l{color:var(--jb-pvg-mu)}.jb-pvg-s{color:var(--jb-pvg-mu);margin-left:2px}.jb-pvg-bs{display:grid;gap:3px;min-width:0}.jb-pvg-ln{display:flex;align-items:center;gap:8px;min-width:0}.jb-pvg-b{display:block;flex:none;width:calc((100% - 56px) * var(--w));height:10px;min-width:2px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-bp{background:var(--jb-pvg-py)}.jb-pvg-z{min-width:0}.jb-pvg-m .jb-pvg-b{opacity:.5}.jb-pvg-v{flex:none;min-width:44px;font-size:13px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}.jb-pvg-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.jb-pvg-collapsed .jb-pvg-x{display:none}.jb-pvg .jb-pvg-toggle{display:inline-block;margin:12px 0 0;padding:6px 12px;background:#fff;border:1px solid var(--jb-pvg-li);border-radius:6px;color:var(--jb-pvg-t);font:inherit;font-size:13px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-toggle[hidden]{display:none}.jb-pvg .jb-pvg-toggle:hover{border-color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-toggle:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:2px}.jb-pvg .jb-pvg-note{color:var(--jb-pvg-mu);font-size:12.5px;line-height:1.5;margin:14px 0 0}@media (max-width:560px){.jb-pvg-panel{padding:18px}.jb-pvg-r{grid-template-columns:minmax(0,1fr)}.jb-pvg .jb-pvg-title{font-size:18px}}.jb-pvg .jb-pvg-tabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:16px 0 0;padding:0;border-bottom:1px solid var(--jb-pvg-li)}.jb-pvg .jb-pvg-tabs[hidden]{display:none}.jb-pvg .jb-pvg-tab{margin:0 0 -1px;padding:8px 12px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--jb-pvg-mu);font:inherit;font-size:14px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-tab:hover{color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-tab[aria-selected="true"]{color:var(--jb-pvg-t);border-bottom-color:var(--jb-pvg-t);font-weight:700}.jb-pvg .jb-pvg-tab:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:-2px}.jb-pvg-card+.jb-pvg-card{margin-top:24px;padding-top:8px;border-top:1px solid var(--jb-pvg-li)}.jb-pvg-tabbed .jb-pvg-card+.jb-pvg-card{margin-top:0;padding-top:0;border-top:0}.jb-pvg-card[hidden]{display:none}.jb-pvg .jb-pvg-ctitle{color:var(--jb-pvg-t);font-size:16px;font-weight:700;line-height:1.35;margin:16px 0 0}@media (max-width:560px){.jb-pvg .jb-pvg-tab{padding:8px 10px;font-size:13px}} Python developers Main IDE or editor for Python development Which IDE or editor do you use the most for Python development? Visual Studio Code41% PyCharm22% Cursor10% PyCharm Pro8% Jupyter Notebook5% Vim / Neovim3% IntelliJ IDEA3% Zed2% Notepad++2% IDLE1% Datalore<1% Windsurf<1% Emacs<1% Other2% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Respondents who answered the Python section (n = 4,276). One answer per respondent. The Python side is more fragmented and has more Python-specific options, such as Jupyter Notebook and, of course, PyCharm. The latter is used by 30% of Python developers (PyCharm – 22%, PyCharm Pro – 8%), with VS Code at 41%. Notebooks explain much of the fragmentation, since data and service work don’t necessarily require the same toolset. Whatever you build in Python, PyCharm has first-class support for your stack, your frameworks, and your workflow – for web, data, and ML workflows – with notebooks running alongside a debugger and type checker. It parses your code and resolves usages, types, and dependencies throughout your entire project. So you always know exactly what your code does and what will break if it changes, for you and your agents alike. Try PyCharm If you use both Go and Python – as a quarter of Gophers do – it’s worth noting that both GoLand and PyCharm are built on the same platform, so keymaps, shortcuts, and settings sync between them. GoLand also supports Python functionalities through the Python Community Edition plugin. Python vs Go – broader landscapes The language itself is one thing, but many other factors go into deciding which language you choose to work with. Developers consider what the languages are used for, who uses them, and how they’re maintained. In this section, we’ll provide insights on the factors that shape the broader landscapes of Python and Go. Go developers are more senior Across all questions about age, experience, and seniority in the Developer Ecosystem 2026 survey, Gophers tend to be further along in their career than Python developers. On overall professional coding experience (not just experience in their main programming language), 20% of Go devs report 16 years or more, compared to 12% among Python developers. At the other end, 9% of Gophers have 1–2 years of experience, compared to 20% of Python developers. Most Go professionals have senior roles, at 60%, with only 2% being trainees and 10% juniors. Meanwhile, 42% of Python professionals are seniors; trainees (6%) and juniors (19%) make up a quarter of the cohort. 72% of Go developers are employed full-time, compared to 51% of Python developers. Students and working students make up 8% of Gophers, compared to 23% of the Python population. Finally, by age, the largest group of Go developers is aged 30–34 (23%), compared to Python’s largest group, aged 21–24 (22%). These differences align with the point we made earlier: Python is a very popular first language for learners, while Go is almost never chosen as a first language and instead is picked up by more experienced developers later in their careers. It’s important to keep this in mind as you read the following sections on developer demographics, because a lot of these numbers may look like differences between two languages, where in reality, they’re just differences between a senior population vs a general one that you would see regardless of what ecosystems you compare. .jb-pvg{--jb-pvg-go:#007d9c;--jb-pvg-py:#6b57ff;--jb-pvg-t:#19191c;--jb-pvg-mu:#6b6b73;--jb-pvg-li:#d9d9e3;color:var(--jb-pvg-t);font:inherit;margin:32px 0}.jb-pvg *{box-sizing:border-box}.jb-pvg-panel{background:#fff;border:1px solid var(--jb-pvg-li);border-radius:8px;padding:24px}.jb-pvg .jb-pvg-eyebrow{color:var(--jb-pvg-mu);font-size:12px;font-weight:700;letter-spacing:.08em;line-height:1.4;margin:0 0 6px;text-transform:uppercase}.jb-pvg .jb-pvg-title{color:var(--jb-pvg-t);font-size:20px;font-weight:700;line-height:1.3;margin:0}.jb-pvg .jb-pvg-q{color:var(--jb-pvg-mu);font-size:14px;line-height:1.5;margin:6px 0 0}.jb-pvg-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:16px 0 0;color:var(--jb-pvg-mu);font-size:13px;line-height:1.4}.jb-pvg-key{display:inline-flex;align-items:center;gap:6px}.jb-pvg-key:before{content:"";display:inline-block;width:12px;height:12px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-key-py:before{background:var(--jb-pvg-py)}.jb-pvg-rows{margin:12px 0 0;padding:0}.jb-pvg-r{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:4px 16px;align-items:center;padding:7px 0;border-top:1px solid #ececf2}.jb-pvg-r:first-child{border-top:0}.jb-pvg-l{min-width:0;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.jb-pvg-m .jb-pvg-l{color:var(--jb-pvg-mu)}.jb-pvg-s{color:var(--jb-pvg-mu);margin-left:2px}.jb-pvg-bs{display:grid;gap:3px;min-width:0}.jb-pvg-ln{display:flex;align-items:center;gap:8px;min-width:0}.jb-pvg-b{display:block;flex:none;width:calc((100% - 56px) * var(--w));height:10px;min-width:2px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-bp{background:var(--jb-pvg-py)}.jb-pvg-z{min-width:0}.jb-pvg-m .jb-pvg-b{opacity:.5}.jb-pvg-v{flex:none;min-width:44px;font-size:13px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}.jb-pvg-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.jb-pvg-collapsed .jb-pvg-x{display:none}.jb-pvg .jb-pvg-toggle{display:inline-block;margin:12px 0 0;padding:6px 12px;background:#fff;border:1px solid var(--jb-pvg-li);border-radius:6px;color:var(--jb-pvg-t);font:inherit;font-size:13px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-toggle[hidden]{display:none}.jb-pvg .jb-pvg-toggle:hover{border-color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-toggle:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:2px}.jb-pvg .jb-pvg-note{color:var(--jb-pvg-mu);font-size:12.5px;line-height:1.5;margin:14px 0 0}@media (max-width:560px){.jb-pvg-panel{padding:18px}.jb-pvg-r{grid-template-columns:minmax(0,1fr)}.jb-pvg .jb-pvg-title{font-size:18px}}.jb-pvg .jb-pvg-tabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:16px 0 0;padding:0;border-bottom:1px solid var(--jb-pvg-li)}.jb-pvg .jb-pvg-tabs[hidden]{display:none}.jb-pvg .jb-pvg-tab{margin:0 0 -1px;padding:8px 12px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--jb-pvg-mu);font:inherit;font-size:14px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-tab:hover{color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-tab[aria-selected="true"]{color:var(--jb-pvg-t);border-bottom-color:var(--jb-pvg-t);font-weight:700}.jb-pvg .jb-pvg-tab:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:-2px}.jb-pvg-card+.jb-pvg-card{margin-top:24px;padding-top:8px;border-top:1px solid var(--jb-pvg-li)}.jb-pvg-tabbed .jb-pvg-card+.jb-pvg-card{margin-top:0;padding-top:0;border-top:0}.jb-pvg-card[hidden]{display:none}.jb-pvg .jb-pvg-ctitle{color:var(--jb-pvg-t);font-size:16px;font-weight:700;line-height:1.35;margin:16px 0 0}@media (max-width:560px){.jb-pvg .jb-pvg-tab{padding:8px 10px;font-size:13px}} Go vs Python developers Experience and seniority ExperiencePositionEmploymentAge Professional coding experience How many years of professional coding experience do you have? GoPython Less than 1 year*Go 2%Python 10% 1–2 years*Go 9%Python 20% 3–5 yearsGo 22%Python 25% 6–10 years*Go 28%Python 19% 11–15 years*Go 17%Python 9% 16+ years*Go 20%Python 12% No professional coding experience*Go 1%Python 5% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Go n = 1,836, Python n = 11,298. Go and Python developers are respondents who selected the language among their primary languages; those who selected both are counted in both groups. * Statistically significant difference (p < 0.05, adjusted). Position level What is the level of your current position? GoPython Trainee*Go 2%Python 6% Junior*Go 10%Python 19% Middle*Go 26%Python 30% Senior*Go 60%Python 42% OtherGo 2%Python 3% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Go n = 1,531, Python n = 6,891. Go and Python developers are respondents who selected the language among their primary languages; those who selected both are counted in both groups. * Statistically significant difference (p < 0.05, adjusted). Employment status Which of the following best describes your employment and involvement in software development? GoPython Employed full-time*Go 72%Python 51% Employed part-time*Go 2%Python 3% Self-employed or freelancer*Go 10%Python 11% Founder or business ownerGo 4%Python 3% Working student*Go 4%Python 9% Student*Go 4%Python 14% Not employed, with development experienceGo 3%Python 3% Learning as a hobby or career transition*Go 1%Python 4% Other*Go <1%Python 1% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Go n = 1,836, Python n = 11,298. Go and Python developers are respondents who selected the language among their primary languages; those who selected both are counted in both groups. * Statistically significant difference (p < 0.05, adjusted). Age What is your age range? GoPython 18–20*Go 4%Python 9% 21–24*Go 13%Python 22% 25–29Go 22%Python 21% 30–34*Go 23%Python 16% 35–39*Go 17%Python 12% 40–49*Go 18%Python 14% 50–59*Go 4%Python 5% 60 or older*Go <1%Python 2% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Go n = 1,836, Python n = 11,298. Go and Python developers are respondents who selected the language among their primary languages; those who selected both are counted in both groups. * Statistically significant difference (p < 0.05, adjusted). Salary follows seniority Salary bands clearly show how experience affects other demographic data. Go developers are better represented in the top bracket: 9% report earning more than $180,000 a year, compared to 6% of Python programmers. Meanwhile, Python users cluster more in the lowest brackets. .jb-pvg{--jb-pvg-go:#007d9c;--jb-pvg-py:#6b57ff;--jb-pvg-t:#19191c;--jb-pvg-mu:#6b6b73;--jb-pvg-li:#d9d9e3;color:var(--jb-pvg-t);font:inherit;margin:32px 0}.jb-pvg *{box-sizing:border-box}.jb-pvg-panel{background:#fff;border:1px solid var(--jb-pvg-li);border-radius:8px;padding:24px}.jb-pvg .jb-pvg-eyebrow{color:var(--jb-pvg-mu);font-size:12px;font-weight:700;letter-spacing:.08em;line-height:1.4;margin:0 0 6px;text-transform:uppercase}.jb-pvg .jb-pvg-title{color:var(--jb-pvg-t);font-size:20px;font-weight:700;line-height:1.3;margin:0}.jb-pvg .jb-pvg-q{color:var(--jb-pvg-mu);font-size:14px;line-height:1.5;margin:6px 0 0}.jb-pvg-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:16px 0 0;color:var(--jb-pvg-mu);font-size:13px;line-height:1.4}.jb-pvg-key{display:inline-flex;align-items:center;gap:6px}.jb-pvg-key:before{content:"";display:inline-block;width:12px;height:12px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-key-py:before{background:var(--jb-pvg-py)}.jb-pvg-rows{margin:12px 0 0;padding:0}.jb-pvg-r{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:4px 16px;align-items:center;padding:7px 0;border-top:1px solid #ececf2}.jb-pvg-r:first-child{border-top:0}.jb-pvg-l{min-width:0;font-size:14px;line-height:1.35;overflow-wrap:anywhere}.jb-pvg-m .jb-pvg-l{color:var(--jb-pvg-mu)}.jb-pvg-s{color:var(--jb-pvg-mu);margin-left:2px}.jb-pvg-bs{display:grid;gap:3px;min-width:0}.jb-pvg-ln{display:flex;align-items:center;gap:8px;min-width:0}.jb-pvg-b{display:block;flex:none;width:calc((100% - 56px) * var(--w));height:10px;min-width:2px;border-radius:2px;background:var(--jb-pvg-go)}.jb-pvg-bp{background:var(--jb-pvg-py)}.jb-pvg-z{min-width:0}.jb-pvg-m .jb-pvg-b{opacity:.5}.jb-pvg-v{flex:none;min-width:44px;font-size:13px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}.jb-pvg-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.jb-pvg-collapsed .jb-pvg-x{display:none}.jb-pvg .jb-pvg-toggle{display:inline-block;margin:12px 0 0;padding:6px 12px;background:#fff;border:1px solid var(--jb-pvg-li);border-radius:6px;color:var(--jb-pvg-t);font:inherit;font-size:13px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-toggle[hidden]{display:none}.jb-pvg .jb-pvg-toggle:hover{border-color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-toggle:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:2px}.jb-pvg .jb-pvg-note{color:var(--jb-pvg-mu);font-size:12.5px;line-height:1.5;margin:14px 0 0}@media (max-width:560px){.jb-pvg-panel{padding:18px}.jb-pvg-r{grid-template-columns:minmax(0,1fr)}.jb-pvg .jb-pvg-title{font-size:18px}}.jb-pvg .jb-pvg-tabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:16px 0 0;padding:0;border-bottom:1px solid var(--jb-pvg-li)}.jb-pvg .jb-pvg-tabs[hidden]{display:none}.jb-pvg .jb-pvg-tab{margin:0 0 -1px;padding:8px 12px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--jb-pvg-mu);font:inherit;font-size:14px;line-height:1.4;cursor:pointer}.jb-pvg .jb-pvg-tab:hover{color:var(--jb-pvg-t)}.jb-pvg .jb-pvg-tab[aria-selected="true"]{color:var(--jb-pvg-t);border-bottom-color:var(--jb-pvg-t);font-weight:700}.jb-pvg .jb-pvg-tab:focus-visible{outline:2px solid var(--jb-pvg-py);outline-offset:-2px}.jb-pvg-card+.jb-pvg-card{margin-top:24px;padding-top:8px;border-top:1px solid var(--jb-pvg-li)}.jb-pvg-tabbed .jb-pvg-card+.jb-pvg-card{margin-top:0;padding-top:0;border-top:0}.jb-pvg-card[hidden]{display:none}.jb-pvg .jb-pvg-ctitle{color:var(--jb-pvg-t);font-size:16px;font-weight:700;line-height:1.35;margin:16px 0 0}@media (max-width:560px){.jb-pvg .jb-pvg-tab{padding:8px 10px;font-size:13px}} Go vs Python developers Annual salary, USD Salary bands in USD, converted from local currencies. GoPython Up to 1,000*Go 0%Python <1% Up to 1,800Go 1%Python 1% Up to 6,000*Go 4%Python 8% Up to 12,000*Go 6%Python 8% Up to 18,000Go 6%Python 6% Up to 24,000Go 5%Python 7% Up to 36,000Go 12%Python 14% Up to 48,000Go 11%Python 10% Up to 60,000Go 9%Python 8% Up to 84,000Go 13%Python 12% Up to 120,000*Go 17%Python 12% Up to 180,000Go 8%Python 8% More than 180,000*Go 9%Python 6% Source: JetBrains Developer Ecosystem Survey 2026, weighted data. Base: Go n = 1,115, Python n = 5,004. Go and Python developers are respondents who selected the language among their primary languages; those who selected both are counted in both groups. * Statistically significant difference (p < 0.05, adjusted). However, if we look only at full-time developers, the differences are no longer statistically significant. The premium is attached to the seniority and employment status, not the primary language. In other words, learning Go itself will not guarantee you a higher salary, but the roles that require Go generally pay better. What they build The Developer Ecosystem survey also asks people what functionality their code implements. Go developers more frequently reported: 69% – providing APIs and services (Python – 41%) 63% – integrating with APIs and services (Python – 47%) 51% – application logic and workflows (Python – 37%) 47% – user interface (Python – 41%) 35% – libraries and frameworks (Python – 26%) Meanwhile, Python developers reported higher rates for: 38% – data processing and analytics (Go – 30%) 36% – artificial intelligence and machine learning (Go – 20%) 32% – data science