- 👤 Andrés Cruz

🇪🇸 En español

The Definitive Guide to the Development Ecosystem: From the Linux Terminal to Modern Software Architecture

Becoming a competent software developer in today's world goes far beyond mastering a single programming language. It requires a holistic understanding of the ecosystem that brings our applications to life: the underlying operating system, often Linux; the tools that orchestrate the code, such as Git; the servers that deliver it to the world, such as Apache; and the databases that store its information.

Furthermore, it involves constant reflection on our craft, the impact of new technologies like AI, and the best practices that separate functional code from maintainable code. At DesarrolloLibre, we have documented every facet of this journey.

This SUPER guide is a compendium of that experience and general topics that are NOT covered in other categories. It is not a manual on a single topic, but a map of the territory that every modern developer must navigate.

Section 1: Setting up the Development Environment

A developer is only as good as their tools. Setting up a robust and efficient development environment is a fundamental step. This section covers the pillars of that environment: version control with Git, configuring web servers and databases, and the tools for testing our creations.

Version Control with Git

Git is the distributed version control system that has become the industry standard. It allows you to record changes in your code, revert to previous versions, work on separate branches for new features, and most importantly, collaborate with other developers.

Initial Setup

The first thing you should do after installing Git is to configure your username and email. This is crucial because this information is embedded in every commit you make.

$ git config --global user.name "Your Name" 
$ git config --global user.email "your.email@example.com"

The Basic Workflow

  1. git init: Initializes a new repository in your project folder.
  2. git add [file]: Adds files to the "staging area." It is the step before making a commit. You can use git add . to add all modified files.
  3. git commit -m "Commit message": Saves the changes from the staging area into the repository's history with a descriptive message.
  4. git push: Uploads your commits to a remote repository (like GitHub).
  5. git pull: Downloads changes from a remote repository and merges them with your local copy.

Mastering Git is one of the most profitable investments you can make in your development career.

Start your Git journey at: The Git Guide I Never Had.

Configuring Web Servers and Databases

Apache Web Server and Virtual Hosts

Apache is one of the most widely used web servers in the world. It is the software that listens for HTTP requests and serves your web files. One of its most powerful features is Virtual Hosts, which allow you to host multiple websites on a single machine.

Each Virtual Host is a configuration file that maps a domain name (e.g., project1.local) to a directory in your file system (/var/www/proyecto1).

# /etc/apache2/sites-available/proyecto1.conf <VirtualHost *:80> ServerName proyecto1.local DocumentRoot /var/www/proyecto1/public <Directory /var/www/proyecto1/public> AllowOverride All Require all granted </Directory> </VirtualHost>

After creating the file, you need to enable the site (`a2ensite proyecto1.conf`) and add `127.0.0.1 proyecto1.local` to your `/etc/hosts` file so your machine knows how to resolve that domain locally.

Learn how to configure your local servers at: What is an Apache server? Complete Guide.

Database Installation

Your development stack will likely need a database. In Unix-like environments such as macOS or Linux, Homebrew is a package manager that makes installation significantly easier.

Once installed, Homebrew will give you the commands to start the database services to run in the background.

Install your databases with: How to Install MySQL on Mac and Install MongoDB on MacOS.

Development and Debugging Tools

Postman for Testing APIs

Postman is an essential application for any developer working with APIs. It allows you to build and send HTTP requests (GET, POST, PUT, etc.) to your endpoints, specifying headers, parameters, and request bodies, and then inspect the server's response in detail.

It is a crucial tool for testing and debugging your APIs before building the frontend that will consume them.

Learn about this essential tool at: Postman for making web requests.

Remote Debugging with Chrome DevTools

Sometimes a layout that looks perfect on your desktop breaks on a mobile device. Chrome DevTools allows you to connect an Android device to your computer via USB and debug the web page directly on the mobile, using the developer tools on your desktop.

This gives you access to the console, the element inspector, the network tab, and all debugging tools, but applied to the phone's browser. It is a life-saving technique for responsive development.

Learn how to debug on mobile at: Debugging Web Pages with Google Chrome and Android.

Section 2: Reflections on the Developer's Craft

Being a software developer is more than just writing code. It involves a mindset of constant learning, the ability to make strategic architectural decisions, and an awareness of the technological and professional ecosystem in which we operate. This section compiles reflections on the profession, from choosing tools to the impact of AI and the philosophy of learning.

The Philosophy of Continuous Learning

Learning from Books or Video Courses?

The eternal question. The answer is that there is no format better than the other; it depends on your needs and learning style. However, each has its strengths:

My personal approach is to create both. The book serves as a script and reference material for the course, and the course enriches the book with more detailed explanations. The ideal is to have access to both formats.

Explore this duality in: What is better, a Course (Videos) or a Book? and Create Courses and Books to maximize your sales.

Avoiding the "Tutorial Hell"

A piece of advice that may sound counterintuitive but is crucial: don't limit yourself to following tutorials. Watching tutorials, reading blogs, and using Google or AI are support tools, not the end of learning. True mastery comes when you take action and build your own projects.

Over-reliance on tutorials creates a false sense of competence. You can follow the steps, but can you solve a problem on your own when there is no guide? The goal should be to use the official documentation as your primary source of truth and tutorials as a complement to accelerate initial understanding. Then, the key is to practice, fail, and learn from your own mistakes.

Reflect on how to learn better in: Self-taught programmer gives advice for fast learning: Avoid Tutorials and Google and DON'T Just Watch Tutorials, Google, AI... TAKE ACTION.

The Ecosystem of Frameworks and Tools

Are All Frameworks the Same?

Laravel, CodeIgniter, Django, Flask, FastAPI... At first glance, they might seem like different worlds. But once you master the fundamental concepts of web development (MVC/MVT, routing, ORM, template engines), you realize that, in essence, they all seek to solve the same problems, just with different philosophies and syntax.

Learning multiple frameworks not only makes you a more versatile developer but also allows you to choose the right tool for the job, instead of forcing your single known tool to solve all problems.

Compare the different approaches in: Laravel, CodeIgniter, Django, Flask, FastAPI... They are the same.....

The Developer's Life: Environment and Tools

Our work environment goes beyond code. It includes the operating system we choose, the hardware we use, and the applications that help us be productive.

Explore these reflections in: Why I don't use Linux and use Windows and MacOS instead and Google Keep - The best App to save your notes.

Section 4: A Developer's Chronicles: Updates and Projects

Software development is a continuous process of building, learning, and improvement. This section compiles snippets from the blog's weekly updates, offering a transparent view of the daily work, the challenges encountered, the new technologies explored, and the opinions formed in the heat of developing courses, books, and real applications.

These chronicles cover a wide range of topics, reflecting the multifaceted nature of a modern developer's work. From implementing a points system in an online store, to optimizing SEO with lazy loading, to reflections on the policies of platforms like Udemy or the use of AI tools like ChatGPT. They are a window into real-world problems and solutions, beyond idealized tutorials.

Through these updates, we have explored in depth frameworks such as Laravel (with Livewire and Inertia), Django, Vue.js, and Flutter; we have dealt with the configuration of tools like Docker and CKEditor; and we have debated the best ways to structure code, from the use of abstract classes to route modularization.

Each week brings new learnings, whether discovering a new feature of a framework, solving a frustrating compilation error, or reflecting on the best way to teach a complex concept. This compendium of experiences serves as a field diary, full of practical lessons and sincere opinions that we hope will inspire and guide you on your own path as a developer.

Explore the full journey through our weekly updates:

Conclusion

We have undertaken an extensive and diverse journey, starting on software architecture and the future of our profession. This tour demonstrates that being an effective developer is not about knowing a single thing perfectly, but about understanding how multiple layers of technology, tools, and philosophies interconnect.

The ability to comfortably navigate the command line, to configure a server, to version your code with Git, and to choose the right tool for the job are skills as important as writing an efficient algorithm. Programming is a craft that demands an insatiable curiosity and constant adaptation.

Tools will change, frameworks will come and go, and AI will continue to transform our work. But the fundamentals—logic, problem-solving, the principles of good design, and a learning mindset—will remain. We hope this guide has provided you not only with technical answers but also with a broader perspective that inspires you to continue growing as a professional in this dynamic and exciting field.

Ver Listado »