In my career, perhaps one of the most challenging areas, where I've uttered "is this really happening?" the most, has been enterprise software, especially ERPs. While building an ERP from scratch for a manufacturing company or diving deep into an existing system, I realized that writing ERP software is indeed very difficult. However, this difficulty isn't just a technical matter, as is commonly thought.

In my opinion, the truly intricate aspect of writing ERP software lies not in the code itself, but in the attempt to digitize the complex and ever-changing human processes of organizations. My most costly mistakes weren't in a line of code, but in those moments when I realized that a workflow a client said "yes, it works exactly like this" actually didn't work that way at all.

Not Software, But Organizational Flow

The heart of an ERP is to connect all of a company's operations – from purchasing to production, shipping to invoicing. This requires much more than just joining database tables. In my experience, each of these processes harbors its own set of exceptions, approval mechanisms, and unexpected situations.

Years ago, in a manufacturing ERP, we noticed that shipping reports were consistently incomplete. After a three-day debugging process, we realized the problem wasn't with the software itself, but with an unofficial manual exit form that warehouse personnel used for "urgent" situations. The software couldn't see the products that passed through that form, hence the missing items in the reports. This was a great example of how an organizational "hack" could impact the software.