What you&#x27;re describing to me is you&#x27;ve built a very solid structure for reasoning about programs, but it is too rigid, and too focused.<p>I would <i>heartily</i> recommend learning a new language.  You need to shake things up a bit.<p>Two reasons:<p>1. <a href="https:&#x2F;&#x2F;www.wikiwand.com&#x2F;en&#x2F;Linguistic_relativity" rel="nofollow">https:&#x2F;&#x2F;www.wikiwand.com&#x2F;en&#x2F;Linguistic_relativity</a> - Our language shapes our thought. This is true for spoken and programming languages.<p>2. You cannot properly understand a language unless you learn another.  This is partially based on point 1, but it needs to be said otherwise.<p>Since you&#x27;re in web,  I would recommend learning Elm for the front-end, and Haskell in the back-end.  Why? They will force you to design your systems differently?  Is it better or worse?  That&#x27;s subjective. The important thing is that it is different.<p>For data design, have a look at things like datalog.  Datomic is a good playground for that.