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

推荐订阅源

GbyAI
GbyAI
Simon Willison's Weblog
Simon Willison's Weblog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
Last Week in AI
Last Week in AI
月光博客
月光博客
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
U
Unit 42
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
H
Hacker News: Front Page
Recent Announcements
Recent Announcements
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
小众软件
小众软件
P
Palo Alto Networks Blog
PCI Perspectives
PCI Perspectives
Security Latest
Security Latest
S
Secure Thoughts
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
O
OpenAI News
S
Securelist
云风的 BLOG
云风的 BLOG
H
Help Net Security
T
Troy Hunt's Blog

Yusuf Aytas

When Code Is Cheap, Does Quality Still Matter? Why Crouching Tiger, Hidden Dragon Is a Masterpiece Why We Ignore Advice The Mirror Is Part of the Machine When Too Many Maps Overlap on One Person The Work Runs on Different Maps Your Work Introduces You Trial By Fire The Dude Why Headcount Math Lies Capacity Is the Roadmap The Roadmap Is Not the System Torres del Paine W Trek Escaping Status Theater Incentives Drive Everything Scaling Culture Without Dilution What Good Looks Like Why Airport Security Feels Random Why Politics Appear How to Work with Me The Janus Protocol Multi-Horizon Delivery Framework What Good Execution Looks Like Managing Your Manager Why Kingdom of Heaven’s Director’s Cut Is Better AI Broke Interviews Most of What We Call Progress Managers Have Been Vibe Coding All Along Stop Wasting Brainpower Why Over-Engineering Happens Prisoner's Dilemma Climbing No More The Weekly Win Mevlana Candy Brewing Turkish Tea Onboarding Your Engineering Manager Technical Deep Dives Yapay Zekâ Çağında Bilgisayar Mühendisliği Building Remote Teams From Idea to Launch in 2 Weeks Reflecting on Software Engineering Handbook Representing the Business New Manager Survival Guide Take Self Reviews Seriously Chasing Real Respect The Invisible Difference Learning the Johari Window Management is a Lonely Place Simple Task Management AI Balance in Work PIP Manager Insights Engineering Manager Interview Preparation Work-Life Balance as a Manager Bridging the Management Disconnect Tech Hiring Bubble Bursts Traits for EMs Simple Acts of Recognition Matter The Question I Ask Every New Report The Reality of an Employer's Market Bridging Ideals and Reality Hiring Red Flags Why The Godfather Is So Damn Good Subteam Tenets No Fluff Please Losing a Top Performer Balancing Act of Reliability Building Trust in Engineering Teams Ideal Number of Direct Reports Overriding a People Leader’s Decision From Misperception to Promotion Perception vs Perspective Setting Goals From Engineer to Manager Getting Delegation Right Interviewing Your Future Boss Celebrating Our Book in Iceland Operational Skills Needed On Writing Software Engineering Handbook Charlie Munger Quotes Working with Dependencies From Las Vegas to Canyons Navigating Layoffs Handling Competitive Dynamics A Weekend Getaway to Malta Engineering Health Essentials Should Dev Managers Code? Confronting the Life on Pause Winning Eleven Kindness is A Choice Bireysel Katılımcılar ve Yöneticiler Leading from Where You Are The Subtle Art of Listening Coding in Leadership The Power of Consistency The Making of a Leader The Path to Leadership Embracing TikTok Talent Sourcing Journey Leading Self Managing Teams Cracking Coding Bottlenecks
Moving from Java to Python
Yusuf Aytas · 2014-03-07 · via Yusuf Aytas

Published · 5 min read

I recently started a new role in AWS networking, and it’s the first time I’ve gone from writing everything in Java to writing almost everything in Python. Honestly, the shift is bigger than I expected. Java gives you interfaces, structure, a strong compiler, and a debugger you can rely on. Python gives you freedom, but also fewer guardrails. It kind of sucks. 

In this post, I want to talk about what that transition feels like. I’ll talk about how the two languages push you into different styles of thinking, the difference between object-oriented and procedural or functional approaches, what it’s like to lose Java’s tooling safety net, and how Python’s concurrency model forces you into processes instead of threads.

Java vs PythonJava vs Python

Java vs Python Mindset

Coming from Java, I’m used to starting everything with a class, an interface, or some kind of structure. That’s just how Java works. You don’t even question it. I like it. Many don’t. In Python, none of that is required. You can just write a few lines of code and it runs.

It feels strange. In Java, the language kind of forces you into object-oriented thinking. In Python, you can write procedural code without the language complaining about it. You can also write objects if you want, but it doesn’t feel like the default.

I’m still getting used to that. It’s a different way of approaching problems, and I’m trying to figure out what actually makes sense instead of just following what the language expects.

A few New Paradigms

In Java, I never really thought about programming paradigms. Everything was object-oriented because that’s how Java wants you to write code. You don’t question it. You make classes, you make methods, you implement interfaces, and that’s the flow. Yeah, I know it has a lot of bloat but hey works. Look at the amount of open source software written in Java.

With Python, I’m suddenly aware that I can do things in completely different ways. I can write straight procedural code, just top to bottom. I can use functions and pass them around like values. I can still make classes too, but here it feels optional instead of required. This is something new to me. I need to think about the relative merits of different paradigms. It forces you to be more aware. 

I’m not sure yet which approach is right. I’m just noticing that I have to choose now, instead of the language choosing for me. And that’s new. 

One thing I didn’t expect is how different the tooling feels. In Java, the debugger is part of your everyday workflow. You just set a breakpoint, run the code, step through it, and you get a clear picture of what’s happening. It’s smooth, and you get used to relying on it.

In Python, I don’t have that same feeling. There are ways to debug, but it’s not as integrated or obvious. Most of the time, the mistake only shows up when you actually run the script. It makes me feel a bit more exposed, like I’m missing something that Java always gave me for free.

Even basic things like autocomplete and static checks don’t feel as strong. It’s lighter and faster, but also easier to get things wrong without noticing. I’m still adjusting to that. People use command line tooling more often even for development. That’s something I used as much as I needed to. So, I'm still adjusting to this new reality. 

Concurrency Works Differently

Another thing I’m still trying to understand is concurrency. In Java, everything runs inside the JVM, and you work with threads. That’s the normal way to do it. You create a thread, start it, and it runs alongside the others.

In Python, it doesn’t work the same way because of the GIL. You can make threads, but they don’t actually run in parallel the way I expect from Java. If you really want things to run at the same time, you’re supposed to use processes instead.

This is new for me. I’m used to thinking in terms of threads, not processes. My knowledge about processes and inter-process communication, sharing go back to college. I have never used it in professional settings.. It feels like I’m relearning something I thought I already understood.

Closing Thoughts

Switching from Java to Python is harder than I expected. It’s not the syntax; it’s everything around it. It’s the way you structure code, the tools you rely on, how you debug, and even how concurrency works. I’m still adjusting. Some things feel easier, some things feel confusing, and some things make me miss Java.

But it’s also interesting. It’s forcing me to actually think about how I solve problems instead of just doing what I’m used to. I don’t have it all figured out yet, but I’m learning, and that’s the point.