Posts in Career (20 found)
Sean Goedecke Yesterday

How good engineers write bad code at big companies

Every couple of years somebody notices that large tech companies sometimes produce surprisingly sloppy code. If you haven’t worked at a big company, it might be hard to understand how this happens. Big tech companies pay well enough to attract many competent engineers. They move slowly enough that it looks like they’re able to take their time and do solid work. How does bad code happen? I think the main reason is that big companies are full of engineers working outside their area of expertise . The average big tech employee stays for only a year or two 1 . In fact, big tech compensation packages are typically designed to put a four-year cap on engineer tenure: after four years, the initial share grant is fully vested, causing engineers to take what can be a 50% pay cut. Companies do extend temporary yearly refreshes, but it obviously incentivizes engineers to go find another job where they don’t have to wonder if they’re going to get the other half of their compensation each year. If you count internal mobility, it’s even worse. The longest I have ever stayed on a single team or codebase was three years, near the start of my career. I expect to be re-orged at least every year, and often much more frequently. However, the average tenure of a codebase in a big tech company is a lot longer than that. Many of the services I work on are a decade old or more, and have had many, many different owners over the years. That means many big tech engineers are constantly “figuring it out”. A pretty high percentage of code changes are made by “beginners”: people who have onboarded to the company, the codebase, or even the programming language in the past six months. To some extent, this problem is mitigated by “old hands”: engineers who happen to have been in the orbit of a particular system for long enough to develop real expertise. These engineers can give deep code reviews and reliably catch obvious problems. But relying on “old hands” has two problems. First, this process is entirely informal . Big tech companies make surprisingly little effort to develop long-term expertise in individual systems, and once they’ve got it they seem to barely care at all about retaining it. Often the engineers in question are moved to different services, and have to either keep up their “old hand” duties on an effectively volunteer basis, or abandon them and become a relative beginner on a brand new system. Second, experienced engineers are always overloaded . It is a busy job being one of the few engineers who has deep expertise on a particular service. You don’t have enough time to personally review every software change, or to be actively involved in every decision-making process. Remember that you also have your own work to do : if you spend all your time reviewing changes and being involved in discussions, you’ll likely be punished by the company for not having enough individual output. Putting all this together, what does the median productive 2 engineer at a big tech company look like? They are usually: They are almost certainly working to a deadline, or to a series of overlapping deadlines for different projects. In other words, they are trying to do their best in an environment that is not set up to produce quality code. That’s how “obviously” bad code happens. For instance, a junior engineer picks up a ticket for an annoying bug in a codebase they’re barely familiar with. They spend a few days figuring it out and come up with a hacky solution. One of the more senior “old hands” (if they’re lucky) glances over it in a spare half-hour, vetoes it, and suggests something slightly better that would at least work. The junior engineer implements that as best they can, tests that it works, it gets briefly reviewed and shipped, and everyone involved immediately moves on to higher-priority work. Five years later somebody notices this 3 and thinks “wow, that’s hacky - how did such bad code get written at such a big software company”? I have written a lot about the internal tech company dynamics that contribute to this. Most directly, in Seeing like a software company I argue that big tech companies consistently prioritize internal legibility - the ability to see at a glance who’s working on what and to change it at will - over productivity. Big companies know that treating engineers as fungible and moving them around destroys their ability to develop long-term expertise in a single codebase. That’s a deliberate tradeoff. They’re giving up some amount of expertise and software quality in order to gain the ability to rapidly deploy skilled engineers onto whatever the problem-of-the-month is. I don’t know if this is a good idea or a bad idea. It certainly seems to be working for the big tech companies, particularly now that “how fast can you pivot to something AI-related” is so important. But if you’re doing this, then of course you’re going to produce some genuinely bad code. That’s what happens when you ask engineers to rush out work on systems they’re unfamiliar with. Individual engineers are entirely powerless to alter this dynamic . This is particularly true in 2025, when the balance of power has tilted away from engineers and towards tech company leadership. The most you can do as an individual engineer is to try and become an “old hand”: to develop expertise in at least one area, and to use it to block the worst changes and steer people towards at least minimally-sensible technical decisions. But even that is often swimming against the current of the organization, and if inexpertly done can cause you to get PIP-ed or worse. I think a lot of this comes down to the distinction between pure and impure software engineering . To pure engineers - engineers working on self-contained technical projects, like a programming language - the only explanation for bad code is incompetence. But impure engineers operate more like plumbers or electricians. They’re working to deadlines on projects that are relatively new to them, and even if their technical fundamentals are impeccable, there’s always something about the particular setup of this situation that’s awkward or surprising. To impure engineers, bad code is inevitable. As long as the overall system works well enough, the project is a success. At big tech companies, engineers don’t get to decide if they’re working on pure or impure engineering work. It’s not their codebase ! If the company wants to move you from working on database infrastructure to building the new payments system, they’re fully entitled to do that. The fact that you might make some mistakes in an unfamiliar system - or that your old colleagues on the database infra team might suffer without your expertise - is a deliberate tradeoff being made by the company, not the engineer . It’s fine to point out examples of bad code at big companies. If nothing else, it can be an effective way to get those specific examples fixed, since execs usually jump at the chance to turn bad PR into good PR. But I think it’s a mistake 4 to attribute primary responsibility to the engineers at those companies. If you could wave a magic wand and make every engineer twice as strong, you would still have bad code , because almost nobody can come into a brand new codebase and quickly make changes with zero mistakes. The root cause is that most big company engineers are forced to do most of their work in unfamiliar codebases . I struggled to find a good original source on this. There’s a 2013 PayScale report citing a 1.1 year median turnover at Google, which seems low. Many engineers at big tech companies are not productive, but that’s a post all to itself. I don’t want to get into it here for two reasons. First, I think competent engineers produce enough bad code that it’s fine to be a bit generous and just scope the discussion to them. Second, even if an incompetent engineer wrote the code, there’s almost always competent engineers who could have reviewed it, and the question of why that didn’t happen is still interesting. The example I’m thinking of here is not the recent GitHub Actions one , which I have no first-hand experience of. I can think of at least ten separate instances of this happening to me. In my view, mainly a failure of imagination : thinking that your own work environment must be pretty similar to everyone else’s. competent enough to pass the hiring bar and be able to do the work, but either working on a codebase or language that is largely new to them, or trying to stay on top of a flood of code changes while also juggling their own work. I struggled to find a good original source on this. There’s a 2013 PayScale report citing a 1.1 year median turnover at Google, which seems low. ↩ Many engineers at big tech companies are not productive, but that’s a post all to itself. I don’t want to get into it here for two reasons. First, I think competent engineers produce enough bad code that it’s fine to be a bit generous and just scope the discussion to them. Second, even if an incompetent engineer wrote the code, there’s almost always competent engineers who could have reviewed it, and the question of why that didn’t happen is still interesting. ↩ The example I’m thinking of here is not the recent GitHub Actions one , which I have no first-hand experience of. I can think of at least ten separate instances of this happening to me. ↩ In my view, mainly a failure of imagination : thinking that your own work environment must be pretty similar to everyone else’s. ↩

1 views
ava's blog 2 days ago

job market websites suck

Both my wife and I are going through the annoying process of trying to search for new jobs. I’m still at my current one, but I want to see if something better is out there in the region we wanna move to. But it is absolutely nuts . How have these services not gone out of business? My experience, almost entirely the same across many websites like StepStone, Indeed, and more: And for what? So that you’ll make an account and give up all that data and get harassed via e-mail for information that is freely available on the company’s own career page! What are we doing? This is silly. Companies have already revealed that they hate and don’t consider the “Quick Apply” options these platforms offer, so what gives? And why are companies still using these slop platforms? It can’t be about getting more applicants, because these websites do anything they can to not show you the relevant job postings or information about them. If the search sucks, the preview is half-blurred and I can’t click on it without a pop-up urging me to make an account, you guessed it: I am actively discouraged from applying, prevented even, in many cases. I shouldn’t have to make an account with a third party just to even consider an employer! No, I will not create an account, and I will also not make a LinkedIn or Xing. These services are not helping anyone, they are leeches. They have an interest in keeping you on their site searching jobs for a long time, and that goal is antithetical to connecting you with potential employers quickly. Companies are better off advertising elsewhere and keeping it on their own website so all potential candidates can access it. It’s a bad look seeing you on these enshittified platforms. The way I have been coping with this job search is just using these websites to get a list of companies that have jobs in my niche and then researching them separately, using their own career pages and application portals. Also, relying on job listing websites ran by the government as these don’t use deceptive tactics to get you to sign up. If you’re lucky, your professional niche has their own jobmarket websites (see, for example, rustjobs.fyi ), or popular magazine publishers that are relevant in your field have a career sub-category on their website. If you have any other tips I missed, let me know (email or your own post is fine!) and I’ll add it. Reply via email Published 28 Nov, 2025 The on-site search is terrible to use. Search engine is easier. Most of the results are ads. Anything after the first 3 results is completely unrelated to the field you want. You aren’t allowed to see the job posting without an account, or only as “Recruiter”. The preview is almost completely useless. Partially blurred-out information that you are only allowed to see with an account.

0 views
Manuel Moreale 2 days ago

Karen

This week on the People and Blogs series we have an interview with Karen, whose blog can be found at chronosaur.us . Tired of RSS? Read this in your browser or sign up for the newsletter . The People and Blogs series is supported by Pete Millspaugh and the other 127 members of my "One a Month" club. If you enjoy P&B, consider becoming one for as little as 1 dollar a month. Hello! My name is Karen. I work in IT support for a large company’s legal department, and am currently working on my Bachelors in Cybersecurity and Information Assurance. I live near New Orleans, Louisiana, with my husband and two dogs - Daisy, A Pembroke Welsh Corgi, and Mia, a Chihuahua. Daisy is The Most Serious Corgi ever (tm), and Mia has the personality of an old lady who chain smokes, plays Bingo every week at the rec center, and still records her soap operas on a VHS daily. My husband is an avid maker (woodworking and 3D printing, mostly), video gamer, and has an extensive collection of board games that takes up the entire back wall of our livingroom. As for me, outside of work, I’m a huge camera nerd and photographer. I love film photography, and recently learned how to develop my own negatives at home! I also do digital - I will never turn my nose up at one versus the other. I’ve always been into assorted fandoms, and used to volunteer at local sci-fi/fantasy/comic conventions up to a few years ago. I got into K-Pop back in 2022, and am now an active participant in the local New Orleans fan community, providing Instax photo booth services for events. I’ve also hosted K-Pop events here in NOLA as well. My ult K-Pop group is ATEEZ, but I’m a proud multi fan and listen to whatever groups or music catch my attention, including Stray Kids, SHINee, and Mamamoo. I also love 80s and 90s alternative, mainly Depeche Mode, Nine Inch Nails, and Garbage. And yes, I may be named Karen but I refuse to BE a “Karen”. I don’t get upset when people use the term, I find it hilarious. So I have been blogging off and on since 2001 or so - back when they were still called “weblogs” and “online journals”. Originally, I was using LiveJournal, but even with a paid account, I wanted to learn more customization and make a site that was truly my own. My husband - then boyfriend - had their own server, and gave me some space on it. I started out creating sites in Microsoft Frontpage and Dreamweaver (BEFORE Adobe owned them!), and moved to using Greymatter blog software, which I loved and miss dearly. I moved to Wordpress in - 2004 maybe? - and used that for all my personal sites until 2024. I’d been reading more and more about the Indieweb for a while and found Bear , and I loved the simplicity. I’ve had sites ranging from a basic daily online journal, to a fashion blog, to a food blog, to a K-Pop and fandom-centric blog, to what it is today - my online space for everything and anything I like. I taught myself HTML and CSS in order to customize and create my sites. No classes, no courses, no books, no certifications, just Google and looking at other people’s sites to see what I liked and how they did it. My previous job before this one, I was a web administrator for a local marketing company that built sites using DNN and Wordpress, and I’m proud to say that I got that job and my current one with my self-developed skills and being willing to learn and grow. I would not be where I am today, professionally, if it wasn’t for blogging. I’ll be totally honest - I don’t have a writing process. I get inspiration from random thoughts, seeing things online, wanting to share the day-to-day of my life. I don’t draft or have someone proof read, I just type out what I feel like writing. When I had blogs focusing on specific things - plus size fashion and K-Pop, respectively - I kept a list of topics and ideas to refer back to when I was stuck for ideas. That was when I was really focused on playing the SEO and search engine algorithm game, though, where I was trying to stick to the “two-three posts a week” rule in an attempt to boost my search engine results. I don’t do that now. I do still have a list of ideas on my phone, but it’s nothing I am feeling FORCED to stick to. It’s more along the lines of that I had an idea while I was out, and wanted to note it so I don’t forget. Memory is a fickle thing in your late 40s, LOL. My space absolutely influences my mindset for writing. I prefer to write in the early morning, because my brain operates best then. (I know I am an exception to the rule by being an early bird.) I love weekend mornings when I can get up really early and settle into my recliner with my laptop and coffee, and just listen to some lofi music and just feel topics and ideas out. I also made my office/guest bedroom into a cozy little space, with a daybed full of soft blankets and fluffy pillows and cushions, and a lap desk. In all honesty, my preferred location to write is at a coffeeshop first thing in the morning. I love sitting tucked in a booth with a coffee and muffin, headphones on and listening to music, when the sun is just on the cusp of rising and the shop is still a little too chilly. That’s when the creative ideas light up the brightest and the synapses are firing on all cylinders. Currently, my site is hosted on Bear . I used to be a self-hosted Wordpress devotee, but in mid-late 2024, I got really tired of the bloat that the apps had become. In order to use it efficiently for me, I had to install entirely too many plugins to make it “simpler”. (Shout-out to the Indieweb Wordpress team, though - they work so hard on those plugins!) Of course, the more plugins you have, the less secure your site… My domain is registered through Hostinger . To write my posts, I use Bear Markdown Notes. I heard about this program after seeing a few others talking about using it for drafts, notes, etc. I honestly don’t think I’d change much! I really love using Bear Blog. It reminds me of the very old school LiveJournal days, or when I used Greymatter. It takes me back to the web being simpler, more straightforward, more fun. I also like Bear’s manifesto , and that he built the service for longevity . I would probably structure my site differently, especially after seeing some personal sites set up with more of a “digital garden” format. I will eventually adjust my site at some point, but for now, I’m fine with it. (That and between school and work, it’s kind of low on the priority list.) I purchased a lifetime subscription to Bear after a week of using it, which ran around $200 - I don’t remember exactly. I knew that I was going to be using the service for a while and thought I should invest in a place that I believed in. My Hostinger domain renewals run around $8.99 annually. My blog is just my personal site - I don’t generate any revenue or monetise in any way. I don’t mind when people monetize their site - it’s their site and they can do what they choose. As long as it’s not invading others’ privacy or harmful, I have absolutely no issue. Make that money however you like. Ooooh I have three really good suggestions for both checking out and interviewing! Binary Digit - B is kind of an influence for me to play with my site again. They have just this super cool and early 2000s vibe and style that I really love. Their site reminds me of me when I first started blogging, when I was learning new things and implementing what I thought was cool on my site, joining fanlistings, making new online friends. Kevin Spencer - I love Kevin’s writing and especially his photography. Not only that, he has fantastic taste in music. I’ve left many a comment on his site about 80s and 90s synthpop and industrial music. A Parenthetical Departure - Sylvia was one of the first sites I started reading when I started looking up info on Bear Blog. They are EXTREMELY talented and have an excellent knack for playing with design, and showing others how it works. One of my side projects is Burn Like A Flame , which is my local K-pop and fandom photography site. I actualy just started a project there that is more than slightly based on People and Blogs - The Fandom Story Project . I’m interviewing local fans to talk about what they love and what their feelings are on fandom culture now, and I’m accompanying that with a photoshoot with that person. It’s a way to introduce people to each other within the community. Two of my favorite YouTube channels that I have recently been watching are focused on fashion discussion and history - Bliss Foster and understitch, . If you like learning and listening to information on fashion, I highly recommend these creators. I know a TON of people have now seen K-Pop Demon Hunters (which I love, and the movie has a great message for not only kids, but adults). If you’ve seen this and are interested in getting into K-Pop, I suggest checking out my favorite group, ATEEZ. If you think that most K-Pop is all chirpy bubbly cutesy songs, let me suggest two by this group that aren’t what you’d expect: Guerrilla and Turbulence . I strongly suggesting watching without the translations, and then watching again with them. Their lyrics are the thing that really drew me into this group, and had me learning more about the deeper meaning behind a lot of K-Pop songs. And finally, THANK YOU to Manu for People and Blogs! I always find some really great new sites to check out after reading these interviews, and I am truly honored to be asked to join this list of great bloggers. It’s inspiring me to work harder on my blog and to post more often. Now that you're done reading the interview, go check the blog and subscribe to the RSS feed . If you're looking for more content, go read one of the previous 117 interviews . Make sure to also say thank you to Benny and the other 127 supporters for making this series possible.

0 views
ava's blog 3 days ago

it feels like a calling, finally

Content warning: Brief mentions of disordered eating habits. Whenever I am deeply and actively involved in my passion topic (data protection law), I don’t care about the superficial stuff anymore. Writing, researching, talking to others about it, attending events just completely takes me out of the usual thought spirals and needless worries and makes me feel so at peace, so happy. I mean the things that the internet is especially good at convincing you of, even if you aren’t on specific platforms or in certain bubbles; the things that drip down to you from elsewhere, seep through the barriers. Beauty standards, looksmaxxing, pretty privilege, the current emphasis on making money via your looks as a social media or OF career, the idea of a dating market, dating strategies and having to optimize your value and constantly self-improve. The hope that by leveraging looks and weird manipulative books on how to win people over, you’ll get further professionally, as people perceive you as more competent and trustworthy. You need to be perfect because if you can’t even take care of yourself, how will you handle anything else? Together with a lot of memes about how “that’s how ugly you look if you (negative behavior)”. The message is clear: If you are sick and/or ugly, something is wrong with you and it shows on the outside to warn everyone to stay away. Some girl putting on makeup is telling you what’s chic and not chic, creating fear that people will not choose you, will even exclude you for minor a faux-pas. Things like considering a jaw shave to make my face more symmetrical or moving my hairline or doing Invisalign or losing another 10kg or considering a fitness regime to develop visible abs… only pop up as a sort of static noise and circular obsessive thoughts when I am lonely and/or directionless, hopeless, lost, questioning my path, not engaging actively enough with what I love. Whenever I am fired up for my passion and engaging with it, I don’t care about my looks or my weight. All I care about is treating my body well so I can do more of what makes me happy, and serve that passion well, devote myself fully. It feels like my calling, it feels like something I want to give myself to entirely, like a farmer is giving themselves to their harvest completely (cringiest thing I have ever said on this blog, but I don't know how else to say it!). I no longer care about eating as little as possible, and trying to postpone it as long as possible, while choosing low cal options that are as filling as possible to cheat my body. Instead, I care about eating enough and at the right times so I can read complicated texts, write, analyze, learn, am able to follow a lecture, and feel stable enough to travel and make it somewhere. I value it as the fuel that it is, to keep this meat mechsuit going that enables me to do the things I do, together with exercise for strength, not calorie deficit. I cannot do my part if I'm dizzy and weak. I also stop obsessing about how fat or asymmetrical my face might look from an angle or while I smile. Instead, I care about what I develop inside, and what comes out of it; that my ideas and words are meaningful, true, helpful. I care about understanding things correctly, of being able to explain them well, and about being able to afford my dreams and goals (further education), not beauty. I finally get to focus on giving my cognitive power, my presence, my body for the cause, not the eye; because I feel like this is my mission, and to pursue my mission well, I can’t starve myself, I can’t prioritize risky elective procedures and recovery, I can’t withdraw out of fear of being perceived as ugly or weird when my desired field compels me to talk to people more knowledgeable than me and learn. It really is true that beauty standards hold us back so much, distract us, take bandwidth and focus away. It can be so hard to break through the fog of these thoughts that tell us to provide value with our bodies and not our thoughts and words. I’m not going to be a better expert at this topic by being underweight or having abs or a smaller cheek, so why waste time on it pretending these subtle changes will help my overall success? The work ahead is straightforward, and nothing of it involves beauty. The internet drastically overstates the importance of these things. I already have great grades, a great work ethic, readers, an amazing mentor, the drive and intelligence. All of that is much more important for my success and happiness than fixing superficial flaws that no one but me is really noticing. My body is already going through enough, it deserves better. Reply via email Published 27 Nov, 2025

0 views
ava's blog 3 days ago

i need more freaks in law

'Freaks' is used affectionately here to describe all kinds of creatives, weirdos, misfits, outcasts, alternative individuals, leftists, queers, furries and all that in a loving way. Where I live, law has a reputation to be dry, boring, business oriented, full of ex-nobility and wealthy people, and it's not wrong. You'll find lots of well-off conservatives and neoliberals, apolitical people just there to make a big buck and to get clout, and people with some questionable sense of justice. Makes sense then that most people think you need to fit into that sort of group to be interested or have a good time in law: be boring, be professional, stone-faced, serious, rich, holier-than-thou, capitalism-lover, wear muted colors and perform gender and sexuality in the approved way, be straight-laced and rule-loving. But honestly, law needs the opposite! Law needs you. I miss you in law. I miss all you freaks. There is space for you here. Your perspective, your input, your boldness, your intelligence and creativity is needed. There is no need for you to boycott law altogether even though you see it critically. Even if you rightfully acknowledge that lots of law is there to protect wealthy interests, you do better if you understand it. These are still the rules we currently have to live under, which means you're better off understanding, analyzing and utilizing it rather than pretend it isn't there. You cannot protest and change what you do not understand. Moreover, your own need you. Oppressed groups need you. Consumers, tenants, workers, children all around the world need help with their rights, they need help getting explanations for what's happening to them and how they can fight back in the language that the state speaks. The environment needs you, privacy needs you. Law benefits so much from a critical analysis through a queer lens, an anti-capitalist or abolitionist lens - whatever you want. You don't have to be a judge, or an attorney, or a lawyer getting people and companies off the hook for terrible crimes, or getting more people into the prison system. You can instead use legal expertise to help in your local chapters or NGOs, you can work in consumer associations or tenants association, you can help with legal resources for disability rights and domestic violence. You can also work with anti-surveillance groups, with environmental justice groups or civil liberties and racial justice groups. You can become a legal journalist or write about law online on your blog. I miss you when I go to conferences and other law spaces and there's not a single freak, just a sea of old white men that smell like shoe polish and money, waxing poetic about what scummy pharmaceutical company they helped evade consequences. I miss you when I sit in lectures and my peers argue for why a mentally ill person stealing food in the supermarket should go to jail. I miss you when it's time to discuss transgender laws. You don't need to conform, you don't need to kiss ass. I'm here too, and I love data protection law. Reply via email Published 27 Nov, 2025

0 views
iDiallo 3 days ago

We Don't Fix Bugs, We Build Features

As a developer, bugs consume me. When I discover one, it's all I can think about. I can't focus on other work. I can't relax. I dream about it. The urge to fix it is overwhelming. I'll keep working until midnight even when my day should have ended at 6pm. I simply cannot leave a bug unfixed. And yet, when I look at my work backlog, I see a few dozen of them. A graveyard of known issues, each one catalogued, prioritized, and promptly ignored. How did we get here? How does a profession full of people who are pathologically driven to fix problems end up swimming in unfixed problems? For that, you have to ask yourself, what is the opposite of a bug? No, it's not "No Bugs". It's features. "I apologize for such a long letter - I didn't have time to write a short one." As projects mature and companies scale, something changes . You may start with a team of developers solving problems, but then, they slowly become part of an organization that needs processes, measurements, and quarterly planning. Then one day, you are presented with this new term. Roadmap. It's a beautiful, color-coded timeline of features that will delight users and move business metrics. The roadmap is where bugs go to die. Here's how it happens. A developer discovers a bug and brings it to the team. The product manager asks the only question that matters in their world: "Will this affect our roadmap?" Unless the bug is actively preventing a feature launch or causing significant user churn, the answer is almost always no. The bug gets a ticket, the ticket gets tagged as "tech debt," and it joins the hundreds of other tickets in the backlog hotel, where it will remain indefinitely. ( see Rockstar ) This isn't a jab at product managers. They're operating within a system that leaves them no choice. Agile was supposed to liberate us. The manifesto promised flexibility, collaboration, and responsiveness to change. But somewhere along the way, agile stopped being a philosophy and became a measurement system. There are staunch supporters of agile that swear by it, and blame any flows on the particular implementation. "You guys are not doing true agile." But when everyone is doing it wrong, you don't blame everyone, you blame the system. We can't all be holding agile wrong ! The agile principle is to deliver working software frequently, welcome changing requirements, maintain technical excellence. But principles don't fit in spreadsheets. Metrics do. And so we got story points. Velocity. Sprint completion rates. Feature delivery counts. Suddenly, every standup and retrospective fed into dashboards that executives reviewed quarterly. And where there are metrics, there are managers trying to make some numbers go up and others go down. Features are easy to measure. They're discrete, they're visible, and they can be tied to revenue. "We shipped 47 features this quarter, leading to a 12% increase in user engagement." That's a bullet point in your record that gets you promoted. Bugs are invisible in this equation. Sure, they appear on the same Jira board, but their contribution is ephemeral. How do you quantify the value of something that doesn't go wrong? How do you celebrate the absence of a problem? You can't put "prevented 0 crashes by fixing a race condition" on a slide deck. The system doesn't just deprioritize bugs, it actively ignores them. A team that spends a sprint fixing bugs has nothing to show for it on the roadmap. Their velocity looks identical, but they've "accomplished" nothing that the executives care about. Meanwhile, the team that plows ahead with features, moves fast and breaks things, bugs be damned? They look productive. Developers want to prioritize bug fixes, performance improvements, and technical debt. These are the things that make software maintainable, reliable, and pleasant to work with. Most developers got into programming because they wanted to fix things, to make systems better. The business prioritizes features that impact revenue. New capabilities that can be sold, marketed, and demonstrated. Things that exist, not things that don't break. Teams are often faced with a choice. Do we fix what's broken, or do we build what's new? And because the metrics, the incentives, and the roadmap all point in one direction, the choice is made for them. This is how you end up with production systems riddled with known bugs that could probably be fixed but won't be tackled. Not because they're not important. Not because developers don't care. But because they're not on the roadmap. "I apologize for such many bugs. I only had time to build features." Writing concisely takes more time and thought than rambling. Fixing bugs takes more discipline than shipping features. Building maintainable systems takes more effort than building fast. We've become so busy building that we have no time to maintain what we've built. We're so focused on shipping new things that we can't fix the old things. The roadmap is too full to accommodate quality. Reaching our metric goals is the priority. It's not that we don't know better. It's not even that we don't care. It's that we've built systems like product roadmaps, velocity tracking, etc, and now making the wrong choice the only rational choice. I've worked with teams that tried to present a statistical approach to presenting bugs in the roadmap. Basically, you can analyze existing projects, look at bug counts when each feature was built, then calculate the probability of bugs. Now this number will appear in the roadmap as a color coded metric. It sounds and looks good in theory, and you can even attach an ROI to bug fixes. But bugs don't work like that. They can be introduced by mistake, by misunderstanding, or sometimes even intentionally when business logic itself is flawed. No statistical model will predict the developer who misread the requirements, or the edge case that appears only in production, or the architectural decision that made sense five years ago but creates problems today. Bugs are human problems in human systems. You can't spreadsheet your way out of them. You have to actually fix them. When developers are forced to choose between what they know is right and what the metrics reward, we've built the wrong system. When "I fixed a critical race condition" is less valuable than "I shipped a feature," we've optimized for the wrong things. Maybe the first step is simply acknowledging the problem. We don't fix bugs because our systems don't let us. We don't fix bugs because we only had time to build features. And just like that overly long letter, the result is messier, longer, and ultimately harder to deal with than if we'd taken the time to do it right from the start.

0 views

Don’t be a scary old guy: My 40s survival strategy with charm

Hi, it’s  Takuya . Last week I had my birthday and turned 41 (November 19th). When I was younger, I could never really picture what life in my 40s would look like. It’s this vague age where you don’t have a clear image of how you’re supposed to live, right? Even if I try to look back at my dad at this age, he was always at work during the day, so he’s not much of a reference. I make a living as an indie developer , and thanks to what I built up through my 20s and 30s, I can live the way I do now. Compared to a typical Japanese salaryman, I can join childcare much more flexibly, and I get to spend a lot of time with my kid. I’ve even made some “mom friends (mama-tomo)” at kindergarten. In this post, I'd like to share my survival strategy for the 40s. As the title says, the conclusion is:  “charm”  — being warm and approachable. Let me explain why I think this kind of charm matters so much for middle-aged men. For students, guys in their 40s are full-on old dudes. At least that’s how I saw them. It’s basically the age of school teachers. When I hit my late 30s, people around me started to say things like: In Japanese,  kanroku  means something like “gravitas” or “presence.” And no, they didn’t mean my belly was growing. At first, I secretly thought: …but over time I realized that wasn’t it at all. It simply meant: I got older. In other words, “You’ve aged,” “You look older now,” wrapped in the most positive wording possible. I mean, think about it. What even is “aura,” really? lol If I’ve really built up so much life experience, why am I still getting scolded by kindergarten teachers for being late to the bus pick-up? It doesn’t feel like I’m walking around radiating some wise, dignified aura. Having gravitas doesn’t actually help you that much. If a middle-aged guy is frowning, shoulders slumped, walking around with a dark cloud over him, you just want to keep your distance, right? If you wrap yourself in charm instead, you can cancel out like half of that rough “old guy presence.” I used to work part-time at a café. When I asked the manager why he decided to hire me, he said: On YouTube as well, I try to make a smile in my videos. A smile is a key ingredient of charm. To cancel out this heavy “presence,” I want to be even more intentional about smiling and staying approachable in my daily life. If you just keep doing something for a long time, your achievements naturally pile up. And if you’re lucky, some of them end up being work that lots of people praise you for. But then one day you realize: The friends who used to argue with you freely and push back hard are suddenly keeping their distance. Indie dev is already lonely enough. But the more “achievements” you stack, the more your potential conversation partners quietly disappear. I read somewhere that Hirohiko Araki, the manga artist behind  JoJo’s Bizarre Adventure , once said that he’s become so successful and revered that people are now scared of him, and no one gives him advice anymore. It makes sense. If you imagine giving feedback to a famous author or legendary director, it feels terrifying, right? That’s why Araki-sensei apparently gets really happy when someone ignores that aura, doesn’t shrink back, and just casually says what they think. From what I’ve seen of him on TV and such, he seems full of charm. He smiles, teaches kids, and comes across as very gentle and kind. He’s a great example. If even someone like him still gets put on a pedestal and loses people to bounce ideas off, I absolutely have no business acting all high and mighty. The more serious and stern someone looks, the more powerful their smile becomes. That contrast is what makes it hit. In Japanese, we even have a word for this:  gap moe (ギャップ萌え) — the charm that comes from an unexpected contrast in someone’s personality or appearance. Take guitarist Eddie Van Halen, for example: When I picture an amazing guitarist, I tend to imagine someone completely lost in their own world, making intense faces while they play. But Eddie often turns to the crowd and smiles, clearly trying to entertain and enjoy it  with  them. That attitude is incredibly likeable. Programmers are a good example of a job that’s hard for people to picture. When mom friends ask what I do and I say: I often get: It’s not that they’re rejecting it; they just can’t imagine what I actually do, so they don’t know how to respond. The fewer shared reference points you have with someone, the more important it is to approach them with a soft, relaxed attitude. You don’t have to explain everything in detail. If they can at least feel that “he seems to enjoy his work and looks like he’s having fun,” that’s more than enough. So that’s what I want to value in my 40s. Lately, I’ve been feeling like younger people show me more respect than before. Precisely because of that, this is the time to  not  act superior, but instead live humbly and gently. I want to keep learning from younger generations and be inspired by them. I want to stay in touch with new values and cultures all the time. To do that, I have to break through the “gravitas” barrier myself. And I think charm is essential for that. If you’re around my age, what do  you  want to value in your life? I’d love to hear. Here’s to good 40s for all of us! Thanks for reading. Inkdrop is a Markdown-focused note-taking app for developers. It’s not about having tons of features — its strengths are the clean design and simplicity. If you’re looking for a clean and simple notes app, check it out: “You’ve got presence” just means “You look older now.” Make a smile. A grumpy middle-aged guy is just scary Be humble. The more achievements you stack, the more people shrink back Use the charm of contrast

1 views
Kix Panganiban 3 days ago

Sometimes 1% > 100%

I went to bed last night feeling excited to bike across town the next morning. But between the loud music coming from my next-door neighbor and my body still sore from going to the gym that day, I woke up the next morning really groggy and lacking the willpower to get up, put on my cycling gear, and push my legs. Even so, I did it anyway. I got up, pedaled the bare minimum -- a 6K lap across my usual morning walk route -- and headed back home. It was the best decision ever. I came back feeling energized and refreshed. After making a cup of pourover, I think I just had the perfect start to my day. I've come to realize that sometimes things that feel daunting or insurmountable are actually easy to get past once you've just tried . Sometimes the bare minimum is enough, and getting past the hump will propel you forward. We don't always have to go 100% -- it's often enough to just go .

0 views
Sean Goedecke 4 days ago

Becoming unblockable

With enough careful effort, it’s possible to become unblockable. In other words, you can put yourself in a position where you’re always able to make forward progress on your goals. I wrote about this six months ago in Why strong engineers are rarely blocked , but I wanted to take another crack at it and give some more concrete advice. The easiest way to avoid being blocked is to have more than one task on the go. Like a CPU thread, if you’re responsible for multiple streams of work, you can deal with one stream getting blocked by rolling onto another one. While one project might be blocked, you are not: you can continue getting stuff done. Because of this, I almost always have more than one task on my plate. However, there’s a lot of nuance involved in doing this correctly. The worst thing you can do is to be responsible for two urgent tasks at the same time - no matter how hard you work, one of them will always be making no progress, which is very bad 1 . If you’ve got too many ongoing tasks at the same time, you also risk overloading yourself if one or two of them suddenly blow out. It’s famously hard to scope engineering work. In a single day, you can go from having two or three trivial tasks to having three big jobs at the same time. I do not recommend just mindlessly picking up an extra ticket from your project board. Instead, try to have some non-project work floating around: refactors, performance work, writing performance reviews, mandatory training, and so on. It can be okay to pick up an extra ticket if you’re tactical about which ticket you pick up. Try to avoid having two important tasks on the go at the same time. Plan out projects from the start to minimize blockers. This section is more relevant for projects that you yourself are running, but the principle holds even for smaller pieces of work. If you think something is likely to get blocked (for instance, maybe database migrations at your company are run by a dedicated team with a large backlog), do it as early as possible . That way you can proceed with the rest of the project while you wait. Getting this wrong can add weeks to a project. Likewise, if there’s a part of your project that’s likely to be controversial, do it early so you can keep working on the rest of the project while the debate rages on. Do whatever it takes to have a stable and reliable developer environment. I don’t think it’s possible to overstate the importance of this. The stability of your developer environment directly determines how much of a workday you can spend actually doing work. For instance, use as normal a developer stack as possible . At GitHub, most development is done in Codespaces , a platform for server-hosted dev containers. You can connect to a codespace with almost any IDE, but the majority of people use VSCode, so I use VSCode , with as few plugins as possible 2 . I think a lot of developers are too focused on their personal “top speed” with their developer environment when everything is working great, and under-emphasize how much time they spend tweaking config, patching dotfiles, and troubleshooting in general. Fix developer environment problems as quickly as production incidents. If you can’t run tests or run a local server, don’t half-ass the troubleshooting process - focus on it until it’s fixed. On the flip side, don’t treat it as a leisurely learning experience (say, about how MacOS handles Dockerized networking). In many circumstances you’re probably better off tearing down and re-creating everything than digging in and trying to patch the specific issue. If your developer environment really is irreparably broken - maybe you’re waiting on new hardware, or you’re making a one-off change to a service that you don’t have the right dev environment permissions for - be scrappy about finding alternatives . If you can’t run tests, your GitHub CI probably can. If you can’t run a server locally, can you deploy to a staging environment and test there? Be careful about doing this in your main developer environment. You’re usually better off spending the time to actually fix the problem. But when you can’t, you should be creative about how you can keep working instead of just giving up. I see a lot of engineers run into a weird thing - commonly a 403 or 400 status code from some other service - and say “oh, I’m blocked, I need this other service’s owners to investigate”. You can and should investigate yourself. This is particularly true if you’ve got access to the codebase. If you’re getting an error, go and search their codebase to see what could be causing the error. Find the logs for your request to see if there’s anything relevant there. Of course, you won’t be able to dig as deep as engineers with real domain expertise, but often it doesn’t take domain expertise to solve your particular problem. There’s even less excuse not to do this now that AI agents are ubiquitous. Point Codex (or Copilot agent mode, or Claude Code, or whatever you have access to) at the codebase in question and ask “why might I be seeing this error with this specific request?” In my experience, you get the correct answer about a third of the time, which is amazing . Instead of waiting for hours or days to get help, you can spend ten minutes waiting for the agent and half an hour checking its work. Even if you can’t solve the problem yourself, a bit of research can often make your request for help much more compelling . As a service owner, there’s nothing more dispiriting than getting a “help, I get weird 400 errors” message - you know you’re going to spend a lot of time trawling through the logs before you can even figure out what the problem is, let alone how to reproduce it. But if the message already contains a link to the logs, or the text of a specific error, that immediately tells you where to start looking. There are typically two ways to do anything in a large tech company: the formal, legible way, and the informal way. As an example, it’s common to have a “ask for code review” Slack channel, which is full of engineers posting their changes. But many engineers don’t use these channels at all. Instead, they ping each other for immediate reviews, which is a much faster process. Of course, you can’t just DM random engineers asking for them to review your PR. It might work in the short term, but people will get really annoyed with you. You have to build relationships with engineers on every codebase you’d like to work on. If you’re extremely charismatic, maybe you can accomplish this with sheer force of will. But the rest of us have to build relationships by being useful: giving prompt and clear responses to questions from other teams, investigating bugs for them, reviewing their code, and so on. The most effective engineers at are tech company typically have really strong relationships with engineers on many other different teams. That isn’t to say that they operate entirely through backchannels, just that they have personal connections they can draw on when needed. If you’re blocked on work that another team is doing, it makes a huge difference having “someone on the inside”. Almost all blockers at large tech companies can be destroyed with sufficient “air support”. Typically this means a director or VP who’s aware of your project and is willing to throw their weight around to unblock you. For instance, they might message the database team’s manager saying “hey, can you prioritize this migration”, or task their very-senior-engineer direct report with resolving some technical debate that’s delaying your work. You can’t get air support for everything you’d like to do - it just doesn’t work like that, unless the company is very dysfunctional or you have a very good relationship with a senior manager. But you can choose to do things that align with what senior managers in the organizaton want, which can put you in a position to request support and get it. I wrote about this a lot more in How I influence tech company politics as a staff software engineer , but in one sentence: the trick is to have a bunch of possible project ideas in your back pocket, and then choose the ones that align with whatever your company cares about this month. Many engineers just don’t make use of the powerful allies they have. If you’re working on a high-priority project, the executive in charge of that project is unlikely to have the bandwidth to follow your work closely. They will be depending on you to go and tell them if you’re blocked and need their help. Unlike the relationships you may have with engineers on different teams, requesting air cover does not spend any credit. In fact, it often builds it, by showing that you’re switched-on enough to want to be unblocked, and savvy enough to know you can ask for their help. Senior managers are usually quite happy to go and unblock you, if you’re clear enough about what exactly you need them to do. To minimize the amount of time you spend blocked, I recommend: At some point somebody important will ask “why isn’t this task making any progress”, and you do not want the answer to be “I was working on something else”. Before I joined GitHub, I worked entirely inside a terminal and neovim. I switched to VSCode entirely because of Codespaces. If I joined another company where most developers used JetBrains, I would immediately switch to JetBrains. Working on at least two things at a time, so when one gets blocked you can switch to the other Sequencing your work so potential blockers are discovered and started early Making a reliable developer environment a high priority, including avoiding unusual developer tooling Being willing to debug into other services that you don’t own Building relationships with engineers on other teams Making use of very senior managers to unblock you, when necessary At some point somebody important will ask “why isn’t this task making any progress”, and you do not want the answer to be “I was working on something else”. ↩ Before I joined GitHub, I worked entirely inside a terminal and neovim. I switched to VSCode entirely because of Codespaces. If I joined another company where most developers used JetBrains, I would immediately switch to JetBrains. ↩

0 views
tonsky.me 4 days ago

How to get hired in 2025

It’s 2025 and you are applying for a software engineer position. They give you a test assignment. You complete it yourself, send it over, and get rejected. Why? Because it looked like AI. Unfortunately, it’s 2025, AI is spreading like glitter in a kindergarten, and it’s really easy to mistake hard human labor for soulless, uninspired machine slop. Following are the main red flags in test assignments that should be avoided : Avoid these AI giveaways and spread the word! The assignment was read and understood in full. All parts are implemented. Industry-standard tools and frameworks are used. The code is split into small, readable functions. Variables have descriptive names. Complex parts have comments. Errors are handled, error messages are easy to follow. Source files are organized reasonably. The web interface looks nice. There are tests.

1 views
iDiallo 5 days ago

Self-Help Means Help Yourself

For a moment in my life, you couldn't see me without a book in hand. A self-help book to be precise. I felt like the world was moving, changing, and I was being left behind. Being raised to look at the mirror before I blame others, I decided if there was something to improve, it was my very own self. I picked up Dale Carnegie's How to Win Friends and Influence People . Now I can admit it, I never finished reading the book. But I read plenty of others. I devoured all of Robert Kiyosaki's books and felt inspired. If only I had a rich dad. I read the one he wrote with Donald Trump. I was pumped. I was still learning English; I may have misunderstood the whole thing (I can assure you, none of the authors mentioned were involved in writing the book). I joined a club where we would get a new self-help book every month and discuss it. I was in love with the genre. But one thing I noticed in retrospect is that I enjoyed reading more than actually doing anything the books taught. Here's the thing about self-help books, they're necessarily abstract. If they gave specific examples, those examples wouldn't apply to most people. So they give general advice, more inspiring than practical. And inspiration, while it feels good in the moment, doesn't build anything on its own. Over the years, I learned that advice by itself is useless. Imagine getting writing advice from a pro, but you've never written anything. No writing advice can be applied to a blank piece of paper. You can't edit what doesn't exist. You can't improve a sentence you haven't written. What you actually need is to start something, anything, and reevaluate every so often. That's it. I think about Bob Nystrom, who wrote Crafting Interpreters , a book about building programming languages. What I love about his story isn't just the book itself, but how he wrote it. He did so publicly, chapter by chapter, responding to feedback as he went. And when he completed the book, he published a reflection of the process he titled Crafting "Crafting Interpreters" . He wrote through some of the worst years of his life. His mother was diagnosed with cancer. Loved ones died. The world around him felt like it was falling apart. But he kept writing anyway. Not because he was superhuman or exceptionally disciplined. He kept writing because it was the one thing he could control when so much else was spiraling beyond his grasp. Finishing the book became proof that he could make it through everything else. Skipping a day would have meant the chaos won. Writing became his anchor. We can always find reasons not to start. The conditions are never perfect. We're still learning. We don't have the right resources. We haven't read enough books yet. But self-help isn't meant to be inspiration porn, something we consume to feel good without changing anything. It's a method for helping yourself. The books, the advice, the strategies, they're all pointing toward the same message. You have to be the one to do it. Nobody can help you get started. Nobody can give you advice that works on a blank page. The only thing that transforms nothing into something is you, sitting down and beginning. Self-help means helping yourself, not someday, not when you're ready, but now. Start messy. Start imperfect. Start without knowing how it ends. Because the secret isn't in the next book or the next piece of advice. The secret is that you already know what you need to do. You just need to help yourself do it.

0 views
Weakty 1 weeks ago

Counting Priorities

Take a moment and ask yourself: what are my priorities ? Perhaps, like me, you’ve walked decades on this earth and never really asked yourself this sort of pointed question. But let’s not dwell on why we aren’t asking such questions, and try to answer the question itself. (I refuse to answer the question). I’ve often struggled with trying to do too much at once. Not knowing what my priorities are makes making the decision of what to do harder. In this context, I’m talking of priorities of the privileged sort—the ones that live way at the top of Maslow's hierarchy of needs: priorities of expression, artistic or otherwise—I’m talking about Priority and Self-actualization. I suspect many people have a long-standing ache, a desire for meaningfulness in their lives, and I think conceptually, priority, and the difficulty of prioritizing, has a lot to do with that. Perhaps that is why the quote at the beginning of this post struck me. A priority represents how you spend your precious time. I see it as a chain: with the time that you have, you make decisions about how you want to spend it, which leads to actions, those actions lead to results and hopefully, those results (and hopefully, the act of acting) are fulfilling and meaningful. Pretty simple, when you write it out. But if it’s so simple, why did the quote hit me so hard? Mann’s words can get you to stop and think about what a priority is. A very abrupt stop. The kind where you might actually wonder about the very definition of a word, and how you apply it from your lexicon. With that stopping, you might have clarity. In this case, perhaps it is clarity on when to say “no”. Clarity to assess what really matters. Clarity to slow down and think about things. In a search of meaning and fulfillment, I think we need fairly constant and repetitive deliberation on what our priorities are. I don’t think I’ve been doing that repetitive deliberation. What can make this more difficult is experiencing priority-envy. Sometimes, we might come across someone who has convictions and priorities so strong and apparent that we can’t help but feel jealous; they are on a path that seems so obvious to them that it makes us wonder what it will take to find our own path. Where does their passion come from? we might ask, how did they know , or even more importantly in today’s age, how do they remain focused on it? I can only speak for myself here, but I suspect others might feel the same sometimes: an overwhelming feeling that one must narrow in and specialize on something that yields—what, exactly? The answer may vary from person to person. To have recognition in your field? Perhaps to be the self-same person that others envy for how convicted we are in our walking life. Or more insidiously, to feel like we’re going somewhere ? At the root of this wondering are plenty of uncomfortable questions. It can be overwhelming, simply crushing to even stop and think: what does one do with a life? Or to add even more pressure: what does one do with the non-contiguous slivers of life existing between one’s obligations? . So, I spent some time taking Mann’s quote very literally—why not? What are my two priorities? But I wouldn’t even let myself answer the question, Instead, I looked for a way out, a way to take a branch, and subdivide it into smaller branches. I jumped straight to bargaining. I told myself that there are given and chosen priorities. Taking care of yourself, your family, maintaining a roof over your head—those are all given priorities. Chosen priorities are based on how you prioritized your discretionary time. I could come up with two priorities in that sense, couldn’t I? I started asking myself some questions. Was writing one of my two priorities? Painting? Reading and self-educating? Community-involvement? I ended up combing through a field littered with passing (and some staying) interests. But trying to find a priority in an interest or a hobby wouldn’t do it. I needed to zoom out. That meant asking myself what these existing things had in common. Using this very literal lens did yield me this: I thought about values behind all of this—the driving factor behind my priorities, and subsequently, my behaviour. A few years ago, a friend of mine asked me a simple question: what motivates you? Until then, no one had ever asked me a question like that. I had not asked myself a question like that. The question isn’t so different than asking yourself what your priorities are. And to zoom-out again, I think both questions, again, are about values. Perhaps like me, you have a feeling of what your values are, but you haven’t really expressed them before. Surely, I was living them, no? and the lens into that landscape was most easily seen by my behaviour (and so we return back to priorities, back to how we spend our time). So, like me, perhaps you’ve never asked yourself this whole line of destabilizing questions. But if it is true that some of the answers lie in how we spend our time, then it stands we should talk about and assess automatic behaviour. Looking at my default actions and how I spend my time provides a fairly visible trail of breadcrumbs to work back up to identifying motivations, priorities and perhaps most importantly, values. While many of our automatic behaviours have been co-opted by attention-stealing-devices, I remain optimistic that looking at what we default to doing can give us a hand in coming up with some answers. Unfortunately, some of those answers might not be so glamorous (or might be downright toxic and scary). Let me self-pathologize to see if we can work something out for one "part" (in the IFS-sense) of me. When I look at my inability to sit still and rest, I see a creeping feeling that I should be working on something. My spare moments should be spent creating, producing and improving . Hmmm—ok, I see that work might be broad enough of a category to qualify as a priority, here. Now, what might be the value that is driving that behaviour? It might be Security (securing future work, financial stability etc). But it might also be valuing Expression, or Creativity. So it seems values can be conflate, connect and co-depend. Taking a very literal approach to assessing priorities can be helpful if a bit constraining. But the act of writing this post out, felt altogether gratuitous and indulgent—even more so than my normal writing. Perhaps priorities aren’t always things that need to be identified with words. Maybe they are a unstated presence that manifest in our behaviour and is directly linked to our values. Stopping and asking ourselves about these sorts of things can provide useful pauses and opportunities for recalibration in our lives. And yet, I’m not sure I believe that. Because why else would this quote have struck me as it did? I do not end this post with any conclusive thoughts, but more questions than I had before. So, I will leave you with another quote that have been floating in my mind, and I find sufficiently calming in these existential waters:

0 views
Dan Moore! 1 weeks ago

Thankful For Memory Managed Languages

I’m thankful my software career started when memory managed languages were first available and then dominant. Or at least dominant in the areas of software that I work in–web application development. I learned BASIC, WordPerfect macros, and Logo before I went off to college. But my first real programming experience was with Pascal in a class taught by Mr. Underwood (who passed away in 2021 ). I learned for loops, print debugging and how to compile programs. Pascal supports pointers but I don’t recall doing any pointer manipulations–it was a 101 class after all. I took one more CS class where we were taught C++ but I dropped it. But my real software education came in the WCTS ; I was a student computer lab proctor. Between that and some summer internships, I learned Perl, web development and how to deal with cranky customers (aka students) when the printer didn’t work. I also learned how to install Linux (Slackware, off of something like 16 3.5-inch disks) on a used computer with a 40MB hard drive, how to buy hardware off eBay, and not to run in a C program. That last one: not good. I was also able to learn enough Java through a summer internship that I did an honors thesis in my senior year of college. I used Java RMI to build a parallelizable computation system. It did a heck of a job of calculating cosines. My first job out of school was slinging perl, then Java, for web applications at a consultancy in Boulder. I learned a ton there, including how to grind (one week I billed 96 hours), why you shouldn’t use stored procedures for a web app, how to decompile a Java application with jad to work around a bug, and how to work on a team. One throughline for all that was getting the work done as fast as possible. That meant using languages and frameworks that optimized for developer productivity rather than pure performance. Which meant using memory managed languages. Which are, as Joel Spolsky wrote , similar to an automatic transmission in terms of letting you just go. I have only the faintest glimmer of the pain of writing software using a language that requires memory management. Sure, it pops up from time to time, usually when I am trying to figure out a compile error when building an Apache module or Ruby gem. I google for an incantation, blindly set environment variables or modify the makefile, and hope it compiles. But I don’t have to truly understand malloc or free. I’m so thankful that I learned to program when I didn’t have to focus on the complexities of memory management. It’s hard enough to manage the data model, understand language idiosyncrasies, make sure you account for edge cases, understand the domain and the requirements, and deliver a maintainable solution without having to worry about core dumps and buffer overflows.

0 views
A Room of My Own 1 weeks ago

My One-Board Trello Task Management System

So I just came out of a project management webinar — and they shared this really simple task-management method. And I realized that I’ve basically been doing this all along. It’s about moving away from constantly trying to prioritise everything to simply postponing things in a deliberate, thought-out way. And it felt nice to see that this thing I pieced together is,  a “real” method. After years of trying to figure out how to manage all my different tasks, I came up with a system a few years ago that has just worked. I haven’t had to change it in ages. I’ve tried different apps, different methods, different everything — but this setup (which I run in Trello, though you could do it anywhere that has Kanban boards) has stuck. Why Trello? Mostly because it’s free, simple, and the phone app works. It sends reminders to my email (which I’ll see because I keep inbox zero) and as phone pop-ups. The email part is key for me — if it hits my inbox, it won’t get lost. Over time this system grew with me, but this is where I’ve landed: one single board . Just one. Below is the breakdown of my lists on this one board (though I do add more when I need to — if I have extra tasks or a project, like planning a trip, spring cleaning, I’ll add a temporary list for it). When a task or a list is done, I delete it. I don’t archive it, I don’t capture it anywhere else. Done and gone. You can email directly into Trello — I rarely do, but I like knowing I could. This list is where I stick generic things: kids’ school holidays, public and work statutory holidays, my goals for the year, and my very loose 5-year “plan” (which is more vibes than plan, honestly). Because I like the Eisenhower Matrix method (I wrote about it here) , I have a few lists that follow that idea: Urgent + important. - Things that actually need to happen pretty soon or right away. That elusive middle ground where all the good long-term things live. I’m honestly terrible at this list lately because work has been so full-on — which is also why my personal projects, like blogging, have been basically nonexistent. But this is where those long-term goals go: things like education, personal skill development, improving health and wellness — all the stuff that matters but always falls behind the “do immediately” tasks, and therefore need to be scheduled. Anything already booked, or anything that repeats: insurance payments, car registration, health appointments, whatever. I put a date on it, set a reminder, and forget about it until it surfaces again. I do this for the whole family. Why not just put it all in my shared (with my husband and son) Google Calendar? Because some things don’t need to be done on the day they pop up. For example: car registration. I set a reminder a month before it’s due. I won’t do it that exact day, but it will pop up, I’ll drag it to “Do Immediately,” and then it gets done. If something goes in Google Calendar, it’s because it happens at an actual fixed time — dinner with a friend, a scheduled doctor’s appointment, whatever. Those don’t go in Trello. This took me a long time to figure out. These are things that don’t need to be done, nothing is riding on them, but they matter (and maybe they shouldn’t) to me. I wrote about some of it here: The Art of Organizing (Things That Don’t Need to Be Organized) The Journal Project I Can’t Quit The Cost of Organizing Ideas – But I Keep Doing It Anyway An example is my digital photo books. I use Mixbook or Shutterfly services, and the kids love having the physical copy of a digital photobooks to leaf through. And so do I. I make ones for big trips too. But then I realised: if those companies disappear, all my digital books vanish. You can’t download them as PDFs or export them in any meaningful way (apart from having the printed copies — but what if my house burns down, or I want another copy?). After researching and asking around, the only real solution seems to be opening them full screen, taking screenshots, and saving them in Day One (link to one of my posts about it). It’s a huge project (well, potentially, once I start working on something and break it down into smaller tasks - it gets done). But I’m not touching it right now. However, having it on the list gets it out of my head. The other lists I have on my board are: I like knowing how much I spend and when things renew. I regularly cancel things. For example, Kindle Unlimited: I sign up when there’s a deal or when I need it, then cancel again. Same with Apple TV — if there’s a show I want, I get it for a month, then drop it. I hate having too many subscriptions that sit there unused. I didn’t put these in recurring tasks because some documents are valid for years or even decades. So I just keep a list. Sometimes I attach the files, but I don’t fully trust Trello with sensitive things, so the actual scanned documents live in my Dropbox. Renovations, things I want to study, photo books I still want to make. These live even further out than the “may or may not do” list. Not urgent, not actionable, probably not happening soon — but I don’t want to forget about them either. And most importantly, I don’t want to think about them. When I do a review, I’ll see them, remember them, and that’s enough. It’s simple. It’s not over-engineered. It’s not automated to death. It’s easy to maintain. And most importantly: things actually get done. My lists used to be huge and chaotic. This isn’t. NOTE: For work tasks I use Microsoft To Do, since it plugs straight into the rest of the Microsoft ecosystem we use.

3 views
ava's blog 1 weeks ago

📌 i got my data protection law certificate!

On the 30th of October , I officially finished my data protection law certificate! I'm a bit late to post this because I was so busy and still needed to wait for the actual paper to arrive plus getting a frame and all. :) The certificate ('Diploma of Advanced Studies') is intended for 3 semesters in part-time. I finished it up in one semester with a grade average of 2,2 1 while continuing my other part-time degree (a Bachelor of Laws, LL.B) and full-time work. It is quite a bit more intensive than the 2-week crash courses to be a data protection officer and I had to write 6 exams in total, but it enables me to be one plus the permission to call myself a certified consultant for data protection law. I'll have to refresh it every 4 years with a refresher course, or lose it. While I love to write about commercial tech and social media through a privacy lens here and burn for that topic in private, I intend my career/professional focus to be about health data and AI. I already work with pharmaceutical databases in my job, and I wouldn't wanna miss that part of my work day. My first of hopefully many pieces of paper on that wall 2 . Would love to do AIGP, CIPP/E, CIPM and ISO27001 Lead Implementer some time, and obviously finish my Bachelor degree and start a Master's in data protection law. This cert consisted of the first 3 modules of that Master's degree already, so I know what's ahead of me and I know I can do it. :) Now I'm off to another MRI, because my body is being difficult. I hope to post more soon <3 Reply via email Published 20 Nov, 2025 In case there is confusion, it is the opposite of the American GPA system: 1,0 is good, 4,0 is bad. ↩ I may even get a second frame already to also put up the actual grade records next to it. The one on the wall is just the naming rights proof. ↩ In case there is confusion, it is the opposite of the American GPA system: 1,0 is good, 4,0 is bad. ↩ I may even get a second frame already to also put up the actual grade records next to it. The one on the wall is just the naming rights proof. ↩

0 views
Martin Fowler 1 weeks ago

My Foreword to "Frictionless"

I find most writing on software productivity to be twaddle, but Nicole Forsgren and Abi Noda are notable exceptions. I had a chance to take a look at their new book, published today, and liked it so much I wrote a foreword.

0 views

How to Be Better at Talking About 'Tech Debt'

Tech Debt started out as a useful metaphor. You 'borrow' from the future to achieve an outcome today. Much in the same way you can achieve home ownership earlier by taking out a mortgage after saving enough for a down payment. However, the way it's used now is long past its usefulness as an explanation for anything. You might as well blame the phase of the moon. It's about as edifying. You wouldn't tell the doctor your problem is "pain" without giving more details, yet I hear 'tech debt' as the entire explanation way too often. Part of your job as a leader is to make technical problems understandable by non-technical stakeholders. Analogies can serve you well here: I've said it before, but at its core, management is the art of efficiently deploying capital for the highest return on investment. In a software company most of that capital is in the form of engineering time. To make the best decisions we need to be more precise than just saying we want to use it to "pay down tech debt". That doesn't sell because it is a statement devoid of useful information. It doesn't say anything about what kind of return on investment you might be getting. While specifically quantifying the ROI of preventative maintenance or restorative work in pure dollar terms can be hard or even impossible, using an analogy that most people understand can help make your case. First things first, you need to understand what kind of debt you're dealing with. When you're talking about intentional tech debt, the shortcuts you took to get a product out the door, talk about the debt in concrete terms. Discuss the specific shortcuts you took and what the 'interest payments' are on them. For example: This is the kind of debt you sometimes should take on but when you're deliberate about it and clear about why you're doing it and what you get out of it, you can also be clear about what's needed to pay it off and what the costs of not doing so are. You can even do all of that without saying the words "technical debt", which is becoming a term that makes people stop listening. This kind of debt doesn't really need metaphors to explain, as long as you're clear about what the trade-offs and ongoing costs are. This is probably the most common form and it's where the debt metaphor is often the least useful. You can build the best system you possibly could with the information available and the world can change in ways that your previously well-designed system simply can't handle. Many seemingly good decisions can prove to have been the wrong one in retrospect. This has a lot of the same characteristics as deliberate debt. You've got ongoing costs related to previous decisions where a project to 'pay down' the debt would remedy the situation. However because it was not taken on deliberately it can be harder to nail down the source of the pain and make a clear case for the remedy. This is especially true when the decisions were in the long ago past and nobody knows or remembers why they were made. To make matters worse, when there's a lot of it it can just sort of feel like a "big blob of yuck" This is the kind of situation that leads to people saying "we should just rewrite it" (Don't). Now, the inability to clearly articulate the problem can be a problem in and of itself . It's entirely possible that the understanding of the full shape of the system is lacking to the point where nobody can effectively diagnose things in specific enough terms to be useful. This is common in high-turnover organizations or ones that never developed good habits of documenting their decisions. Whatever the cause, it should go on your list of things to remedy. When you've got these kinds of problems, the age old technique of elephant-eating (one bite at a time) is the solution. Try to categorize, break down, and understand in more detail the types of problems you have. If you must stick with the debt metaphor you can categorize it by 'interest rate': Doing this breakdown and classification is probably best done as a group effort. One person's payday loan might be another person's mortgage debt. It's best to understand it in the broadest business context you can and try to be as scientific as you can be. There's bound to be some subjectivity to it and biases and preferences can skew the perception of how bad a problem truly is. Many eyes make this kind of planning more effective. If your product is built on a framework that's still maintained, and the version you're on is going end-of-life because you haven't kept up, that's not tech debt . You've neglected basic maintenance. If your porch is falling apart because the stain protecting the wood has been gone for years and water is rotting the boards that's not increasing the size of your mortgage. If it is debt, it's money you borrowed from the mafia and now they're on their way to break your legs. As the saying goes, code doesn't age like wine, it ages like milk. With that comes risks that need to be managed. There is often pressure to ignore those risks in favour of new features or other, more exciting things. Who wouldn't rather buy a new flashy electronic gadget than paint the porch again? You know that's irresponsible and so is neglecting basic maintenance of your software systems. This is one of the reasons it's critically important to align the incentives of the EM and PM partners . If only the EM has the incentive to keep the porch in good shape and only the PM has the incentive to buy new toys, you're gonna have a bad time. The best way to deal with this type of problem is to not get into it in the first place. The 'good news' is that if you leave it long enough the problem will become so obvious that you won't have to justify fixing it. The bad news is that the fix is going to be way more expensive than if you'd done the basic maintenance that could have prevented it. Don't borrow money from loan sharks! As engineering leaders, we have the responsibility to frame the necessity to do maintenance work and to pay down both deliberate and unintentional technical debt in business terms. Often the problem is that nobody is able to do that successfully until it becomes a crisis. Taking on deliberate debt with a full understanding and plan to pay it off can get you the software company equivalent of home ownership sooner with manageable interest payments. Being able to make business case for 'engineering work' or things that aren't just new features is a critical skill for engineering leaders to develop. And whenever you can, make sure your Product counterpart shares both the pain and the glory of having a well-functioning product. Once y0u develop that skill, you can use it to avoid taking on those payday loans with the highest interest payments and spend your capital on what's best for the business without saddling your future self or your successor with big bills. " Debt Consolidation, Circa 1948 " by Orin Zebest is licensed under CC BY 2.0 . Like this? Please feel free to share it on your favourite social media or link site! Share it with friends! Hit subscribe to get new posts delivered to your inbox automatically. Feedback? Get in touch ! We hung up a sheet of plastic instead of a door when we built the garage so we could start parking the car inside. We need to install the door now. We need to change the oil on the car now so the engine doesn't seize later. We should patch the leaky basement so that we don't need to deal with the foundation collapsing. "We shipped this in June to get fast customer feedback knowing it would need to be hardened before Black Friday in November. We need to make these specific improvements before then or we won't make it through the holidays without major downtime." "We knew this code wasn't optimized and we deployed it on bigger servers to make up for it. If we spend a couple weeks on performance improvements we can save X thousand dollars over the next year by redeploying it on smaller, less expensive machines." Your traffic or account sizes could vastly exceed your expectations. A library, component, or framework you depended on can become abandoned. You made a trade off without realizing it. You didn't fully know what you were doing when you wrote it in the first place. Payday Loan Debt (emergency): This is the stuff that's hurting you daily and costing you the most. You're coping, not solving anything . Pay it off ASAP. Credit Card Debt (not good): This stuff is a major drag on velocity and there's a clear case to be made for paying it off. Make that case, focus on the ROI. Mortgage debt (might be ok): This stuff might or might not have a business case for paying it off. It might bug you a little but it might be worth putting up with. But only by understanding it can you make that call.

0 views
Manuel Moreale 2 weeks ago

Nic Chan

This week on the People and Blogs series we have an interview with Nic Chan, whose blog can be found at nicchan.me . Tired of RSS? Read this in your browser or sign up for the newsletter . The People and Blogs series is supported by Numeric Citizen and the other 124 members of my "One a Month" club. If you enjoy P&B, consider becoming one for as little as 1 dollar a month. Hi, my name is Nic Chan! I'm a web developer and hobbyist artist who lives in Hong Kong. It's pretty funny, depending on who you ask, the audience is shocked to hear about my secret other life, since I typically keep these identities very separate. If I'm not tinkering with websites or frantically mixing paint, you might find me shitposting on Mastodon, sweating through the Hong Kong summers or volunteering at the cat shelter. Despite growing up on the internet, I had never intended to be a web developer. I studied Fine Arts at a small liberal arts college in California, where I solidified a vaguely Californian accent that haunts me till this day. I entered the working world hoping to start a career that would somehow be arts related, but quickly decided that it wasn't for me. The art world, especially at higher levels, feels very inauthentic and performative in a way that left me constantly tired. During that time, I managed to convince my employer that it would save them money if I also managed their website for them, and used that opportunity as a spring board to teach myself web development. Upon reflection, I have no idea how I managed to convince them that this was a good idea. Though some engagements were longer than others, I've been a freelance web developer for around 10 years now! I'm a web generalist, but the thing I want to do more of is building sustainable and accessible websites with core web technologies. This really is the reason I continue to do what I do! I love the web as a medium, and I want to see it thrive. The reason why I started posting on my blog was basically to prove to clients that I was a real, trustworthy person. Unfortunately, to have any sort of success as a freelancer, unless you are a literal savant, I think you need to do -some- kind of marketing, and blogging is the only method that I found acceptable to me personally. (LinkedIn was still a cesspit in 2015!) In recent years, the blog has very much drifted away from that original purpose. I now mostly post very long-form thoughts on tech industry topics, whenever I feel the need to. For some odd reason, my instructional/informative writing is not as popular as my ranting, so I will leave tech education to other folks! As far as my blog goes now, I probably spend an equal amount of time tinkering on random code parts of the site as writing blog posts. I want to explore more topics outside of web development and the tech industry in the future. My absolute favorite bloggers are the ones who 'bring their whole selves' to their blog, and post updates on their creative hobbies or whatever is on their mind at the moment. The thing I love about the IndieWeb is mostly the people behind it, so getting to bond over the little things like shared hobbies is one of the main draws for me. Fuck the technology, I'm here for the people. My blogging process is pretty simple. I might have an idea for a topic, and I'll create a file in Obsidian with as much information as I care to note down, and when I get a moment I will come back and write out the post, usually in a very linear way, in as many sittings as it takes to finish the draft. I switched to Obsidian sometime in 2025 and it really did help me get a lot more writing done than I did in years past — cloud-based SaaS solutions are fine, but apparently, if I have to log in to a website to start writing, that does pose a significant barrier to me actually getting any writing done. Having Obsidian just be there on my desktop removes that tiny bit of friction, and I had really underestimated how important that is to the creative process. Once a draft is done, I like to let things sit and marinate for a while, until I can read it again with 'fresh eyes.' You'll never find a super timely take on current events on my blog, I take far too long for that! I don't typically write additional drafts — call it a character flaw, but I'm far more likely to scrap an idea completely than to rework it in a substantial way. Shamefully, I have posts from over a year ago that are still about 90% complete. They will sit until I finally manage to push through whatever reservations I might have about posting and just hit the publish button. If I'm writing something more technical or industry-related, I will try badger some folks to do a quick read-through. Special shoutout to my buddy EJ Mason for being the person who usually suffers through this task. I have a pretty particular desk setup for ergonomic/health reasons. I am physically incapable of being a laptop in a coffee shop kind of person, my fingers will start to turn numb as I use the trackpad, and I've used a custom keyboard layout for so long I can't really get work done on a traditional keyboard layout! If I'm writing at my computer, I need to be in my home office, at my PC, with my Ergodox EZ (a split ortholinear keyboard that has served me very well over the past few years), and a drawing tablet as a pointer device. I like it to be nice and quiet when I'm writing, if there's background noise, I can't hear my internal voice over the sound of other people speaking! Even with this particular setup, sitting at my desk does tire me out more than most people, so on very rare occasions I will draft a post with pen and paper. Unlike with computer writing, I'm completely agnostic as to what materials I actually write with, I've occasionally written post outlines on stray receipts or napkins. I built my personal site with Astro and Svelte! I have a whole series on the topic of building my website if you want a peek behind the hood at how I did it. There's so much I want to do to extend the site, but I find the biggest obstacle remains creating the graphics. The funny thing is, I definitely feel a sense of dread when looking at a blank canvas, even when I know what the final product is going to look like. Maybe putting this out there in the world will be the kick in the butt I need to make progress! Everything is managed in code and Markdown, without a CMS. Though it does have flaws and limitations when it comes to certain components, Markdown remains my favorite format for drafting pretty much anything. My site is currently hosted on Cloudflare. I fully admit that it's not very IndieWeb of me, I do feel strongly about potentially moving off big tech infrastructure, but I'm not very good at managing servers on my own and I'm a bit scared to do so with the prevalence of bad-faith crawlers. Yeah, I wouldn't write the components in Svelte. If you look back at my posts, I acknowledge that I would probably regret this decision and want to use web components later, but at the time I lacked the web components knowledge to execute the vision properly. No shade against Svelte, it's just that for something like my blog, I prefer to have to deal with less of a maintenance burden than I might willingly take on for a work project, since I'm only in the codebase for a couple of times a year. There are some features/syntax that I'm using that will likely be deprecated in future versions of Svelte, so that's a pain I will have to deal with eventually. In my youth, I definitely had a bit of 'shiny new thing syndrome' when it came to web technologies. Nowadays, I prefer things that are more stable and slow. I've been burned just a few too many times for me to feel excited about proprietary technology! I pay for $24 USD for a domain name. I swear it used to be cheaper in the past! I also pay Plausible and Tinylytics as I believe in paying for privacy-respecting services. I started with Plausible, and at some point I became preoccupied with having a heart button for my posts, so I added Tinylytics. It's on my long list of todos to sort this out, I definitely don't need both. I mainly keep analytics to know where my posts are being linked from — doing this has helped me find some really awesome people and blogs (badum-tsh). Other than that, keeping the site running is free. This might change in the future, I do want to do more fun things that might require more financial resources, but I don't have any intent to monetize it, it's just a little home on the internet that I'm happy throw cash at to keep the (metaphorical) lights on. In no particularly order, here's a list of blogs I've been really enjoying. I think there will be some level of overlap with the People and Blogs folks, as I've been a long-time reader and found many folks worth following through this series, so thank you Manu! After rambling on for far too long for most of this, I'm finally at a loss for words. I'd be much obliged if you visited my site but you can also follow me on Mastodon if you have a hankering for some shelter cat pics. I have a submission coming out for the 'Free To Play' gaming-themed zine under Difference Engine , a Singaporean indie comics publisher. It's a collaboration with the narrative designer & writer Sarah Mak , I hope you'll check it out when the time comes! Now that you're done reading the interview, go check the blog and subscribe to the RSS feed . If you're looking for more content, go read one of the previous 115 interviews . Make sure to also say thank you to Luke Dorny and the other 124 supporters for making this series possible. Like Keenan , who I found from this series and is rapidly becoming one of my all-time favorite bloggers. Keenan is a true wordsmith, and an incredibly kind human. They're so good at what they do, that they managed to completely break some assumptions I had about myself, like I thought I hated the podcast format of 'two friends chatting' until they started one with Halsted ! Ethan Marcotte has been absolutely killing it lately. His work is quiet and thoughtful, but in a wonderfully understated way that sticks in your brain for a long, long time. I've never seen anyone write as much as Jim Nielsen does and still have as many awesome posts. Come on, what's your secret Jim? Melanie Richards is one of the main reasons I want to start blogging about my other creative hobbies a bit more. She also has one of the prettiest blog designs I have ever seen! Everything I know about web sustainability, I have probably learned directly from Fershad Irani's blog . Eric Bailey writes the kind of posts that I send to every single person I know in the industry as soon as I see them hit my feed. Robert Kingett 's website tagline is 'A fabulously blind romance author', what's not to love? Robert has written numerous pieces that have completely reshaped how I feel about certain topics. His writing style is persuasive with a heaped tablespoon of humor for good measure. The final two folks don't post that regularly, but they are my friends so I am allowed to nudge them in the hope it will make them post more often. Jan Maarten and Katherine Yang have blogs that are so unapologetically them. More posts, please!

0 views
The Coder Cafe 2 weeks ago

Nothing Beats Kindness

☕ Welcome to The Coder Cafe! Today, November 13, is World Kindness Day. For this special occasion, we discuss how kindness matters at work. Get cozy, grab a coffee, and let’s begin! We’re in 2022. It’s Saturday evening, and I’m about to go to bed. I’m on-call that night. I haven’t been paged, but just to make sure everything is OK, I logged in and checked Slack. An incident was going on, and a colleague was already on it. I DMed him: “ Why didn’t you contact me? ” He replied: “ It’s late and I thought you might be sleeping. I was awake, so I looked to see if there’s something I could do. ” My first reaction was: I’m on-call. I’m paid for it. I’ll take care of it. Go to bed. But here’s the thing: on a Saturday evening, he chose to help because he thought I might be sleeping, even though I was the one on-call, the one paid to handle it. That was a pure act of kindness. No points. No credit. Just care. And after that? Honestly, I would have done anything for that person . At work, we work with people long before we work with code. There’s always a little distance between us: roles and power dynamics, deadlines and pressure, different cultures, communication styles, sometimes different time zones. Kindness is the fastest bridge across that distance. Kindness is about being generous, considerate, and having concern for others without expecting praise or reward in return. It’s a voluntary act that creates psychological safety among team members. When people feel safe, they surface risks earlier, ask the “naive” questions, and move faster together. Kind people make work better day in, day out. Kindness boosts trust, speeds decisions, reduces stress, and quietly raises the bar for everyone. Let’s look at a few places where kindness matters in our daily jobs: Code review : When we’re assigned a review, we’re not there to rate someone’s code. We’re there to merge the best possible change together. Be respectful and stay factual. Favor questions over pronouncements: “ What scenarios does this handle? I’m worried about X; would Y cover Z? ” Point out what’s good, suggest concrete fixes, and link to standards or examples. If there’s confusion, offer help. Meetings : Make space so everyone can be heard. Don’t interrupt. Invite quieter people in: “ Ben, anything you would add? ” It’s not because someone is more vocal that they’re more right. Mentoring : People make mistakes. Don’t jump to blame or perform expertise. The goal is to protect in public and correct in private. Give clear, kind feedback, focus on the next step, and share your own past mistakes to lower the temperature. Random thank you : When you receive help or just enjoy working with someone, say thank you. Recognition matters, and doing it publicly multiplies the effect. For example, at Google, there’s a program called gThanks that lets you thank someone publicly so others can see it too. Make time to listen : Being kind also means making time to listen. I remember going through a difficult period of my life, and a former manager just took time to talk, without judging. That mattered more than any advice. Self-compassion : Kindness also applies to yourself. Give yourself the same understanding you would give a teammate. Take breaks, ask for help, forgive your own mistakes, and learn from them. Being kind is a bridge to people, and even in a professional context, as Aesop wrote, no act of kindness, no matter how small, is ever wasted. Missing direction in your tech career? At The Coder Cafe, we serve timeless concepts with your coffee to help you master the fundamentals. Written by a Google SWE and trusted by thousands of readers, we support your growth as an engineer, one coffee at a time. Don’t Forget About Your Mental Health Keeping a Mistake Journal The XY Problem Why Kindness at Work Pays Off Random Acts of Kindness Foundation ❤️ If you enjoyed this post, please hit the like button. 💬 What’s one act of kindness that changed your workday? Leave a comment We’re in 2022. It’s Saturday evening, and I’m about to go to bed. I’m on-call that night. I haven’t been paged, but just to make sure everything is OK, I logged in and checked Slack. An incident was going on, and a colleague was already on it. I DMed him: “ Why didn’t you contact me? ” He replied: “ It’s late and I thought you might be sleeping. I was awake, so I looked to see if there’s something I could do. ” My first reaction was: I’m on-call. I’m paid for it. I’ll take care of it. Go to bed. But here’s the thing: on a Saturday evening, he chose to help because he thought I might be sleeping, even though I was the one on-call, the one paid to handle it. That was a pure act of kindness. No points. No credit. Just care. And after that? Honestly, I would have done anything for that person . Why Kindness Wins At work, we work with people long before we work with code. There’s always a little distance between us: roles and power dynamics, deadlines and pressure, different cultures, communication styles, sometimes different time zones. Kindness is the fastest bridge across that distance. Kindness is about being generous, considerate, and having concern for others without expecting praise or reward in return. It’s a voluntary act that creates psychological safety among team members. When people feel safe, they surface risks earlier, ask the “naive” questions, and move faster together. Kind people make work better day in, day out. Kindness boosts trust, speeds decisions, reduces stress, and quietly raises the bar for everyone. Let’s look at a few places where kindness matters in our daily jobs: Code review : When we’re assigned a review, we’re not there to rate someone’s code. We’re there to merge the best possible change together. Be respectful and stay factual. Favor questions over pronouncements: “ What scenarios does this handle? I’m worried about X; would Y cover Z? ” Point out what’s good, suggest concrete fixes, and link to standards or examples. If there’s confusion, offer help. Meetings : Make space so everyone can be heard. Don’t interrupt. Invite quieter people in: “ Ben, anything you would add? ” It’s not because someone is more vocal that they’re more right. Mentoring : People make mistakes. Don’t jump to blame or perform expertise. The goal is to protect in public and correct in private. Give clear, kind feedback, focus on the next step, and share your own past mistakes to lower the temperature. Random thank you : When you receive help or just enjoy working with someone, say thank you. Recognition matters, and doing it publicly multiplies the effect. For example, at Google, there’s a program called gThanks that lets you thank someone publicly so others can see it too. Make time to listen : Being kind also means making time to listen. I remember going through a difficult period of my life, and a former manager just took time to talk, without judging. That mattered more than any advice. Self-compassion : Kindness also applies to yourself. Give yourself the same understanding you would give a teammate. Take breaks, ask for help, forgive your own mistakes, and learn from them. Don’t Forget About Your Mental Health Keeping a Mistake Journal The XY Problem Why Kindness at Work Pays Off Random Acts of Kindness Foundation

0 views