Julia Evans is a software engineer and zine creator who worked at Stripe and now runs Wizard Zines. She is known for making complex technical topics like networking and the Linux kernel accessible through her blog and illustrated guides. This profile outlines her methods for learning, debugging, and sharing knowledge in the software industry.

Part 1: The Art of Learning and Curiosity
- On Learning Badly: "I think it’s really helpful to be okay with learning things 'badly' at first, as long as you can still be productive and have fun." — Source: jvns.ca
- On Asking Questions: "Asking specific questions puts you in a more vulnerable position because you’re showing exactly what you don't know, but it’s much more effective." — Source: Software Engineering Daily
- On Mental Models: "The most important part of learning is identifying where your mental model of a system is wrong and updating it." — Source: Strange Loop
- On Building Impossible Programs: "If you want to get better at programming, you should try to build things that you don't know how to build." — Source: jvns.ca
- On Identifying Gaps: "I try to keep a list of things that I find confusing, and when I have time, I pick one and try to understand it." — Source: Changelog
- On Learning in Public: "Sharing what you’re learning while you’re learning it is powerful because you still remember what was confusing." — Source: jvns.ca
- On Documentation: "I’ve learned that reading the documentation is often not enough; you have to run experiments to see what the system actually does." — Source: Strange Loop
- On Intimidation: "Systems programming isn't actually that hard, it's just full of jargon that people use to make it seem harder than it is." — Source: NorthSec
- On Tool Proficiency: "You don't need to know every flag of a tool to be 'good' at it; you just need to know the ones that solve your problems." — Source: jvns.ca
- On Self-Correction: "When you find out you were wrong about something, it’s not a failure, it’s a moment of leveling up." — Source: jvns.ca
Part 2: Debugging and Problem Solving
- On the Debugging Process: "The first step in debugging is always getting a reliable way to reproduce the problem." — Source: Wizard Zines
- On Assumptions: "Debugging is mostly the process of identifying which of your assumptions about the system is false." — Source: jvns.ca
- On System Calls: "Using `strace` is like having a superpower because it lets you see exactly what a program is asking the kernel to do." — Source: jvns.ca
- On Binary Search: "When a bug is hard to find, I try to cut the search space in half repeatedly until the problem is isolated." — Source: Wizard Zines
- On Tools for Insight: "I don't guess what the network is doing; I use `tcpdump` to see what is actually happening on the wire." — Source: jvns.ca
- On Systematic Inquiry: "If you don't understand the system you're using, you don't really control it when things go wrong." — Source: GitHub Blog
- On Confusion: "Being confused is a sign that there's a specific fact you're missing, not that you're not smart enough." — Source: Strange Loop
- On Error Messages: "The most important part of an error message is often the part you skip over because it looks like noise." — Source: jvns.ca
- On Asking for Help: "When asking for help, explain what you've already tried so the other person doesn't suggest things you've already ruled out." — Source: jvns.ca
Part 3: Understanding Systems and Infrastructure
- On DNS: "DNS is a system that everyone uses but almost nobody completely understands, which is why it's the source of so many bugs." — Source: Wizard Zines
- On Infrastructure Migrations: "The secret to a successful migration is not avoiding mistakes, but designing the migration so mistakes have low impact." — Source: Stripe Engineering Blog
- On Networking Layers: "You don't need to be a network engineer to understand how a packet gets from point A to point B." — Source: jvns.ca
- On the Linux Kernel: "The kernel is just code; you can read it, and you can even change it if you’re brave enough." — Source: Strange Loop
- On Reliability: "Reliability isn't about things never breaking; it's about knowing exactly what to do when they do." — Source: Software Engineering Daily
- On Abstractions: "Abstractions are great until they leak, and when they leak, you need to understand the layer underneath." — Source: jvns.ca
- On HTTP: "If you understand HTTP headers, you understand about 80% of how the web actually works." — Source: Wizard Zines
- On Performance: "Performance tuning without profiling is just guessing, and guessing is usually wrong." — Source: jvns.ca
- On SQL: "SQL is a beautiful language because it lets you describe what you want without worrying about how the computer gets it." — Source: Wizard Zines
Part 4: The Practice of Writing and Blogging
- On Writing for Yourself: "The best person to write for is your past self from six months ago." — Source: jvns.ca
- On Jargon: "Avoid jargon unless you're prepared to define it immediately after using it." — Source: jvns.ca
- On Consistency: "I don't wait for inspiration to write; I just write about whatever I'm currently working on." — Source: Changelog
- On Post Titles: "A good title is a promise of what the reader will learn, and the post should fulfill that promise quickly." — Source: jvns.ca
- On Simplicity: "Simple doesn't mean basic; it means you've done the hard work of removing the unnecessary complexity." — Source: Strange Loop
- On Feedback: "The best feedback on a blog post is when someone tells you that a specific part helped them solve a real problem." — Source: jvns.ca
- On Editing: "My first drafts are always a mess, and that’s okay because the value is in the refining." — Source: jvns.ca
- On Motivation: "I write because I want to remember what I learned, and a blog is a great external memory." — Source: jvns.ca
- On Scannability: "Most people don't read technical blog posts; they scan them for the code snippets and headings." — Source: jvns.ca
- On Tone: "I try to write in a way that sounds like a human talking to another human, not a manual." — Source: Software Engineering Daily
Part 5: Wizard Zines and Visual Communication
- On Visual Learning: "Drawings can explain things in a way that text simply cannot, especially when it comes to system flow." — Source: Wizard Zines
- On the Zine Format: "Zines are great because they are short and focused; you can finish one in a single sitting." — Source: Software Engineering Daily
- On Simplifying Without Lying: "The challenge of zines is simplifying a topic without making it technically incorrect." — Source: Strange Loop
- On Hand-Drawing: "There’s something approachable about hand-drawn comics that makes technical topics feel less intimidating." — Source: jvns.ca
- On Self-Publishing: "I didn't wait for a publisher; I just put my zines online and people started buying them." — Source: The New Stack
- On Iteration: "I often release a zine, get feedback, and then update it to clarify the parts people found confusing." — Source: Wizard Zines
- On Metaphors: "A good visual metaphor can save you three paragraphs of dense technical explanation." — Source: jvns.ca
- On Business: "I was surprised that my strange computer comics could become a viable full-time business." — Source: Software Engineering Daily
- On Scope: "A zine shouldn't try to cover everything; it should cover the 'top 10' things you'll actually use." — Source: Wizard Zines
Part 6: Career Growth and Software Engineering
- On the Brag Document: "Keep a document of everything you’ve done so you don't have to rely on your memory during performance reviews." — Source: jvns.ca
- On Seniority: "Being a senior engineer is less about your individual code and more about helping the team make better decisions." — Source: jvns.ca
- On Mentorship: "The best way to mentor is to be approachable and to explain the 'why' behind a technical choice." — Source: jvns.ca
- On Stripe: "Working at Stripe taught me how to think about infrastructure at a massive scale without losing focus on reliability." — Source: Stripe Engineering Blog
- On Productivity: "Velocity doesn't matter as much as impact; focus on the things that will actually move the needle." — Source: jvns.ca
- On Interviewing: "I like interviews that focus on how you solve problems, not how many algorithms you've memorized." — Source: jvns.ca
- On Career Longevity: "Stay curious, because the tools will change, but the underlying principles of how computers work stay the same." — Source: Strange Loop
- On "Unsexy" Work: "Senior engineers are often the ones who take on the boring but critical work that keeps the system running." — Source: jvns.ca
- On Ownership: "If you see a problem in the codebase, you don't need permission to fix it; you just need to be prepared to support the fix." — Source: jvns.ca
- On Power Dynamics: "Understanding who makes decisions in your company is just as important as understanding how the code works." — Source: jvns.ca
Part 7: Community, Networking, and Social Media
- On Sharing Facts: "It’s an ironclad reality that people are learning facts all the time, and it’s fun to be the one to share a new fact with them." — Source: Strange Loop
- On Public Speaking: "I was terrified of public speaking until I realized that people actually want you to succeed when you're on stage." — Source: jvns.ca
- On Inclusive Spaces: "A technical community is only as good as the way it treats people who are just starting out." — Source: Strange Loop
- On Open Source: "Contributing to open source is a great way to learn how other people solve the same problems you have." — Source: jvns.ca
- On Twitter: "Twitter has been a great way for me to find 'my people' in tech and to share small things I'm learning every day." — Source: Software Engineering Daily
- On Networking: "Networking isn't about collecting business cards; it's about building genuine relationships with people who share your interests." — Source: jvns.ca
- On Being Kind: "There is no benefit to being elitist about technical knowledge; it just makes you harder to work with." — Source: Strange Loop
- On Collaboration: "The best technical work happens when people feel safe to say 'I don't know' and 'let's figure it out together.'" — Source: jvns.ca
- On Teaching: "Teaching something is the fastest way to find out which parts of it you don't actually understand." — Source: Software Engineering Daily
Part 8: Philosophy of Programming and Open Source
- On Boring Technology: "I want my tools to be boring so that I can focus all of my energy on the interesting problems I'm trying to solve." — Source: jvns.ca
- On the Joy of Programming: "Programming is most fun when you feel like you're playing with the system rather than fighting it." — Source: jvns.ca
- On Tooling as Leverage: "Spending a week building a tool that saves the team an hour a day is the best kind of work." — Source: jvns.ca
- On Simplicity in Code: "I’d rather have 100 lines of simple code that I understand than 10 lines of clever code that I don't." — Source: jvns.ca
- On Tech Ethics: "We have a responsibility to think about how the systems we build affect the real people who have to use them." — Source: NorthSec
- On Mastery: "Mastery isn't knowing everything; it's having the confidence that you can figure out whatever you need to know." — Source: jvns.ca
- On Perfectionism: "Don't let the perfect be the enemy of the 'shipped and working.'" — Source: jvns.ca
- On Software Maintenance: "Writing the code is only the first 10% of the job; the rest is keeping it running and making it understandable for others." — Source: jvns.ca
- On the "Magic" of Computers: "Computers aren't magic; they are just a very tall stack of simple things that all work together." — Source: Strange Loop