<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Maroun Baydoun's blog feed]]></title><description><![CDATA[I’m a Senior Software Engineer in Berlin. I like building for the web, writing things down, and giving curious ideas their own URL.]]></description><link>https://maroun-baydoun.com</link><generator>GatsbyJS</generator><lastBuildDate>Fri, 02 Oct 2026 21:32:52 GMT</lastBuildDate><item><title><![CDATA[AI and the revenge of the non-techies]]></title><description><![CDATA[The revolution has finally come for software engineers. The non-techies have the pitchforks, AI has the tokens, and nobody bothered to read the manifesto.]]></description><link>https://maroun-baydoun.com/blog/ai-revenge-non-techies/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/ai-revenge-non-techies/</guid><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Software engineers have had a suspiciously good run.&lt;/p&gt;
&lt;p&gt;For the better part of two decades, the profession offered a combination that was difficult to find elsewhere: high salaries, generous benefits and offices whose interior designers had apparently been briefed to build playgrounds for adults. You didn&apos;t necessarily need a degree, rarely needed a suit and, eventually, didn&apos;t even need to leave your bedroom. While teachers, nurses and other highly trained professionals continued doing their vital jobs for considerably less money, we were arguing about whether the free office lunch had enough vegan options.&lt;/p&gt;
&lt;p&gt;We didn&apos;t exactly handle our good fortune with discretion. We took on absurd names: rockstars, ninjas and gurus. We built an entire culture around the idea that software was eating the world. Every industry was ripe for disruption, every profession was inefficient and every problem could be solved by putting it behind an app and a monthly subscription. There was always a little irony in hearing people with some of the most comfortable jobs in the economy explain why everybody else&apos;s was about to disappear.&lt;/p&gt;
&lt;p&gt;Now software is supposedly coming for ours.&lt;/p&gt;
&lt;h2&gt;Everyone can code&lt;/h2&gt;
&lt;p&gt;Coding bootcamps promised to democratise software development.&lt;/p&gt;
&lt;p&gt;For years, the proposition was difficult to resist. Take a few months off, learn a programming language, build an app and emerge into a new economic class with a company MacBook and a salary your previous profession might have required a decade to reach. Software engineering became a promised land that required neither years of university nor professional accreditation to enter. You just needed to learn to code.&lt;/p&gt;
&lt;blockquote class=&quot;post-pull-quote&quot;&gt;
  &lt;p&gt;It was probably unreasonable to expect them not to bring popcorn when it finally came for ours.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Except there was an awkward contradiction at the heart of the sales pitch. Software engineers were supposedly paid so well because they possessed scarce and specialised skills, while an entire industry was simultaneously advertising those skills as something almost anyone could acquire in twelve weeks. Coding was valuable enough to transform your life, but easy enough to learn before you had to stow away your winter wardrobe.&lt;/p&gt;
&lt;p&gt;Amid the wave of tech optimism, the contradiction didn&apos;t matter. Tech was growing quickly enough to absorb an extraordinary number of people. The bootcamp era helped cement an idea that survives today: that software engineering is primarily the act of writing code. Learn enough syntax, memorise a few snippets, internalise some jargon and you&apos;re more than welcome in the secret society.&lt;/p&gt;
&lt;p&gt;Alas, the market became less forgiving. Bootcamp graduates discovered that building a book-search application and being entrusted with a production system were not quite the same thing. The twelve-week programme ended, but for many the promised career never began. The gates to tech had been advertised as wide open; there was still, inconveniently, a gate, with keepers guarding it.&lt;/p&gt;
&lt;h2&gt;Nobody needs to code&lt;/h2&gt;
&lt;p&gt;If bootcamps promised that everyone could become a programmer, no-code offered something even more attractive: nobody needed to become one.&lt;/p&gt;
&lt;p&gt;The databases became colourful boxes, business logic morphed into unidirectional arrows and websites could be assembled by dragging rectangles around a screen. The objective was no longer to teach the rest of the world the strange rituals of software development, but to remove the software developer from the process altogether.&lt;/p&gt;
&lt;p&gt;There were valid reasons behind this promise. Engineers had become accidental gatekeepers to an increasingly digital economy. If you had an amazing idea for a product, somebody eventually had to translate it into code and ship it. If marketing wanted to experiment, engineering had to build it. If product wanted a feature, engineering had to estimate it. If designers wanted a button moved two pixels to the left, engineering had the audacity to ask why.&lt;/p&gt;
&lt;blockquote class=&quot;post-pull-quote&quot;&gt;
  &lt;p&gt;Democratising the means of production doesn’t necessarily mean democratising the returns.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Crafting software gave engineers leverage well beyond the mechanical keyboard. The skill was scarce, demand was high and companies increasingly depended on it. In Marxist terms, which is obviously where any sensible discussion about developers eventually ends up, software engineers had acquired control over a small but increasingly important means of production.&lt;/p&gt;
&lt;p&gt;No-code tried to loosen that control, but failed to deliver the seismic change it promised. A bigger shake-up was cooking.&lt;/p&gt;
&lt;h2&gt;Seize the means of production&lt;/h2&gt;
&lt;p&gt;AI isn&apos;t being sold merely as the next evolution in software production. Increasingly, it is touted as a liberation from the people who know how to write it.&lt;/p&gt;
&lt;p&gt;A three-month coding bootcamp is now twelve weeks too long. A deep understanding of programming is superfluous. Hiring a team of opinionated software engineers is a threat to the balance sheet.&lt;/p&gt;
&lt;p&gt;The revolution is underway. It comes with a monthly subscription, per-seat pricing and token allocations. It has its thought leaders, warriors and propaganda department. No blood is being spilled on the streets, but the transformation is violent nonetheless.&lt;/p&gt;
&lt;p&gt;The masses are shouting &quot;Expropriate!&quot; and software engineers are feeling threatened. Skills acquired over decades are turning into commodities anyone can claim. Their power within organisations is being dismantled. Their pride in the craft, their achievements and even their passion for it are increasingly recast as arrogance and resistance to progress. Public executions are, thankfully, not part of the manifesto, but the software engineer&apos;s character assassination is high on the list.&lt;/p&gt;
&lt;h2&gt;Schadenfreude as a service&lt;/h2&gt;
&lt;p&gt;A serious technological transformation is taking place. Denying its existence or impact would be about as useful as insisting the internet was a fad in 1998. But technology alone doesn&apos;t explain the peculiar enthusiasm surroundingthe upheaval in software development.&lt;/p&gt;
&lt;p&gt;Every profession worries about progress, mechanisation and automation. From factory workers to horse-carriage drivers, the past few centuries are brimming with examples of technologies that disrupted entire industries and livelihoods. The angst around major milestones, such as the Industrial Revolution, also led to unrest, revolts and unprecedented social and political mutations.&lt;/p&gt;
&lt;p&gt;No matter where you stand on the ideological spectrum, it&apos;s hard to deny that one of humanity&apos;s biggest struggles has been that between those who have and those who don&apos;t, those who exploit and those who are exploited, those who control the means of production and those who are but cogs in the machinery.&lt;/p&gt;
&lt;p&gt;Unless you&apos;ve achieved absolute enlightenment and completely detached yourself from material possessions, it&apos;s hard to argue that envy or jealousy aren&apos;t features of the human experience. From biblical tales to wars, we&apos;ve always wanted more, especially when someone else has more.&lt;/p&gt;
&lt;p&gt;Watching tech workers enjoy salaries and working conditions that seemed wildly disproportionate from the outside didn&apos;t go down well with everybody. Study for years, work in an essential profession and commute every morning, only to find yourself earning half as much as someone in their twenties writing code from their kitchen table. No need to harbour a deep hatred of programmers to wonder whether the labour market went haywire.&lt;/p&gt;
&lt;p&gt;Then there are those who tried to join the party. They learned to code because an industry told them they could, only to be stopped at the door. And plenty never wanted to become programmers at all, but spent twenty years listening to tech explain how software would disrupt their jobs, their industries and occasionally their entire way of life.&lt;/p&gt;
&lt;p&gt;There is something satisfyingly symmetrical about watching the disruptors get disrupted. It would be reductive to call that jealousy. It would be equally naive to pretend there isn&apos;t a little bit of it in the room.&lt;/p&gt;
&lt;h2&gt;The call is coming from inside the house&lt;/h2&gt;
&lt;p&gt;From inside the office, to be precise.&lt;/p&gt;
&lt;p&gt;The line dividing the revolutionaries and their &quot;victims&quot; might seem very clear at first. But painting the skirmish as non-techies versus techies is too reductive. Some &quot;techies&quot; have answered the call to arms.&lt;/p&gt;
&lt;p&gt;Software companies have spent years creating their own &lt;a href=&quot;/blog/from-outstanding-engineer-to-mediocre-manager/&quot;&gt;non-technical class&lt;/a&gt;: people who came from engineering but gradually moved high enough that software became something they manage instead of make. CTOs, VPs of Engineering, directors and their directors can still be deeply knowledgeable about technology, but their relationship with it has fundamentally shifted. Their work revolves around strategy, budgets, headcount, roadmaps, hiring plans and organisational problems rather than commits, builds and deployments.&lt;/p&gt;
&lt;p&gt;From their perspective, the distinction between software produced by twenty humans and software produced by five humans with AI can look mostly like a question of efficiency. Requirements enter one side of the organisation and software emerges on users&apos; screens at the other. What happens in between is an implementation detail, and implementation details are precisely what this class of workers doesn&apos;t typically worry about.&lt;/p&gt;
&lt;p&gt;There is also a comforting assumption hiding in that view: the machinery can change while the human overseeing it remains necessary. Replace programmers with agents, reduce the assembly-line headcount, increase output and report the efficiency gains upwards. The factory gets automated and management continues managing, for now.&lt;/p&gt;
&lt;p&gt;This creates a curious coalition between two seemingly unrelated groups: the people who never learned to program and executives who haven&apos;t shipped production code in years. They might look at AI from opposite ends of the org chart and still reach roughly the same conclusion: at last, we don&apos;t need so many engineers!&lt;/p&gt;
&lt;p&gt;They may both want to be careful about where that story ends.&lt;/p&gt;
&lt;p&gt;If AI can understand a vaguely specified product requirement, break it into tasks, coordinate agents, evaluate their output and report on the result, the boundary between replaceable technical work and irreplaceable management work starts looking suspiciously arbitrary.&lt;/p&gt;
&lt;p&gt;Revolutions, after all, are notoriously bad at respecting org charts.&lt;/p&gt;
&lt;h2&gt;The job was never the code&lt;/h2&gt;
&lt;p&gt;There is a more fundamental problem with the promised abolition of the programmer: it depends on the same misconception the bootcamp era helped create.&lt;/p&gt;
&lt;p&gt;Bootcamps claimed that because coding could be learned quickly, anyone could become a software engineer. The loudest AI advocates now tell us that because code can be generated quickly, software engineers are no longer necessary. The conclusions point in opposite directions, but both reduce engineers to producers of code.&lt;/p&gt;
&lt;p&gt;Code is certainly part of the job. It is also increasingly the cheap part.&lt;/p&gt;
&lt;p&gt;The expensive parts tend to gather around it: figuring out what needs to be built when nobody agrees, understanding a system whose original authors left five years ago, choosing between solutions with hidden trade-offs, keeping old software alive while replacing it, investigating the production failure that cannot be reproduced locally, and eventually taking responsibility when software meets the untidy world outside the text editor and the deployment pipeline.&lt;/p&gt;
&lt;p&gt;Machines will get better at those things too. Some will be automated entirely. The point isn&apos;t that engineering possesses some mystical human quality that machines can never reproduce. But making code dramatically cheaper to produce doesn&apos;t force the rest of software development to disappear with it.&lt;/p&gt;
&lt;h2&gt;Meet the new bourgeoisie&lt;/h2&gt;
&lt;p&gt;There is one final inconvenience with our revolution: nobody actually seized the means of production.&lt;/p&gt;
&lt;p&gt;We rented them.&lt;/p&gt;
&lt;p&gt;The models capable of democratising software require extraordinary amounts of compute, infrastructure, data and capital. The factories haven&apos;t been handed to the workers; a proprietary API has been placed in front of them, its access and price controlled by a board of executives in an opulent office.&lt;/p&gt;
&lt;p&gt;The person who couldn&apos;t build software yesterday can now create things that once required an engineering team, which is genuinely remarkable. They can also lose that ability when the subscription expires, their account gets suspended or their provider&apos;s status page turns red.&lt;/p&gt;
&lt;h2&gt;Let them eat tokens&lt;/h2&gt;
&lt;p&gt;Software engineers may indeed be losing their position as gatekeepers of digital production. Millions more people may be able to make software without ever learning what a function is, and civilisation will somehow continue. Engineers themselves could become dramatically more productive, with smaller teams building things that once required entire companies.&lt;/p&gt;
&lt;p&gt;Or perhaps one engineer will simply be expected to do the work of five while the savings travel elsewhere.&lt;/p&gt;
&lt;p&gt;That&apos;s the part of the revolution we haven&apos;t figured out yet. We spend a lot of time asking whether AI can replace programmers and considerably less asking who captures the value when it does. Democratising the means of production doesn&apos;t necessarily mean democratising the returns.&lt;/p&gt;
&lt;p&gt;For now, the software-engineering bourgeoisie can enjoy the historical irony. We spent twenty years telling everyone that technology was coming for their jobs. It was probably unreasonable to expect them not to bring popcorn when it finally came for ours.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The JavaScript midlife crisis]]></title><description><![CDATA[Thirty years in, the JavaScript ecosystem would like to see other languages. They're younger, leaner and faster. What could possibly go wrong?]]></description><link>https://maroun-baydoun.com/blog/javascript-midlife-crisis/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/javascript-midlife-crisis/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A while back, I made a half-observation, half-joke on &lt;a href=&quot;https://www.linkedin.com/posts/marounbaydoun_all-the-javascript-building-tools-are-competing-activity-7250129195257782273-xIpX&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/6eb8402112f551e0e857734f4310c954/89c06/linked-in-quote.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 23.5%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAIDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHZtCIT/8QAFxAAAwEAAAAAAAAAAAAAAAAAAAIQEv/aAAgBAQABBQJZk//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABkQAAEFAAAAAAAAAAAAAAAAAAABEBExkf/aAAgBAQAGPwKGtdP/xAAaEAACAgMAAAAAAAAAAAAAAAAAAREhMUFR/9oACAEBAAE/IUiE0i+lsg//2gAMAwEAAgADAAAAEPA//8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oACAEDAQE/EGR//8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oACAECAQE/EG1//8QAHhABAAIABwEAAAAAAAAAAAAAAQARITFRYYGRweH/2gAIAQEAAT8QMZQqVVw5laXX2JV2dkez/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;picture&gt;
          &lt;source
              srcset=&quot;/static/6eb8402112f551e0e857734f4310c954/507e6/linked-in-quote.webp 200w,
/static/6eb8402112f551e0e857734f4310c954/28a80/linked-in-quote.webp 400w,
/static/6eb8402112f551e0e857734f4310c954/8d2ea/linked-in-quote.webp 800w,
/static/6eb8402112f551e0e857734f4310c954/46197/linked-in-quote.webp 996w&quot;
              sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
              type=&quot;image/webp&quot;
            /&gt;
          &lt;source
            srcset=&quot;/static/6eb8402112f551e0e857734f4310c954/37402/linked-in-quote.jpg 200w,
/static/6eb8402112f551e0e857734f4310c954/4cda9/linked-in-quote.jpg 400w,
/static/6eb8402112f551e0e857734f4310c954/c60e9/linked-in-quote.jpg 800w,
/static/6eb8402112f551e0e857734f4310c954/89c06/linked-in-quote.jpg 996w&quot;
            sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
            type=&quot;image/jpeg&quot;
          /&gt;
          &lt;img
            class=&quot;gatsby-resp-image-image&quot;
            src=&quot;/static/6eb8402112f551e0e857734f4310c954/c60e9/linked-in-quote.jpg&quot;
            alt=&quot;All the JavaScript build tools are competing to see who uses the least amount of JavaScript.&quot;
            title=&quot;&quot;
            loading=&quot;lazy&quot;
            decoding=&quot;async&quot;
            style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
          /&gt;
        &lt;/picture&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The great JavaScript toolchain rewrite barged in. The older tools that helped cement the language&apos;s place in our stacks became uncool, if not suspicious. Their sluggish performance took the blame for slowing down millions of lines of code on their way to production. It&apos;s increasingly difficult to keep track of the cool kids on the block. Their names might not be catchy, but their promise is captivating: speed, and a lot of it.&lt;/p&gt;
&lt;p&gt;It&apos;s a strange time to be a JavaScript developer. The language has never been more ubiquitous, yet it seems to be losing ground in its own backyard. The tools are faster, the setup easier, the abstractions thicker. We write, configure and wait less. We bundle, ship and hotfix more. What happens between our code and the end product becomes easier to ignore.&lt;/p&gt;
&lt;p&gt;The benchmarks are all beaming green. The line charts are trending up, down, or sideways—whichever direction means fewer calls at 3 AM. So why am I here to ruin the party?&lt;/p&gt;
&lt;h2&gt;The language that wouldn&apos;t die&lt;/h2&gt;
&lt;p&gt;For a language (in)famously written in ten days, JavaScript managed to achieve the unthinkable. It escaped its birthplace, the browser, and started swallowing everything around it. The reaction was predictable: &lt;em&gt;Who in their right mind would write their server and tools in JavaScript?&lt;/em&gt; It turned out, many many many would. JavaScript made it onto phones, gaming consoles, microcontrollers and your fridge. If it understands bits, it can run JavaScript.&lt;/p&gt;
&lt;p&gt;Despite its popularity, JavaScript never had it easy. Not long after its inception, attempts to fix, or rather replace it altogether, were already in motion. Microsoft endowed Internet Explorer with VBScript and JScript, their own JavaScript flavour—not to be confused with J-Pop and JRPGs. In the 90s, everything sounded cooler if it started with J. Macromedia, and later Adobe, littered the internet with Flash intros and games powered by ActionScript. Google bet on Dart for the future of Chrome before relegating it to Flutter.&lt;/p&gt;
&lt;p&gt;Projects such as CoffeeScript added some syntactic sugar to the JavaScript cup. When we weren&apos;t trying to replace JavaScript, we were busy patching it from the outside. &lt;a href=&quot;/blog/remembering-jquery/&quot;&gt;jQuery&lt;/a&gt; unified a web platform whose browsers were barely on speaking terms. Lodash filled glaring gaps in the language&apos;s arrays and objects. Moment.js made dates somebody else&apos;s problem.&lt;/p&gt;
&lt;p&gt;JavaScript wasn&apos;t sitting still while everyone plotted its demise, either. Within its single thread, it was rather busy. Browser vendors, standards bodies and the community kept pushing the language forward. ECMAScript releases brought long awaited language features. TC39 kept the proposals coming, and browsers slowly learned to agree on what JavaScript was supposed to do. Over time, its standard library became less embarrassingly sparse.&lt;/p&gt;
&lt;p&gt;Then came TypeScript, and JavaScript&apos;s head was finally on a silver platter. Or so it seemed. TypeScript succeeded where the others failed by accepting one inconvenient truth: JavaScript wasn&apos;t going anywhere.&lt;/p&gt;
&lt;p&gt;You could improve it, hide it, compile to it or complain about it. You just couldn&apos;t get rid of it.&lt;/p&gt;
&lt;h2&gt;The superpower we&apos;re giving away&lt;/h2&gt;
&lt;p&gt;One language to rule them all is both a blessing and a curse. We spent decades talking about the curse. Somewhere along the way, we forgot about the blessing.&lt;/p&gt;
&lt;p&gt;As JavaScript continued to spread, it started eating its own dog food. Node.js enabled a slew of tools to emerge and conquer the ecosystem. Linters, bundlers, formatters and test runners were speaking the same language as the code they linted, bundled, formatted and tested.&lt;/p&gt;
&lt;p&gt;If, or rather when, something broke in that toolchain, the average JavaScript developer would be able to check the code. Maybe they&apos;d understand the bug. If they&apos;d had their eight hours of sleep, maybe they&apos;d fix it. If they were feeling combative, maybe they&apos;d submit a pull request. At the very least, they knew enough of the language to confidently blame the bug on the maintainers.&lt;/p&gt;
&lt;p&gt;And that familiarity travelled surprisingly well. The same language followed developers from the browser to the server, and eventually almost everywhere in between. JavaScript accelerated the rise of full-stack engineers, or perhaps full-ecosystem engineers. Whether anyone can truly master both ends of the stack without achieving demigod status is a discussion for another day. But JavaScript made the transition considerably easier. Engineers could bring along their knowledge of the call stack, prototype-based inheritance and the unfortunate fact that &lt;code&gt;typeof null === &quot;object&quot;&lt;/code&gt; to almost any project.&lt;/p&gt;
&lt;p&gt;People built entire careers and businesses around this catch-all ecosystem. The fact that most of it was and continues to be open source and &lt;em&gt;free&lt;/em&gt; certainly helps.&lt;/p&gt;
&lt;p&gt;JavaScript won the browser wars, and several key battles elsewhere. Then Rust and friends showed up for the trophy and the commemorative photo.&lt;/p&gt;
&lt;h2&gt;In pursuit of milliseconds&lt;/h2&gt;
&lt;p&gt;Rust, Go and Zig are taking over increasingly large parts of the JavaScript toolchain. And there&apos;s an obvious reason for that.&lt;/p&gt;
&lt;p&gt;They&apos;re fast. Really fast.&lt;/p&gt;
&lt;blockquote class=&quot;post-pull-quote&quot;&gt;
  &lt;p&gt;We&apos;re compiling JavaScript with Rust to produce JavaScript that runs inside an engine written mostly in C++.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nobody wants to stare at a build process long enough to form an emotional attachment to the progress bar. But when the replacement for an already-fast tool advertises itself as ten times faster, I start wondering what we&apos;re supposed to do with all those precious milliseconds it just handed us back.&lt;/p&gt;
&lt;p&gt;Take an extra sip of coffee?&lt;/p&gt;
&lt;p&gt;More importantly, what did we trade for that speed?&lt;/p&gt;
&lt;p&gt;Rewrite a bundler in Rust and you haven&apos;t only made it faster. You&apos;ve also shrunk the pool of JavaScript developers who can maintain it. The new tool still looks like a duck and quacks like a duck, but it&apos;s a different beast altogether. Its internals retreat behind a black box that fewer people hold the keys to. The source may still be open, but the door to contributions is closing.&lt;/p&gt;
&lt;p&gt;Maybe that&apos;s a perfectly reasonable trade-off. But it is a trade-off. And we don&apos;t seem particularly interested in that side of the benchmark.&lt;/p&gt;
&lt;h2&gt;Not everything that shines is gold&lt;/h2&gt;
&lt;p&gt;Sometimes it&apos;s rusty.&lt;/p&gt;
&lt;p&gt;Software engineering has always suffered from a particularly acute case of shiny object syndrome. Languages have their moment. Frameworks become fashionable. A few successful projects establish a pattern, companies invest in it, conference talks follow, laptop stickers get handed out and suddenly a technical decision becomes the main selling point.&lt;/p&gt;
&lt;p&gt;&quot;Written in Rust&quot; starts sounding less like an implementation detail and more like a feature.&lt;/p&gt;
&lt;p&gt;Success breeds imitation. One tool gets rewritten and becomes dramatically faster. Another follows, and another. Peer pressure mounts. Soon enough, being written in JavaScript starts to look less like the obvious choice for JavaScript tooling and more like a losing bet.&lt;/p&gt;
&lt;blockquote class=&quot;post-pull-quote&quot;&gt;
  &lt;p&gt;We&apos;re laying increasingly faster tracks for a steam train that likes to take its time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;None of this means those compiled languages are the wrong tools for the job. Quite often, they are exactly the right ones. But there&apos;s a difference between &lt;em&gt;the right tool for this job&lt;/em&gt; and &lt;em&gt;the right tool for every job that looks vaguely similar to whatever the competition is doing&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Once the shiny new tool also happens to top the benchmarks, resisting it becomes considerably harder. Speed provides the technical argument. Trendiness takes care of the rest.&lt;/p&gt;
&lt;h2&gt;Destination unknown&lt;/h2&gt;
&lt;p&gt;Our pursuit of faster JavaScript has taken us to a rather peculiar place.&lt;/p&gt;
&lt;p&gt;We&apos;re compiling JavaScript with Rust to produce JavaScript that runs inside an engine written mostly in C++.&lt;/p&gt;
&lt;p&gt;Perhaps that&apos;s the natural evolution of mature ecosystems, and JavaScript doesn&apos;t need to swallow the entire stack to remain relevant. Languages can coexist and still thrive. The web was built on at least three of them, before many more joined in.&lt;/p&gt;
&lt;p&gt;Taken individually, every step makes perfect sense. Taken together, they point somewhere more interesting. We&apos;re putting a substantial amount of engineering into optimising everything around JavaScript while JavaScript itself remains the destination. We&apos;re laying increasingly faster tracks for a steam train that likes to take its time.&lt;/p&gt;
&lt;p&gt;The thing about speed is that it doesn&apos;t always guarantee a smooth journey when the train itself isn&apos;t designed to keep up. Sooner or later, faster tracks will make less and less of an impact. And someone, much smarter than me, will have to ask the difficult question: how far can we go before rebuilding the web from the ground up starts looking like the saner option?&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The outstanding engineer who wanted to become a mediocre manager]]></title><description><![CDATA[Why do so many outstanding software engineers become mediocre managers? A reflection on promotions, ambition, and why climbing the career ladder doesn't always mean moving up.]]></description><link>https://maroun-baydoun.com/blog/from-outstanding-engineer-to-mediocre-manager/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/from-outstanding-engineer-to-mediocre-manager/</guid><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Software engineers are built differently. The great ones at least. Throughout my career, I&apos;ve had the pleasure and privilege of working with—or under—a handful of them. They&apos;re the ones who taught me what books couldn&apos;t. The ones who proved that breaking the rules is sometimes the only rule. The ones who somehow balanced a healthy dose of scepticism with an undeniably open mind.&lt;/p&gt;
&lt;p&gt;As I reminisce about the great ones that helped shape the engineer I&apos;ve become, an uncomfortable question keeps nagging me. What happens when the mighty fall? I was there and I remember the announcements, the celebrations, and the aftermath. Here&apos;s the tale of outstanding engineers that succumbed to the lure of management.&lt;/p&gt;
&lt;h2&gt;A demotion in disguise?&lt;/h2&gt;
&lt;p&gt;The software engineering industry – and the corporate world at large – want you to believe they are meritocracies. Engineers are encouraged to hone their technical skills. We&apos;re told to choose a stack, a letter-shaped expertise and a 10-based output multiplier. In return, good performance (and savvy politics) often lead to promotions that bring higher income, a shiny new title and a load of responsibilities. Associate Junior Engineer, Engineer 2.5.0-beta, IC-ex-machina... the naming schemes get creative, and engineers happily sign up for the game. It&apos;s all smooth sailing until the dangling of the manager promotion flips the script.&lt;/p&gt;
&lt;p&gt;The title is certainly attractive, especially when sold as the natural progression. &quot;It&apos;s the only cure for your career plateau.&quot; Suddenly, all the years spent laying the bricks of engineering excellence fall by the wayside. Gone are architecture diagrams, proofs of concept and obscure JavaScript quirks. And in come spreadsheets, pre-alignments, &lt;a href=&quot;/blog/we-are-agile-but/&quot;&gt;alignment meetings&lt;/a&gt;, post-alignments, alignment follow-ups and follow-up alignments.&lt;/p&gt;
&lt;blockquote class=&quot;post-pull-quote&quot;&gt;
  &lt;p&gt;Careers don&apos;t have to be ladders in the first place (especially if you&apos;re afraid of heights).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The temptation is easy to understand. Who wouldn&apos;t want a promotion? It&apos;s only human to desire more and think big. But how do you survive when the career high sends you into the stratosphere, without the proper suit and helmet? How do you cope when you land on an alien planet where you don&apos;t speak the language?&lt;/p&gt;
&lt;h2&gt;Will you manage to manage?&lt;/h2&gt;
&lt;p&gt;You&apos;d be forgiven for assuming I&apos;m looking down at managers. Let me assure you—and them—that it isn&apos;t the case. I have nothing but respect and admiration for those who choose that path, especially those aware of the challenges lying ahead and equipped to tackle them—or willing to learn. Even when they fail, watching them struggle garners nothing but empathy (and a little unspoken I-told-you-so moment, if I&apos;m being honest).&lt;/p&gt;
&lt;p&gt;Managing human beings must be one of the most demanding jobs out there. Despite their complexities, computers, compilers and databases don&apos;t complain. They crash, time out or stop responding and generally recover after a reboot, a patch or a debugging session. Humans, on the other hand, disengage, burn out or slack off, and no reset button or IT-approved tool can come to the rescue.&lt;/p&gt;
&lt;p&gt;Juggling between compassion and decisiveness, flexibility and rules, is a gift that very few possess. And it turns out most of those are not among the great engineers. The set of skills a manager employs are a far cry from what the industry moulds engineers to become, or what they&apos;re best equipped to tackle.&lt;/p&gt;
&lt;p&gt;You&apos;d also be forgiven for assuming I&apos;m making the case that engineers are inherently ill-suited to management. And you&apos;d be wrong yet again. There&apos;s no denying that our culture portrays us as nerdy caricatures wanting nothing more than to stare at gigantic monitors all day long. But great engineering has never been just about technical prowess. Navigating office dynamics, communicating effectively are hallmarks of great engineers. Knowing one&apos;s way around people is as valuable as knowing one&apos;s way around a codebase. Building consensus is as important as building great software. But none of that automatically makes you a good manager.&lt;/p&gt;
&lt;p&gt;In my experience, the best managers operate somewhere at the intersection of both worlds and make it seem effortless to jump between the two as needed.&lt;/p&gt;
&lt;h2&gt;Don&apos;t take my word for it. Just ask Peter!&lt;/h2&gt;
&lt;p&gt;Peter saw it coming. Well, Laurence J. Peter did. In 1969, together with Raymond Hull, he put a name to what many had already been witnessing. In fewer than 200 pages, &lt;a href=&quot;https://en.wikipedia.org/wiki/Peter_principle&quot;&gt;&lt;em&gt;The Peter Principle&lt;/em&gt;&lt;/a&gt; walks us through a series of workplace vignettes and observations that have, perhaps unsurprisingly, withstood the test of time.&lt;/p&gt;
&lt;p&gt;The book&apos;s thesis goes well beyond what I&apos;m covering in this post, but the most relevant point is the following:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;People get promoted based on their performance in their current position, even when these skills are non-transferable to the new position.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The authors provide plenty of examples where employees performing exceptionally well faltered after their next promotion. This is what the book refers to as &lt;em&gt;reaching one&apos;s incompetence level&lt;/em&gt;. In a hierarchy, a person would keep getting promoted until they hit that ceiling, after which further promotion becomes exceedingly difficult without necessarily resulting in them getting fired.&lt;/p&gt;
&lt;p&gt;Look at the hierarchies you&apos;ve been part of: your organisation, political party or sport club. You&apos;ll undoubtedly identify those who have reached their incompetence level. They&apos;d most likely be floating around, being given outlandish titles and a bogus set of responsibilities. &lt;em&gt;VP of consolidated integrations&lt;/em&gt;, or &lt;em&gt;Chief integrator of consolidations&lt;/em&gt; are usually among the first telling signs.&lt;/p&gt;
&lt;p&gt;And on occasions, that person can be your manager or their manager&apos;s manager.&lt;/p&gt;
&lt;p&gt;And if you&apos;re sufficiently self-aware, it might be you.&lt;/p&gt;
&lt;h2&gt;Buy one problem, get one for free&lt;/h2&gt;
&lt;p&gt;It didn&apos;t happen overnight, but they eventually withered. The lively discussions died out. The engineering challenges dried up. Their vocabulary shifted to a new set of three-letter acronyms and rehearsed axioms. The sparkle in their eyes faded. The transformation was complete.&lt;/p&gt;
&lt;p&gt;Slowly but surely, plans derailed. The once exceptional contributors were no longer in the driver&apos;s seat. The autonomy they once flaunted gave way to additional layers of control and rigidity. The promise of power stripped their freedom away.&lt;/p&gt;
&lt;p&gt;When outstanding engineers turn into mediocre managers, everyone pays the price. The team loses a technical powerhouse who drove things forwards. And now its members have to contend with a leader only by name. Mediocrity breeds and magnifies dysfunction. Conflicts go unresolved. Feedback goes unanswered. Frustration grows. Morale dips.&lt;/p&gt;
&lt;p&gt;And then comes the part nobody tells you about. One day, the engineer who was once one of &quot;us&quot; quietly becomes one of &quot;them&quot;. And once you&apos;re part of that club, there&apos;s no finding your way back.&lt;/p&gt;
&lt;p&gt;Or is there?&lt;/p&gt;
&lt;h2&gt;With your tail between your legs&lt;/h2&gt;
&lt;p&gt;Remaining an individual contributor is (falsely) considered a failure. Going back to that role after a promotion gone off the rails is (falsely) considered career suicide. When the management soul reaper comes knocking, you accept its invitation, only to realise you&apos;re not built for it, what do you do? Do you power through and learn on the job? Do you fake it till you somehow make it? Or do you bite the bullet and admit defeat?&lt;/p&gt;
&lt;p&gt;Perhaps the best promotion is the one you turn down, or walk away from. Careers don&apos;t have to be ladders in the first place (especially if you&apos;re afraid of heights).&lt;/p&gt;
&lt;blockquote class=&quot;post-pull-quote&quot;&gt;
  &lt;p&gt;Mediocrity breeds and magnifies dysfunction. Conflicts go unresolved. Feedback goes unanswered. Frustration grows. Morale dips.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Carve your own role. Find your place under the sun. The options are as limitless as there are ways to centre a div in CSS. Don&apos;t let the fear of standing still take you on the wrong journey. A fulfilling engineering position is much more rewarding than an oversized manager title that never truly fits.&lt;/p&gt;
&lt;h2&gt;If you managed to get this far&lt;/h2&gt;
&lt;p&gt;An engineer becoming a manager is not a promotion but a lateral career shift. Treat it as such, and the picture becomes clearer. If you have what it takes to be a manager, then by all means go for it. If you&apos;re not quite there yet but are willing to invest the time to learn, give it a shot too.&lt;/p&gt;
&lt;p&gt;In all other cases, spare yourself and the rest the unnecessary pain and chaos.&lt;/p&gt;
&lt;p&gt;The Senior Engineer to Engineering Manager pipeline needs an urgent cleanup. Grab a brush. There&apos;s work to do.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Close encounters of the 90s kind]]></title><description><![CDATA[The beginning of my story with computers — a kid growing up in 90s Lebanon, chasing pixels, breaking machines, and unknowingly laying the first stones of a lifelong journey into programming.]]></description><link>https://maroun-baydoun.com/blog/close-encounters-90s-kind/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/close-encounters-90s-kind/</guid><pubDate>Sun, 17 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For a Lebanese child growing up in the 90s, my first contact with computers happened relatively early. At 6, my classmates and I were shown into a room full of bulky screens, keyboards and mice. Once a week, we sat in pairs on backless grey benches facing a nameless colouring software. Our tiny hands took turns moving the cursor to fill the outlined canvas with questionable colour combinations.&lt;/p&gt;
&lt;p&gt;Alongside this hands-on exercise, the teacher would explain what made a computer tick: processor, memory and all. That glimpse into the machine&apos;s entrails thrilled me. It echoed my pathological pleasure in taking my toys apart and seeing what lives inside. I&apos;d convince myself, and my mum, that I&apos;d manage to put them back together. Needless to say, that was rarely the case. I lacked the dexterity (and patience) of experienced factory workers – or robots – assembling those toys in a land far, far away. I was programmed obsolescence personified.&lt;/p&gt;
&lt;p&gt;But it wasn&apos;t all in vain. Though unspeakable amounts of plastic piled up in Lebanon&apos;s faltering waste system, I upcycled a lot of the electronics, in particular, the small motors found in remote-controlled cars. They unwillingly contributed to my super secret space programme. I was convinced that by wiring a motor to a battery pack and attaching spinning blades, I&apos;d create something that flies. I soon upgraded my arsenal by introducing fireworks. Binding rockets sold for New Year&apos;s eve together, I finally launched something into space, also known as our upstairs neighbour&apos;s balcony. After many attempts, burnt fingers and alleged UFO sightings, I laid my ambitions to rest and moved on to my next classified endeavour.&lt;/p&gt;
&lt;p&gt;On some lucky Saturdays, my father, a police officer, took me to work. The Lebanese government was digitalising, just in time for the looming Y2K. Dusty typewriters were on their way out replaced by state-of-the-art computers. So instead of sleeping in, I was ready by 7am, chasing the promise of using that mythical machine in my dad&apos;s office. Looking back at it now, I wonder how such a young child was even allowed into the headquarters of police administration. &lt;em&gt;Oh well, the 90s.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;At the same road intersection, my father would pick up a fresh copy of the day&apos;s newspaper from the usual street vendor. So fresh, in fact, that its pages were still warm. Stuck in Beirut&apos;s stifling traffic jams, he&apos;d glance at the major headlines. &lt;em&gt;Luckily, we were never stopped by the police&lt;/em&gt;. I&apos;d reach for the science and technology section and pretend to understand its dense medieval Arabic jargon. News about actual space programmes and how we&apos;d all be living on Mars by the year 2000 lit up my developing brain with excitement. Bumper to bumper on Earth, my mission to conquer the computer was still on the launchpad.&lt;/p&gt;
&lt;p&gt;Once at the office, my dad would start his day, and I&apos;d sit mesmerised by the computer, next to a policeman typing away. Handwritten notes flew from all sides, and landed in Microsoft Word before being regurgitated by a giant printer. His fingers danced across the mechanical keys as his eyes oscillated between the paper stack on his desk and the screen, never once glancing at his hands. At exactly 1pm, his shift ended and the computer became mine.&lt;/p&gt;
&lt;p&gt;My father, ever the workaholic, never left on time, which gave me a couple of hours of uninterrupted me time with the computer. The ergonomic chair adjusted, I faced the bulging screen and let my imagination run wild. The Windows 3.1 operating system, set to Arabic, greeted me with a right-to-left UI, flipping the script from the French-only computers we had at school.&lt;/p&gt;
&lt;p&gt;The main attraction was the handful of pre-installed games, namely Minesweeper and SkiFree. The first was too complicated for my budding synapses. &lt;em&gt;Even at 36, I still blow up more often than I care to admit&lt;/em&gt;. The latter was more accessible, but equally terrifying. Being ambushed and eaten by the monster lurking on the slopes might be why I never learned to ski. Crushed by a mountain of losses, I&apos;d turn to Paint for some embarrassing artistic mishaps. Occasionally, I even used that computer for school projects just for a chance to look down at my classmates stuck in the 80s.&lt;/p&gt;
&lt;p&gt;I kept up that Saturday ritual for a couple of years, during which the computer was upgraded to the then-shiny Windows 95, and the glorious Solitaire kept me busy for hours on end. Meanwhile, the school&apos;s computer curriculum intensified. Long gone were the days of colouring, and in came Microsoft Office and Photoshop. A vague mention of something called &quot;the Internet&quot; was casually dropped every now and then.&lt;/p&gt;
&lt;p&gt;My first brush with programming came during those classes, but I didn&apos;t realise it at the time. A software called &lt;em&gt;Logo&lt;/em&gt; made its entrance. It was home to a poor little turtle that responded to commands by crawling and drawing shapes on the screen. In each class, the teacher would first show us the end result, an elaborate matrix of circles, triangles and squares. Then, writing a series of commands, we&apos;d exploit the turtle&apos;s free labour to recreate the masterpiece. That mass-produced art suggested it was possible to &quot;talk&quot; to computers.&lt;/p&gt;
&lt;p&gt;Then came &lt;em&gt;Frontpage&lt;/em&gt;, Microsoft&apos;s stab at creating a WYSIWYG web editor. The plethora of marquee and blink elements I placed on those pages was certainly in poor taste, and the unintelligible HTML and JavaScript generated would have failed any W3C validation. Little did I know I was looking at markup and code a machine could understand.&lt;/p&gt;
&lt;p&gt;Some of my friends and relatives had their own computers at home with a library of games living on flimsy floppy disks. Lebanese mothers used to treat computers almost like a piece of vintage furniture that needed to be protected at any cost. Eating anywhere in their vicinity was strictly forbidden. Once turned off, the computer had to be covered to shield it from sunlight, dust and whatever breaking news was airing on post-civil war Lebanese TV.&lt;/p&gt;
&lt;p&gt;I finally got my hands on my first personal computer at 9. A friend of my father&apos;s running an engineering company was getting rid of some older models, and I happily rescued one from a certain death. It found a proud spot on our large, rarely used dining table. It came with a stack of applications and games. Apparently engineers love to play during work hours. &lt;em&gt;Who knew?&lt;/em&gt;. The one I distinctly remember was Duke Nukem 3D, which I played for countless hours, despite not meeting its minimum age and possibly system requirements. The awareness around the dangers of violent video games and their effects on children hadn&apos;t reached our side of the Mediterranean yet.&lt;/p&gt;
&lt;p&gt;My only real exposure to video games, apart from playing at friends’ houses, came from the cheap NES knock-offs that flooded the Lebanese market in the early 90s. The seemingly 3D graphics of Duke Nukem looked like a million light-year leap compared to the flickering 2D sprites of Mario and Luigi. The game even had mirrors, which I mistook for windows, and I&apos;d keep shooting at my own reflection thinking it was my evil clone. Not knowing about save files, I&apos;d always die on the third level – often courtesy of a rocket launcher at close range through a &quot;window&quot; – and start from scratch.&lt;/p&gt;
&lt;p&gt;I also got hooked on running the Defrag tool religiously. Questionable claims of speed gains aside, the hypnotic show of coloured hard drive blocks slotting into place was too strong to resist. But my addictions came to an abrupt end on the fateful day my computer died – or rather the day I killed it. In the spirit of optimisation, I made my way to the System32 folder and discovered a treasure trove of programmes with funny names and even funnier icons. And what did 10-year-me do? Delete them one... by... one. The hard drive space freed gave me a high, followed by a crash the next time I tried to start the computer; it wouldn&apos;t boot. Thank God I had no Duke Nukem save files on there.&lt;/p&gt;
&lt;p&gt;And so I survived the next two years without my own PC. The once-a-week computer class at school tried to scratch the itch but failed. As the 90s were about to wrap, the excitement and apprehension around the coming millennium were tangible. In the pages of my Dad&apos;s daily newspaper much ink was being spilled on the looming Y2K crash and the promised colonisation of Mars.&lt;/p&gt;
&lt;p&gt;And with that the first part comes to an end. Would you like to save your progress before loading the next level? &lt;em&gt;This might take a while&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Remembering jQuery]]></title><description><![CDATA[It is easy to forget the impact jQuery has had on web development. Let's take a minute to remember jQuery and celebrate its legacy.]]></description><link>https://maroun-baydoun.com/blog/remembering-jquery/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/remembering-jquery/</guid><pubDate>Sun, 04 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mention jQuery to any web developer, and you’re sure to get a mix of laughter and disdain. Worst yet, many younger developers might only have a vague idea, if any, of what jQuery is. It is seen as a relic of the past, a time when front-end development was nothing more than a bunch of CSS and JavaScript thrown together to make a website look “cool”.&lt;/p&gt;
&lt;p&gt;Front-end development has established itself as a separate discipline within the last decade. What was once an afterthought became an essential building block of the web. In the process. jQuery has been dethroned and its role often forgotten or ridiculed.&lt;/p&gt;
&lt;p&gt;Let us all take a minute to remember jQuery, understand its impact and celebrate its legacy.&lt;/p&gt;
&lt;h2&gt;What did jQuery bring to the table?&lt;/h2&gt;
&lt;h3&gt;Mending the incompatibilities&lt;/h3&gt;
&lt;p&gt;We take it for granted that things just work across different browsers, but back in the mid-2000s that wasn&apos;t always the case. With Internet Explorer reigning over the web, incompatible implementations were the reality of many web developers.&lt;/p&gt;
&lt;p&gt;There were multiple ways to send an asynchronous network request. Event handling had its quirks on some browsers. Getting a DOM element&apos;s bounds was handled differently as well.&lt;/p&gt;
&lt;p&gt;jQuery provided a unified API that checked for and mended those inconsistencies.&lt;/p&gt;
&lt;h3&gt;Selecting DOM elements&lt;/h3&gt;
&lt;p&gt;Before the introduction of the Selector API in 2013, selecting DOM elements by anything other than class, ID or tag name wasn&apos;t an easy task.&lt;/p&gt;
&lt;p&gt;jQuery shipped with its powerful CSS selector engine, later branded as Sizzle. It made it possible to select almost any DOM element using a familiar CSS syntax. It even went on to inspire the standard Selector API.&lt;/p&gt;
&lt;h3&gt;Out-of-box utilities&lt;/h3&gt;
&lt;p&gt;jQuery lowered the barrier to entry for many aspects of JavaScript programming and DOM manipulations.&lt;/p&gt;
&lt;p&gt;It shipped with a vast array of perks, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Animation API&lt;/li&gt;
&lt;li&gt;Hiding and showing elements&lt;/li&gt;
&lt;li&gt;Event Delegation&lt;/li&gt;
&lt;li&gt;Chaining of DOM operations&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;There&apos;s a plugin for that&lt;/h3&gt;
&lt;p&gt;Last and certainly not least, a complex ecosystem of third-party plugins formed around jQuery. From carousels to form error validation and parallax effects, all the cool kids were using a jQuery plugin for that.&lt;/p&gt;
&lt;p&gt;Some of those plugins can be considered a precursor to modern web components or components in other JavaScript libraries/frameworks that encapsulate UI and functionality.&lt;/p&gt;
&lt;h2&gt;Too big to fail?&lt;/h2&gt;
&lt;p&gt;For many developers, jQuery was synonymous with JavaScript. In fact, many had their first contact with the language using the library. Numerous JavaScript questions on Stack Overflow have answers assuming jQuery is being used.&lt;/p&gt;
&lt;p&gt;jQuery was doing too many things at once. It was a hybrid, half-library half-framework, that kept on growing. It powered a large percentage of websites worldwide. Not only that, but it also contributed to the success of many other projects. WordPress, Bootstrap and Backbone.js are just a few examples.&lt;/p&gt;
&lt;h2&gt;The decline&lt;/h2&gt;
&lt;p&gt;The decline of jQuery correlates with that of Internet Explorer. The popularity of Firefox and Chrome meant browsers had to adhere closer to web standards. Long gone were the days when browsers would differentiate themselves by shipping proprietary features. Now they had to compete in other areas: performance, stability, security and privacy.&lt;/p&gt;
&lt;p&gt;The proliferation of Webkit-based and later Chromium-based browsers gave a large portion of internet users a minimum set of capabilities that web developers could take for granted. While renegades like Safari still exist, the Web has moved on.&lt;/p&gt;
&lt;p&gt;With incompatibilities less of an issue, web development moved on to greener pastures. DOM manipulation was no longer enough to create the kind of experiences that the Web wanted to deliver. Projects such as Angular.js, Ember.js and React were showing the world that fully-fledged web application are a reality.&lt;/p&gt;
&lt;p&gt;jQuery felt suddenly outdated. While not all that shines is gold and the craze around single-page applications seems to be subsiding, there’s no denying that jQuery couldn’t keep up. Despite attempts at modernising, the writing was on the wall.&lt;/p&gt;
&lt;h2&gt;The legacy&lt;/h2&gt;
&lt;p&gt;jQuery is not dead, however. It still powers many websites. As of September 2022, &lt;a href=&quot;https://w3techs.com/technologies/overview/javascript_library&quot;&gt;w3techs.com&lt;/a&gt; reports that 77.4% of websites worldwide use jQuery. That’s an impressive number, especially compared to a popular library such as React standing at 3% for the same period.&lt;/p&gt;
&lt;p&gt;jQuery has had a considerable impact on the Web. Not only did it democratise front-end development, but also inspired numerous projects and successors. Influenced by jQuery and wanting to correct some of its antipatterns, a vast array of libraries and frameworks have emerged and helped shape the landscape of web development.&lt;/p&gt;
&lt;p&gt;The best thing that jQuery has given us? It stopped being &lt;a href=&quot;https://youmightnotneedjquery.com/&quot;&gt;needed&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[We are Agile, but...]]></title><description><![CDATA[Agility has been robbed of its meaning. In a series of 10 anecdotes, I illustrate how organisations claiming to be agile are anything but.]]></description><link>https://maroun-baydoun.com/blog/we-are-agile-but/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/we-are-agile-but/</guid><pubDate>Sat, 24 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Many companies and teams have lost sight of what being agile is all about. It has become a taboo not to mention &quot;Agile&quot; in job postings, onboarding and team lingo. Work, on the other hand, has remained as rigid as ever. Preaching one thing and doing the opposite has created the perfect environment for keeping employees confused, questioning and underperforming.&lt;/p&gt;
&lt;p&gt;The following is a list of anecdotes that illustrate this situation.&lt;/p&gt;
&lt;h2&gt;We discuss the process 10 hours a week&lt;/h2&gt;
&lt;p&gt;Being agile extends to the process and keeps refining it based on the team’s needs. In reality, the process is used as a panacea for the team’s dysfunctioning. Everyone is encouraged to blame it on the process (or its loose application) when things go wrong. When teams underperform, it can only mean they haven’t been “Agile” enough.&lt;/p&gt;
&lt;h2&gt;Our daily standup HAS to take place at 9 am&lt;/h2&gt;
&lt;p&gt;Few things are more rigid than ceremonies that have to happen at specific times or intervals. Forcing everyone to spill out their updates at the same time every day has no advantages. Self-organising teams know how and when to communicate their progress.&lt;/p&gt;
&lt;h2&gt;We spend weeks crafting our 6-month roadmap&lt;/h2&gt;
&lt;p&gt;Long roadmaps are the antithesis of agility. Anybody who claims they know the future is either lying, delusional or a combination of both. Being agile is about learning from the past and focusing on the present. For all intents and purposes, the future might never happen. Products get cancelled, markets change and consumers move on. Time spent on roadmaps is time the team hasn’t used to deliver value.&lt;/p&gt;
&lt;h2&gt;Our estimations are on point. That’s what management says&lt;/h2&gt;
&lt;p&gt;Agile teams are endowed with the magical ability of accurately estimating their work. They intuitively eliminate all uncertainty and spit out cookie-cutter solutions. This in turns keeps management happy as they see numbers and charts flashed in presentations. Meanwhile, developer sanity and user needs are crying in the corner.&lt;/p&gt;
&lt;h2&gt;We take feedback seriously… when it doesn&apos;t interfere with our roadmap&lt;/h2&gt;
&lt;p&gt;The six-month &lt;del&gt;manifesto&lt;/del&gt; roadmap is infallible. The great minds that crafted it know better. User feedback is left to rot in a spreadsheet away from the team’s reach. After all, the developers are tasked with the important work: Moving tickets to “Done”. Users can wait; the priority is for the burndown chart to hit 0.&lt;/p&gt;
&lt;h2&gt;We like to experiment… with our retrospective format&lt;/h2&gt;
&lt;p&gt;Keeping up with the never-ending discussions about the process, the team is sold the illusion they are free to self-organise. They are encouraged to try different formats for their ceremonies, in line with what blog post the CTO has recently read. Experimentation with the product and development is frowned upon and discarded. The mythical next quarter is apparently the best time for that.&lt;/p&gt;
&lt;h2&gt;We react to change… in our checkbox and radio button components&lt;/h2&gt;
&lt;p&gt;Developers are asked to write code day in, day out. They don’t need to speak up, understand the product or interact with the user. They are intentionally kept in a state of blissful ignorance. Many are led to believe it is in their best interest not to be interrupted all day long. In the meantime, a bunch of know-betters are delivering their godly revelations to the team.&lt;/p&gt;
&lt;h2&gt;We believe in continuous delivery… when our CI/CD pipeline is not down&lt;/h2&gt;
&lt;p&gt;Budget-conscious managers are very picky. They can&apos;t stop preaching the importance of reducing costs. They cut down external services and, sometimes, replace them with subpar internal tools. At the same time, they don’t hesitate to hire tens of new developers to “move faster”. The typical victims are tools considered non-critical. Why invest in a CI/CD pipeline when developers can do that manually? Automation only makes sense when setting up Slack reminders for the daily standup meeting.&lt;/p&gt;
&lt;h2&gt;We move fast... to keep our Jira board up to date&lt;/h2&gt;
&lt;p&gt;Soon enough, the &quot;Agile&quot; mindset turns into an obsessive disorder. The artefacts and ceremonies become the holy grail that must be protected and revered at any cost. God forbid the backlog doesn’t reflect the current status of development. God forbid a user story finds itself in the wrong column. God forbid someone questions the utility of that.&lt;/p&gt;
&lt;h2&gt;We don&apos;t deploy on Fridays... or any weekday for that matter&lt;/h2&gt;
&lt;p&gt;How to give developers the impression you care about their wellbeing? Forbid deployments on Fridays. What’s better than enjoying the weekend undisturbed by emergencies? In reality, it is a testament to how little faith managers have in the release strategies and pipelines. Pushing value to the user should happen all the time. The team’s mission is to make that a reality.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Scrum is not for humans]]></title><description><![CDATA[Scrum is not the agility beacon it claims to be. It is time for self-organising teams to release themselves from the shackles of Agile.]]></description><link>https://maroun-baydoun.com/blog/scrum-is-not-for-humans/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/scrum-is-not-for-humans/</guid><pubDate>Sun, 16 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Not a single workday goes by without hearing people praising the virtues of Agile. For many, Agile became synonymous with Scrum. In this article, I argue that Scrum is very hostile to developers. More generally, I will explain why Scrum is not designed for humans.&lt;/p&gt;
&lt;p&gt;I&apos;m not planning on explaining what Scrum is. There are numerous resources that could do that better. The &lt;a href=&quot;https://www.scrumguides.org/&quot; title=&quot;The official Scrum guide&quot;&gt;Scrum guide&lt;/a&gt; is a good place to start. In a nutshell, Scrum is a framework for product development with its sets of roles, artefacts and ceremonies. No, I’m not talking about a cult or a secret society. I’m talking about something that has become at the core of many people&apos;s work life.&lt;/p&gt;
&lt;h2&gt;Scrum is anti-developer&lt;/h2&gt;
&lt;p&gt;In his book &lt;a href=&quot;https://daedtech.com/developer-hegemony-the-crazy-idea-that-software-developers-should-run-software-development/&quot; title=&quot;Developer Hegemony: The Crazy Idea that Software Developers Should Run Software Development&quot;&gt;Developer Hegemony&lt;/a&gt;, Erik Dietrich makes a very interesting observation. He notes that developers are a hot commodity nowadays. Companies are willing to shell high salaries and incentive packages to recruit the best talent. However, once those developers join a company, they are faced with impediments that stop them from reaching their true potential. Mountains of bureaucracy, layers of management and interfering with their daily work are just a few examples of that. Dietrich imagines a future where developers flip the table and take back control. We are not talking communist revolution and seizing the means of production. We are talking about being in charge of their destiny and actually delivering their full potential.&lt;/p&gt;
&lt;p&gt;Scrum is yet another red tape thrown at developers. Instead of allowing developers to self-organise, someone high in their lofty tower decides how the team should be working. Funny enough, the Agile bug seems to only infect developers. The remaining parts of the organisation are unfazed. The same people forcing Scrum down developer’s throats would not be even there if the organisation were truly agile.&lt;/p&gt;
&lt;p&gt;I dislike Scrum because it makes a few wrong assumptions. First, that developers are lazy and need to be micromanaged to deliver. While many developers can be underperforming, putting them under the spotlight will only make the problem worse. Second, that the process of software creation is indistinguishable from any industrial manufacturing process. Claiming that uncertainty and unpredictability are not inherent parts of software engineering is as good as relying on the planets&apos; positions to determine one’s destiny.&lt;/p&gt;
&lt;p&gt;It is true that not all developers are exemplary employees, but more often than not they want to give their best and be proud about the products they deliver. When things go wrong in the development team, people are quick to jump to the conclusion that developers have to be micromanaged to extract every ounce of productivity from them. However, the problem is often somewhere else in the chain.&lt;/p&gt;
&lt;h2&gt;A game of poker&lt;/h2&gt;
&lt;p&gt;Scrum advocates estimation as a way of managing the team&apos;s workload. At first glance, that seems to be a very developer-friendly measure. Who wouldn&apos;t want to achieve a constant pace of delivery that keeps the users happy and saves the development team from burndown?
In practice, estimations end up being yet another pressure mechanism.&lt;/p&gt;
&lt;p&gt;Humans work in different ways, at different speeds and at different times. The myth of a constant pace of delivery does not reflect the reality of working in software development. Developers have good days and bad days. They exist outside the realm of their roles at work. They get sick, go on holidays, lose motivation etc.&lt;/p&gt;
&lt;p&gt;Uncertainty and unpredictability are hallmarks of software creation. That by itself is enough to invalidate the need for estimations. Pushing them on a team is a game of dishonesty and lack of trust. Everybody involved knows that those numbers carry little value. The time wasted making predictions and false promises should be used to bring real value to users instead.&lt;/p&gt;
&lt;p&gt;Developers are not stupid. When they can&apos;t change the system, they start to game it. They will use estimations to advance their own agenda. They will overestimate and deliver less. They will underestimate to make sure something they feel passionate about is picked up for development.&lt;/p&gt;
&lt;h2&gt;What do you stand for?&lt;/h2&gt;
&lt;p&gt;The Scrum guide defines the daily stand-up as a short meeting for the development team to discuss their progress and impediments. In theory, I see some value in that. However, it makes the misinformed assumption that a team needs a specific ceremony to talk. In practice, teammates should and do exchange ideas all the time.&lt;/p&gt;
&lt;p&gt;What happens more often than not is the liberal reinterpretation of the daily stand-up. Managers and product owners attend and turn this ceremony into a status update meeting. Developers are &lt;del&gt;forced&lt;/del&gt; encouraged to share the teeny tiny details of their work with people who probably have little knowledge of and no interest in what is being said.&lt;/p&gt;
&lt;p&gt;Worse still, many companies use the daily stand-up as a sneaky way to get everyone in the office by a certain hour. This hinders any prospects for flexible working hours or remote work. Attending the daily stand-up becomes the number one reason why people show up at work, not the work itself.&lt;/p&gt;
&lt;h2&gt;Build it and they&apos;ll come&lt;/h2&gt;
&lt;p&gt;Scrum is a great masquerade for agility. True agility requires no ceremonies and no artefacts. True agility is a cross-organisation mindset that doesn’t apply to the development team only.&lt;/p&gt;
&lt;p&gt;By adopting Scrum and following its guide, either to the letter or not, people believe they will magically become agile. The belief is that a time-delimited sprint ensures the ability to change course. That having retrospective meetings will enable the team to iron out issues in their process. That estimating and measuring the team’s velocity will make people more productive. In reality, none of that is true.&lt;/p&gt;
&lt;p&gt;Scrum has become a perfect example of cargo cult agile. Everyone is waiting for the benefits to come raining down. In reality, the sky is blue with no clouds in sight, even though the team has been doing its rain dance for weeks.&lt;/p&gt;
&lt;p&gt;Scrum often hides the fact that true impediments are not in the development team itself, but further up in the hierarchy. The “follow the Scrum guide” commandment is a great mirror and smoke show for denying true change elsewhere in the organisation. The narrative is often flipped to suggest that the team problems stem from not applying Scrum strictly enough, for being too lenient in estimations and too ineffective in their retrospective. They are encouraged to dive deeper into Scrum while the rest of the organisation remains unchanged.&lt;/p&gt;
&lt;h2&gt;Going clear&lt;/h2&gt;
&lt;p&gt;Some teams can and will use Scrum. A prepackaged workflow could work under certain circumstances, but it achieves nothing in terms of agility. Agility is the antithesis of process and ceremonies. Agility is giving a development team trust to self-organise. Agility transcends all layers of an organisation. In fact, a truly agile organisation does away with most of its layers.&lt;/p&gt;
&lt;p&gt;Be careful anytime you buy into a methodology with inflated claims, rigid rules and unintuitive workflows. An ecosystem backed by certifications and “coaches” will create a feedback loop that perpetuates its shortcomings and hinders true progress.&lt;/p&gt;
&lt;p&gt;Any team can and should decide its own workflow. Processes are discovered, adopted and improved along the way. If you are a developer, make sure you are part of that conversation. By deferring those decisions to the “wise” men and women of the organisation, you give up the agency to determine your own fate. Any process in place should be there to serve you and not the other way around.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Don't start with React]]></title><description><![CDATA[Learning technologies that the market is looking for is the logical thing to do. But should you start with React?]]></description><link>https://maroun-baydoun.com/blog/dont-start-with-react/</link><guid isPermaLink="false">https://maroun-baydoun.com/blog/dont-start-with-react/</guid><pubDate>Sat, 25 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you are getting started in web development, it is tempting to learn the most used technologies early on. More and more junior developers are investing in React through self learning or coding boot camps.&lt;/p&gt;
&lt;h2&gt;The problem?&lt;/h2&gt;
&lt;p&gt;While React is a great choice for building many types of applications, it is important to understand that there are alternatives. More crucially, React exists to solve a set of problems that developers face. Understand those problems first, and learn React next.&lt;/p&gt;
&lt;h2&gt;A little bit of history&lt;/h2&gt;
&lt;p&gt;People doing web development from the mid-90s till the mid-2000s experienced the dominance of Internet Explorer, incompatibilities between browser engines, slow advancements in the web and a lack of good practices to organise code.&lt;/p&gt;
&lt;p&gt;Creating anything using JavaScript meant worrying about problems such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Having the DOM reflect the application&apos;s state.&lt;/li&gt;
&lt;li&gt;Organising the code and splitting it into different files.&lt;/li&gt;
&lt;li&gt;Adding and removing event listener.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Several solutions to these problems were introduced. jQuery made it easier to manipulate the DOM. RequireJs gave developers a way to break down applications into multiple files and load them in the browser. Tools such as Gulp, Grunt and later Webpack improved the build experience even further. Frameworks such as BackboneJs, Ember and later AngularJs offered a way to structure applications and organise the code.&lt;/p&gt;
&lt;h2&gt;Enter React&lt;/h2&gt;
&lt;p&gt;At first glance, React looks like a step backwards. React focuses on the View layer instead of embracing the full MVC architecture. Unlike its predecessors and some of its peers, React offers no out-of-the-box solutions for common needs such as routing, state management or styling. The distinction gives React the status of a library and not a framework.&lt;/p&gt;
&lt;h3&gt;What problems is React solving?&lt;/h3&gt;
&lt;h4&gt;Having the UI reflect the app state&lt;/h4&gt;
&lt;p&gt;React’s goal is eliminating manual manipulation of the DOM. Instead of querying a certain node to update its attributes or children, you would describe the end result you want and React will take care of the rest.&lt;/p&gt;
&lt;p&gt;To achieve that, React dumps the common paradigm of separating HTML and JavaScript. Your JavaScript code is no longer there to manipulate the UI created by HTML. &lt;strong&gt;Your JavaScript IS THE UI&lt;/strong&gt;. (React still permits direct DOM manipulation using &lt;a href=&quot;https://reactjs.org/docs/refs-and-the-dom.html&quot; title=&quot;Refs and the DOM in React documentation&quot;&gt;refs&lt;/a&gt;)&lt;/p&gt;
&lt;h4&gt;DOM updates are expensive&lt;/h4&gt;
&lt;p&gt;React makes updates to the DOM less expensive by comparing what the browser is rendering with what your UI is describing. This should improve the user experience in the browser.&lt;/p&gt;
&lt;h4&gt;Event management is messy&lt;/h4&gt;
&lt;p&gt;React simplifies event management by adding a single event listener to the root of the document. This should reduce memory leaks introduced by complex event listeners in an application.&lt;/p&gt;
&lt;h4&gt;Code is unorganised&lt;/h4&gt;
&lt;p&gt;React offers a way to organise code by breaking it down into components. This encourages the application to be broken down into simple units, respecting the &lt;a href=&quot;https://en.wikipedia.org/wiki/Single_responsibility_principle&quot; title=&quot;Single responsibility principle on Wikipedia&quot;&gt;single responsibility principle&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The best of both worlds&lt;/h2&gt;
&lt;p&gt;Understanding how the DOM works, its limitations and bottlenecks is an essential skill to create client-side web applications. Learning libraries and frameworks early on masks those complexities. It deprives you of understanding what is going on in the browser.&lt;/p&gt;
&lt;p&gt;Those libraries and frameworks are just syntactic sugar around what the browser can natively do. It all boils down to what the JavaScript engine is doing and how the DOM is updated. This knowledge is essential to catch bugs and avoid performance issues.&lt;/p&gt;
&lt;p&gt;Learn how to create an application using nothing more than HTML, JavaScript and CSS. Feel the pain of managing state, events and DOM updates manually. Understand the common pitfalls, the performance bottlenecks and memory leaks. Transition to an MVC framework. Understand that your front-end code can be organised and architected. Pick an &lt;em&gt;old&lt;/em&gt; framework and give it a test drive. &lt;a href=&quot;https://backbonejs.org/&quot; title=&quot;Backbone.JS homepage&quot;&gt;Backbone.JS&lt;/a&gt; is a great introduction to application frameworks. Finally,
learn React.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Don’t limit yourself to a certain library or framework. Eventually, the next big thing will come and sweep them off. Focus instead on what changes slowly. React will disappear, but the browser will not.&lt;/p&gt;</content:encoded></item></channel></rss>