Skip to main content

4 min read
Pere Pages
Tree shake
Tree shaking

Tree shaking is a term used in the context of web development, particularly with JavaScript and modern front-end build tools, to describe the process of removing unused code from your final bundle. It's like shaking a tree to let the dead leaves (unused code) fall off, so you end up with a lighter, more efficient bundle that only includes the code that's actually used in your application.

This concept became particularly relevant with the rise of module bundlers like Webpack, Rollup, and tools like Parcel, which analyze your import and export statements to determine which parts of a module are used by your application. If a function, class, or variable from a module is never used, the bundler can exclude it from the output bundle, reducing the size of your application and improving load times for your users.

14 min read
Pere Pages
Server Side Rendering

A shell is a command-line interpreter that provides a user interface for the Unix/Linux operating system. The shell interprets the commands you enter in the terminal and tells the operating system to execute them.

Analogy

Think of the terminal as a movie theater and the shell as the movie being played. The theater (terminal) provides the environment and tools (screen, seats, speakers) to experience the movie, while the movie (shell) is the actual content or the interpreter that you interact with.

4 min read
Pere Pages

pair programming

Pair programming is a collaborative strategy that has gained traction in the software development world. It involves two developers working together on a single task, with one taking the lead and the other providing support. This approach is not just about sharing the workload; it's about leveraging the collective expertise to drive efficiency and quality.

My Perspective

In this article, I'll share my perspective on pair programming, exploring the key stages and strategies that underpin this collaborative approach.

  1. Task Allocation and Leadership
  2. Acceptance Criteria
  3. Exploration through Proof of Concepts (PoCs)
  4. Convergence and Decision-making
  5. Refactoring and Continuous Delivery
  6. Repeat

2 min read
Pere Pages
functional component type

The usage of React.FC or React.FunctionComponent has been a subject of debate within the React community. Both approaches鈥攗sing it or not鈥攈ave their pros and cons.

Do not use React.FC

IMHO, do not use React.FC or React.FunctionComponent in your codebase, only if you know you are using children props.

4 min read
Pere Pages

ADR

In the context of software development, "ADR" stands for "Architectural Decision Record." An ADR document is a way to capture and document important architectural decisions made during the development process of a software project.

An architectural decision refers to a significant choice related to the software's architecture, design, or implementation. This could include decisions about the overall system structure, the selection of technologies, the integration of different components, or the handling of specific design challenges.

6 min read
Pere Pages
Server Side Rendering
TL;DR

SSR stands for Server-Side Rendering. It's a technique used in web development where the content of a web page is generated on the server instead of in the user's browser.

SSR stands for Server-Side Rendering. It's a technique used in web development where the content of a web page is generated on the server instead of in the user's browser. This differs from client-side rendering (CSR), where JavaScript runs in the browser to produce the page's content dynamically.

4 min read
Pere Pages
Three pillars of knowledge
TL;DR

By integrating technical prowess with a deep understanding of business contexts and infrastructural environments, this approach fosters a holistic understanding that is invaluable in a professional setting.

Software development is a field marked by its complexities and interconnections, extending far beyond mere coding skills. This framework not only aids in categorizing the essential elements of software development but also facilitates their management and optimization. It serves as a conceptual structure that brings clarity and organization to the multifaceted nature of software development. By integrating technical prowess with a deep understanding of business contexts and infrastructural environments, this approach fosters a holistic understanding that is invaluable in a professional setting. This comprehensive view encapsulates the various dimensions crucial for effective software development.