Scaling by "delegation" isn't good enough
Delegation doesn't scale your business. What does: Creating a team that is better than the current team. Including you.
Delegation doesn't scale your business. What does: Creating a team that is better than the current team. Including you.
I founded Moonshine back in 2022, together with Manjunath, another engineer and researcher. My entire career up until that point had been working on consumer products, so I felt very comfortable with how those are sold, and I thought to myself “How hard can B2B sales be?”. The answer, of course, is very hard! My investors knew that before I did, and pushed me to hire a senior sales person to make up for my lack of experience. It’s taken me three years and multiple failed attempts to build a working sales team, mostly because I didn’t even know enough to ask the right questions. The biggest mistake I kept making was hiring people with ten or twenty years of enterprise sales experience. This wasn’t because they were bad at their jobs, everyone who made it through our interview process had done amazing things at larger companies, but I set them up to fail at my startup. Here’s why: Startup Sales aren’t Enterprise Sales Experienced sales people are used to being given a list of qualified leads, a clear set of sales materials, and in general a “repeatable sales motion” that they can follow to close deals. There’s a whole world of Sales Development Representatives (SDRs) who handle finding and qualifying leads through cold-calling, linkedin, searching the web, etc. These are junior roles that hires new to sales are given when they start, and people who want to focus on sales usually graduate from them within six months to a year. Any sales person with experience won’t have had to generate their own leads for a long time, they’re used to having a team behind them. Even if they’re willing to roll up their sleeves and commit to what’s consider a low-status job, they won’t have a good idea of how to do SDR for a novel product. Startup Incentives are Long Term One of the best sales people I met described himself as “coin operated”, and the usual incentive structure is set up to reinforce that attitude, since sales people make most of their earnings through commissions on a quarterly basis. This isn’t a good fit with an early-stage startup because you’re probably going to be making proof-of-concept deals initially where the time to close is uncertain and the revenue is small. A 10% slice of that isn’t interesting compared to the steady, large income stream they get at an established company. The alternative is setting up performance-based bonuses (for example $x for each paid pilot signed) but even that is unlikely to be a very compelling amount for them. The hope of course is that you can convince candidates to focus on the stock they can earn, but coming from a world where incentives are liquid cash they get within a couple of months, it’s a hard perspective switch to make. They’ve chosen comparatively low-risk compensation for years, why are they going to change now? Market Discovery If there’s one thing I’m certain of, it’s that you won’t end up selling to the companies you thought you would at the start. As you learn more about your product and people’s needs, you’ll inevitably adjust who you’re targeting. This is a problem because most senior sales people have a lot of experience in a particular industry, but those skills aren’t portable. They may know the customer needs and have warm relationships with key players in one market, but when your startup changes focus they’ve lost all of those advantages that they’ve spent years building. Even changing the sales model within a single industry will have a big impact on their effectiveness. Someone who has spent years doing high-touch, long sales cycle engagements is going to be starting from scratch if you move to self-serve subscriptions. So, What Has Worked? If hiring established sales leaders didn’t work for us, what has? The first thing I had to learn was that a lot of the work I was thinking of as sales was actually business development. Closing deals is a job for sales, but there will be a lot of other steps before that, like figuring out which role in an organization to reach out to, developing materials, finding conferences where decision makers attend) that are much more about BD. Think about hiring someone with those skills first, before you get a sales person. What worked for us was finding somebody super-keen who has a business background, but was early in their career, and willing to take on the time-consuming BD work with a song in their heart. The feedback has been that it’s great experience for them, and a lot more interesting than most MBA jobs at that level. You should also prepare to spend a lot of time on sales yourself. The first few sales are going to be founder-led, and there’s a lot to learn to be successful, so take it as a serious time commitment. Customers prefer talking to founders over salespeople. Founders know the product better than anyone, can answer technical questions, and bring the passion. If you can get to the point where there’s a license to be closed, you have a much better chance of making it happen than anyone else in the company. Happily you don’t have to go it alone. Good advisors can be incredibly helpful in figuring out domain-specific and process-related questions, as well as being able to introduce you to the people you should be talking to. Find someone who’s got a lot of experience and contacts in the industry and get them excited about what you’re doing, they can be a massive help. A lot of good later-career people are bored because their job is no longer as challenging, so they can be surprisingly open to taking an advisory role for equity. Think about people like lawyers in your field too, they are often very well connected and will know a lot about the actual sales process. There’s so much inertia at most companies, cultivating champions within your target companies is the only effective way I’ve found to make things happen. You need someone who’s willing to be a pest on your behalf to avoid getting stuck in an endless sales purgatory. To get that level of engagement you have to make sure they feel included in your decision making and invested in the success of your startup. One way is to set up an advisory board that includes any promising champions, that way they get bragging rights if you succeed, they can network with other key industry people, and you can give them an advisory stake too, as long as that works ethically. I’d imagine that having another founder with good sales experience would have save me learning a lot of these lessons the hard way, but if you’re starting with a technical team, resist the urge to bring in somebody to “handle sales”. It’s so critical to the existence of your startup, it’s not something you can hire your way out of. As CEO, getting those early sales across the line has taken up the majority of my time, even more than product direction and hiring, and I wish I’d embraced that earlier. There are a lot of ways to get help from other people, but at the end of the day only a founder can close those crucial deals.
This week on the People and Blogs series we have an interview with Stephanie Stimac, whose blog can be found at blog.stephaniestimac.com . Tired of RSS? Read this in your browser or sign up for the newsletter . The People and Blogs series is supported by Lou Plummer 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. I’m Stephanie Stimac, a product manager and designer from Seattle, WA but I currently live in a small town in England. My background is in visual and web design, and I graduated at a weird time in terms of web tech. A good portion of my final year of university was spent learning about how to build websites in Flash and when I graduated, Flash quickly became obsolete, but I had a bit of HTML and CSS knowledge which helped me advance through my career. I was doing purely design work for the first part of my career before I joined the Microsoft Edge Web Platform team, where I started doing a handful of other things that were product management and developer relations adjacent. I’ve spec’d out features, analyzed data and user flows, created content for social media, performed user research to identify developer paint points, given conference talks, the list goes on. I left Microsoft for a startup that moved me to Berlin but that was unfortunately short lived due to the company folding rather quickly after hiring 100+ people. Now I live in England with my husband and work for Igalia, a technology consultancy, and I’m back in the Web Platform space. It’s sort of like my role at Microsoft but less product and more project focused. In between all this, I wrote a book that was published in 2023 called Design for Developers. It’s an evergreen guide to the basics of visual and UX design for web developers. I’m a collector of hobbies but my focus lately has been reading, baking, photography, printmaking and creating content. I’m a mountain biker and love to hike as well as paddle board. I’ve also gotten into birding in the last year or so. There are so many different kinds, it’s incredible. Depends on which blog you’re talking about! I’ve been blogging since about 2003 when I had a LiveJournal in high school. That evolved into a blogging and sharing about college life on Wordpress around 2008/2009 and went through a few iterations before I landed on the name The Hermes Homestead. I no longer blog there but am in the process of starting that sort of lifestyle blogging again and am building a new site with Astro and Netlify. As for my more technical and design focused blog, I started that in 2019 about 3 years into my career at Microsoft. I wanted a space to talk about CSS, design and web browser things. This is my most visited blog, and it is attached to my personal website and portfolio though I called it “The Web Witch’s Blog” for a long time – now there’s just a cauldron with a code mark. It’s been through a few redesigns. It was very basic in terms of styling for the longest time. I’ve slowly made incremental improvements to things over the years, but this year I did a larger redesign to try and capture a bit of my witchy vibe and wanted to include more visuals, some subtle animations and view transitions. There are a few different types of ways I post. I was doing monthly updates just covering things I had learned, big life events, what media I consumed in a month, books I read. I haven’t done this in a few months as I’m currently pregnant and was feeling burned out on everything. I’m sure I’ll pick those up again soon. I’ll also post about major career or life events. Other posts are inspired by things I’ve experienced, for example I’m in the process of writing about the worst onboarding experience I have ever had with a credit card and the brand’s website and app. Nothing quite inspires me like a poor user experience, and I hope in sharing those experiences other people will be inspired to make sure whatever user experience they’re designing isn’t terrible. I’m also not afraid to share my terrible experiences working in tech, whether that’s about encountering conference line ups that are all men or finding out my book was scraped by Meta’s AI. I also write about new CSS features that web developers can use but I have to want to write about these, so they usually need to have some sort of design focus or benefit. Those are sort of the three main categories I center posts around at the moment, but generally if it fits into general life and career, I’ll write about it. When it comes to writing the actual post, I usually just write straight in VS Code in a markdown file. I try to proofread in VS Code but I need a new spelling and grammar extension as I end up missing a few mistakes that I’ll correct as soon as I see them. Recently, I’ve started copying text over to Microsoft Word just for a quick visual to catch any misspellings. Then I hit publish. I rarely have someone else look over a post unless I am writing about something I’m little unsure about or if I’m talking about the company I work for. I don’t want to misrepresent them. Overall, my process is kind of like writing for a diary. I don’t really overthink what I’m writing about and just post it. That being said, I often come up with many ideas for things to write about, but it really depends on the type of mental space I’m in whether those get finished or not. I have a pile of started but unfinished drafts. For writing, I usually have to be at home or in a quiet space with some music. Sometimes I can write when I’m out at the coffee shop, but it is very dependent on the coffee shop and how busy it is. Physical spaces 100% influence my creativity and just overall mood and wellbeing. I like to be in a space that inspires me, surrounded by things that inspire me. I have a hard time focusing if there’s a mess or I’m in a space that doesn’t speak to me. I like to be surrounded by an environment that has a vibe or a point of view. I work from home so most of my work happens there. My husband and I have been in the process of slowly upgrading our home to be a space we enjoy being in. It’s been a slow process over the last two years, and we’re still making changes but it’s getting there and there are spots in our home I’m starting to love. But it’s also important to change up the scenery occasionally, so we’ll go out and work from coffee shops some mornings, otherwise I get stir crazy. I also use a combination of digital and analog tools to keep track of things. I have a bullet journal I fill out every week with my calendar and personal to-do list, and I have what I consider a digital bullet journal for all my work stuff in Notion that’s formatted nicely. I do have a digital bullet journal for personal stuff I’m also starting to use again, which is helpful when I have a lot of long-term plans in the works. For the technical blog, it’s hosted on Netlify and I’m using 11ty. The domain used to be registered with GoDaddy but I’ve been migrating all my domains over to Namecheap because I find some of GoDaddy’s practices predatory or less than user friendly. The old lifestyle blog is on Wordpress and is still hosted on GoDaddy, and I’m probably going to end up paying someone to migrate it all to Namecheap for me because my migration attempts have been headache inducing. I want to keep the blog up even if it’s not active, but I’m tired of paying an exorbitant amount just for an SSL certificate compared to other providers. I think it’s criminal GoDaddy charges you the amount they do for SSL when you get an SSL certificate for free. The new lifestyle blog will be hosted on Netlify (like most of my websites), with a Namecheap domain, and I’m building it with Astro. For the technical blog, no I wouldn’t change anything. It’s tied to my name and career. I’m happy with Netlify and 11ty. For the lifestyle blog, I wouldn’t use Wordpress again. It has its benefits but for the functionality I want and need, I think it’s overkill for what I personally am trying to achieve. I like having more control over the layout and design and I’m happy to be building the new one with Astro. As for the name, I only wish I had chosen something that was a bit more open instead of something that was so aligned to a specific period of my life (The Hermes Homestead). It doesn’t fit where I’m at anymore, but I feel like the new name is more open and maybe starting with a fresh slate isn’t so bad. If I combine everything, I think it’s about $350 a year for all my blogs including URLs and hosting but I expect that to be reduced significantly once I move everything away from GoDaddy. (For reference, I just got an email from them telling me that my SSL for one of the URLs I’m letting expire won’t renew and they want £90 a year just for the SSL certificate.) On the technical blog, I do generate a little bit of revenue but not a lot. I sometimes include affiliate links, and I do run ads on the homepage, but it is one spot in the sidebar. I don’t want an intrusive experience with ads because there’s nothing I hate more than landing on a page that is so covered in ads you can’t navigate through the page (looking at all you food blogs.) I was recently on a food blogger’s page and went to the print recipe page to try and read the instructions more easily and they had even put ads on the print page. I don’t want to replicate that experience, so I try to keep things as minimal as possible. I really don’t mind if people are trying to monetise their content unless it’s so overwhelming full of ads that I can’t view the content. At the end of the day, I don’t know what a person’s situation is, and we live in a rather precarious and unstable time for many people when it comes to employment. Monetising could help someone reach a goal more quickly or give them a little more freedom or room to breathe in their budget. I’ve been given product in exchange for writing a review and I don’t mind that kind of partnership. I think affiliate links are a great way to monetise without being intrusive. I use Carbon Ads for my technical blog and don’t mind their style because it’s very minimal. In terms of supporting other bloggers, I’ll click an affiliate link or engage with their content but I’m not currently paying anyone via Patreon or a subscription, though I have in the past. I love Henry Desroches’ content over on henry.codes and stillness.digital . Olu Niyi-Awosusi also has a lovely blog over at olu.online and I love reading their work. Maggie Appleton’s Garden is also full of incredible writing. If you’re a developer trying to level up your skills outside of code, my book Design for Developers, is available on Amazon and Manning . My colleagues host an interesting podcast that covers a range of technology topics called Igalia Chats . On the more casual side of things, I’ve been vlogging and trying to improve my video editing abilities over on YouTube . Typically sharing my life in England and more style focused content over there. And a final shoutout to my husband, who is constantly building absolutely wild things with CSS. He’s working on getting his blog up but for now he’s got a few links on his website . 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 118 interviews . Make sure to also say thank you to Manton Reece and the other 127 supporters for making this series possible.
A while ago, I wrote about intentional times of boredom for easier task switching, because I noticed there was an inner resistance when I had let go of a task in favor of another. In response, I gave myself the space and time to just sit there doing nothing. That meant a proper pause between activities, and it also bored my brain into complying, because at some point, even doing the dishes or doing the hard part in your studies is better than just sitting around. I've slowly, without realizing, dropped this habit and piled a lot on my plate in general. Even just my past four months were very full with exams, visiting family and friends, attending a conference, some seminars and conventions, the new semester at university starting, doctor's appointments, my own birthday (I am now 30!), and more. I just continued pushing through, because my motto for this year was basically to have two years in one, as last year I was constantly sick and mostly lying around. I felt like I had to catch up, and initially, I had the energy to do so. In my mind, this would only be temporary and I'd get to rest a bit "soon", but "soon" was put off again and again. An overview of what I managed in 2025: I noticed that I constantly felt overwhelmed and slightly panicked, like I wanted to cry, but nothing would happen. I craved a sensory deprivation tank, or for everything to just stop. Even easy things were really hard and it seemed as if I am just not recovering from anything mentally. The problem is that when you are low-energy and constantly in fight-or-flight, you lose the ability to prioritize correctly, as everything feels equally important and urgent. As such, there is lots of decision fatigue, and more often than not, you'll start one task while thinking you should do the other and repeat; or you lie down due to feeling dizzy and tired from the internal pressure, and end up doing nothing significant at all. It prevents you from dedicating your all to one task for even 1-2 hours, as you keep questioning your choice and feel guilty no matter what. I was constantly mentally bouncing between some aspects of my fulltime job, more studying, more case translation for noyb, more blogging, finally filling up my notes vault so it isn't still so empty, job search and applications, fitness, drawing and other creative pursuits, responding to emails, reading books, managing parts of the household, and more. I also suddenly felt terribly behind in general, feeling pressured to finish my degree as soon as possible and find some other certificates to do as well for my career. My chronic illness is also really good in instilling a sense of urgency in me... like I might run out of time. I made the mistake of not having a weekly plan, not even a loose "Friday's the main study day!" or something, just going with the flow always. You'd think that this would permit a very flexible and relaxed attitude to all the things I wanna do that takes my fluctuating energy levels and health into account, but now I know that it just leads to me completely underestimating how much I do in a week while thinking nothing gets done. Not having scheduled things for specific days meant that at every free moment, I had about 10 things in my mind that I should be doing, while being unable to choose. I couldn't go "No worries, that's safely scheduled for the other day", no reminder in the schedule that I had already spent x hours on a thing already that week. I also made the mistake of thinking I could keep up my study load from summer in the winter. That led to me enrolling in four classes for 30 ECTS total for this semester (exams in March 2026), but I realize I have to focus on doing two of them well, and making the other two optional. I am already at the end of a very exhausting year and there are lots of phases in winter when I just won't study as much (sick, birthday, holidays...), so I need to be realistic. Yesterday, I made an effort to truly rank and prioritize everything I want to do with external help, and create a proper weekly plan that includes a lot of dedicated rest as well. Something I don't want to repeat with that is thinking that indulging in media or doing easy work is proper rest. I just cannot get by long-term with using supposed downtime to do things I consider a bit easier, but that still are productive, a chore, or need my attention. I need to do nothing, because otherwise, my brain never gets proper downtime and it affects the quality of sleep, or the ability to fall asleep. For me, not giving my brain that time of just silence expresses itself in two ways: Either there will be constant thoughts while trying to fall asleep that keep me awake (because when else does it have the space to surface those?), or my brain is so used to constantly receiving and processing things that lying down to sleep is too boring, which also keeps me awake. Then I can put on a video or soundscapes, which ironically also feels bothersome as I feel overstimulated from everything I have to do all the time and actually need some silence. It has led me to staying up very late until I am so tired that I can't help but fall asleep pretty quickly, but that's no way to solve the problem. So hopefully now, with the new prioritization, the weekly plan, the acknowledgement of the problem, dropping some pressure and seeing how much I have already managed this year, I can go back to guilt-free breaks, intentional boredom, and focused work without burning out. Related song: ADÉLA - Death By Devotion Reply via email Published 03 Dec, 2025 I got married! That had to be planned and managed as well. Got around quite a bit: Traveled to France with friends for a few days; went to conventions like the HeroesXP, the Veggienale and more; went to my first data protection law conference in Munich; visited Fürth, Nuremberg, Erlangen, Tübingen, Gießen, Offenbach, Zirndorf, Koblenz and Oberhausen. Started visiting a game store ('LGS') to play Magic the Gathering in person occasionally. New personal best at the gym: 30 minutes of consecutive jogging. Finished at least 7 books this year; might be more, but I am unsure when I finished some exactly. Started volunteering for noyb.eu as a Country Reporter for their GDPRhub project in June, and have summarized and translated 6 cases so far. Finished the data protection law certificate ('Diploma of Advanced Studies') in just 6 months instead of the intended 1.5 years. 10 exams: 7x Data Protection Law (one in my Bachelor of Laws, six for the cert), 1x Antidiscrimination Law, 1x Conflict Management, 1x Rhetoric; this adds up to 20 ECTS in March 2025, and 45 ECTS over the summer until October 2025, meaning I managed to tackle 65 ECTS this year while also working full time. Writing 256 posts on this blog for ~60k people and 35 posts on my matcha blog for ~1k people in the last 12 months, if the unique visitor analytics are to be trusted. Most popular this year was probably the Blog Question Challenge ! Next to my usual job role, also helped with an environmental certification (EMAS) at my workplace; the audit is soon, and it's been a lot of work together with our environmental management and vice president. Was on People & Blogs and was also asked some questions for New Public . Number of received emails from the indie web this year until now is a little over 900 total , and I still have some left to answer from the past couple days. Made a zine . Reworked my blog a bit! Created a public knowledge base , first via Quartz and Obsidian, now on Bearblog. About 270 crosswords with my wife (we do the daily one on Merriam-Webster). Over a 140 hours of Hello Kitty Island Adventure :P
I can empathize with using AI sometimes; like when a search engine shows no fitting results, or when searching for a loose synonym or jargon with a vague description. Another use case would be generating silly, annoying filler text no one wants to write (like motivational letters) or when you’re not understanding a code problem or parts of the documentation. But also, I notice I am most inclined to use it when my mind circles around uncomfortable decisions that aren’t easy on me, that don’t have a definitive, all positive, straightforward answer and are a confusing act of weighing the pros and cons. The outcome of it seems to switch every day depending on my mood. It’s been a confusing process getting myself to go look for jobs, growing comfortable with leaving what I know and facing the idea of moving. It’s a lot to consider career-wise and privately. My current employer cannot give me this and that, but it feels safe; on the other hand, I’ll also stagnate and not gain the experience I need, and I won’t live closer to friends and family. Nonetheless, employers elsewhere are a mystery and you’ll never know what you’ll get, not to mention they will likely not give me the exact niche I want. It’s easy to feel like I’ll make a mistake no matter what I choose, and a fearful part of me would rather freeze and make a mistake by not acting, than move and actively make a mistake. It’s no way to move through life, and something I will get over, but it’s understandable. To add salt to the wound, moving is hard. Merging two households into one is harder. I dread having to apply, to perform, to beg for an apartment, and find an affordable one that is big enough for two, on only one income. It’s stuff like this that has urged me thrice in a span of two months to enter my different concerns, predictions, possible paths and dilemmas into the text box and expect some guidance and reassurance, some easy way out I hadn’t thought of before. The result: I often get some reassurance through its sycophancy, a chance to sort my thoughts a bit, and a level of feedback I can’t get from people because either they don’t (have to) think about career the way I do and don’t know what to do either (irl), or I don’t wanna completely doxx myself in front of them with all the fine details of my work and plans (online). For the little reassurance and guidance the AI gives that make the path forward seem more clear, it is simply a bandaid also, a way to further procrastinate. Instead of taking the actions I know I have to take, something in me thinks to roll the slot machine once more to advise me in hopes of finding something better that is not as hard, the option to have my cake and eat it too. It’s equivalent to spending all your time buying supplies and doing research for a project or hobby than actually committing to it. The option to consult the bot has quickly trained me to think that if I just reword it one more time, add this and that detail, or add another question, that it will suddenly spit out an ideal path forward for me to follow in which I will have to make no concessions, despite knowing that that’s impossible. Life is simply full of hard decisions and concessions, and difficult times make us grow. Even after just indulging in it so little, I understand now how people worldwide get hooked on this virtual pacifier for their fears. The obsession of that thing to create lists and 5-year plans over anything makes it all look more bearable, even if half the suggestions don’t exist or don’t make sense. It’s tempting to hope that with all the data behind it, the machine will conceive of something you couldn’t have, will find and present something you didn’t know of that changes everything. It’s genuinely just a coping mechanism, a crutch. It’s not even productive to do this. I hope you can catch these behaviors in yourself and act accordingly. Don’t postpone what you know you have to do and don’t outsource the decision to a bot. Reply via email Published 01 Dec, 2025
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. ↩
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.
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.
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
'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
Unlike a lot of places in tech, my company, Set Studio / Piccalilli has no outside funding. Bootstrapped is what the LinkedIn people say, I think. It’s been a hard year this year. A very hard year. I think a naive person would blame it all on the seemingly industry-wide attitude of “AI can just do this for us”. While that certainly hasn’t helped — as I see it — it’s been a hard year because of a combination of limping economies, tariffs, even more political instability and a severe cost of living crisis. It’s been a very similar year to 2020, in my opinion. Why am I writing this? All of the above has had a really negative effect on us this year. Landing projects for Set Studio has been extremely difficult, especially as we won’t work on product marketing for AI stuff, from a moral standpoint, but the vast majority of enquiries have been for exactly that. Our reputation is everything, so being associated with that technology as it increasingly shows us what it really is, would be a terrible move for the long term. I wouldn’t personally be able to sleep knowing I’ve contributed to all of that, too. What we do really well is produce websites and design systems that actually work for and with people. We also share our knowledge and experience via tonnes of free content on Piccalilli , funded by premium courses to keep the lights on. We don’t pepper our content with annoying adverts for companies you have no interest in. I’ve spoken about my dream for us to run Piccalilli full time and heck, that may still happen. For that to happen though, we really needed this Black Friday period to do as well, if not better, as it did last year. So far, that’s not happening unfortunately, but there’s still time. I get it, money is so tight this year and companies are seemingly not investing in staff with training budgets quite like they did. We actually tried to stem that a bit by trialing a community funding model earlier in the year that I outlined in I’m getting fed up of making the rich, richer and we even started publishing some stuff . It went down incredibly well, but when push came to shove, we fell way short in terms of funding support. Like I say, we’re not swimming in investor money, so without the support on Open Collective , as much as it hurt, we had to pull the plug. It’s a real shame — that would have been incredible — but again, I get it , money is tight . This isn’t a woe is me post; that’s not how I roll. This is a post to give some context for what I’m going to ask next and how I’m trying to navigate the tough times. I’m asking folks to help us so we can try to help everyone, whether that’s with web projects that actually work for people or continuing to produce extremely high quality education material. Here’s some ways you can do it. You’ll see messaging like “this is the most important time of year for us” and it’s extremely true. To break the fourth wall slightly, people buying courses at full price is a lot rarer than you might think. So often, discount events are what keeps the lights on. We’ve launched two courses this year — JavaScript for Everyone and Mindful Design — that sit alongside my course, Complete CSS , which we launched last year. I know you’ve probably been burned by shit courses in the past, but these three courses are far from that. I promise. I can’t stress enough how much Mat (JavaScript for Everyone) and Scott (Mindful Design) have put in to these courses this year. These two are elite level individuals with incredible reputations and they’ve shared a seemingly impossible amount of extremely high quality knowledge in their courses. I would definitely recommend giving them your time and support because they really will transform you for the better. For bosses reading this, all three courses will pay themselves back ten-fold — especially when you take advantage of bulk discounts — trust me. So many of you have purchased courses already and I’m forever thankful for that. I can’t stand the term “social proof” but it works. People might be on the fence about grabbing a course, and seeing one of their peers talk about how good it was can be the difference. You might think it’s not worth posting about the courses on social media but people do see it , especially on platforms like Bluesky with their custom feeds. We see it too! Testimonials are always welcome because we can pop those on the course marketing pages, just like on mine . In terms of sharing the studio, if you think we’re cool, post about it! It’s all about eyes and nice words. We’ll do the rest. We’re really good at what we do ! I know every studio/agency says this, but we’re different. We’re actually different. We’re not going to charge you through the nose for substandard work — only deploying a fraction of our team, like a lot of agencies do. I set this studio up to be the antithesis of the way these — and I’ll say it out loud — charlatans operate. Our whole focus is becoming your partners so you can do the — y’know — running of your business/organisation and we take the load off your shoulders. We’re hyper efficient and we fully own projects because they’re way above your normal duties. We get that. In fact, the most efficient way to get the most out of a studio like ours is to do exactly that. I know “numbers goes up” is really important and yes, numbers definitely go up when we work with you. We do that without exploiting your users and customers too. There’s no deceptive patterns coming from us. We instead put everything into branding, messaging, content architecture and making everything extremely fast and accessible. That’s what makes the numbers go up for you. We’re incredibly fairly priced too. We’re not in the business of charging ridiculous fees for our work. We’re only a small team, so our overheads are nothing compared to a lot of agencies. We carry your budgets a long way for you and genuinely give you more bang for your buck with an equitable pricing model. We’ve got availability starting from the new year because starting projects in December is never the ideal way to do things. Getting those projects planned and ready to go is a good idea in December though, so get in touch ! I’m also slowly getting back into CSS and front-end consulting. I’ve helped some of the largest organisations and the smallest organisations, such as Harley-Davidson, the NHS and Google write better code and work better together. Again, starting in the new year I’ll have availability for consulting and engineering support. It might just be a touch more palatable than hiring the whole studio for you. Again, get in touch . I’m always transparent — maybe too transparent at times — but it’s really important for me to be honest. Man, we need more honesty. It’s taken a lot of pride-swallowing to write this but I think it’s more important to be honest than to be unnecessarily proud. I know this will be read by someone else who’s finding the year hard, so if anything, I’m really glad they’ll feel seen at least. Getting good leads is harder than ever, so I’d really appreciate people sharing this with their network . You’ll never regret recommending Piccalilli courses or Set Studio . In fact, you’ll look really good at what you do when we absolutely smash it out of the park. Thanks for reading and if you’re also struggling, I’m sending as much strength your way as I can.
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.
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
A short set of anecdotes, apropos of nothing. When I was younger, I really liked programming! I loved the sense of accomplishment, I loved the problem solving, I loved sharing what I made with the people around me to both amuse and assist. One particularly wise adult (somewhere around 1996) took me aside and said, “You know, you’re lucky you enjoy programming, because you won’t be able to make a living on it in the future. Doing it for love over money is a good idea.” “Coding is over, with Object Oriented programming one person who is much smarter than any of us could hope to be will develop the library just once and we will all use it going forward, forever. Once a problem is solved it never needs solving again. “In 5 years there’s going to be a library of objects, like books on a bookshelf, and every software problem will be solved by business people just snapping the object libraries they need together like LEGOs. They won’t need you at all.” I thought about this advice, and how Software Engineering would be ending by the time I entered school. I realized I had not even thought about my education yet. I was in middle school. Programming was not it, though, I knew that. I’m here nearly 30 years later and software continues to pay my bills, despite everything. Open source exists, there are libraries I can use to piece things together to solve all the time. New problem sets not covered by the garden path come up all the time. Clicking the LEGOs together continues to be a hard task. Every time we fix it at one level of abstraction we operate one level higher and the world keeps turning. Whenever I’m threatened with a good time and someone proclaims “this is it for you” all that happens is my job becomes more annoying. Haven’t gotten the sweet release of extinction quite yet. Around 1993 or so was the advent of the “Multimedia Age.” Multimedia was the buzzword. Software has to be multimedia ready . Education had to teach children to be ready for the multimedia age . If your tool, however inappropriate as it was, did not have multimedia features, you were going to be left behind. You needed a video guide. You needed to be on CD-ROM. This is just the new normal. “Multimedia” just means “sound and video.” We had a high concept term for a very direct, low concept concept. And the multimedia boom fizzled out. It became boring. Nobody is impressed by a video on a website and nobody thinks less of a website that doesn’t use sound and video if it’s not appropriate. You pop a tag in your HTML and your job is done. The amazing thing became mundane. The dream of “multimedia” became commonplace and everyone just accepted it as normal. I’m not aware of any industries that collapsed dramatically due to multimedia. Nobody really reskilled. Video editing is still a pretty rare thing to find, and we don’t commonly have sound engineers working on the audio UX of software products. In 2000 a coworker took me aside and showed me his brand-new copy of IntelliJ IDE. “It’s over for us,” he said, “this thing makes it so programmers aren’t strictly necessary, like one person can operate this tool and they can lay the rest of us off.” I was pretty awestruck, he got some amazing autocomplete right in the IDE. Without having to have a separate JavaDocs window open to the side, and without having to manually open the page for the class he needed documentation on, it just was there inline. It gave him feedback before the compile cycle on a bunch of issues that you normally don’t see until build. That was a nice bit of preventative work and seemed to have the potential to keep a developer in flow longer. And then he showed me the killer feature “that’s going to get us all out of a job:” the refactoring tools. He then proceeded to show me the tools, easily moving around code to new files, renaming classes across the codebase, all kinds of manual things that would have taken a person a few days to do on their own. It was magical. After some thought I said, “that’s amazing, but does it write new logic too or does it just move code around?” He didn’t seem fazed by that, and doubled down on the insistence that these powerful tools were our doom. I made a distinction between “useful” code and “filler” code, but apparently what is valued is not the quality and nature of the code but its volume and presence. This tool definitely gave both volume and presence to the tiny human-written nuggets within. At my first job in High School I was working in an office in a suburban office park with programmers from many different local agencies. One guy I chatted up was a contractor: these people were highly regarded, somewhat feared specialists. The guy in question was working on a multi-year migration of some county health computer system from MUMPS to a more modern relational system. He showed me the main family of problems he was solving to show off how smart he was for solving them; they were largely rote problems of migrating table schemas and records in a pretty uniform way. But there were a lot of them, and he was working hard to meet his deadline! I thought about it, and seeking his approval and validation, set out to help him. To show what I could do. I wrote a Python script that could solve the 85% case (it was mostly string manipulation) and even put a little TkInter dialog around it so he could select the files he wanted to migrate visually. It ran great, but he looked a little afraid when I demonstrated it to him: “You didn’t show this to anyone else, did you?” “Nope.” “Oh thank God.” I take it he used my tool because he had a lot more free time to goof off for the remaining six months of his contract. I don’t think he told anyone else what he had either, but I’m guessing that he had a lot more MUMPS migration contracts lined up when he could finish them in a matter of days. At the same job, I was paid to maintain a series of government agency web sites. One of my main tasks was to keep a list of mental health providers up-to-date on an HTML page and upload it to the server. This process was pretty mechanical: take Excel sheet from inbox, open in Excel, copy Excel table to HTML table. Within a month I had a fully automated workflow: I lived in fear of being found out, and told no one that the thing I was getting paid to do was no longer being done by me. About 9 months later the department in question hired a full-time web developer for $45k/yr to bring their website in-house. I was costing them about $25/hr, probably skating under $2000/yr for my outsourced services. This was clearly not about money. And what I feared did not happen. When I no longer had that work to sustain me my managers just put me on something else. There’s always more work. In my last years of undergraduate education and my first couple of years out of college I worked on projects that did some sort of Natural Language Processing tasks. For these we required training data, and the more the better. On that, though, we had responsibilities. We had to make sure the data we had also came with some sort of license or implicit permission. You didn’t just steal a pile of PDFs or scoop up a person’s web site and put it in your training set. There were ethical constrains, and legal consequences. You acted above-board when training your AI models. There were times we’d train models on Wikipedia dumps. They were always comparatively amazing results when we trained on good, large data like that. Cogent. Interesting. Even a simple Markov chain on Wikipedia looked smart. When we wrote web crawlers, we wrote them to respect . We kept them on local domains. The field of the crawlers included our email address, and if an angry webmaster didn’t like the way we were crawling them we’d fix it. Getting crawled aggressively at once taxed servers and spammed logs so we’d space it out to hours or days. If their was missing or malformed and they still didn’t want us there, we’d block the site from crawling. We made sure we had explicit permission to collect data for our training corpora. The dot com boom was a crazy time. The internet has just become mainstream and there was a new gold rush. Money was there just for the taking, so many VC funded business plans were just “ traditional business X, but on the internet! ” and the money flowed . How it flowed. Most of these companies, however, didn’t really have a solid business model other than buying some servers and a domain name and “we’ll put this thing on the internet.” Out of this crash came green shoots: Web 2.0, which used the web natively, organically, gave a good web-native experience. Eventually the dream of the internet, the promise of the hype, was made manifest after a lot of people learned a lot of really unnecessary, really painful lessons. They spent less and put their things on the internet because they made sense on the internet of the present, not because the internet was the next big thing. The dream of the widespread, ubiquitous internet came true, and there were very few fatalities. Some businesses died, but it was more glacial than volcanic in time scale. When ubiquitous online services became commonplace it just felt mundane. It didn’t feel forced. It was the opposite of the dot com boom just five years later: the internet is here and we’re here to build a solid business within it in contrast with we should put this solid business on the internet somehow, because it’s coming . This is indeed a set of passive-aggressive jabs on the continuing assault on our senses by the LLM hype lobby. I used Windows Automation to watch my Outlook inbox When an email came in from the person who sent me the Excels it would download it Open the Excel file in excel using Windows Automation Export it to CSV from Excel (the automation did this, I simply watched a ghost remote control an Excel window that opened and closed itself) Run a Python script that would inject that CSV data as an HTML table into the file Run another Python script that would connect to the FTP server and upload the file. It would randomly pause and issue typos so it looked like the FTP session was being operated by a human at a keyboard so nobody thought anything on my plot.
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 .
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. ↩
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.
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.
Musings and ramblings on programming and things
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: