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 "engineer" 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 31 articles filed under engineer. Enjoy ❤️

    Keeping a high engineering culture, tips from the field

    I asked engineers how they keep a high quality culture. These are the takeaways

    The efficacy of TypeScript

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

    Don't neglect your upgrades

    Regular software updates may seem tedious, but they save you from the nightmare of a massive overhaul down the line.

    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.

    Avoid spooky action at a distance

    Shared state in programming isn't the enemy, it's unclear dependencies that tangle your code. Keep it clean with explicit state dependencies and strict access guidelines

    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.

    Different worlds

    Different lenses, different worlds. Your perspective is shaped by your experiences. Even in debates, all sides can be right in their own context.

    You can't stop the business, or why rewrites fail

    Rewriting code isn't a magic fix-all. Consider the opportunity cost, complexity of the old system, and estimation challenges. Instead of stopping all to rewrite or building new while maintaining the old, try incremental improvements and new code adoption.

    When to throw away your code

    Delete code when it stops providing value 💡 All code is a liability; context matters. Keep what solves problems, toss the rest.

    What does "solve problems" even mean

    Focus on solving problems, not just doing work or writing code. Think creatively, question existing processes, and prioritize effective outcomes

    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.

    DRY vs SoC, a difficult choice

    What is the essential difference between DRY and SoC principles in software engineering and how do you balance the two

    If it works together, it lives together

    Wherein I use LEGO to talk about organizing your code for ease of use

    Why others' code is hard to navigate

    Some people like to organize code in files and folders and neat categories. Others love search. When they work together, that's the challenge.

    Move your business logic into data

    The quickest way to simplify a complex function with lots of logic is to turn it into data. A lesson from production

    You don't *have to* build it sloppy to go fast

    My favorite mistake to make when I'm in a hurry is to think that I _have to_ build new features the sloppiest way possible. Find the quick fix and move on. But that's not true.

    What makes a great software engineer?

    In 2015 a group of researchers asked 59 experienced engineers at Microsoft "What makes a great software engineer?". Here's what they found.

    Writing software is like kicking a can

    Writing software is a playful process of exploration and discovery. Like a game of kick the can on a Sunday walk.

    The Italian foods theory of bad software design 🍝

    Spaghetti code – unstructured Ravioli code – too structured Lasagna code – layered wrong Minestrone software – unclear domains

    Code Review Practices for Refactoring Changes

    Do you review refactoring pull requests differently than you do others? An empirical study of OpenStack, an open source cloud platform, says that you do and finds 6 common criteria.

    How to rewrite your app while growing to a $100,000,000 series B

    When you're in a company desperately trying to meet demand, *ship*. You'll have money, time, and professionals to fix code later. Even if you start with jQuery.

    Complex vs. complicated

    Would you rather work with a complex system or a complicated system? 🤔

    What I learned from Software Engineering at Google

    When I first picked up Software Engineering at Google I thought it was another one of those FAANG books full of lessons that make no sense at human scale. I was surprised, lessons apply to teams as small as 5.

    Software Engineering is the 2nd best job

    Ok so I've been doing lots of research into the Software Engineer job market – Some highlights 👇

    Created by Swizec with ❤️