The Day I Learned to Think Like a Browser
Thinking Like a Machine, Feeling Like a Human: The Psychology of Coding Success
I had been working at a small remote JavaScript boutique for almost a year, and I was completely exhausted. I was fortunate to get that job through my active participation in the associated open source project community; the project owners knew me from there, and when I asked them for a job, the response was positive.
I knew how to use the framework from a user's perspective, but my skills for high-speed programming in complex projects were lacking. Remote work with an 8-hour time difference also didn't help - I spent many nights working until dawn.
In this high-pressure context, while I was spending hours trying to fix a CSS bug before the rest of the team started working in the United States, desperately trying everything that came to mind to close the ticket by trial and error, I suddenly had a kind of awakening - could there be logic behind the rendering of elements in the browser?
After a few minutes of research, I discovered the box model and, unknowingly, found myself debugging step by step with a mental representation of the boxes, following the rules of the rendering engine, and resolving the bug within minutes.
Despite this minor success, my state of burnout and discredit with the team was such that I was fired a few days later, almost a year after I started working at the company - it wasn't necessarily the ideal Christmas I wanted, but that insight became a critical moment that allowed me to have a long career as a frontend developer, which otherwise wouldn't have been possible.
But the point I wanted to highlight in this post was my discovery that most of the time, it's always possible to have a mental representation of the problem, above the code (after all, the CSS standard can be implemented in many different ways), which can potentially guide software development more productively and allow us to navigate chunks of abstraction in a coherent and fast manner.
In the book "Peak" by Anders Ericson, the high performance specialist specifically addresses this topic of how experts develop a mental representation of the problem that allows them to evolve to levels that others can't reach. And we could always quote Alan Kay when he says "Point of view is worth 80 IQ points!"
However, considering most of the projects I've been involved in, the pressure, and even the eagerness of developers to start coding right away without considering the development of a representation above the code that can coherently unite different parts of the codebase and serve as a source of truth in relation to what the application should or should not do is still very common.
Is this realistically possible: to have the equivalent of a standard like the box model written and evolving at the same time as software projects are developed? Here's the question. If you want to share your ideas on this subject, please do so in the comments. Thank you for reading!
If you're finding value in Turing Respawns, I'd be grateful if you'd share it with a friend or colleague. It's a simple way to help our community grow and explore the human side of tech together. Plus, as a thank you, you'll both enjoy free access to all articles.