{"version":"https:\/\/jsonfeed.org\/version\/1","title":"JSON Feed for Anselm Hannemann\u2019s Writings","description":"Feed for Anselm Hannemann\u2019s blog articles, notes and other shared writings.","home_page_url":"https:\/\/helloanselm.com","feed_url":"https:\/\/helloanselm.com\/feed\/","items":[{"id":"https:\/\/helloanselm.com\/writings\/tools-won-t-solve-it-for-you","url":"https:\/\/helloanselm.com\/writings\/tools-won-t-solve-it-for-you","title":"Tools won\u2019t solve it entirely for you","content_html":"","date_published":"2025-12-01T00:00:00+01:00","date_modified":"2025-12-01T10:42:26+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/inside-being-a-freelancer-in-web-development","url":"https:\/\/helloanselm.com\/writings\/inside-being-a-freelancer-in-web-development","title":"Inside being a freelancer in web development","content_html":"","date_published":"2025-11-27T00:00:00+01:00","date_modified":"2025-11-27T11:13:22+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/on-seniority-and-understanding-the-web-vs-knowing-how-to-use-frameworks","url":"https:\/\/helloanselm.com\/writings\/on-seniority-and-understanding-the-web-vs-knowing-how-to-use-frameworks","title":"On seniority and understanding the Web vs. knowing how to use Frameworks","content_html":"<p>Today I read <a href=\"https:\/\/www.linkedin.com\/posts\/neciudan_security-webdev-javascript-activity-7399348705511796737-ptD_\" rel=\"noreferrer\" target=\"_blank\">a LinkedIn post by Dan Neciu about XSS still being a real-world problem<\/a>. That\u2019s one perfect case to show why you either need to:<\/p>\n<ul>\n<li>check what AI generates for you and <strong>know how to review code properly yourself<\/strong> (you\u2019re at least senior-level then)<\/li>\n<li>have <strong>real senior developers in your company<\/strong> who actually know about such problems and detect or directly avoid them<\/li>\n<li>have <strong>automated checks for such things but don\u2019t rely on them<\/strong> (they\u2019re your backup, not your only check)<\/li>\n<li>have <strong>external audits<\/strong> of your code<\/li>\n<li>hire <strong>freelancers who know about such things and can help your junior or senior developers out<\/strong> so they know in future<\/li>\n<\/ul>\n<h3>What devs need to know today<\/h3>\n<p>The underlying problem here always was and still is the same. With more tools and the growing complexity of the web platform and its technologies, it becomes harder to discern what\u2019s truly important.<strong> It\u2019s crucial today for front-end developers to know how to use and build web apps with:<\/strong><\/p>\n<ul>\n<li>React and TypeScript, better also next.js (or Vue with Nuxt, Svelte(Kit))<\/li>\n<li>Docker, Kubernetes (k8n) and containerised deployment setups<\/li>\n<li>build workflows (Vite or similar)<\/li>\n<li>CI and CD workflows<\/li>\n<\/ul>\n<h3>But wait, we\u2019re missing something here<\/h3>\n<p>Now, tell me this is not already quite a lot to learn and keep in mind. The problem is that we\u2019re still missing the base here for web apps, which today is also known as \u00bbVanilla Web\u00ab:<\/p>\n<ul>\n<li>HTML (with all its semantics and accessibility as well as performance tricks)<\/li>\n<li>Network\/Performance knowledge of browser engines<\/li>\n<li>CSS (with all its cascading stuff, different media approaches and graceful degradation techniques)<\/li>\n<li>native JavaScript and it\u2019s concepts (how it\u2019s failing or (not) handling types)<\/li>\n<\/ul>\n<p>The job market wants developers to build modern web apps in a short amount of time. If you ask AI to build a web app, you\u2019ll get a next.js web app with wild, copy-pasted spaghetti code. It\u2018s tempting to just use this, but sooner or later, you run into problems like a vulnerability, or you don\u2019t even understand how to extend the code for a new feature anymore.<\/p>\n<h3>Career titles for fun<\/h3>\n<p>In the past years, career titles have changed a lot. While ten years ago there were junior and senior levels, now you also have principal or lead developers. Nowadays, there are a lot of senior developers out there. Who still hires a junior or even offers people an apprenticeship? Sadly, way too less companies. Instead, you hire Senior developers in the hope that they can work on their own and build great products. <\/p>\n<p>What I see is that the title \u00bbSenior\u00ab just means that people already have a couple of years of experience in building for the web. It does not say much about how good they are in terms of architectural thinking, incorporating common standards, acknowledging how a web browser works. It does not mean they know what accessibility or web performance means or how the CSS cascade works. While there are many devs out there with that level knowing about this, I even saw principal engineers missing such fundamentals.<\/p>\n<h3>Level up with Vanilla Web fundamentals<\/h3>\n<p><strong>If you want to give your career a boost, level up by learning the <a href=\"https:\/\/firt.dev\/vanilla-web\/\" rel=\"noreferrer\" target=\"_blank\">Vanilla Web<\/a><\/strong>.<\/p>\n<p><strong>If you want to ensure your company\u2019s web apps are good<\/strong>, let someone external have a look at it regularly. <strong>You\u2019re not only doing yourself as a company a favour<\/strong> because it can avoid security, privacy, accessibility or performance issues before they get public but also your teams and employees who can learn from such audits and improve.<\/p>","date_published":"2025-11-26T00:00:00+01:00","date_modified":"2025-11-26T11:36:06+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/do-companies-still-know-about-freelancers","url":"https:\/\/helloanselm.com\/writings\/do-companies-still-know-about-freelancers","title":"The Secret Value of Freelancers for Companies","content_html":"<p>Freelancers are often no great marketing people. In a call with my friend <a href=\"https:\/\/www.linkedin.com\/in\/tobiastom\/\">Tobias<\/a>, we realized we've been part of the problem. We found out one of the reasons why freelancers are challenged more and more to get jobs over the past years: <strong>We failed to share the value of Freelancers<\/strong> to our customers.<\/p>\n<h3>The employee vs. the freelancer<\/h3>\n<p>There\u2019s a fundamental difference between most employees in a company and a freelancer working with many clients over time, always living with the uncertainty of losing a project suddenly.  <\/p>\n<p><strong>Freelancers<\/strong> have to think about building a successful enterprise that pays your living and ensures a calm and continuous workload. They have to organise themselves, find solutions for edge-cases and live from solving problems that others can\u2019t solve. They are often in projects to challenge the status quo.<\/p>\n<p><strong>Employees<\/strong> care about the goals they get from their managers and strive to do their work best in the agreed amount of time. They have to ensure to not work over-time, to be nice to colleagues and to their managers. Their main goals are to create a safe work environment for everyone, keep institutional knowledge in the company and provide useful work that\u2019s requested by e.g. managers.<br \/>\nSometimes freelancers see this as conservative mindset but it\u2019s not: It\u2019s certainly a good idea to be in a calm mode and ensure that you work together nicely with all your colleagues so the team and jobs stay consistent.<\/p>\n<h3>Freelancers are hidden in the forest<\/h3>\n<p>For the past years most freelancers failed to share success and customer value stories. Instead of sharing about the benefits, the value of our work, they (me, too) shared technical blog posts or ranted over technical problems. How should companies and people working on projects know why hiring a freelancer might be the success story for them?<\/p>\n<p>I myself realized this a couple of times when influential people from big corporations (or small companies) were surprised that they could hire me. And while we talked about it, <strong>I realized that decision makers in companies simply never thought about hiring externals and don\u2019t exactly know how to do and what for.<\/strong><\/p>\n<blockquote>\n<p>For a big German corporation I helped them architect an entire website ecosystem for their global infrastructure. As they did hire an agency before and the project failed, they realized that they don\u2019t own enough knowledge and therefore hired initially five freelancers (later more). We built teams with internals and together made decisions and could create a well working architecture while coaching employees to keep the knowledge in the company. The project was acknowledged as highly successful and leading example by the corporation and outside by media and other companies.<\/p>\n<\/blockquote>\n<h3>What can freelancers do for companies?<\/h3>\n<p>I usually am hired to help building new projects or help with existing projects or teams. For myself, I can help with the following things:<\/p>\n<ol>\n<li><strong>Frontend coding and coaching<\/strong><br \/>\nI can build frontend systems, scale them, refactor with my experience in mind. That means dozens of different projects over time. I have experienced a lot of different styles, solutions and problems in a variety of companies. That is the knowledge I can apply when coming into a company. Internal employees simply don\u2019t have that experience and are happy to hear my thoughts and expertise. I also specialise in accessibility and browser standards and can help not so experienced engineers learning new things.<\/li>\n<\/ol>\n<ul>\n<li>\n<p><strong>Analytical reviews and problem solving<\/strong><br \/>\nThis is mostly a combination of the former two topics. As freelancer in a company, I try to find out how to best help the team and company:  <\/p>\n<ul>\n<li>If I find out it\u2019s the process\/workflow, I suggest to care about that.<\/li>\n<li>If I find out it\u2019s about the frontend codebase and quality standards, I try to focus on mentoring people while fixing and refactoring the actual code. <\/li>\n<li>If it\u2019s the communication between different layers in a company, I become the person to speak and translate between them.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Agile management and coaching<\/strong><br \/>\nMost of the companies I join, I realise that they struggle with project management and clear focus on building value and how to define good goals. It\u2019s not that they don\u2019t try but as someone with an external view, independent of managers, I can often help finding out the real issue behind processes and then, together with the managers and the entire team, redefine processes, workflows to be effective: Calm work, solid processes that don\u2019t waste time and high quality results.<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>I was hired by a startup that had built their MVP but struggled with huge performance issues. They realized that I\u2019m able to help them and within the first four weeks we shipped a 200% performance improvement to production. I had to do all the coding on my own and it was coming with quite a few challenges as it was a widget integrating into other websites. However, the startup could quickly see less customer complaints about performance. We continued working together and I helped them find frontend talent, build teams and scale their frontend application over the next years. I accompanied the startup for four years, sometimes full-time, sometimes only a few hours a month, depending on their needs.<\/p>\n<\/blockquote>\n<h3>The costs aspect<\/h3>\n<p>A freelancer is not necessarily cheap to hire. But compared to the full real costs of an internal employee it\u2019s usually not more expensive. <\/p>\n<p><strong>However, a freelancer is hired for gaps in the company.<\/strong> This means they start immediately while companies still search 3 months for an internal position. A freelancer stays until the project ends or the end of the agreement is reached. Often you hire freelancers for e.g. 6 months \u2014\u00a0so you get a lot of value but only pay half a year.<\/p>\n<h3>Beyond the costs, here\u2019s your main Return of Investment (ROI)<\/h3>\n<p>If you hire an experienced person, it enables your employees to be so much more effective that the costs are negligible compared to the benefits you get as company. A good freelancer takes care to do a good job \u2014 it\u2019s his reputation and most freelancers do their job with passion.<\/p>\n<p>Most freelancers stay for a while until things get stable. Then they switch to another opportunity where they can again add their value. I\u2019ve had it a couple of times that I\u2019ve been at the same company again and again for different projects. In between, I worked on a different project and could gain more experience.<\/p>\n<blockquote>\n<p>I was asked to help a company stabilizing their frontend codebases by introducing a component library. While I spent some time solving this, we realized they have a more urgent challenge where I could help them. A customer asked for accessibility compliance and they struggled to get up to speed here. I helped them audit the relevant application, suggested a roadmap and detailed plan how to solve this and within just three months of time, we managed to fix over 95% of the problems. The team and employees learned a lot and appreciated that I was able to not only help them fix a problem but also coach them so they can now continue working on <\/p>\n<\/blockquote>\n<p><strong>Do you have thoughts on hiring freelancers? Let me know! Do you think I can help your team or company? <a href=\"mailto:&#105;&#110;&#x66;&#111;&#64;&#x68;&#x65;&#108;&#x6c;&#111;&#x61;&#110;&#x73;&#101;&#x6c;&#109;&#46;&#99;&#111;&#x6d;\">Send me an email!<\/a><\/strong><\/p>","date_published":"2025-11-17T00:00:00+01:00","date_modified":"2025-11-17T11:17:03+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/4-reasons-to-stop-using-css-preprocessors","url":"https:\/\/helloanselm.com\/writings\/4-reasons-to-stop-using-css-preprocessors","title":"4 Reasons to stop using CSS Preprocessors","content_html":"<p>Within CSS you now can do so many things that were the subject for using a pre- and postprocessor like Sass, Less or PostCSS. The latter is still useful in many cases today but the former are less and less important for these reasons:<\/p>\n<ol>\n<li>People use some sort of CSS-in-JavaScript anyways and what they write (not produce!) is not CSS anymore \ud83d\ude0f<\/li>\n<li>Nesting is natively available in CSS \u2705<\/li>\n<li>BEM and similar naming approaches are getting outdated because of new CSS features such as Layers and native Nesting. \ud83d\ude0a<\/li>\n<li>Browsers have evolved so much that we have a great baseline and can use most of the things across most browsers. And if not, usually we can fallback gracefully within CSS. \u2764\ufe0f<\/li>\n<\/ol>\n<p><strong>I\u2019ve been using only PostCSS for years and it\u2019s more than enough. Usually to optimise file size or to produce fallbacks automatically for older browsers.<\/strong> The benefit is that I could almost always just publish the bare source files as well and the website works. And I could switch tools easily at any time.<\/p>\n<h3>Cynism points:<\/h3>\n<ol>\n<li>People using Tailwind and it does everything for them, except it\u2019s not and they struggle because they don\u2019t know how to properly use CSS. <em>(Nothing against Tailwind here, I like it, but there are too many people using it without knowing what they do)<\/em> \ud83d\ude40<\/li>\n<li>People using MUI framework <em>(also: it has its purpose!)<\/em> and don\u2019t even know the basics of CSS and are amazed by a developer who can create a three-colour-step gradient just within CSS without using an image for this in code.<\/li>\n<\/ol>","date_published":"2025-08-22T00:00:00+02:00","date_modified":"2025-11-09T14:01:18+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/have-your-experts-as-a-backup-in-the-new-ai-world","url":"https:\/\/helloanselm.com\/writings\/have-your-experts-as-a-backup-in-the-new-ai-world","title":"Have your experts as a backup in the new AI world","content_html":"<p>\u2708\ufe0f I rarely find good analogies <a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:7363210166554583043\/\" rel=\"noreferrer\" target=\"_blank\">but this one I think is spot on<\/a>:<\/p>\n<blockquote>\n<p>The Autopilot Paradox<\/p>\n<p>Most of the time, commercial planes fly themselves. Autopilot can handle take-off, cruising, and even landing.<\/p>\n<p>But would you board a plane if told there were no pilots in the cockpit? Probably not.<\/p>\n<p>Because a pilot\u2019s job isn\u2019t just to move a joystick or push buttons. Their mission is to take responsibility when things fail, to decide in uncertainty, and to ensure safety.<\/p>\n<p>I see the same parallel in software development today.<\/p>\n<p>Writing code may increasingly be handled by AI. But the true value of a developer is not typing lines of syntax \u2014 it\u2019s abstracting logic from reality, making systems work in practice, and being accountable when they don\u2019t.\nTools will keep evolving. The purpose remains.<\/p>\n<p>And just as no one feels safe on a plane without pilots, no company should feel safe relying on technology without professionals who understand it \u2014 and take ownership when it matters most.<\/p>\n<\/blockquote>\n<p>Would you fly in an airplane without pilots as safety backup? Using AI is going to be part of any company with developers but you still need people who can review AI\u2019s results, take over if something goes wrong or are able to optimise further.<\/p>\n<p>I\u2019ve helped so many teams and companies with the real challenges. It\u2019s usually not a code-specific problem to solve but the organisation of building a product, from idea to market, not only to \"production\". <\/p>\n<p>You need to build the right thing with proper quality in an appropriate time and budget frame. This is not easy but possible.<\/p>\n<p>This is what you have Lead Engineers, good Agile Masters or specialised Freelancers (like me) for. <a href=\"mailto:&#x69;&#x6e;&#102;&#x6f;&#x40;&#x61;&#110;&#x73;&#x65;&#x6c;&#109;&#x2d;&#104;&#x61;&#110;&#110;&#101;&#x6d;&#x61;&#110;&#110;&#46;&#99;&#111;&#x6d;\">Send me an email if you want to hire me for your company<\/a>.<\/p>","date_published":"2025-08-22T00:00:00+02:00","date_modified":"2025-11-09T14:01:18+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/code-reviews-to-uncover-team-improvements","url":"https:\/\/helloanselm.com\/writings\/code-reviews-to-uncover-team-improvements","title":"Code Reviews to uncover team improvements","content_html":"<p>I do like code reviews.<br \/>\nIf my customer and teams let me spend time on it, I\u2019m able to see issues in automation workflows, code quality and knowledge gaps in the teams or workflow issues in general.<\/p>\n<ul>\n<li>You can quickly see in code reviews if automated checks catched typos, code style or linting issues.<\/li>\n<li>You can find out the code quality level in the team and if your team members have equal knowledge or not (which can affect effectiveness of the team if too different)<\/li>\n<li>You can find workflow issues such as no clear UX\/design requirements leading to unclear code implementations<\/li>\n<li>Not implemented edge-cases because it\u2019s unclear who\u2019s responsible in thinking about them (PO?, Dev?)<\/li>\n<li>Performance issues, Accessibility issues and others because the developers didn\u2019t think or test when writing the code.<\/li>\n<\/ul>\n<p>\ud83d\udca1 The catch is, you need to spend time and thoughts into proper code reviews. Only then the world of seeing possible improvements opens up for you. Check out the code, not only look at it, open dev tools, use a screenreader and so on.<\/p>\n<p>\ud83d\udc8c If you need someone looking into your engineering department to improve the happiness of your people and effectiveness or work, <a href=\"mailto:&#105;&#x6e;&#x66;&#111;&#x40;&#97;&#x6e;&#x73;&#101;&#108;&#x6d;&#x2d;&#x68;&#97;&#110;&#110;&#x65;&#109;&#97;&#110;&#x6e;&#x2e;&#99;&#x6f;&#109;\">send me a message<\/a>. I still have time this year.<\/p>","date_published":"2025-08-21T00:00:00+02:00","date_modified":"2025-11-09T14:01:18+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/know-your-html-yes-tsx-included","url":"https:\/\/helloanselm.com\/writings\/know-your-html-yes-tsx-included","title":"Know your HTML (yes, TSX included)","content_html":"<p>As a freelancer helping larger companies achieve their goals, I\u2019ve gained a lot of insights into how people work. And I know many people \u2014 including me \u2014 have said this for over a decade but it bears repeating: We have fantastic JavaScript (TypeScript included) developers who can build impressive solutions to complex problems. But there are still very few frontend developers today who truly know how to write semantic HTML and build with accessibility in mind. This is more important than ever, especially with the European Accessibility Act (EAA) now being enforced across Europe.<\/p>\n<p>In almost all of the projects I\u2019ve been working on, people relied on component libraries like MUI, Mantine or similar for their React software. If we implemented custom markup, it was mainly a <code>div<\/code>-soup that actually contained the relevant semantic information \u2014 just not in HTML but in custom data attributes. Now when we\u2019re talking about accessibility, it\u2019s the same idea that many developers come up with: Let\u2019s add more informational attributes. Let\u2019s add focus handling. <\/p>\n<blockquote>\n<p>Adding code is easier than refactoring it. To add bits of code, you don\u2019t need to fully understand everything. To refactor, you need to.<\/p>\n<\/blockquote>\n<p>It\u2019s the same old problem of software engineering: Adding code is easier than refactoring it. To add bits of code, you don\u2019t need to fully understand everything. To refactor code, you need to.<\/p>\n<h2>How to convince people about semantic markup and accessible code<\/h2>\n<p>I\u2019ve tried to convince people with simple arguments about accessibility, machine-readability, robustness of a codebase but it never had the effect I intended. What really worked was doing a demo with a Screenreader showing them that I close my eyes and navigate through the project using nothing else than the screenreader. Usually, this has the effect of people being surprised that anyone can use such an assistive technology (known as e.g. \"screenreader\") and how bad the status of the application is in terms of accessibility.<\/p>\n<p>Next step is to explain that accessibility is a step-by-step process. You can\u2019t just do it right from the beginning, especially if you\u2019re just starting. It\u2019s iterative and learning by doing:<\/p>\n<ol>\n<li>Get used to the screenreader and use it often on many websites or apps you regularly use to realise what\u2019s possible.<\/li>\n<li>Check your knowledge and improve: Check the <a href=\"https:\/\/www.w3.org\/WAI\/ARIA\/apg\/patterns\/\">patterns by W3C WCAG<\/a> to get an idea of what\u2019s needed in code.<\/li>\n<li>Improve the basic HTML (JSX and TSX are just HTML with Type-\/JavaScript-bridges) and check the app again.<\/li>\n<li>Now slowly start to play around with the huge beast called <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Accessibility\/ARIA\">ARIA<\/a>. Be aware that the official guideline says \"no ARIA is better than bad ARIA\" which is what I referred to earlier. Please don\u2019t add aria attributes everywhere and think it\u2019s good practice or helps to improve accessibility.  These attributes are great but test it well and make sure what you do is useful.<\/li>\n<li>Slowly understand how too much information can be worse than no information.<\/li>\n<li>Check the countless resources on the web about accessibility and ask people. You\u2019re not alone here, there are few people who don\u2019t need to ask others in this area and getting feedback from colleagues is always great in this case.<\/li>\n<\/ol>\n<h2>Is semantic markup and accessibility easy? No.<\/h2>\n<p>No one said that accessibility is easy. Even semantic code is not always trivial to achieve in modern web applications. You can tell your manager and reference me (or any other dev working in the field), if needed. It\u2019s not your fault that you didn\u2019t know about it before, frontend development has become so complex that focusing on specific parts is good. <\/p>\n<p>If there\u2019s anyone to blame though there\u2019s no need, it\u2019s Product ownership. As a Product owner, I have the power to decide which quality my software should have. If I decide for quick development, it\u2019s no wonder to have poor semantics or accessibility. If I set accessibility standards and tell the team about it, they can and will handle that.<\/p>\n<h2>Start somewhere<\/h2>\n<p>With new laws going into effect these days, it\u2019s easy to get overwhelmed by the requirements. It\u2019s good to comply with WCAG 2.2 Level AA but please start and improve step-by-step. If you\u2019re owing a complex web app, this is not a one-off thing, it\u2019s not done in a few days but will take weeks or months to do it right.\nNevertheless be aware that every single improvement that adds to semantics and therefore accessibility adds to the user experience of many people. It may not be perfect yet but it will become if you strive for it.<\/p>\n<h2>Change people\u2019s minds<\/h2>\n<p>Nothing is as powerful as seeing people changing their minds and way of thinking within a few months. Suddenly, people refer to contrast, use a screenreader, ask which UX-pattern is better or realise how complicated and unintuitive the current product is for newcomers.<\/p>\n<h2>Use the power to unblock and improve your team\u2019s workflows<\/h2>\n<p>Finally, there\u2019s a good chance that during this process it gets more clear how unrefined and unclear the Acceptance Criteria, the Product Value for the customer for a specific feature were in the past. Refinements will take a bit longer but QA easier and faster than before with less bugs or follow-up improvements being introduced.<\/p>\n<p>Take the opportunity to analyse your current workflow (no matter if Scrum, Kanban, or other) and improve it based on where you see a lack of resources, process blockers. As hybrid-role person (Scrum Master and Frontend developer) I helped my teams pointing it out and starting to improve it. The result? People are happier and can work in a calmer mode. Managers are happier because the team effort is more predictable and the result is more stable, often of better quality.<\/p>\n<p>What\u2019s this all about? Accessibility is a core part of building products that work for everyone. It can help people becoming better developers, product owners, QA-testers, UX-designers.<\/p>","date_published":"2025-06-23T00:00:00+02:00","date_modified":"2025-11-09T14:01:18+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/knowing-css-is-mastery-to-frontend-development","url":"https:\/\/helloanselm.com\/writings\/knowing-css-is-mastery-to-frontend-development","title":"Knowing CSS is mastery to Frontend Development","content_html":"<p>There are countless articles why developers should not focus on Frameworks too much and instead learn to understand the underlying languages. But I think rarely we can find good reasons except that Frameworks come and go. To me, the main reason is different: You won\u2019t be a master at frontend development if you don\u2019t understand underlying mechanisms of a language.<\/p>\n<p>A usual stack today is React together with countless layers in between the language and the framework itself. CSS as styling method is not used natively but via JavaScript tools that translate it into native CSS. For JavaScript we nowadays write an opinionated Framework language mix using TypeScript which by itself is translated to native JavaScript in the end again. And while we all know the comfort of these tools and languages, there are many things that make it easier if you understand a browser\u2019s ecosystem:<\/p>\n<ul>\n<li>Debug JavaScript errors easier and also in foreign environments without a debugging browser extension installed<\/li>\n<li>Debug CSS<\/li>\n<li>Write custom CSS (and every project I\u2019ve seen so far needs it somewhere)<\/li>\n<li>Understand why errors occur that you may not find locally and only in client\u2019s browsers<\/li>\n<\/ul>\n<p>In the past years I had various situations where TypeScript developers (they called themselves) approached me and asked whether I could help them out with CSS. <strong>I expected to solve a complex problem<\/strong> but for me \u2014 knowing CSS very well \u2014\u00a0it was always a simple, straightforward solution or code snippet:<\/p>\n<ul>\n<li><em>A multi-colored footer bar should not be an image, it\u2019s a simple CSS background multi-step gradient<\/em> with one line of code. No need to scale an image, create an SVG, just CSS.  <\/li>\n<li><em>Custom icons for an input field?<\/em> Welp, it\u2019s not that easy for privacy reasons to add a pseudo-class here in certain cases. But there are many simple solutions and no need to include another bloated npm dependency that nobody understands what it does.  <\/li>\n<li><em>Webfonts<\/em>: Dev: We can\u2019t add another webfont style, we already serve 4MB of webfonts.<br \/>\n&rarr; Me: Alright, why don\u2019t we serve it as Variable Font?<br \/>\n&rarr; Dev: Oh, what\u2019s this?<br \/>\n&rarr; Check it out, we now load 218kb async, only one file and have all our styles we have and will ever need inside. <\/li>\n<\/ul>\n<p>Nowadays people can write great React and TypeScript code. Most of the time a component library like MUI, Tailwind and others are used for styling. However, nearly no one is able to judge whether the CSS in the codebase is good or far from optimal. It is magically applied by our toolchain into the HTML and we struggle to understand why the website is getting slower and slower.<\/p>\n<p>Most of the performance basics I learned ten years ago are still the most relevant ones today. Yet, most developers don\u2019t know about them because we use create-react-web-app or similar things. Put Cloudflare on top to boost performance and reduce costs. Yes, that works for your website and little project. <\/p>\n<p><strong>What companies expect<\/strong> when they ask for a web dashboard serving real time data for their customers is different: It should be a robust, well working application that is easy to maintain. That means we need to combine the developer experience (React, TypeScript, all the little helpers) with the knowledge of how browsers and networks work. And only then we can boost performance, write accessible code, load dynamic data in a proper and safe way and provide fallbacks in case something goes wrong.<\/p>\n<p><strong>In cases of emergency like an Incident with the service, I\u2019ve seen the difference often enough<\/strong> between people who exactly know where to look at, start debugging and go further, and those who try to find out in panic what\u2019s going on here, hoping that a restart or re-deployment with reinstalled dependencies will help bring the service back to life.<\/p>\n<p><strong>And that means in the end again: If you know CSS, you also know the style framework. If you understand JavaScript, TypeScript is not a big problem for you. And that makes you a Senior or Principal.<\/strong><\/p>","date_published":"2024-12-05T00:00:00+01:00","date_modified":"2025-11-09T14:01:18+01:00"},{"id":"https:\/\/helloanselm.com\/writings\/what-makes-a-great-team","url":"https:\/\/helloanselm.com\/writings\/what-makes-a-great-team","title":"What makes a great team","content_html":"<p>A good team is formed of trust, willingness to improve and agility to adapt plans and try out new things:<\/p>\n<blockquote>\n<p>For a long time I believed that a strong team is made of stars \u2014 extraordinary world-class individuals who can generate and execute ideas at a level no one else can.<\/p>\n<p>These days, I feel that a strong team is the one that feels more like a close family than a constellation of stars.<br \/>\nA family where everybody has a sense of predictability, trust and respect for each other.<br \/>\nA family which deeply embodies the values the company carries and reflects these values throughout their work.<br \/>\nBut also a family where everybody feels genuinely valued, happy and ignited to create.\n<cite>\u2014\u00a0Vitaly Friedman<\/cite><\/p>\n<\/blockquote>\n<p><strong>Let\u2019s\u00a0handover the best possible.<\/strong><\/p>\n<p>The best work for other people who take over our work at a later point. Why? It saves time and reduces interruptions during work, but most importantly, it will make you and the person using your work happier.<\/p>\n<blockquote>\n<p>Good code is like a love letter to the next developer who will maintain it.\n<cite><a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:7088397617998561280\/?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A7088397617998561280%29\" target=\"_blank\">Addy Osmani<\/a><\/cite><\/p>\n<\/blockquote>","date_published":"2024-02-22T00:00:00+01:00","date_modified":"2025-11-09T14:01:24+01:00"}]}