{
  "id": 9105384,
  "title": "What Shipping a WordPress CRM Taught Me About Being a Developer",
  "url": "https://urgent.news/2026/09/22/what-shipping-a-wordpress-crm-taught-me-about-being-a-developer",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-22T07:29:04.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/shakurshirajul/what-shipping-a-wordpress-crm-taught-me-about-being-a-developer-17po"
  },
  "original_language": "en",
  "account": "Growing up, my father introduced me to the world of desktop computers and gaming, sparking a sense of curiosity that has persisted throughout my career as a developer. My journey in computer science and engineering at IIUC provided structure to this curiosity, teaching me to tackle complex problems by breaking them down into smaller, manageable pieces. While studying, I learned various programming languages such as C, C++, HTML, CSS, JavaScript, React, Node, Express, and MongoDB. However, tutorials often fall short when it comes to preparing developers for the challenges of shipping software that others rely on. The gap between learning and actual production work is where I found the most valuable lessons.\n\nBuilding Bit CRM, a sales CRM plugin for WordPress, taught me crucial insights beyond the confines of tutorials. Initially, I encountered a host environment controlled by WordPress, where global styles and scripts from other plugins affected my application. Understanding this environment and adapting my approach to fit within its constraints became vital. Integrating with existing plugins like Bit Form, Bit Flows, and Bit Integrations required me to align my CRM's data flow with theirs, rather than imposing a separate structure.\n\nA significant shift in my approach was recognizing the importance of fitting into existing conventions and understanding them before attempting to change them. This mindset helped me navigate the complexities of a multi-module plugin, separating server state using TanStack Query and local UI state using Zustand. By maintaining a strict separation of state, I minimized the risk of bugs caused by conflicting sources of truth. Additionally, contributing to the MCP server and the built-in AI assistant expanded my perspective on designing interfaces for models, rather than humans. This exercise refined my API design skills, making me more meticulous and precise in my approach.\n\nFor aspiring developers, I recommend building real-world applications that impact users. Such projects teach maintainability, deployment, and clear naming conventions, which are invaluable skills regardless of the programming languages you employ. These experiences cannot be replicated through tutorials alone and require perseverance beyond the initial excitement. The tools I use today, including React, Next.js, TypeScript, Node, Laravel, MongoDB, and MySQL, are secondary to the lessons learned and the patience required to develop and maintain robust software.",
  "summary": "Most advice about becoming a developer stops at the moment you get hired. That is the part I found least useful. The gap that actually mattered for me was the one between finishing tutorials and shipping software other people depend on — and nothing I had read prepared me for what that gap contained. This is what I learned crossing it, building Bit CRM , a sales CRM plugin published on the…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}