Swizec Teller - a geek with a hatswizec.com

Senior Mindset Book

Get promoted, earn a bigger salary, work for top companies

Senior Engineer Mindset cover
Learn more

    Swizec's articles in the "complexity" category

    I aim to write mindblowing emails with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them.

    Below are 18 articles filed under complexity. Enjoy ❀️

    Empirical evidence for code modularity

    Few of your engineering decisions matter long-term. Software is soft. You can change your mind. But how you structure your components is here to stay.

    Why even care about code structure

    As long as it works, right?

    Finding modules in a big ball of mud

    Pulling modules out of a big ball of mud is like grabbing a slice of cheesy pizza. It's kinda separate but also not really.

    Big Ball of Mud – the world's most popular software architecture

    Forget Gang of Four, here are the 7 architectural patterns real programmers use:

    DRY – the common source of bad abstractions

    Swizec reveals the hidden pitfalls of overusing the DRY principle in coding, leading to bad abstractions. Discover how to write adaptable, efficient code that avoids these common traps.

    You can't side-quest a product

    Here's a trap that talented engineers fall into all the time. It creates frustration, burnout, and the genre of tweets that read like "Why don't people care about the amazing work I'm doing".

    From trivial to complex – 4 software quadrants

    You can classify software projects into 4 quadrants from trivial to complex

    Architecture is like a path in the woods

    You're doing too much. Sit back, relax, see how people *want* to use the code. THEN build the abstraction.

    The efficacy of TypeScript

    TypeScript may streamline code navigation and catch semantic errors, but it doesn't guarantee fewer bugs or faster fixes.

    Solve the problem, not a different more difficult problem

    Solve the problem at hand, not the one you imagine might come next. A simple fix now often beats a complex one later.

    Finding modules in a Big Ball of Mud with ChatGPT

    Detangling a Big Ball of Mud is hard. You have to find domain boundaries where none exist. Looks like AI can help 🀩

    Followup answers to Forget complicated code, focus on the system

    Why are utility files bad? How do you recognize architectural complexity? What the hell is a transitive dependency?

    Forget complicated code, focus on the system

    Clean code matters, but it's the architectural complexity that truly impacts your productivity and bug count. Focus on simplifying the system, not just the code.

    Why taming architectural complexity is paramount

    Unravel the hidden costs of architectural complexity in software engineering and learn practical strategies to tackle it. Boost productivity, reduce defects, and improve staff retention with insights from an MIT PhD thesis.

    Two types of complexity and their impact

    Complicated code slows down junior devs, while complex systems impact senior devs more. Focus on managing system complexity & dependencies, not just simplifying code.

    You can't fix the wrong abstraction

    Unlock the secrets to combating architectural complexity in software development and learn to identify and fix the wrong abstraction. Boost productivity, reduce bugs, and retain more staff.

    Write abstractions, not just code

    Wherein I use a silly example to show why you need more than small reusable single purpose functions to write good software.

    Created by Swizec with ❀️