I don&#x27;t know that I agree... people can learn in many different ways, and don&#x27;t always need to deal with different aspects.  If all I want to do is build bird houses, do I need to learn everything a structural engineer has to learn to build sky scrapers?<p>That said, had a similar issue with logic in a simulation software where each virtual unit was its&#x27; own OO based object, with it&#x27;s own threads for events... could only run about 4 simultaneous simulations on a server, and it still would bottleneck (GC was horrible). change it to a single event-loop that signaled each unit, and most of the concurrency issues went away.  Streamlined the message passing (more functional approach) and memory usage dropped a lot...  couldn&#x27;t convince the manager to switch away from an SQL backend, which was the final bottleneck (normalized data structures), as it was then fast enough.<p>Had another instance where a configuration table from a database was loaded into memory (for performance), but then was kept in memory as a DataTable, with text based queries for each access for each key, that happened over a thousand times in a single web request (logins were taking too long)... Changed it to a HashTable, and lo and behold, concurrency was no longer a problem... similar issues with not understanding how static variables worked in a multithreaded application...  OO ftw again (sarcasm).